]> git.proxmox.com Git - pve-docs.git/blobdiff - api-viewer/apidata.js
update static/schema information
[pve-docs.git] / api-viewer / apidata.js
index bba8bf5eec4823d37c780299b92c94e781f05e67..7068f245890f093f0bb571ce3ded7d038197d986 100644 (file)
@@ -471,6 +471,13 @@ const apiSchema = [
                                        ],
                                        "format" : "pve-configid",
                                        "type" : "string"
+                                    },
+                                    "verify-certificate" : {
+                                       "default" : 1,
+                                       "description" : "Set to 0 to disable certificate verification for https endpoints.",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
                                     }
                                  },
                                  "type" : "object"
@@ -611,6 +618,13 @@ const apiSchema = [
                                        "optional" : 1,
                                        "type" : "string",
                                        "typetext" : "<string>"
+                                    },
+                                    "verify-certificate" : {
+                                       "default" : 1,
+                                       "description" : "Set to 0 to disable certificate verification for https endpoints.",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
                                     }
                                  },
                                  "type" : "object"
@@ -1148,6 +1162,7 @@ const apiSchema = [
                               ]
                            ]
                         },
+                        "protected" : 1,
                         "returns" : {
                            "type" : "object"
                         }
@@ -1483,7 +1498,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "icmp-type" : {
-                                             "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
+                                             "description" : "Specify icmp-type. Only valid if proto equals 'icmp' or 'icmpv6'/'ipv6-icmp'.",
                                              "format" : "pve-fw-icmp-type-spec",
                                              "optional" : 1,
                                              "type" : "string",
@@ -1726,7 +1741,7 @@ const apiSchema = [
                                        "type" : "string"
                                     },
                                     "icmp-type" : {
-                                       "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
+                                       "description" : "Specify icmp-type. Only valid if proto equals 'icmp' or 'icmpv6'/'ipv6-icmp'.",
                                        "format" : "pve-fw-icmp-type-spec",
                                        "optional" : 1,
                                        "type" : "string",
@@ -2130,7 +2145,7 @@ const apiSchema = [
                                        "typetext" : "<integer> (0 - N)"
                                     },
                                     "icmp-type" : {
-                                       "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
+                                       "description" : "Specify icmp-type. Only valid if proto equals 'icmp' or 'icmpv6'/'ipv6-icmp'.",
                                        "format" : "pve-fw-icmp-type-spec",
                                        "optional" : 1,
                                        "type" : "string",
@@ -2326,7 +2341,7 @@ const apiSchema = [
                                  "typetext" : "<integer> (0 - N)"
                               },
                               "icmp-type" : {
-                                 "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
+                                 "description" : "Specify icmp-type. Only valid if proto equals 'icmp' or 'icmpv6'/'ipv6-icmp'.",
                                  "format" : "pve-fw-icmp-type-spec",
                                  "optional" : 1,
                                  "type" : "string",
@@ -2581,267 +2596,273 @@ const apiSchema = [
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "name" : {
-                                       "description" : "IP set name.",
-                                       "maxLength" : 64,
-                                       "minLength" : 2,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           },
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "List IPSet content",
-                              "method" : "GET",
-                              "name" : "get_ipset",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "name" : {
-                                       "description" : "IP set name.",
-                                       "maxLength" : 64,
-                                       "minLength" : 2,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Audit"
-                                    ]
-                                 ]
-                              },
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "cidr" : {
-                                          "type" : "string"
-                                       },
-                                       "comment" : {
-                                          "optional" : 1,
-                                          "type" : "string"
-                                       },
-                                       "digest" : {
-                                          "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                          "maxLength" : 40,
-                                          "optional" : 0,
-                                          "type" : "string"
-                                       },
-                                       "nomatch" : {
-                                          "optional" : 1,
-                                          "type" : "boolean"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "links" : [
-                                    {
-                                       "href" : "{cidr}",
-                                       "rel" : "child"
-                                    }
-                                 ],
-                                 "type" : "array"
-                              }
-                           },
-                           "POST" : {
-                              "allowtoken" : 1,
-                              "description" : "Add IP or Network to IPSet.",
-                              "method" : "POST",
-                              "name" : "create_ip",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "cidr" : {
-                                       "description" : "Network/IP specification in CIDR format.",
-                                       "format" : "IPorCIDRorAlias",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "comment" : {
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "name" : {
-                                       "description" : "IP set name.",
-                                       "maxLength" : 64,
-                                       "minLength" : 2,
-                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                       "type" : "string"
-                                    },
-                                    "nomatch" : {
+                                    "force" : {
+                                       "description" : "Delete all members of the IPSet, if there are any.",
                                        "optional" : 1,
                                        "type" : "boolean",
                                        "typetext" : "<boolean>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "perm",
-                                    "/",
-                                    [
-                                       "Sys.Modify"
-                                    ]
-                                 ]
-                              },
-                              "protected" : 1,
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           }
-                        },
-                        "leaf" : 0,
-                        "path" : "/cluster/firewall/ipset/{name}",
-                        "text" : "{name}"
-                     }
-                  ],
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "List IPSets",
-                        "method" : "GET",
-                        "name" : "ipset_index",
-                        "parameters" : {
-                           "additionalProperties" : 0
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
-                        },
-                        "returns" : {
-                           "items" : {
-                              "properties" : {
-                                 "comment" : {
-                                    "optional" : 1,
-                                    "type" : "string"
-                                 },
-                                 "digest" : {
-                                    "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                    "maxLength" : 40,
-                                    "optional" : 0,
-                                    "type" : "string"
-                                 },
-                                 "name" : {
-                                    "description" : "IP set name.",
-                                    "maxLength" : 64,
-                                    "minLength" : 2,
-                                    "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                    "type" : "string"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{name}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     },
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Create new IPSet",
-                        "method" : "POST",
-                        "name" : "create_ipset",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "comment" : {
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "digest" : {
-                                 "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                 "maxLength" : 40,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "name" : {
-                                 "description" : "IP set name.",
-                                 "maxLength" : 64,
-                                 "minLength" : 2,
-                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                 "type" : "string"
-                              },
-                              "rename" : {
-                                 "description" : "Rename an existing IPSet. You can set 'rename' to the same value as 'name' to update the 'comment' of an existing IPSet.",
-                                 "maxLength" : 64,
-                                 "minLength" : 2,
-                                 "optional" : 1,
-                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "Sys.Modify"
-                              ]
-                           ]
-                        },
-                        "protected" : 1,
-                        "returns" : {
-                           "type" : "null"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/cluster/firewall/ipset",
-                  "text" : "ipset"
-               },
-               {
-                  "children" : [
-                     {
-                        "info" : {
-                           "DELETE" : {
-                              "allowtoken" : 1,
-                              "description" : "Remove IP or Network alias.",
-                              "method" : "DELETE",
-                              "name" : "remove_alias",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "digest" : {
-                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                                       "maxLength" : 40,
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
                                     },
                                     "name" : {
-                                       "description" : "Alias name.",
+                                       "description" : "IP set name.",
+                                       "maxLength" : 64,
+                                       "minLength" : 2,
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                       "type" : "string"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Modify"
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           },
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "List IPSet content",
+                              "method" : "GET",
+                              "name" : "get_ipset",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "name" : {
+                                       "description" : "IP set name.",
+                                       "maxLength" : 64,
+                                       "minLength" : 2,
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                       "type" : "string"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Audit"
+                                    ]
+                                 ]
+                              },
+                              "returns" : {
+                                 "items" : {
+                                    "properties" : {
+                                       "cidr" : {
+                                          "type" : "string"
+                                       },
+                                       "comment" : {
+                                          "optional" : 1,
+                                          "type" : "string"
+                                       },
+                                       "digest" : {
+                                          "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                          "maxLength" : 40,
+                                          "optional" : 0,
+                                          "type" : "string"
+                                       },
+                                       "nomatch" : {
+                                          "optional" : 1,
+                                          "type" : "boolean"
+                                       }
+                                    },
+                                    "type" : "object"
+                                 },
+                                 "links" : [
+                                    {
+                                       "href" : "{cidr}",
+                                       "rel" : "child"
+                                    }
+                                 ],
+                                 "type" : "array"
+                              }
+                           },
+                           "POST" : {
+                              "allowtoken" : 1,
+                              "description" : "Add IP or Network to IPSet.",
+                              "method" : "POST",
+                              "name" : "create_ip",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "cidr" : {
+                                       "description" : "Network/IP specification in CIDR format.",
+                                       "format" : "IPorCIDRorAlias",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "comment" : {
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "name" : {
+                                       "description" : "IP set name.",
+                                       "maxLength" : 64,
+                                       "minLength" : 2,
+                                       "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                       "type" : "string"
+                                    },
+                                    "nomatch" : {
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Modify"
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           }
+                        },
+                        "leaf" : 0,
+                        "path" : "/cluster/firewall/ipset/{name}",
+                        "text" : "{name}"
+                     }
+                  ],
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "List IPSets",
+                        "method" : "GET",
+                        "name" : "ipset_index",
+                        "parameters" : {
+                           "additionalProperties" : 0
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Audit"
+                              ]
+                           ]
+                        },
+                        "returns" : {
+                           "items" : {
+                              "properties" : {
+                                 "comment" : {
+                                    "optional" : 1,
+                                    "type" : "string"
+                                 },
+                                 "digest" : {
+                                    "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                    "maxLength" : 40,
+                                    "optional" : 0,
+                                    "type" : "string"
+                                 },
+                                 "name" : {
+                                    "description" : "IP set name.",
+                                    "maxLength" : 64,
+                                    "minLength" : 2,
+                                    "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                    "type" : "string"
+                                 }
+                              },
+                              "type" : "object"
+                           },
+                           "links" : [
+                              {
+                                 "href" : "{name}",
+                                 "rel" : "child"
+                              }
+                           ],
+                           "type" : "array"
+                        }
+                     },
+                     "POST" : {
+                        "allowtoken" : 1,
+                        "description" : "Create new IPSet",
+                        "method" : "POST",
+                        "name" : "create_ipset",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "comment" : {
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "digest" : {
+                                 "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                 "maxLength" : 40,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "name" : {
+                                 "description" : "IP set name.",
+                                 "maxLength" : 64,
+                                 "minLength" : 2,
+                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                 "type" : "string"
+                              },
+                              "rename" : {
+                                 "description" : "Rename an existing IPSet. You can set 'rename' to the same value as 'name' to update the 'comment' of an existing IPSet.",
+                                 "maxLength" : 64,
+                                 "minLength" : 2,
+                                 "optional" : 1,
+                                 "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
+                                 "type" : "string"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/",
+                              [
+                                 "Sys.Modify"
+                              ]
+                           ]
+                        },
+                        "protected" : 1,
+                        "returns" : {
+                           "type" : "null"
+                        }
+                     }
+                  },
+                  "leaf" : 0,
+                  "path" : "/cluster/firewall/ipset",
+                  "text" : "ipset"
+               },
+               {
+                  "children" : [
+                     {
+                        "info" : {
+                           "DELETE" : {
+                              "allowtoken" : 1,
+                              "description" : "Remove IP or Network alias.",
+                              "method" : "DELETE",
+                              "name" : "remove_alias",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "digest" : {
+                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                       "maxLength" : 40,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "name" : {
+                                       "description" : "Alias name.",
                                        "maxLength" : 64,
                                        "minLength" : 2,
                                        "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+",
@@ -3551,6 +3572,13 @@ const apiSchema = [
                                  "type" : "integer",
                                  "typetext" : "<integer> (0 - N)"
                               },
+                              "comment" : {
+                                 "description" : "Description for the Job.",
+                                 "maxLength" : 512,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
                               "compress" : {
                                  "default" : "0",
                                  "description" : "Compress dump file.",
@@ -3575,6 +3603,7 @@ const apiSchema = [
                                  "description" : "Day of week selection.",
                                  "format" : "pve-day-of-week-list",
                                  "optional" : 1,
+                                 "requires" : "starttime",
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
@@ -3670,6 +3699,21 @@ const apiSchema = [
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
+                              "notes-template" : {
+                                 "description" : "Template string for generating notes for the backup(s). It can contain variables which will be replaced by their values. Currently supported are {{cluster}}, {{guestname}}, {{node}}, and {{vmid}}, but more might be added in the future. Needs to be a single line, newline and backslash need to be escaped as '\\n' and '\\\\' respectively.",
+                                 "maxLength" : 1024,
+                                 "optional" : 1,
+                                 "requires" : "storage",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "performance" : {
+                                 "description" : "Other performance-related settings.",
+                                 "format" : "backup-performance",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "[max-workers=<integer>]"
+                              },
                               "pigz" : {
                                  "default" : 0,
                                  "description" : "Use pigz instead of gzip when N>0. N=1 uses half of cores, N>1 uses N as thread count.",
@@ -3683,6 +3727,13 @@ const apiSchema = [
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
+                              "protected" : {
+                                 "description" : "If true, mark backup(s) as protected.",
+                                 "optional" : 1,
+                                 "requires" : "storage",
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
                               "prune-backups" : {
                                  "default" : "keep-all=1",
                                  "description" : "Use these retention options instead of those from the storage configuration.",
@@ -3705,6 +3756,21 @@ const apiSchema = [
                                  "type" : "boolean",
                                  "typetext" : "<boolean>"
                               },
+                              "repeat-missed" : {
+                                 "default" : 0,
+                                 "description" : "If true, the job will be run as soon as possible if it was missed while the scheduler was not running.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
+                              "schedule" : {
+                                 "description" : "Backup schedule. The format is a subset of `systemd` calendar events.",
+                                 "format" : "pve-calendar-event",
+                                 "maxLength" : 128,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
                               "script" : {
                                  "description" : "Use specified hook script.",
                                  "optional" : 1,
@@ -3713,6 +3779,7 @@ const apiSchema = [
                               },
                               "starttime" : {
                                  "description" : "Job Start time.",
+                                 "optional" : 1,
                                  "pattern" : "\\d{1,2}:\\d{1,2}",
                                  "type" : "string",
                                  "typetext" : "HH:MM"
@@ -3850,6 +3917,13 @@ const apiSchema = [
                            "type" : "integer",
                            "typetext" : "<integer> (0 - N)"
                         },
+                        "comment" : {
+                           "description" : "Description for the Job.",
+                           "maxLength" : 512,
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
                         "compress" : {
                            "default" : "0",
                            "description" : "Compress dump file.",
@@ -3868,6 +3942,7 @@ const apiSchema = [
                            "description" : "Day of week selection.",
                            "format" : "pve-day-of-week-list",
                            "optional" : 1,
+                           "requires" : "starttime",
                            "type" : "string",
                            "typetext" : "<string>"
                         },
@@ -3898,6 +3973,13 @@ const apiSchema = [
                            "type" : "string",
                            "typetext" : "<string>"
                         },
+                        "id" : {
+                           "description" : "Job ID (will be autogenerated).",
+                           "format" : "pve-configid",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
                         "ionice" : {
                            "default" : 7,
                            "description" : "Set CFQ ionice priority.",
@@ -3957,6 +4039,21 @@ const apiSchema = [
                            "type" : "string",
                            "typetext" : "<string>"
                         },
+                        "notes-template" : {
+                           "description" : "Template string for generating notes for the backup(s). It can contain variables which will be replaced by their values. Currently supported are {{cluster}}, {{guestname}}, {{node}}, and {{vmid}}, but more might be added in the future. Needs to be a single line, newline and backslash need to be escaped as '\\n' and '\\\\' respectively.",
+                           "maxLength" : 1024,
+                           "optional" : 1,
+                           "requires" : "storage",
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "performance" : {
+                           "description" : "Other performance-related settings.",
+                           "format" : "backup-performance",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "[max-workers=<integer>]"
+                        },
                         "pigz" : {
                            "default" : 0,
                            "description" : "Use pigz instead of gzip when N>0. N=1 uses half of cores, N>1 uses N as thread count.",
@@ -3970,6 +4067,13 @@ const apiSchema = [
                            "type" : "string",
                            "typetext" : "<string>"
                         },
+                        "protected" : {
+                           "description" : "If true, mark backup(s) as protected.",
+                           "optional" : 1,
+                           "requires" : "storage",
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
                         "prune-backups" : {
                            "default" : "keep-all=1",
                            "description" : "Use these retention options instead of those from the storage configuration.",
@@ -3992,6 +4096,21 @@ const apiSchema = [
                            "type" : "boolean",
                            "typetext" : "<boolean>"
                         },
+                        "repeat-missed" : {
+                           "default" : 0,
+                           "description" : "If true, the job will be run as soon as possible if it was missed while the scheduler was not running.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "schedule" : {
+                           "description" : "Backup schedule. The format is a subset of `systemd` calendar events.",
+                           "format" : "pve-calendar-event",
+                           "maxLength" : 128,
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
                         "script" : {
                            "description" : "Use specified hook script.",
                            "optional" : 1,
@@ -4000,6 +4119,7 @@ const apiSchema = [
                         },
                         "starttime" : {
                            "description" : "Job Start time.",
+                           "optional" : 1,
                            "pattern" : "\\d{1,2}:\\d{1,2}",
                            "type" : "string",
                            "typetext" : "HH:MM"
@@ -5071,21 +5191,26 @@ const apiSchema = [
                                           "aurora",
                                           "autodns",
                                           "aws",
+                                          "azion",
                                           "azure",
+                                          "bunny",
                                           "cf",
                                           "clouddns",
                                           "cloudns",
                                           "cn",
                                           "conoha",
                                           "constellix",
-                                          "cx",
+                                          "cpanel",
+                                          "curanet",
                                           "cyon",
                                           "da",
                                           "ddnss",
                                           "desec",
                                           "df",
                                           "dgon",
+                                          "dnshome",
                                           "dnsimple",
+                                          "dnsservices",
                                           "do",
                                           "doapi",
                                           "domeneshop",
@@ -5101,11 +5226,12 @@ const apiSchema = [
                                           "edgedns",
                                           "euserv",
                                           "exoscale",
+                                          "fornex",
                                           "freedns",
                                           "gandi_livedns",
                                           "gcloud",
                                           "gd",
-                                          "gdnsdk",
+                                          "geoscaling",
                                           "he",
                                           "hetzner",
                                           "hexonet",
@@ -5123,6 +5249,7 @@ const apiSchema = [
                                           "kas",
                                           "kinghost",
                                           "knot",
+                                          "la",
                                           "leaseweb",
                                           "lexicon",
                                           "linode",
@@ -5136,6 +5263,7 @@ const apiSchema = [
                                           "myapi",
                                           "mydevil",
                                           "mydnsjp",
+                                          "mythic_beasts",
                                           "namecheap",
                                           "namecom",
                                           "namesilo",
@@ -5150,6 +5278,7 @@ const apiSchema = [
                                           "nsone",
                                           "nsupdate",
                                           "nw",
+                                          "oci",
                                           "one",
                                           "online",
                                           "openprovider",
@@ -5162,23 +5291,29 @@ const apiSchema = [
                                           "porkbun",
                                           "rackcorp",
                                           "rackspace",
+                                          "rage4",
                                           "rcode0",
                                           "regru",
                                           "scaleway",
                                           "schlundtech",
                                           "selectel",
+                                          "selfhost",
                                           "servercow",
                                           "simply",
                                           "tele3",
                                           "transip",
+                                          "udr",
                                           "ultra",
                                           "unoeuro",
                                           "variomedia",
+                                          "veesp",
+                                          "vercel",
                                           "vscale",
                                           "vultr",
                                           "websupport",
                                           "world4you",
                                           "yandex",
+                                          "yc",
                                           "zilore",
                                           "zone",
                                           "zonomi"
@@ -5330,21 +5465,26 @@ const apiSchema = [
                                     "aurora",
                                     "autodns",
                                     "aws",
+                                    "azion",
                                     "azure",
+                                    "bunny",
                                     "cf",
                                     "clouddns",
                                     "cloudns",
                                     "cn",
                                     "conoha",
                                     "constellix",
-                                    "cx",
+                                    "cpanel",
+                                    "curanet",
                                     "cyon",
                                     "da",
                                     "ddnss",
                                     "desec",
                                     "df",
                                     "dgon",
+                                    "dnshome",
                                     "dnsimple",
+                                    "dnsservices",
                                     "do",
                                     "doapi",
                                     "domeneshop",
@@ -5360,11 +5500,12 @@ const apiSchema = [
                                     "edgedns",
                                     "euserv",
                                     "exoscale",
+                                    "fornex",
                                     "freedns",
                                     "gandi_livedns",
                                     "gcloud",
                                     "gd",
-                                    "gdnsdk",
+                                    "geoscaling",
                                     "he",
                                     "hetzner",
                                     "hexonet",
@@ -5382,6 +5523,7 @@ const apiSchema = [
                                     "kas",
                                     "kinghost",
                                     "knot",
+                                    "la",
                                     "leaseweb",
                                     "lexicon",
                                     "linode",
@@ -5395,6 +5537,7 @@ const apiSchema = [
                                     "myapi",
                                     "mydevil",
                                     "mydnsjp",
+                                    "mythic_beasts",
                                     "namecheap",
                                     "namecom",
                                     "namesilo",
@@ -5409,6 +5552,7 @@ const apiSchema = [
                                     "nsone",
                                     "nsupdate",
                                     "nw",
+                                    "oci",
                                     "one",
                                     "online",
                                     "openprovider",
@@ -5421,23 +5565,29 @@ const apiSchema = [
                                     "porkbun",
                                     "rackcorp",
                                     "rackspace",
+                                    "rage4",
                                     "rcode0",
                                     "regru",
                                     "scaleway",
                                     "schlundtech",
                                     "selectel",
+                                    "selfhost",
                                     "servercow",
                                     "simply",
                                     "tele3",
                                     "transip",
+                                    "udr",
                                     "ultra",
                                     "unoeuro",
                                     "variomedia",
+                                    "veesp",
+                                    "vercel",
                                     "vscale",
                                     "vultr",
                                     "websupport",
                                     "world4you",
                                     "yandex",
+                                    "yc",
                                     "zilore",
                                     "zone",
                                     "zonomi"
@@ -5874,6 +6024,230 @@ const apiSchema = [
                         },
                         "protected" : 1,
                         "returns" : {
+                           "description" : "Items for each type of service containing objects for each instance.",
+                           "properties" : {
+                              "mds" : {
+                                 "description" : "Metadata servers configured in the cluster and their properties.",
+                                 "properties" : {
+                                    "{id}" : {
+                                       "description" : "Useful properties are listed, but not the full list.",
+                                       "properties" : {
+                                          "addr" : {
+                                             "description" : "Bind addresses and ports.",
+                                             "type" : "string"
+                                          },
+                                          "ceph_release" : {
+                                             "description" : "Ceph release codename currently used.",
+                                             "type" : "string"
+                                          },
+                                          "ceph_version" : {
+                                             "description" : "Version info currently used by the service.",
+                                             "type" : "string"
+                                          },
+                                          "ceph_version_short" : {
+                                             "description" : "Short version (numerical) info currently used by the service.",
+                                             "type" : "string"
+                                          },
+                                          "hostname" : {
+                                             "description" : "Hostname on which the service is running.",
+                                             "type" : "string"
+                                          },
+                                          "mem_swap_kb" : {
+                                             "description" : "Memory of the service currently in swap.",
+                                             "type" : "integer"
+                                          },
+                                          "mem_total_kb" : {
+                                             "description" : "Memory consumption of the service.",
+                                             "type" : "integer"
+                                          },
+                                          "name" : {
+                                             "description" : "Name of the service instance.",
+                                             "type" : "string"
+                                          }
+                                       },
+                                       "type" : "object"
+                                    }
+                                 },
+                                 "type" : "object"
+                              },
+                              "mgr" : {
+                                 "description" : "Managers configured in the cluster and their properties.",
+                                 "properties" : {
+                                    "{id}" : {
+                                       "description" : "Useful properties are listed, but not the full list.",
+                                       "properties" : {
+                                          "addr" : {
+                                             "description" : "Bind address",
+                                             "type" : "string"
+                                          },
+                                          "ceph_release" : {
+                                             "description" : "Ceph release codename currently used.",
+                                             "type" : "string"
+                                          },
+                                          "ceph_version" : {
+                                             "description" : "Version info currently used by the service.",
+                                             "type" : "string"
+                                          },
+                                          "ceph_version_short" : {
+                                             "description" : "Short version (numerical) info currently used by the service.",
+                                             "type" : "string"
+                                          },
+                                          "hostname" : {
+                                             "description" : "Hostname on which the service is running.",
+                                             "type" : "string"
+                                          },
+                                          "mem_swap_kb" : {
+                                             "description" : "Memory of the service currently in swap.",
+                                             "type" : "integer"
+                                          },
+                                          "mem_total_kb" : {
+                                             "description" : "Memory consumption of the service.",
+                                             "type" : "integer"
+                                          },
+                                          "name" : {
+                                             "description" : "Name of the service instance.",
+                                             "type" : "string"
+                                          }
+                                       },
+                                       "type" : "object"
+                                    }
+                                 },
+                                 "type" : "object"
+                              },
+                              "mon" : {
+                                 "description" : "Monitors configured in the cluster and their properties.",
+                                 "properties" : {
+                                    "{id}" : {
+                                       "description" : "Useful properties are listed, but not the full list.",
+                                       "properties" : {
+                                          "addrs" : {
+                                             "description" : "Bind addresses and ports.",
+                                             "type" : "string"
+                                          },
+                                          "ceph_release" : {
+                                             "description" : "Ceph release codename currently used.",
+                                             "type" : "string"
+                                          },
+                                          "ceph_version" : {
+                                             "description" : "Version info currently used by the service.",
+                                             "type" : "string"
+                                          },
+                                          "ceph_version_short" : {
+                                             "description" : "Short version (numerical) info currently used by the service.",
+                                             "type" : "string"
+                                          },
+                                          "hostname" : {
+                                             "description" : "Hostname on which the service is running.",
+                                             "type" : "string"
+                                          },
+                                          "mem_swap_kb" : {
+                                             "description" : "Memory of the service currently in swap.",
+                                             "type" : "integer"
+                                          },
+                                          "mem_total_kb" : {
+                                             "description" : "Memory consumption of the service.",
+                                             "type" : "integer"
+                                          },
+                                          "name" : {
+                                             "description" : "Name of the service instance.",
+                                             "type" : "string"
+                                          }
+                                       },
+                                       "type" : "object"
+                                    }
+                                 },
+                                 "type" : "object"
+                              },
+                              "node" : {
+                                 "description" : "Ceph version installed on the nodes.",
+                                 "properties" : {
+                                    "{node}" : {
+                                       "properties" : {
+                                          "buildcommit" : {
+                                             "description" : "GIT commit used for the build.",
+                                             "type" : "string"
+                                          },
+                                          "version" : {
+                                             "description" : "Version info.",
+                                             "properties" : {
+                                                "parts" : {
+                                                   "description" : "major, minor & patch",
+                                                   "type" : "array"
+                                                },
+                                                "str" : {
+                                                   "description" : "Version as single string.",
+                                                   "type" : "string"
+                                                }
+                                             },
+                                             "type" : "object"
+                                          }
+                                       },
+                                       "type" : "object"
+                                    }
+                                 },
+                                 "type" : "object"
+                              },
+                              "osd" : {
+                                 "description" : "OSDs configured in the cluster and their properties.",
+                                 "properties" : {
+                                    "{id}" : {
+                                       "description" : "Useful properties are listed, but not the full list.",
+                                       "properties" : {
+                                          "back_addr" : {
+                                             "description" : "Bind addresses and ports for backend inter OSD traffic.",
+                                             "type" : "string"
+                                          },
+                                          "ceph_release" : {
+                                             "description" : "Ceph release codename currently used.",
+                                             "type" : "string"
+                                          },
+                                          "ceph_version" : {
+                                             "description" : "Version info currently used by the service.",
+                                             "type" : "string"
+                                          },
+                                          "ceph_version_short" : {
+                                             "description" : "Short version (numerical) info currently used by the service.",
+                                             "type" : "string"
+                                          },
+                                          "device_id" : {
+                                             "description" : "Devices used by the OSD.",
+                                             "type" : "string"
+                                          },
+                                          "front_addr" : {
+                                             "description" : "Bind addresses and ports for frontend traffic to OSDs.",
+                                             "type" : "string"
+                                          },
+                                          "hostname" : {
+                                             "description" : "Hostname on which the service is running.",
+                                             "type" : "string"
+                                          },
+                                          "id" : {
+                                             "description" : "OSD ID.",
+                                             "type" : "integer"
+                                          },
+                                          "mem_swap_kb" : {
+                                             "description" : "Memory of the service currently in swap.",
+                                             "type" : "integer"
+                                          },
+                                          "mem_total_kb" : {
+                                             "description" : "Memory consumption of the service.",
+                                             "type" : "integer"
+                                          },
+                                          "osd_data" : {
+                                             "description" : "Path to the OSD data directory.",
+                                             "type" : "string"
+                                          },
+                                          "osd_objectstore" : {
+                                             "description" : "OSD objectstore type.",
+                                             "type" : "string"
+                                          }
+                                       },
+                                       "type" : "object"
+                                    }
+                                 },
+                                 "type" : "array"
+                              }
+                           },
                            "type" : "object"
                         }
                      }
@@ -6034,6 +6408,10 @@ const apiSchema = [
                            "items" : {
                               "additionalProperties" : 1,
                               "properties" : {
+                                 "description" : {
+                                    "description" : "Flag description.",
+                                    "type" : "string"
+                                 },
                                  "name" : {
                                     "description" : "Flag name.",
                                     "enum" : [
@@ -6050,6 +6428,10 @@ const apiSchema = [
                                        "pause"
                                     ],
                                     "type" : "string"
+                                 },
+                                 "value" : {
+                                    "description" : "Flag value.",
+                                    "type" : "boolean"
                                  }
                               },
                               "type" : "object"
@@ -6190,6 +6572,106 @@ const apiSchema = [
             "path" : "/cluster/ceph",
             "text" : "ceph"
          },
+         {
+            "children" : [
+               {
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Returns a list of future schedule runtimes.",
+                        "method" : "GET",
+                        "name" : "schedule-analyze",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "iterations" : {
+                                 "default" : 10,
+                                 "description" : "Number of event-iteration to simulate and return.",
+                                 "maximum" : 100,
+                                 "minimum" : 1,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (1 - 100)"
+                              },
+                              "schedule" : {
+                                 "description" : "Job schedule. The format is a subset of `systemd` calendar events.",
+                                 "format" : "pve-calendar-event",
+                                 "maxLength" : 128,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "starttime" : {
+                                 "description" : "UNIX timestamp to start the calculation from. Defaults to the current time.",
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer>"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "user" : "all"
+                        },
+                        "returns" : {
+                           "description" : "An array of the next <iterations> events since <starttime>.",
+                           "items" : {
+                              "properties" : {
+                                 "timestamp" : {
+                                    "description" : "UNIX timestamp for the run.",
+                                    "type" : "integer"
+                                 },
+                                 "utc" : {
+                                    "description" : "UTC timestamp for the run.",
+                                    "type" : "string"
+                                 }
+                              },
+                              "type" : "object"
+                           },
+                           "type" : "array"
+                        }
+                     }
+                  },
+                  "leaf" : 1,
+                  "path" : "/cluster/jobs/schedule-analyze",
+                  "text" : "schedule-analyze"
+               }
+            ],
+            "info" : {
+               "GET" : {
+                  "allowtoken" : 1,
+                  "description" : "Index for jobs related endpoints.",
+                  "method" : "GET",
+                  "name" : "index",
+                  "parameters" : {
+                     "additionalProperties" : 0
+                  },
+                  "permissions" : {
+                     "user" : "all"
+                  },
+                  "returns" : {
+                     "description" : "Directory index.",
+                     "items" : {
+                        "properties" : {
+                           "subdir" : {
+                              "description" : "API sub-directory endpoint",
+                              "type" : "string"
+                           }
+                        },
+                        "type" : "object"
+                     },
+                     "links" : [
+                        {
+                           "href" : "{subdir}",
+                           "rel" : "child"
+                        }
+                     ],
+                     "type" : "array"
+                  }
+               }
+            },
+            "leaf" : 0,
+            "path" : "/cluster/jobs",
+            "text" : "jobs"
+         },
          {
             "children" : [
                {
@@ -6559,9 +7041,10 @@ const apiSchema = [
                                  "properties" : {
                                     "alias" : {
                                        "description" : "alias name of the vnet",
+                                       "maxLength" : 256,
                                        "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                                       "pattern" : "(?^i:[\\(\\)-_.\\w\\d\\s]{0,256})",
+                                       "type" : "string"
                                     },
                                     "delete" : {
                                        "description" : "A list of settings you want to delete.",
@@ -6676,9 +7159,10 @@ const apiSchema = [
                            "properties" : {
                               "alias" : {
                                  "description" : "alias name of the vnet",
+                                 "maxLength" : 256,
                                  "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
+                                 "pattern" : "(?^i:[\\(\\)-_.\\w\\d\\s]{0,256})",
+                                 "type" : "string"
                               },
                               "tag" : {
                                  "description" : "vlan or vxlan id",
@@ -6817,11 +7301,23 @@ const apiSchema = [
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
+                                    "advertise-subnets" : {
+                                       "description" : "Advertise evpn subnets if you have silent hosts",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    },
                                     "bridge" : {
                                        "optional" : 1,
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
+                                    "bridge-disable-mac-learning" : {
+                                       "description" : "Disable auto mac learning.",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    },
                                     "controller" : {
                                        "description" : "Frr router name",
                                        "optional" : 1,
@@ -6843,6 +7339,12 @@ const apiSchema = [
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
+                                    "disable-arp-nd-suppression" : {
+                                       "description" : "Disable ipv4 arp && ipv6 neighbour discovery suppression",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    },
                                     "dns" : {
                                        "description" : "dns api server",
                                        "optional" : 1,
@@ -6869,6 +7371,19 @@ const apiSchema = [
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
+                                    "exitnodes-local-routing" : {
+                                       "description" : "Allow exitnodes to connect to evpn guests",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    },
+                                    "exitnodes-primary" : {
+                                       "description" : "Force traffic to this exitnode first.",
+                                       "format" : "pve-node",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
                                     "ipam" : {
                                        "description" : "use a specific ipam",
                                        "optional" : 1,
@@ -6908,6 +7423,13 @@ const apiSchema = [
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
+                                    "rt-import" : {
+                                       "description" : "Route-Target import",
+                                       "format" : "pve-sdn-bgp-rt-list",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
                                     "tag" : {
                                        "description" : "Service-VLAN Tag",
                                        "minimum" : 0,
@@ -7059,17 +7581,35 @@ const apiSchema = [
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
+                              "advertise-subnets" : {
+                                 "description" : "Advertise evpn subnets if you have silent hosts",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
                               "bridge" : {
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
+                              "bridge-disable-mac-learning" : {
+                                 "description" : "Disable auto mac learning.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
                               "controller" : {
                                  "description" : "Frr router name",
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
+                              "disable-arp-nd-suppression" : {
+                                 "description" : "Disable ipv4 arp && ipv6 neighbour discovery suppression",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
                               "dns" : {
                                  "description" : "dns api server",
                                  "optional" : 1,
@@ -7096,6 +7636,19 @@ const apiSchema = [
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
+                              "exitnodes-local-routing" : {
+                                 "description" : "Allow exitnodes to connect to evpn guests",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
+                              "exitnodes-primary" : {
+                                 "description" : "Force traffic to this exitnode first.",
+                                 "format" : "pve-node",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
                               "ipam" : {
                                  "description" : "use a specific ipam",
                                  "optional" : 1,
@@ -7135,6 +7688,13 @@ const apiSchema = [
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
+                              "rt-import" : {
+                                 "description" : "Route-Target import",
+                                 "format" : "pve-sdn-bgp-rt-list",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
                               "tag" : {
                                  "description" : "Service-VLAN Tag",
                                  "minimum" : 0,
@@ -7283,9 +7843,16 @@ const apiSchema = [
                                  "properties" : {
                                     "asn" : {
                                        "description" : "autonomous system number",
+                                       "maximum" : 4294967296,
+                                       "minimum" : 0,
                                        "optional" : 1,
                                        "type" : "integer",
-                                       "typetext" : "<integer>"
+                                       "typetext" : "<integer> (0 - 4294967296)"
+                                    },
+                                    "bgp-multipath-as-path-relax" : {
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
                                     },
                                     "controller" : {
                                        "description" : "The SDN controller object identifier.",
@@ -7437,9 +8004,16 @@ const apiSchema = [
                            "properties" : {
                               "asn" : {
                                  "description" : "autonomous system number",
+                                 "maximum" : 4294967296,
+                                 "minimum" : 0,
                                  "optional" : 1,
                                  "type" : "integer",
-                                 "typetext" : "<integer>"
+                                 "typetext" : "<integer> (0 - 4294967296)"
+                              },
+                              "bgp-multipath-as-path-relax" : {
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
                               },
                               "controller" : {
                                  "description" : "The SDN controller object identifier.",
@@ -8122,6 +8696,11 @@ const apiSchema = [
                   "returns" : {
                      "items" : {
                         "properties" : {
+                           "cgroup-mode" : {
+                              "description" : "The cgroup mode the node operates under (when type == node).",
+                              "optional" : 1,
+                              "type" : "integer"
+                           },
                            "content" : {
                               "description" : "Allowed storage content types (when type == storage).",
                               "format" : "pve-storage-content-list",
@@ -8130,15 +8709,17 @@ const apiSchema = [
                            },
                            "cpu" : {
                               "description" : "CPU utilization (when type in node,qemu,lxc).",
+                              "minimum" : 0,
                               "optional" : 1,
                               "renderer" : "fraction_as_percentage",
                               "type" : "number"
                            },
                            "disk" : {
                               "description" : "Used disk space in bytes (when type in storage), used root image spave for VMs (type in qemu,lxc).",
+                              "minimum" : 0,
                               "optional" : 1,
                               "renderer" : "bytes",
-                              "type" : "string"
+                              "type" : "integer"
                            },
                            "hastate" : {
                               "description" : "HA service status (for HA managed VMs).",
@@ -8146,6 +8727,7 @@ const apiSchema = [
                               "type" : "string"
                            },
                            "id" : {
+                              "description" : "Resource id.",
                               "type" : "string"
                            },
                            "level" : {
@@ -8155,11 +8737,13 @@ const apiSchema = [
                            },
                            "maxcpu" : {
                               "description" : "Number of available CPUs (when type in node,qemu,lxc).",
+                              "minimum" : 0,
                               "optional" : 1,
                               "type" : "number"
                            },
                            "maxdisk" : {
                               "description" : "Storage size in bytes (when type in storage), root image size for VMs (type in qemu,lxc).",
+                              "minimum" : 0,
                               "optional" : 1,
                               "renderer" : "bytes",
                               "type" : "integer"
@@ -8172,9 +8756,10 @@ const apiSchema = [
                            },
                            "mem" : {
                               "description" : "Used memory in bytes (when type in node,qemu,lxc).",
+                              "minimum" : 0,
                               "optional" : 1,
                               "renderer" : "bytes",
-                              "type" : "string"
+                              "type" : "integer"
                            },
                            "name" : {
                               "description" : "Name of the resource.",
@@ -8226,6 +8811,12 @@ const apiSchema = [
                               "optional" : 1,
                               "renderer" : "duration",
                               "type" : "integer"
+                           },
+                           "vmid" : {
+                              "description" : "The numerical vmid (when type in qemu,lxc).",
+                              "minimum" : 1,
+                              "optional" : 1,
+                              "type" : "integer"
                            }
                         },
                         "type" : "object"
@@ -8272,7 +8863,7 @@ const apiSchema = [
             "info" : {
                "GET" : {
                   "allowtoken" : 1,
-                  "description" : "Get datacenter options.",
+                  "description" : "Get datacenter options. Without 'Sys.Audit' on '/' not all options are returned.",
                   "method" : "GET",
                   "name" : "get_options",
                   "parameters" : {
@@ -8285,7 +8876,8 @@ const apiSchema = [
                         [
                            "Sys.Audit"
                         ]
-                     ]
+                     ],
+                     "user" : "all"
                   },
                   "returns" : {
                      "type" : "object"
@@ -8353,6 +8945,31 @@ const apiSchema = [
                            "optional" : 1,
                            "type" : "string"
                         },
+                        "crs" : {
+                           "description" : "Cluster resource scheduling settings.",
+                           "format" : {
+                              "ha" : {
+                                 "default" : "basic",
+                                 "description" : "Use this resource scheduler mode for HA.",
+                                 "enum" : [
+                                    "basic",
+                                    "static"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "verbose_description" : "Configures how the HA manager should select nodes to start or recover services. With 'basic', only the number of services is used, with 'static', static CPU and memory configuration of services is considered."
+                              },
+                              "ha-rebalance-on-start" : {
+                                 "default" : 0,
+                                 "description" : "Set to use CRS for selecting a suited node when a HA services request-state changes from stop to start.",
+                                 "optional" : 1,
+                                 "type" : "boolean"
+                              }
+                           },
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "[ha=<basic|static>] [,ha-rebalance-on-start=<1|0>]"
+                        },
                         "delete" : {
                            "description" : "A list of settings you want to delete.",
                            "format" : "pve-configid-list",
@@ -8360,6 +8977,13 @@ const apiSchema = [
                            "type" : "string",
                            "typetext" : "<string>"
                         },
+                        "description" : {
+                           "description" : "Datacenter description. Shown in the web-interface datacenter notes panel. This is saved as comment inside the configuration file.",
+                           "maxLength" : 65536,
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
                         "email_from" : {
                            "description" : "Specify email address to send notification from (default is root@$hostname)",
                            "format" : "email-opt",
@@ -8509,6 +9133,99 @@ const apiSchema = [
                            "type" : "boolean",
                            "typetext" : "<boolean>"
                         },
+                        "next-id" : {
+                           "description" : "Control the range for the free VMID auto-selection pool.",
+                           "format" : {
+                              "lower" : {
+                                 "default" : 100,
+                                 "description" : "Lower, inclusive boundary for free next-id API range.",
+                                 "max" : 999999999,
+                                 "min" : 100,
+                                 "optional" : 1,
+                                 "type" : "integer"
+                              },
+                              "upper" : {
+                                 "default" : 1000000,
+                                 "description" : "Upper, exclusive boundary for free next-id API range.",
+                                 "max" : 1000000000,
+                                 "min" : 100,
+                                 "optional" : 1,
+                                 "type" : "integer"
+                              }
+                           },
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "[lower=<integer>] [,upper=<integer>]"
+                        },
+                        "notify" : {
+                           "description" : "Cluster-wide notification settings.",
+                           "format" : {
+                              "package-updates" : {
+                                 "default" : "auto",
+                                 "description" : "Control when the daily update job should send out notification mails.",
+                                 "enum" : [
+                                    "auto",
+                                    "always",
+                                    "never"
+                                 ],
+                                 "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"
+                              }
+                           },
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "package-updates=<auto|always|never>"
+                        },
+                        "registered-tags" : {
+                           "description" : "A list of tags that require a `Sys.Modify` on '/' to set and delete. Tags set here that are also in 'user-tag-access' also require `Sys.Modify`.",
+                           "optional" : 1,
+                           "pattern" : "(?:(?^i:[a-z0-9_][a-z0-9_\\-\\+\\.]*);)*(?^i:[a-z0-9_][a-z0-9_\\-\\+\\.]*)",
+                           "type" : "string",
+                           "typetext" : "<tag>[;<tag>...]"
+                        },
+                        "tag-style" : {
+                           "description" : "Tag style options.",
+                           "format" : {
+                              "case-sensitive" : {
+                                 "default" : 0,
+                                 "description" : "Controls if filtering for unique tags on update should check case-sensitive.",
+                                 "optional" : 1,
+                                 "type" : "boolean"
+                              },
+                              "color-map" : {
+                                 "description" : "Manual color mapping for tags (semicolon separated).",
+                                 "optional" : 1,
+                                 "pattern" : "(?:(?^i:[a-z0-9_][a-z0-9_\\-\\+\\.]*):[0-9a-fA-F]{6}(?::[0-9a-fA-F]{6})?)(?:;(?:(?^i:[a-z0-9_][a-z0-9_\\-\\+\\.]*):[0-9a-fA-F]{6}(?::[0-9a-fA-F]{6})?))*",
+                                 "type" : "string",
+                                 "typetext" : "<tag>:<hex-color>[:<hex-color-for-text>][;<tag>=...]"
+                              },
+                              "ordering" : {
+                                 "default" : "alphabetical",
+                                 "description" : "Controls the sorting of the tags in the web-interface and the API update.",
+                                 "enum" : [
+                                    "config",
+                                    "alphabetical"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "shape" : {
+                                 "default" : "circle",
+                                 "description" : "Tag shape for the web ui tree. 'full' draws the full tag. 'circle' draws only a circle with the background color. 'dense' only draws a small rectancle (useful when many tags are assigned to each guest).'none' disables showing the tags.",
+                                 "enum" : [
+                                    "full",
+                                    "circle",
+                                    "dense",
+                                    "none"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              }
+                           },
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "[case-sensitive=<1|0>] [,color-map=<tag>:<hex-color>[:<hex-color-for-text>][;<tag>=...]] [,ordering=<config|alphabetical>] [,shape=<enum>]"
+                        },
                         "u2f" : {
                            "description" : "u2f",
                            "format" : {
@@ -8528,6 +9245,66 @@ const apiSchema = [
                            "optional" : 1,
                            "type" : "string",
                            "typetext" : "[appid=<APPID>] [,origin=<URL>]"
+                        },
+                        "user-tag-access" : {
+                           "description" : "Privilege options for user-settable tags",
+                           "format" : {
+                              "user-allow" : {
+                                 "default" : "free",
+                                 "description" : "Controls tag usage for users without `Sys.Modify` on `/` by either allowing `none`, a `list`, already `existing` or anything (`free`).",
+                                 "enum" : [
+                                    "none",
+                                    "list",
+                                    "existing",
+                                    "free"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "verbose_description" : "Controls which tags can be set or deleted on resources a user controls (such as guests). Users with the `Sys.Modify` privilege on `/` are always  unrestricted. * 'none' no tags are usable. * 'list' tags from 'user-allow-list' are usable. * 'existing' like list, but already existing tags of resources are also usable.* 'free' no tag restrictions."
+                              },
+                              "user-allow-list" : {
+                                 "description" : "List of tags users are allowed to set and delete (semicolon separated) for 'user-allow' values 'list' and 'existing'.",
+                                 "optional" : 1,
+                                 "pattern" : "(?^i:[a-z0-9_][a-z0-9_\\-\\+\\.]*)(?:;(?^i:[a-z0-9_][a-z0-9_\\-\\+\\.]*))*",
+                                 "type" : "string",
+                                 "typetext" : "<tag>[;<tag>...]"
+                              }
+                           },
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "[user-allow=<enum>] [,user-allow-list=<tag>[;<tag>...]]"
+                        },
+                        "webauthn" : {
+                           "description" : "webauthn configuration",
+                           "format" : {
+                              "allow-subdomains" : {
+                                 "default" : 1,
+                                 "description" : "Whether to allow the origin to be a subdomain, rather than the exact URL.",
+                                 "optional" : 1,
+                                 "type" : "boolean"
+                              },
+                              "id" : {
+                                 "description" : "Relying party ID. Must be the domain name without protocol, port or location. Changing this *will* break existing credentials.",
+                                 "format_description" : "DOMAINNAME",
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "origin" : {
+                                 "description" : "Site origin. Must be a `https://` URL (or `http://localhost`). Should contain the address users type in their browsers to access the web interface. Changing this *may* break existing credentials.",
+                                 "format_description" : "URL",
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "rp" : {
+                                 "description" : "Relying party name. Any text identifier. Changing this *may* break existing credentials.",
+                                 "format_description" : "RELYING_PARTY",
+                                 "optional" : 1,
+                                 "type" : "string"
+                              }
+                           },
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "[allow-subdomains=<1|0>] [,id=<DOMAINNAME>] [,origin=<URL>] [,rp=<RELYING_PARTY>]"
                         }
                      }
                   },
@@ -8642,7 +9419,7 @@ const apiSchema = [
             "info" : {
                "GET" : {
                   "allowtoken" : 1,
-                  "description" : "Get next free VMID. If you pass an VMID it will raise an error if the ID is already used.",
+                  "description" : "Get next free VMID. Pass a VMID to assert that its free (at time of check).",
                   "method" : "GET",
                   "name" : "nextid",
                   "parameters" : {
@@ -8943,7 +9720,7 @@ const apiSchema = [
                                                          "typetext" : "<integer> (0 - N)"
                                                       },
                                                       "icmp-type" : {
-                                                         "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
+                                                         "description" : "Specify icmp-type. Only valid if proto equals 'icmp' or 'icmpv6'/'ipv6-icmp'.",
                                                          "format" : "pve-fw-icmp-type-spec",
                                                          "optional" : 1,
                                                          "type" : "string",
@@ -9167,7 +9944,7 @@ const apiSchema = [
                                                    "typetext" : "<integer> (0 - N)"
                                                 },
                                                 "icmp-type" : {
-                                                   "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
+                                                   "description" : "Specify icmp-type. Only valid if proto equals 'icmp' or 'icmpv6'/'ipv6-icmp'.",
                                                    "format" : "pve-fw-icmp-type-spec",
                                                    "optional" : 1,
                                                    "type" : "string",
@@ -9772,6 +10549,12 @@ const apiSchema = [
                                                 "parameters" : {
                                                    "additionalProperties" : 0,
                                                    "properties" : {
+                                                      "force" : {
+                                                         "description" : "Delete all members of the IPSet, if there are any.",
+                                                         "optional" : 1,
+                                                         "type" : "boolean",
+                                                         "typetext" : "<boolean>"
+                                                      },
                                                       "name" : {
                                                          "description" : "IP set name.",
                                                          "maxLength" : 64,
@@ -10166,7 +10949,7 @@ const apiSchema = [
                                                    "type" : "string"
                                                 },
                                                 "macfilter" : {
-                                                   "default" : 0,
+                                                   "default" : 1,
                                                    "description" : "Enable/disable MAC address filter.",
                                                    "optional" : 1,
                                                    "type" : "boolean"
@@ -10281,7 +11064,7 @@ const apiSchema = [
                                                    "type" : "string"
                                                 },
                                                 "macfilter" : {
-                                                   "default" : 0,
+                                                   "default" : 1,
                                                    "description" : "Enable/disable MAC address filter.",
                                                    "optional" : 1,
                                                    "type" : "boolean",
@@ -10377,12 +11160,26 @@ const apiSchema = [
                                                    "type" : "string",
                                                    "typetext" : "<string>"
                                                 },
+                                                "since" : {
+                                                   "description" : "Display log since this UNIX epoch.",
+                                                   "minimum" : 0,
+                                                   "optional" : 1,
+                                                   "type" : "integer",
+                                                   "typetext" : "<integer> (0 - N)"
+                                                },
                                                 "start" : {
                                                    "minimum" : 0,
                                                    "optional" : 1,
                                                    "type" : "integer",
                                                    "typetext" : "<integer> (0 - N)"
                                                 },
+                                                "until" : {
+                                                   "description" : "Display log until this UNIX epoch.",
+                                                   "minimum" : 0,
+                                                   "optional" : 1,
+                                                   "type" : "integer",
+                                                   "typetext" : "<integer> (0 - N)"
+                                                },
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
@@ -11759,6 +12556,13 @@ const apiSchema = [
                                                    "type" : "string",
                                                    "typetext" : "<string>"
                                                 },
+                                                "encode" : {
+                                                   "default" : 1,
+                                                   "description" : "If set, the content will be encoded as base64 (required by QEMU).Otherwise the content needs to be encoded beforehand - defaults to true.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean",
+                                                   "typetext" : "<boolean>"
+                                                },
                                                 "file" : {
                                                    "description" : "The path to the file.",
                                                    "type" : "string",
@@ -11803,7 +12607,7 @@ const apiSchema = [
                               "info" : {
                                  "GET" : {
                                     "allowtoken" : 1,
-                                    "description" : "Qemu Agent command index.",
+                                    "description" : "QEMU Guest Agent command index.",
                                     "method" : "GET",
                                     "name" : "index",
                                     "parameters" : {
@@ -11829,7 +12633,7 @@ const apiSchema = [
                                     },
                                     "proxyto" : "node",
                                     "returns" : {
-                                       "description" : "Returns the list of Qemu Agent commands",
+                                       "description" : "Returns the list of QEMU Guest Agent commands",
                                        "items" : {
                                           "properties" : {},
                                           "type" : "object"
@@ -11845,7 +12649,7 @@ const apiSchema = [
                                  },
                                  "POST" : {
                                     "allowtoken" : 1,
-                                    "description" : "Execute Qemu Guest Agent commands.",
+                                    "description" : "Execute QEMU Guest Agent commands.",
                                     "method" : "POST",
                                     "name" : "agent",
                                     "parameters" : {
@@ -12115,13 +12919,25 @@ const apiSchema = [
                                              "optional" : 1,
                                              "type" : "boolean"
                                           },
+                                          "affinity" : {
+                                             "description" : "List of host cores used to execute guest processes, for example: 0,5,8-11",
+                                             "format" : "pve-cpuset",
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
                                           "agent" : {
-                                             "description" : "Enable/disable Qemu GuestAgent and its properties.",
+                                             "description" : "Enable/disable communication with the QEMU Guest Agent and its properties.",
                                              "format" : {
                                                 "enabled" : {
                                                    "default" : 0,
                                                    "default_key" : 1,
-                                                   "description" : "Enable/disable Qemu GuestAgent.",
+                                                   "description" : "Enable/disable communication with a QEMU Guest Agent (QGA) running in the VM.",
+                                                   "type" : "boolean"
+                                                },
+                                                "freeze-fs-on-backup" : {
+                                                   "default" : 1,
+                                                   "description" : "Freeze/thaw guest filesystems on backup for consistency.",
+                                                   "optional" : 1,
                                                    "type" : "boolean"
                                                 },
                                                 "fstrim_cloned_disks" : {
@@ -12192,7 +13008,7 @@ const apiSchema = [
                                              "type" : "boolean"
                                           },
                                           "balloon" : {
-                                             "description" : "Amount of target RAM for the VM in MB. Using zero disables the ballon driver.",
+                                             "description" : "Amount of target RAM for the VM in MiB. Using zero disables the ballon driver.",
                                              "minimum" : 0,
                                              "optional" : 1,
                                              "type" : "integer"
@@ -12208,7 +13024,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "boot" : {
-                                             "description" : "Specify guest boot order. Use with 'order=', usage with no key or 'legacy=' is deprecated.",
+                                             "description" : "Specify guest boot order. Use the 'order=' sub-property as usage with no key or 'legacy=' is deprecated.",
                                              "format" : "pve-qm-boot",
                                              "optional" : 1,
                                              "type" : "string"
@@ -12276,10 +13092,10 @@ const apiSchema = [
                                              "verbose_description" : "Limit of CPU usage.\n\nNOTE: If the computer has 2 CPUs, it has total of '2' CPU time. Value '0' indicates no CPU limit."
                                           },
                                           "cpuunits" : {
-                                             "default" : 1024,
-                                             "description" : "CPU weight for a VM.",
+                                             "default" : "cgroup v1: 1024, cgroup v2: 100",
+                                             "description" : "CPU weight for a VM, will be clamped to [1, 10000] in cgroup v2.",
                                              "maximum" : 262144,
-                                             "minimum" : 2,
+                                             "minimum" : 1,
                                              "optional" : 1,
                                              "type" : "integer",
                                              "verbose_description" : "CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to weights of all the other running VMs."
@@ -12295,8 +13111,18 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "efidisk0" : {
-                                             "description" : "Configure a Disk for storing EFI vars. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and that the default EFI vars are copied to the volume instead.",
+                                             "description" : "Configure a disk for storing EFI vars.",
                                              "format" : {
+                                                "efitype" : {
+                                                   "default" : "2m",
+                                                   "description" : "Size and type of the OVMF EFI vars. '4m' is newer and recommended, and required for Secure Boot. For backwards compatibility, '2m' is used if not otherwise specified. Ignored for VMs with arch=aarc64 (ARM).",
+                                                   "enum" : [
+                                                      "2m",
+                                                      "4m"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
                                                 "file" : {
                                                    "default_key" : 1,
                                                    "description" : "The drive's backing volume.",
@@ -12318,6 +13144,12 @@ const apiSchema = [
                                                    "optional" : 1,
                                                    "type" : "string"
                                                 },
+                                                "pre-enrolled-keys" : {
+                                                   "default" : 0,
+                                                   "description" : "Use am EFI vars template with distribution-specific and Microsoft Standard keys enrolled, if used with 'efitype=4m'. Note that this will enable Secure Boot by default, though it can still be turned off from within the VM.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
                                                 "size" : {
                                                    "description" : "Disk size. This is purely informational and has no effect.",
                                                    "format" : "disk-size",
@@ -12352,7 +13184,7 @@ const apiSchema = [
                                           },
                                           "hotplug" : {
                                              "default" : "network,disk,usb",
-                                             "description" : "Selectively enable hotplug features. This is a comma separated list of hotplug features: 'network', 'disk', 'cpu', 'memory' and 'usb'. Use '0' to disable hotplug completely. Value '1' is an alias for the default 'network,disk,usb'.",
+                                             "description" : "Selectively enable hotplug features. This is a comma separated list of hotplug features: 'network', 'disk', 'cpu', 'memory', 'usb' and 'cloudinit'. Use '0' to disable hotplug completely. Using '1' as value is an alias for the default `network,disk,usb`. USB hotplugging is possible for guests with machine version >= 7.1 and ostype l26 or windows > 7.",
                                              "format" : "pve-hotplug-features",
                                              "optional" : 1,
                                              "type" : "string"
@@ -12368,7 +13200,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "ide[n]" : {
-                                             "description" : "Use volume as IDE hard disk or CD-ROM (n is 0 to 3). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
+                                             "description" : "Use volume as IDE hard disk or CD-ROM (n is 0 to 3).",
                                              "format" : {
                                                 "aio" : {
                                                    "description" : "AIO type to use.",
@@ -12725,7 +13557,7 @@ const apiSchema = [
                                           },
                                           "keyboard" : {
                                              "default" : null,
-                                             "description" : "Keybord layout for vnc server. Default is read from the '/etc/pve/datacenter.cfg' configuration file.It should not be necessary to set it.",
+                                             "description" : "Keyboard layout for VNC server. This option is generally not required and is often better handled from within the guest OS.",
                                              "enum" : [
                                                 "de",
                                                 "de-ch",
@@ -12763,7 +13595,7 @@ const apiSchema = [
                                              "type" : "boolean"
                                           },
                                           "localtime" : {
-                                             "description" : "Set the real time clock to local time. This is enabled by default if ostype indicates a Microsoft OS.",
+                                             "description" : "Set the real time clock (RTC) to local time. This is enabled by default if the `ostype` indicates a Microsoft Windows OS.",
                                              "optional" : 1,
                                              "type" : "boolean"
                                           },
@@ -12784,7 +13616,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "machine" : {
-                                             "description" : "Specifies the Qemu machine type.",
+                                             "description" : "Specifies the QEMU machine type.",
                                              "maxLength" : 40,
                                              "optional" : 1,
                                              "pattern" : "(pc|pc(-i440fx)?-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|q35|pc-q35-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|virt(?:-\\d+(\\.\\d+)+)?(\\+pve\\d+)?)",
@@ -12792,7 +13624,7 @@ const apiSchema = [
                                           },
                                           "memory" : {
                                              "default" : 512,
-                                             "description" : "Amount of RAM for the VM in MB. This is the maximum available memory when you use the balloon device.",
+                                             "description" : "Amount of RAM for the VM in MiB. This is the maximum available memory when you use the balloon device.",
                                              "minimum" : 16,
                                              "optional" : 1,
                                              "type" : "integer"
@@ -12818,7 +13650,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "nameserver" : {
-                                             "description" : "cloud-init: Sets DNS server IP address for a container. Create will'\n\t    .' automatically use the setting from the host if neither searchdomain nor nameserver'\n\t    .' are set.",
+                                             "description" : "cloud-init: Sets DNS server IP address for a container. Create will automatically use the setting from the host if neither searchdomain nor nameserver are set.",
                                              "format" : "address-list",
                                              "optional" : 1,
                                              "type" : "string"
@@ -12828,9 +13660,9 @@ const apiSchema = [
                                              "format" : {
                                                 "bridge" : {
                                                    "description" : "Bridge to attach the network device to. The Proxmox VE standard bridge\nis called 'vmbr0'.\n\nIf you do not specify a bridge, we create a kvm user (NATed) network\ndevice, which provides DHCP and DNS services. The following addresses\nare used:\n\n 10.0.2.2   Gateway\n 10.0.2.3   DNS Server\n 10.0.2.4   SMB Server\n\nThe DHCP server assign addresses to the guest starting from 10.0.2.15.\n",
+                                                   "format" : "pve-bridge-id",
                                                    "format_description" : "bridge",
                                                    "optional" : 1,
-                                                   "pattern" : "[-_.\\w\\d]+",
                                                    "type" : "string"
                                                 },
                                                 "e1000" : {
@@ -12849,6 +13681,10 @@ const apiSchema = [
                                                    "alias" : "macaddr",
                                                    "keyAlias" : "model"
                                                 },
+                                                "e1000e" : {
+                                                   "alias" : "macaddr",
+                                                   "keyAlias" : "model"
+                                                },
                                                 "firewall" : {
                                                    "description" : "Whether this interface should be protected by the firewall.",
                                                    "optional" : 1,
@@ -12883,19 +13719,20 @@ const apiSchema = [
                                                    "default_key" : 1,
                                                    "description" : "Network Card Model. The 'virtio' model provides the best performance with very low CPU overhead. If your guest does not support this driver, it is usually best to use 'e1000'.",
                                                    "enum" : [
-                                                      "rtl8139",
-                                                      "ne2k_pci",
                                                       "e1000",
-                                                      "pcnet",
-                                                      "virtio",
-                                                      "ne2k_isa",
+                                                      "e1000-82540em",
+                                                      "e1000-82544gc",
+                                                      "e1000-82545em",
+                                                      "e1000e",
                                                       "i82551",
                                                       "i82557b",
                                                       "i82559er",
-                                                      "vmxnet3",
-                                                      "e1000-82540em",
-                                                      "e1000-82544gc",
-                                                      "e1000-82545em"
+                                                      "ne2k_isa",
+                                                      "ne2k_pci",
+                                                      "pcnet",
+                                                      "rtl8139",
+                                                      "virtio",
+                                                      "vmxnet3"
                                                    ],
                                                    "type" : "string"
                                                 },
@@ -12920,7 +13757,7 @@ const apiSchema = [
                                                 },
                                                 "queues" : {
                                                    "description" : "Number of packet queues to be used on the device.",
-                                                   "maximum" : 16,
+                                                   "maximum" : 64,
                                                    "minimum" : 0,
                                                    "optional" : 1,
                                                    "type" : "integer"
@@ -13020,13 +13857,14 @@ const apiSchema = [
                                                 "win7",
                                                 "win8",
                                                 "win10",
+                                                "win11",
                                                 "l24",
                                                 "l26",
                                                 "solaris"
                                              ],
                                              "optional" : 1,
                                              "type" : "string",
-                                             "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016/2019\nl24;; Linux 2.4 Kernel\nl26;; Linux 2.6 - 5.X Kernel\nsolaris;; Solaris/OpenSolaris/OpenIndiania kernel\n"
+                                             "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016/2019\nwin11;; Microsoft Windows 11/2022\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).",
@@ -13052,7 +13890,7 @@ const apiSchema = [
                                              "format" : {
                                                 "max_bytes" : {
                                                    "default" : 1024,
-                                                   "description" : "Maximum bytes of entropy injected into the guest every 'period' milliseconds. Prefer a lower value when using /dev/random as source. Use 0 to disable limiting (potentially dangerous!).",
+                                                   "description" : "Maximum bytes of entropy allowed to get injected into the guest every 'period' milliseconds. Prefer a lower value when using '/dev/random' as source. Use `0` to disable limiting (potentially dangerous!).",
                                                    "optional" : 1,
                                                    "type" : "integer"
                                                 },
@@ -13064,7 +13902,7 @@ const apiSchema = [
                                                 },
                                                 "source" : {
                                                    "default_key" : 1,
-                                                   "description" : "The file on the host to gather entropy from. In most cases /dev/urandom should be preferred over /dev/random to avoid entropy-starvation issues on the host. Using urandom does *not* decrease security in any meaningful way, as it's still seeded from real entropy, and the bytes provided will most likely be mixed with real entropy on the guest as well. /dev/hwrng can be used to pass through a hardware RNG from the host.",
+                                                   "description" : "The file on the host to gather entropy from. In most cases '/dev/urandom' should be preferred over '/dev/random' to avoid entropy-starvation issues on the host. Using urandom does *not* decrease security in any meaningful way, as it's still seeded from real entropy, and the bytes provided will most likely be mixed with real entropy on the guest as well. '/dev/hwrng' can be used to pass through a hardware RNG from the host.",
                                                    "enum" : [
                                                       "/dev/urandom",
                                                       "/dev/random",
@@ -13077,7 +13915,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "sata[n]" : {
-                                             "description" : "Use volume as SATA hard disk or CD-ROM (n is 0 to 5). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
+                                             "description" : "Use volume as SATA hard disk or CD-ROM (n is 0 to 5).",
                                              "format" : {
                                                 "aio" : {
                                                    "description" : "AIO type to use.",
@@ -13394,7 +14232,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "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.",
+                                             "description" : "Use volume as SCSI hard disk or CD-ROM (n is 0 to 30).",
                                              "format" : {
                                                 "aio" : {
                                                    "description" : "AIO type to use.",
@@ -13649,6 +14487,11 @@ const apiSchema = [
                                                    "optional" : 1,
                                                    "type" : "string"
                                                 },
+                                                "ro" : {
+                                                   "description" : "Whether the drive is read-only.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
                                                 "scsiblock" : {
                                                    "default" : 0,
                                                    "description" : "whether to use scsi-block for full passthrough of host block device\n\nWARNING: can lead to I/O errors in combination with low memory or high memory fragmentation on host",
@@ -13742,7 +14585,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "searchdomain" : {
-                                             "description" : "cloud-init: Sets DNS search domains for a container. Create will'\n\t    .' automatically use the setting from the host if neither searchdomain nor nameserver'\n\t    .' are set.",
+                                             "description" : "cloud-init: Sets DNS search domains for a container. Create will automatically use the setting from the host if neither searchdomain nor nameserver are set.",
                                              "optional" : 1,
                                              "type" : "string"
                                           },
@@ -13852,6 +14695,40 @@ const apiSchema = [
                                              "optional" : 1,
                                              "type" : "boolean"
                                           },
+                                          "tpmstate0" : {
+                                             "description" : "Configure a Disk for storing TPM state. The format is fixed to 'raw'.",
+                                             "format" : {
+                                                "file" : {
+                                                   "default_key" : 1,
+                                                   "description" : "The drive's backing volume.",
+                                                   "format" : "pve-volume-id-or-qm-path",
+                                                   "format_description" : "volume",
+                                                   "type" : "string"
+                                                },
+                                                "size" : {
+                                                   "description" : "Disk size. This is purely informational and has no effect.",
+                                                   "format" : "disk-size",
+                                                   "format_description" : "DiskSize",
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "version" : {
+                                                   "default" : "v2.0",
+                                                   "description" : "The TPM interface version. v2.0 is newer and should be preferred. Note that this cannot be changed later on.",
+                                                   "enum" : [
+                                                      "v1.2",
+                                                      "v2.0"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "volume" : {
+                                                   "alias" : "file"
+                                                }
+                                             },
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
                                           "unused[n]" : {
                                              "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.",
                                              "format" : {
@@ -13870,7 +14747,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "usb[n]" : {
-                                             "description" : "Configure an USB device (n is 0 to 4).",
+                                             "description" : "Configure an USB device (n is 0 to 4, for machine version >= 7.1 and ostype l26 or windows > 7, n can be up to 14).",
                                              "format" : {
                                                 "host" : {
                                                    "default_key" : 1,
@@ -13881,7 +14758,7 @@ const apiSchema = [
                                                 },
                                                 "usb3" : {
                                                    "default" : 0,
-                                                   "description" : "Specifies whether if given host option is a USB3 device or port.",
+                                                   "description" : "Specifies whether if given host option is a USB3 device or port. For modern guests (machine version >= 7.1 and ostype l26 and windows > 7), this flag is irrelevant (all devices are plugged into a xhci controller).",
                                                    "optional" : 1,
                                                    "type" : "boolean"
                                                 }
@@ -13923,6 +14800,7 @@ const apiSchema = [
                                                       "serial3",
                                                       "std",
                                                       "virtio",
+                                                      "virtio-gl",
                                                       "vmware"
                                                    ],
                                                    "optional" : 1,
@@ -13934,7 +14812,7 @@ const apiSchema = [
                                              "verbose_description" : "Configure the VGA Hardware. If you want to use high resolution modes (>= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is 'std' for all OS types besides some Windows versions (XP and older) which use 'cirrus'. The 'qxl' option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays them self.\nYou can also run without any graphic card, using a serial device as terminal."
                                           },
                                           "virtio[n]" : {
-                                             "description" : "Use volume as VIRTIO hard disk (n is 0 to 15). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
+                                             "description" : "Use volume as VIRTIO hard disk (n is 0 to 15).",
                                              "format" : {
                                                 "aio" : {
                                                    "description" : "AIO type to use.",
@@ -14183,6 +15061,11 @@ const apiSchema = [
                                                    "optional" : 1,
                                                    "type" : "string"
                                                 },
+                                                "ro" : {
+                                                   "description" : "Whether the drive is read-only.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
                                                 "secs" : {
                                                    "description" : "Force the drive's physical geometry to have a specific sector count.",
                                                    "optional" : 1,
@@ -14284,13 +15167,26 @@ const apiSchema = [
                                              "type" : "boolean",
                                              "typetext" : "<boolean>"
                                           },
+                                          "affinity" : {
+                                             "description" : "List of host cores used to execute guest processes, for example: 0,5,8-11",
+                                             "format" : "pve-cpuset",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
                                           "agent" : {
-                                             "description" : "Enable/disable Qemu GuestAgent and its properties.",
+                                             "description" : "Enable/disable communication with the QEMU Guest Agent and its properties.",
                                              "format" : {
                                                 "enabled" : {
                                                    "default" : 0,
                                                    "default_key" : 1,
-                                                   "description" : "Enable/disable Qemu GuestAgent.",
+                                                   "description" : "Enable/disable communication with a QEMU Guest Agent (QGA) running in the VM.",
+                                                   "type" : "boolean"
+                                                },
+                                                "freeze-fs-on-backup" : {
+                                                   "default" : 1,
+                                                   "description" : "Freeze/thaw guest filesystems on backup for consistency.",
+                                                   "optional" : 1,
                                                    "type" : "boolean"
                                                 },
                                                 "fstrim_cloned_disks" : {
@@ -14312,7 +15208,7 @@ const apiSchema = [
                                              },
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "[enabled=]<1|0> [,fstrim_cloned_disks=<1|0>] [,type=<virtio|isa>]"
+                                             "typetext" : "[enabled=]<1|0> [,freeze-fs-on-backup=<1|0>] [,fstrim_cloned_disks=<1|0>] [,type=<virtio|isa>]"
                                           },
                                           "arch" : {
                                              "description" : "Virtual processor architecture. Defaults to the host.",
@@ -14373,7 +15269,7 @@ const apiSchema = [
                                              "typetext" : "<integer> (1 - 30)"
                                           },
                                           "balloon" : {
-                                             "description" : "Amount of target RAM for the VM in MB. Using zero disables the ballon driver.",
+                                             "description" : "Amount of target RAM for the VM in MiB. Using zero disables the ballon driver.",
                                              "minimum" : 0,
                                              "optional" : 1,
                                              "type" : "integer",
@@ -14390,7 +15286,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "boot" : {
-                                             "description" : "Specify guest boot order. Use with 'order=', usage with no key or 'legacy=' is deprecated.",
+                                             "description" : "Specify guest boot order. Use the 'order=' sub-property as usage with no key or 'legacy=' is deprecated.",
                                              "format" : "pve-qm-boot",
                                              "optional" : 1,
                                              "type" : "string",
@@ -14415,7 +15311,7 @@ const apiSchema = [
                                              "format" : "pve-qm-cicustom",
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "[meta=<volume>] [,network=<volume>] [,user=<volume>]"
+                                             "typetext" : "[meta=<volume>] [,network=<volume>] [,user=<volume>] [,vendor=<volume>]"
                                           },
                                           "cipassword" : {
                                              "description" : "cloud-init: Password to assign the user. Using this is generally not recommended. Use ssh keys instead. Also note that older cloud-init versions do not support hashed passwords.",
@@ -14465,13 +15361,13 @@ const apiSchema = [
                                              "verbose_description" : "Limit of CPU usage.\n\nNOTE: If the computer has 2 CPUs, it has total of '2' CPU time. Value '0' indicates no CPU limit."
                                           },
                                           "cpuunits" : {
-                                             "default" : 1024,
-                                             "description" : "CPU weight for a VM.",
+                                             "default" : "cgroup v1: 1024, cgroup v2: 100",
+                                             "description" : "CPU weight for a VM, will be clamped to [1, 10000] in cgroup v2.",
                                              "maximum" : 262144,
-                                             "minimum" : 2,
+                                             "minimum" : 1,
                                              "optional" : 1,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (2 - 262144)",
+                                             "typetext" : "<integer> (1 - 262144)",
                                              "verbose_description" : "CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to weights of all the other running VMs."
                                           },
                                           "delete" : {
@@ -14496,8 +15392,18 @@ const apiSchema = [
                                              "typetext" : "<string>"
                                           },
                                           "efidisk0" : {
-                                             "description" : "Configure a Disk for storing EFI vars. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and that the default EFI vars are copied to the volume instead.",
+                                             "description" : "Configure a disk for storing EFI vars. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and that the default EFI vars are copied to the volume instead. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
                                              "format" : {
+                                                "efitype" : {
+                                                   "default" : "2m",
+                                                   "description" : "Size and type of the OVMF EFI vars. '4m' is newer and recommended, and required for Secure Boot. For backwards compatibility, '2m' is used if not otherwise specified. Ignored for VMs with arch=aarc64 (ARM).",
+                                                   "enum" : [
+                                                      "2m",
+                                                      "4m"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
                                                 "file" : {
                                                    "default_key" : 1,
                                                    "description" : "The drive's backing volume.",
@@ -14519,6 +15425,19 @@ const apiSchema = [
                                                    "optional" : 1,
                                                    "type" : "string"
                                                 },
+                                                "import-from" : {
+                                                   "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
+                                                   "format" : "pve-volume-id-or-absolute-path",
+                                                   "format_description" : "source volume",
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "pre-enrolled-keys" : {
+                                                   "default" : 0,
+                                                   "description" : "Use am EFI vars template with distribution-specific and Microsoft Standard keys enrolled, if used with 'efitype=4m'. Note that this will enable Secure Boot by default, though it can still be turned off from within the VM.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
                                                 "size" : {
                                                    "description" : "Disk size. This is purely informational and has no effect.",
                                                    "format" : "disk-size",
@@ -14532,7 +15451,7 @@ const apiSchema = [
                                              },
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "[file=]<volume> [,format=<enum>] [,size=<DiskSize>]"
+                                             "typetext" : "[file=]<volume> [,efitype=<2m|4m>] [,format=<enum>] [,import-from=<source volume>] [,pre-enrolled-keys=<1|0>] [,size=<DiskSize>]"
                                           },
                                           "force" : {
                                              "description" : "Force physical removal. Without this, we simple remove the disk from the config file and create an additional configuration entry called 'unused[n]', which contains the volume ID. Unlink of unused[n] always cause physical removal.",
@@ -14559,12 +15478,12 @@ const apiSchema = [
                                              "format" : "pve-qm-hostpci",
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "[host=]<HOSTPCIID[;HOSTPCIID2...]> [,legacy-igd=<1|0>] [,mdev=<string>] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=<string>] [,x-vga=<1|0>]",
+                                             "typetext" : "[host=]<HOSTPCIID[;HOSTPCIID2...]> [,device-id=<hex id>] [,legacy-igd=<1|0>] [,mdev=<string>] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=<string>] [,sub-device-id=<hex id>] [,sub-vendor-id=<hex id>] [,vendor-id=<hex id>] [,x-vga=<1|0>]",
                                              "verbose_description" : "Map host PCI devices into guest.\n\nNOTE: This option allows direct access to host hardware. So it is no longer\npossible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
                                           },
                                           "hotplug" : {
                                              "default" : "network,disk,usb",
-                                             "description" : "Selectively enable hotplug features. This is a comma separated list of hotplug features: 'network', 'disk', 'cpu', 'memory' and 'usb'. Use '0' to disable hotplug completely. Value '1' is an alias for the default 'network,disk,usb'.",
+                                             "description" : "Selectively enable hotplug features. This is a comma separated list of hotplug features: 'network', 'disk', 'cpu', 'memory', 'usb' and 'cloudinit'. Use '0' to disable hotplug completely. Using '1' as value is an alias for the default `network,disk,usb`. USB hotplugging is possible for guests with machine version >= 7.1 and ostype l26 or windows > 7.",
                                              "format" : "pve-hotplug-features",
                                              "optional" : 1,
                                              "type" : "string",
@@ -14581,7 +15500,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "ide[n]" : {
-                                             "description" : "Use volume as IDE hard disk or CD-ROM (n is 0 to 3). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
+                                             "description" : "Use volume as IDE hard disk or CD-ROM (n is 0 to 3). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
                                              "format" : {
                                                 "aio" : {
                                                    "description" : "AIO type to use.",
@@ -14700,6 +15619,13 @@ const apiSchema = [
                                                    "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",
@@ -14904,7 +15830,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>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,model=<model>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
+                                             "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,import-from=<source volume>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,model=<model>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
                                           },
                                           "ipconfig[n]" : {
                                              "description" : "cloud-init: Specify IP addresses and gateways for the corresponding interface.\n\nIP addresses use CIDR notation, gateways are optional but need an IP of the same type specified.\n\nThe special string 'dhcp' can be used for IP addresses to use DHCP, in which case no explicit\ngateway should be provided.\nFor IPv6 the special string 'auto' can be used to use stateless autoconfiguration. This requires\ncloud-init 19.4 or newer.\n\nIf cloud-init is enabled and neither an IPv4 nor an IPv6 address is specified, it defaults to using\ndhcp on IPv4.\n",
@@ -14942,7 +15868,7 @@ const apiSchema = [
                                           },
                                           "keyboard" : {
                                              "default" : null,
-                                             "description" : "Keybord layout for vnc server. Default is read from the '/etc/pve/datacenter.cfg' configuration file.It should not be necessary to set it.",
+                                             "description" : "Keyboard layout for VNC server. This option is generally not required and is often better handled from within the guest OS.",
                                              "enum" : [
                                                 "de",
                                                 "de-ch",
@@ -14981,7 +15907,7 @@ const apiSchema = [
                                              "typetext" : "<boolean>"
                                           },
                                           "localtime" : {
-                                             "description" : "Set the real time clock to local time. This is enabled by default if ostype indicates a Microsoft OS.",
+                                             "description" : "Set the real time clock (RTC) to local time. This is enabled by default if the `ostype` indicates a Microsoft Windows OS.",
                                              "optional" : 1,
                                              "type" : "boolean",
                                              "typetext" : "<boolean>"
@@ -15003,7 +15929,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "machine" : {
-                                             "description" : "Specifies the Qemu machine type.",
+                                             "description" : "Specifies the QEMU machine type.",
                                              "maxLength" : 40,
                                              "optional" : 1,
                                              "pattern" : "(pc|pc(-i440fx)?-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|q35|pc-q35-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|virt(?:-\\d+(\\.\\d+)+)?(\\+pve\\d+)?)",
@@ -15011,7 +15937,7 @@ const apiSchema = [
                                           },
                                           "memory" : {
                                              "default" : 512,
-                                             "description" : "Amount of RAM for the VM in MB. This is the maximum available memory when you use the balloon device.",
+                                             "description" : "Amount of RAM for the VM in MiB. This is the maximum available memory when you use the balloon device.",
                                              "minimum" : 16,
                                              "optional" : 1,
                                              "type" : "integer",
@@ -15041,7 +15967,7 @@ const apiSchema = [
                                              "typetext" : "<string>"
                                           },
                                           "nameserver" : {
-                                             "description" : "cloud-init: Sets DNS server IP address for a container. Create will'\n\t    .' automatically use the setting from the host if neither searchdomain nor nameserver'\n\t    .' are set.",
+                                             "description" : "cloud-init: Sets DNS server IP address for a container. Create will automatically use the setting from the host if neither searchdomain nor nameserver are set.",
                                              "format" : "address-list",
                                              "optional" : 1,
                                              "type" : "string",
@@ -15052,9 +15978,9 @@ const apiSchema = [
                                              "format" : {
                                                 "bridge" : {
                                                    "description" : "Bridge to attach the network device to. The Proxmox VE standard bridge\nis called 'vmbr0'.\n\nIf you do not specify a bridge, we create a kvm user (NATed) network\ndevice, which provides DHCP and DNS services. The following addresses\nare used:\n\n 10.0.2.2   Gateway\n 10.0.2.3   DNS Server\n 10.0.2.4   SMB Server\n\nThe DHCP server assign addresses to the guest starting from 10.0.2.15.\n",
+                                                   "format" : "pve-bridge-id",
                                                    "format_description" : "bridge",
                                                    "optional" : 1,
-                                                   "pattern" : "[-_.\\w\\d]+",
                                                    "type" : "string"
                                                 },
                                                 "e1000" : {
@@ -15073,6 +15999,10 @@ const apiSchema = [
                                                    "alias" : "macaddr",
                                                    "keyAlias" : "model"
                                                 },
+                                                "e1000e" : {
+                                                   "alias" : "macaddr",
+                                                   "keyAlias" : "model"
+                                                },
                                                 "firewall" : {
                                                    "description" : "Whether this interface should be protected by the firewall.",
                                                    "optional" : 1,
@@ -15107,19 +16037,20 @@ const apiSchema = [
                                                    "default_key" : 1,
                                                    "description" : "Network Card Model. The 'virtio' model provides the best performance with very low CPU overhead. If your guest does not support this driver, it is usually best to use 'e1000'.",
                                                    "enum" : [
-                                                      "rtl8139",
-                                                      "ne2k_pci",
                                                       "e1000",
-                                                      "pcnet",
-                                                      "virtio",
-                                                      "ne2k_isa",
+                                                      "e1000-82540em",
+                                                      "e1000-82544gc",
+                                                      "e1000-82545em",
+                                                      "e1000e",
                                                       "i82551",
                                                       "i82557b",
                                                       "i82559er",
-                                                      "vmxnet3",
-                                                      "e1000-82540em",
-                                                      "e1000-82544gc",
-                                                      "e1000-82545em"
+                                                      "ne2k_isa",
+                                                      "ne2k_pci",
+                                                      "pcnet",
+                                                      "rtl8139",
+                                                      "virtio",
+                                                      "vmxnet3"
                                                    ],
                                                    "type" : "string"
                                                 },
@@ -15144,7 +16075,7 @@ const apiSchema = [
                                                 },
                                                 "queues" : {
                                                    "description" : "Number of packet queues to be used on the device.",
-                                                   "maximum" : 16,
+                                                   "maximum" : 64,
                                                    "minimum" : 0,
                                                    "optional" : 1,
                                                    "type" : "integer"
@@ -15254,13 +16185,14 @@ const apiSchema = [
                                                 "win7",
                                                 "win8",
                                                 "win10",
+                                                "win11",
                                                 "l24",
                                                 "l26",
                                                 "solaris"
                                              ],
                                              "optional" : 1,
                                              "type" : "string",
-                                             "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016/2019\nl24;; Linux 2.4 Kernel\nl26;; Linux 2.6 - 5.X Kernel\nsolaris;; Solaris/OpenSolaris/OpenIndiania kernel\n"
+                                             "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016/2019\nwin11;; Microsoft Windows 11/2022\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).",
@@ -15295,7 +16227,7 @@ const apiSchema = [
                                              "format" : {
                                                 "max_bytes" : {
                                                    "default" : 1024,
-                                                   "description" : "Maximum bytes of entropy injected into the guest every 'period' milliseconds. Prefer a lower value when using /dev/random as source. Use 0 to disable limiting (potentially dangerous!).",
+                                                   "description" : "Maximum bytes of entropy allowed to get injected into the guest every 'period' milliseconds. Prefer a lower value when using '/dev/random' as source. Use `0` to disable limiting (potentially dangerous!).",
                                                    "optional" : 1,
                                                    "type" : "integer"
                                                 },
@@ -15307,7 +16239,7 @@ const apiSchema = [
                                                 },
                                                 "source" : {
                                                    "default_key" : 1,
-                                                   "description" : "The file on the host to gather entropy from. In most cases /dev/urandom should be preferred over /dev/random to avoid entropy-starvation issues on the host. Using urandom does *not* decrease security in any meaningful way, as it's still seeded from real entropy, and the bytes provided will most likely be mixed with real entropy on the guest as well. /dev/hwrng can be used to pass through a hardware RNG from the host.",
+                                                   "description" : "The file on the host to gather entropy from. In most cases '/dev/urandom' should be preferred over '/dev/random' to avoid entropy-starvation issues on the host. Using urandom does *not* decrease security in any meaningful way, as it's still seeded from real entropy, and the bytes provided will most likely be mixed with real entropy on the guest as well. '/dev/hwrng' can be used to pass through a hardware RNG from the host.",
                                                    "enum" : [
                                                       "/dev/urandom",
                                                       "/dev/random",
@@ -15321,7 +16253,7 @@ const apiSchema = [
                                              "typetext" : "[source=]</dev/urandom|/dev/random|/dev/hwrng> [,max_bytes=<integer>] [,period=<integer>]"
                                           },
                                           "sata[n]" : {
-                                             "description" : "Use volume as SATA hard disk or CD-ROM (n is 0 to 5). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
+                                             "description" : "Use volume as SATA hard disk or CD-ROM (n is 0 to 5). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
                                              "format" : {
                                                 "aio" : {
                                                    "description" : "AIO type to use.",
@@ -15440,6 +16372,13 @@ const apiSchema = [
                                                    "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",
@@ -15636,10 +16575,10 @@ 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>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
+                                             "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,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.",
+                                             "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.",
@@ -15758,6 +16697,13 @@ const apiSchema = [
                                                    "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",
@@ -15894,6 +16840,11 @@ const apiSchema = [
                                                    "optional" : 1,
                                                    "type" : "string"
                                                 },
+                                                "ro" : {
+                                                   "description" : "Whether the drive is read-only.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
                                                 "scsiblock" : {
                                                    "default" : 0,
                                                    "description" : "whether to use scsi-block for full passthrough of host block device\n\nWARNING: can lead to I/O errors in combination with low memory or high memory fragmentation on host",
@@ -15971,7 +16922,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>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,queues=<integer>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,scsiblock=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
+                                             "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,import-from=<source volume>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,queues=<integer>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,ro=<1|0>] [,scsiblock=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
                                           },
                                           "scsihw" : {
                                              "default" : "lsi",
@@ -15988,7 +16939,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "searchdomain" : {
-                                             "description" : "cloud-init: Sets DNS search domains for a container. Create will'\n\t    .' automatically use the setting from the host if neither searchdomain nor nameserver'\n\t    .' are set.",
+                                             "description" : "cloud-init: Sets DNS search domains for a container. Create will automatically use the setting from the host if neither searchdomain nor nameserver are set.",
                                              "optional" : 1,
                                              "type" : "string",
                                              "typetext" : "<string>"
@@ -16115,6 +17066,48 @@ const apiSchema = [
                                              "type" : "boolean",
                                              "typetext" : "<boolean>"
                                           },
+                                          "tpmstate0" : {
+                                             "description" : "Configure a Disk for storing TPM state. The format is fixed to 'raw'. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and 4 MiB will be used instead. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
+                                             "format" : {
+                                                "file" : {
+                                                   "default_key" : 1,
+                                                   "description" : "The drive's backing volume.",
+                                                   "format" : "pve-volume-id-or-qm-path",
+                                                   "format_description" : "volume",
+                                                   "type" : "string"
+                                                },
+                                                "import-from" : {
+                                                   "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
+                                                   "format" : "pve-volume-id-or-absolute-path",
+                                                   "format_description" : "source volume",
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "size" : {
+                                                   "description" : "Disk size. This is purely informational and has no effect.",
+                                                   "format" : "disk-size",
+                                                   "format_description" : "DiskSize",
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "version" : {
+                                                   "default" : "v2.0",
+                                                   "description" : "The TPM interface version. v2.0 is newer and should be preferred. Note that this cannot be changed later on.",
+                                                   "enum" : [
+                                                      "v1.2",
+                                                      "v2.0"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "volume" : {
+                                                   "alias" : "file"
+                                                }
+                                             },
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "[file=]<volume> [,import-from=<source volume>] [,size=<DiskSize>] [,version=<v1.2|v2.0>]"
+                                          },
                                           "unused[n]" : {
                                              "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.",
                                              "format" : {
@@ -16134,7 +17127,7 @@ const apiSchema = [
                                              "typetext" : "[file=]<volume>"
                                           },
                                           "usb[n]" : {
-                                             "description" : "Configure an USB device (n is 0 to 4).",
+                                             "description" : "Configure an USB device (n is 0 to 4, for machine version >= 7.1 and ostype l26 or windows > 7, n can be up to 14).",
                                              "format" : {
                                                 "host" : {
                                                    "default_key" : 1,
@@ -16145,7 +17138,7 @@ const apiSchema = [
                                                 },
                                                 "usb3" : {
                                                    "default" : 0,
-                                                   "description" : "Specifies whether if given host option is a USB3 device or port.",
+                                                   "description" : "Specifies whether if given host option is a USB3 device or port. For modern guests (machine version >= 7.1 and ostype l26 and windows > 7), this flag is irrelevant (all devices are plugged into a xhci controller).",
                                                    "optional" : 1,
                                                    "type" : "boolean"
                                                 }
@@ -16189,6 +17182,7 @@ const apiSchema = [
                                                       "serial3",
                                                       "std",
                                                       "virtio",
+                                                      "virtio-gl",
                                                       "vmware"
                                                    ],
                                                    "optional" : 1,
@@ -16201,7 +17195,7 @@ const apiSchema = [
                                              "verbose_description" : "Configure the VGA Hardware. If you want to use high resolution modes (>= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is 'std' for all OS types besides some Windows versions (XP and older) which use 'cirrus'. The 'qxl' option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays them self.\nYou can also run without any graphic card, using a serial device as terminal."
                                           },
                                           "virtio[n]" : {
-                                             "description" : "Use volume as VIRTIO hard disk (n is 0 to 15). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
+                                             "description" : "Use volume as VIRTIO hard disk (n is 0 to 15). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
                                              "format" : {
                                                 "aio" : {
                                                    "description" : "AIO type to use.",
@@ -16320,6 +17314,13 @@ const apiSchema = [
                                                    "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",
@@ -16450,6 +17451,11 @@ const apiSchema = [
                                                    "optional" : 1,
                                                    "type" : "string"
                                                 },
+                                                "ro" : {
+                                                   "description" : "Whether the drive is read-only.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
                                                 "secs" : {
                                                    "description" : "Force the drive's physical geometry to have a specific sector count.",
                                                    "optional" : 1,
@@ -16509,7 +17515,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>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>]"
+                                             "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,import-from=<source volume>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,ro=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>]"
                                           },
                                           "vmgenid" : {
                                              "default" : "1 (autogenerated)",
@@ -16584,13 +17590,26 @@ const apiSchema = [
                                              "type" : "boolean",
                                              "typetext" : "<boolean>"
                                           },
+                                          "affinity" : {
+                                             "description" : "List of host cores used to execute guest processes, for example: 0,5,8-11",
+                                             "format" : "pve-cpuset",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
                                           "agent" : {
-                                             "description" : "Enable/disable Qemu GuestAgent and its properties.",
+                                             "description" : "Enable/disable communication with the QEMU Guest Agent and its properties.",
                                              "format" : {
                                                 "enabled" : {
                                                    "default" : 0,
                                                    "default_key" : 1,
-                                                   "description" : "Enable/disable Qemu GuestAgent.",
+                                                   "description" : "Enable/disable communication with a QEMU Guest Agent (QGA) running in the VM.",
+                                                   "type" : "boolean"
+                                                },
+                                                "freeze-fs-on-backup" : {
+                                                   "default" : 1,
+                                                   "description" : "Freeze/thaw guest filesystems on backup for consistency.",
+                                                   "optional" : 1,
                                                    "type" : "boolean"
                                                 },
                                                 "fstrim_cloned_disks" : {
@@ -16612,7 +17631,7 @@ const apiSchema = [
                                              },
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "[enabled=]<1|0> [,fstrim_cloned_disks=<1|0>] [,type=<virtio|isa>]"
+                                             "typetext" : "[enabled=]<1|0> [,freeze-fs-on-backup=<1|0>] [,fstrim_cloned_disks=<1|0>] [,type=<virtio|isa>]"
                                           },
                                           "arch" : {
                                              "description" : "Virtual processor architecture. Defaults to the host.",
@@ -16665,7 +17684,7 @@ const apiSchema = [
                                              "typetext" : "<boolean>"
                                           },
                                           "balloon" : {
-                                             "description" : "Amount of target RAM for the VM in MB. Using zero disables the ballon driver.",
+                                             "description" : "Amount of target RAM for the VM in MiB. Using zero disables the ballon driver.",
                                              "minimum" : 0,
                                              "optional" : 1,
                                              "type" : "integer",
@@ -16682,7 +17701,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "boot" : {
-                                             "description" : "Specify guest boot order. Use with 'order=', usage with no key or 'legacy=' is deprecated.",
+                                             "description" : "Specify guest boot order. Use the 'order=' sub-property as usage with no key or 'legacy=' is deprecated.",
                                              "format" : "pve-qm-boot",
                                              "optional" : 1,
                                              "type" : "string",
@@ -16707,7 +17726,7 @@ const apiSchema = [
                                              "format" : "pve-qm-cicustom",
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "[meta=<volume>] [,network=<volume>] [,user=<volume>]"
+                                             "typetext" : "[meta=<volume>] [,network=<volume>] [,user=<volume>] [,vendor=<volume>]"
                                           },
                                           "cipassword" : {
                                              "description" : "cloud-init: Password to assign the user. Using this is generally not recommended. Use ssh keys instead. Also note that older cloud-init versions do not support hashed passwords.",
@@ -16757,13 +17776,13 @@ const apiSchema = [
                                              "verbose_description" : "Limit of CPU usage.\n\nNOTE: If the computer has 2 CPUs, it has total of '2' CPU time. Value '0' indicates no CPU limit."
                                           },
                                           "cpuunits" : {
-                                             "default" : 1024,
-                                             "description" : "CPU weight for a VM.",
+                                             "default" : "cgroup v1: 1024, cgroup v2: 100",
+                                             "description" : "CPU weight for a VM, will be clamped to [1, 10000] in cgroup v2.",
                                              "maximum" : 262144,
-                                             "minimum" : 2,
+                                             "minimum" : 1,
                                              "optional" : 1,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (2 - 262144)",
+                                             "typetext" : "<integer> (1 - 262144)",
                                              "verbose_description" : "CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to weights of all the other running VMs."
                                           },
                                           "delete" : {
@@ -16788,180 +17807,203 @@ const apiSchema = [
                                              "typetext" : "<string>"
                                           },
                                           "efidisk0" : {
-                                             "description" : "Configure a Disk for storing EFI vars. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and that the default EFI vars are copied to the volume instead.",
+                                             "description" : "Configure a disk for storing EFI vars. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and that the default EFI vars are copied to the volume instead. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
                                              "format" : {
-                                                "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.",
+                                                "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).",
                                                    "enum" : [
-                                                      "raw",
-                                                      "cow",
-                                                      "qcow",
-                                                      "qed",
-                                                      "qcow2",
-                                                      "vmdk",
-                                                      "cloop"
-                                                   ],
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "size" : {
-                                                   "description" : "Disk size. This is purely informational and has no effect.",
-                                                   "format" : "disk-size",
-                                                   "format_description" : "DiskSize",
-                                                   "optional" : 1,
-                                                   "type" : "string"
-                                                },
-                                                "volume" : {
-                                                   "alias" : "file"
-                                                }
-                                             },
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[file=]<volume> [,format=<enum>] [,size=<DiskSize>]"
-                                          },
-                                          "force" : {
-                                             "description" : "Force physical removal. Without this, we simple remove the disk from the config file and create an additional configuration entry called 'unused[n]', which contains the volume ID. Unlink of unused[n] always cause physical removal.",
-                                             "optional" : 1,
-                                             "requires" : "delete",
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "freeze" : {
-                                             "description" : "Freeze CPU at startup (use 'c' monitor command to start execution).",
-                                             "optional" : 1,
-                                             "type" : "boolean",
-                                             "typetext" : "<boolean>"
-                                          },
-                                          "hookscript" : {
-                                             "description" : "Script that will be executed during various steps in the vms lifetime.",
-                                             "format" : "pve-volume-id",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "hostpci[n]" : {
-                                             "description" : "Map host PCI devices into guest.",
-                                             "format" : "pve-qm-hostpci",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "[host=]<HOSTPCIID[;HOSTPCIID2...]> [,legacy-igd=<1|0>] [,mdev=<string>] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=<string>] [,x-vga=<1|0>]",
-                                             "verbose_description" : "Map host PCI devices into guest.\n\nNOTE: This option allows direct access to host hardware. So it is no longer\npossible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
-                                          },
-                                          "hotplug" : {
-                                             "default" : "network,disk,usb",
-                                             "description" : "Selectively enable hotplug features. This is a comma separated list of hotplug features: 'network', 'disk', 'cpu', 'memory' and 'usb'. Use '0' to disable hotplug completely. Value '1' is an alias for the default 'network,disk,usb'.",
-                                             "format" : "pve-hotplug-features",
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "hugepages" : {
-                                             "description" : "Enable/disable hugepages memory.",
-                                             "enum" : [
-                                                "any",
-                                                "2",
-                                                "1024"
-                                             ],
-                                             "optional" : 1,
-                                             "type" : "string"
-                                          },
-                                          "ide[n]" : {
-                                             "description" : "Use volume as IDE hard disk or CD-ROM (n is 0 to 3). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
-                                             "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"
+                                                      "2m",
+                                                      "4m"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "file" : {
+                                                   "default_key" : 1,
+                                                   "description" : "The drive's backing volume.",
+                                                   "format" : "pve-volume-id-or-qm-path",
+                                                   "format_description" : "volume",
+                                                   "type" : "string"
+                                                },
+                                                "format" : {
+                                                   "description" : "The drive's backing file's data format.",
+                                                   "enum" : [
+                                                      "raw",
+                                                      "cow",
+                                                      "qcow",
+                                                      "qed",
+                                                      "qcow2",
+                                                      "vmdk",
+                                                      "cloop"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "import-from" : {
+                                                   "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
+                                                   "format" : "pve-volume-id-or-absolute-path",
+                                                   "format_description" : "source volume",
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "pre-enrolled-keys" : {
+                                                   "default" : 0,
+                                                   "description" : "Use am EFI vars template with distribution-specific and Microsoft Standard keys enrolled, if used with 'efitype=4m'. Note that this will enable Secure Boot by default, though it can still be turned off from within the VM.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
+                                                "size" : {
+                                                   "description" : "Disk size. This is purely informational and has no effect.",
+                                                   "format" : "disk-size",
+                                                   "format_description" : "DiskSize",
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "volume" : {
+                                                   "alias" : "file"
+                                                }
+                                             },
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "[file=]<volume> [,efitype=<2m|4m>] [,format=<enum>] [,import-from=<source volume>] [,pre-enrolled-keys=<1|0>] [,size=<DiskSize>]"
+                                          },
+                                          "force" : {
+                                             "description" : "Force physical removal. Without this, we simple remove the disk from the config file and create an additional configuration entry called 'unused[n]', which contains the volume ID. Unlink of unused[n] always cause physical removal.",
+                                             "optional" : 1,
+                                             "requires" : "delete",
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
+                                          "freeze" : {
+                                             "description" : "Freeze CPU at startup (use 'c' monitor command to start execution).",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
+                                          "hookscript" : {
+                                             "description" : "Script that will be executed during various steps in the vms lifetime.",
+                                             "format" : "pve-volume-id",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "hostpci[n]" : {
+                                             "description" : "Map host PCI devices into guest.",
+                                             "format" : "pve-qm-hostpci",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "[host=]<HOSTPCIID[;HOSTPCIID2...]> [,device-id=<hex id>] [,legacy-igd=<1|0>] [,mdev=<string>] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=<string>] [,sub-device-id=<hex id>] [,sub-vendor-id=<hex id>] [,vendor-id=<hex id>] [,x-vga=<1|0>]",
+                                             "verbose_description" : "Map host PCI devices into guest.\n\nNOTE: This option allows direct access to host hardware. So it is no longer\npossible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
+                                          },
+                                          "hotplug" : {
+                                             "default" : "network,disk,usb",
+                                             "description" : "Selectively enable hotplug features. This is a comma separated list of hotplug features: 'network', 'disk', 'cpu', 'memory', 'usb' and 'cloudinit'. Use '0' to disable hotplug completely. Using '1' as value is an alias for the default `network,disk,usb`. USB hotplugging is possible for guests with machine version >= 7.1 and ostype l26 or windows > 7.",
+                                             "format" : "pve-hotplug-features",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "hugepages" : {
+                                             "description" : "Enable/disable hugepages memory.",
+                                             "enum" : [
+                                                "any",
+                                                "2",
+                                                "1024"
+                                             ],
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "ide[n]" : {
+                                             "description" : "Use volume as IDE hard disk or CD-ROM (n is 0 to 3). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
+                                             "format" : {
+                                                "aio" : {
+                                                   "description" : "AIO type to use.",
+                                                   "enum" : [
+                                                      "native",
+                                                      "threads",
+                                                      "io_uring"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "backup" : {
+                                                   "description" : "Whether the drive should be included when making backups.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
+                                                "bps" : {
+                                                   "description" : "Maximum r/w speed in bytes per second.",
+                                                   "format_description" : "bps",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "bps_max_length" : {
+                                                   "description" : "Maximum length of I/O bursts in seconds.",
+                                                   "format_description" : "seconds",
+                                                   "minimum" : 1,
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "bps_rd" : {
+                                                   "description" : "Maximum read speed in bytes per second.",
+                                                   "format_description" : "bps",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "bps_rd_length" : {
+                                                   "alias" : "bps_rd_max_length"
+                                                },
+                                                "bps_rd_max_length" : {
+                                                   "description" : "Maximum length of read I/O bursts in seconds.",
+                                                   "format_description" : "seconds",
+                                                   "minimum" : 1,
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "bps_wr" : {
+                                                   "description" : "Maximum write speed in bytes per second.",
+                                                   "format_description" : "bps",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "bps_wr_length" : {
+                                                   "alias" : "bps_wr_max_length"
+                                                },
+                                                "bps_wr_max_length" : {
+                                                   "description" : "Maximum length of write I/O bursts in seconds.",
+                                                   "format_description" : "seconds",
+                                                   "minimum" : 1,
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "cache" : {
+                                                   "description" : "The drive's cache mode",
+                                                   "enum" : [
+                                                      "none",
+                                                      "writethrough",
+                                                      "writeback",
+                                                      "unsafe",
+                                                      "directsync"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "cyls" : {
+                                                   "description" : "Force the drive's physical geometry to have a specific cylinder count.",
+                                                   "optional" : 1,
+                                                   "type" : "integer"
+                                                },
+                                                "detect_zeroes" : {
+                                                   "description" : "Controls whether to detect and try to optimize writes of zeroes.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
+                                                "discard" : {
+                                                   "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
+                                                   "enum" : [
+                                                      "ignore",
+                                                      "on"
                                                    ],
                                                    "optional" : 1,
                                                    "type" : "string"
@@ -16992,6 +18034,13 @@ const apiSchema = [
                                                    "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",
@@ -17196,7 +18245,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>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,model=<model>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
+                                             "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,import-from=<source volume>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,model=<model>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
                                           },
                                           "ipconfig[n]" : {
                                              "description" : "cloud-init: Specify IP addresses and gateways for the corresponding interface.\n\nIP addresses use CIDR notation, gateways are optional but need an IP of the same type specified.\n\nThe special string 'dhcp' can be used for IP addresses to use DHCP, in which case no explicit\ngateway should be provided.\nFor IPv6 the special string 'auto' can be used to use stateless autoconfiguration. This requires\ncloud-init 19.4 or newer.\n\nIf cloud-init is enabled and neither an IPv4 nor an IPv6 address is specified, it defaults to using\ndhcp on IPv4.\n",
@@ -17234,7 +18283,7 @@ const apiSchema = [
                                           },
                                           "keyboard" : {
                                              "default" : null,
-                                             "description" : "Keybord layout for vnc server. Default is read from the '/etc/pve/datacenter.cfg' configuration file.It should not be necessary to set it.",
+                                             "description" : "Keyboard layout for VNC server. This option is generally not required and is often better handled from within the guest OS.",
                                              "enum" : [
                                                 "de",
                                                 "de-ch",
@@ -17273,7 +18322,7 @@ const apiSchema = [
                                              "typetext" : "<boolean>"
                                           },
                                           "localtime" : {
-                                             "description" : "Set the real time clock to local time. This is enabled by default if ostype indicates a Microsoft OS.",
+                                             "description" : "Set the real time clock (RTC) to local time. This is enabled by default if the `ostype` indicates a Microsoft Windows OS.",
                                              "optional" : 1,
                                              "type" : "boolean",
                                              "typetext" : "<boolean>"
@@ -17295,7 +18344,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "machine" : {
-                                             "description" : "Specifies the Qemu machine type.",
+                                             "description" : "Specifies the QEMU machine type.",
                                              "maxLength" : 40,
                                              "optional" : 1,
                                              "pattern" : "(pc|pc(-i440fx)?-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|q35|pc-q35-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|virt(?:-\\d+(\\.\\d+)+)?(\\+pve\\d+)?)",
@@ -17303,7 +18352,7 @@ const apiSchema = [
                                           },
                                           "memory" : {
                                              "default" : 512,
-                                             "description" : "Amount of RAM for the VM in MB. This is the maximum available memory when you use the balloon device.",
+                                             "description" : "Amount of RAM for the VM in MiB. This is the maximum available memory when you use the balloon device.",
                                              "minimum" : 16,
                                              "optional" : 1,
                                              "type" : "integer",
@@ -17333,7 +18382,7 @@ const apiSchema = [
                                              "typetext" : "<string>"
                                           },
                                           "nameserver" : {
-                                             "description" : "cloud-init: Sets DNS server IP address for a container. Create will'\n\t    .' automatically use the setting from the host if neither searchdomain nor nameserver'\n\t    .' are set.",
+                                             "description" : "cloud-init: Sets DNS server IP address for a container. Create will automatically use the setting from the host if neither searchdomain nor nameserver are set.",
                                              "format" : "address-list",
                                              "optional" : 1,
                                              "type" : "string",
@@ -17344,9 +18393,9 @@ const apiSchema = [
                                              "format" : {
                                                 "bridge" : {
                                                    "description" : "Bridge to attach the network device to. The Proxmox VE standard bridge\nis called 'vmbr0'.\n\nIf you do not specify a bridge, we create a kvm user (NATed) network\ndevice, which provides DHCP and DNS services. The following addresses\nare used:\n\n 10.0.2.2   Gateway\n 10.0.2.3   DNS Server\n 10.0.2.4   SMB Server\n\nThe DHCP server assign addresses to the guest starting from 10.0.2.15.\n",
+                                                   "format" : "pve-bridge-id",
                                                    "format_description" : "bridge",
                                                    "optional" : 1,
-                                                   "pattern" : "[-_.\\w\\d]+",
                                                    "type" : "string"
                                                 },
                                                 "e1000" : {
@@ -17365,6 +18414,10 @@ const apiSchema = [
                                                    "alias" : "macaddr",
                                                    "keyAlias" : "model"
                                                 },
+                                                "e1000e" : {
+                                                   "alias" : "macaddr",
+                                                   "keyAlias" : "model"
+                                                },
                                                 "firewall" : {
                                                    "description" : "Whether this interface should be protected by the firewall.",
                                                    "optional" : 1,
@@ -17399,19 +18452,20 @@ const apiSchema = [
                                                    "default_key" : 1,
                                                    "description" : "Network Card Model. The 'virtio' model provides the best performance with very low CPU overhead. If your guest does not support this driver, it is usually best to use 'e1000'.",
                                                    "enum" : [
-                                                      "rtl8139",
-                                                      "ne2k_pci",
                                                       "e1000",
-                                                      "pcnet",
-                                                      "virtio",
-                                                      "ne2k_isa",
+                                                      "e1000-82540em",
+                                                      "e1000-82544gc",
+                                                      "e1000-82545em",
+                                                      "e1000e",
                                                       "i82551",
                                                       "i82557b",
                                                       "i82559er",
-                                                      "vmxnet3",
-                                                      "e1000-82540em",
-                                                      "e1000-82544gc",
-                                                      "e1000-82545em"
+                                                      "ne2k_isa",
+                                                      "ne2k_pci",
+                                                      "pcnet",
+                                                      "rtl8139",
+                                                      "virtio",
+                                                      "vmxnet3"
                                                    ],
                                                    "type" : "string"
                                                 },
@@ -17436,7 +18490,7 @@ const apiSchema = [
                                                 },
                                                 "queues" : {
                                                    "description" : "Number of packet queues to be used on the device.",
-                                                   "maximum" : 16,
+                                                   "maximum" : 64,
                                                    "minimum" : 0,
                                                    "optional" : 1,
                                                    "type" : "integer"
@@ -17546,13 +18600,14 @@ const apiSchema = [
                                                 "win7",
                                                 "win8",
                                                 "win10",
+                                                "win11",
                                                 "l24",
                                                 "l26",
                                                 "solaris"
                                              ],
                                              "optional" : 1,
                                              "type" : "string",
-                                             "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016/2019\nl24;; Linux 2.4 Kernel\nl26;; Linux 2.6 - 5.X Kernel\nsolaris;; Solaris/OpenSolaris/OpenIndiania kernel\n"
+                                             "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016/2019\nwin11;; Microsoft Windows 11/2022\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).",
@@ -17587,7 +18642,7 @@ const apiSchema = [
                                              "format" : {
                                                 "max_bytes" : {
                                                    "default" : 1024,
-                                                   "description" : "Maximum bytes of entropy injected into the guest every 'period' milliseconds. Prefer a lower value when using /dev/random as source. Use 0 to disable limiting (potentially dangerous!).",
+                                                   "description" : "Maximum bytes of entropy allowed to get injected into the guest every 'period' milliseconds. Prefer a lower value when using '/dev/random' as source. Use `0` to disable limiting (potentially dangerous!).",
                                                    "optional" : 1,
                                                    "type" : "integer"
                                                 },
@@ -17599,7 +18654,7 @@ const apiSchema = [
                                                 },
                                                 "source" : {
                                                    "default_key" : 1,
-                                                   "description" : "The file on the host to gather entropy from. In most cases /dev/urandom should be preferred over /dev/random to avoid entropy-starvation issues on the host. Using urandom does *not* decrease security in any meaningful way, as it's still seeded from real entropy, and the bytes provided will most likely be mixed with real entropy on the guest as well. /dev/hwrng can be used to pass through a hardware RNG from the host.",
+                                                   "description" : "The file on the host to gather entropy from. In most cases '/dev/urandom' should be preferred over '/dev/random' to avoid entropy-starvation issues on the host. Using urandom does *not* decrease security in any meaningful way, as it's still seeded from real entropy, and the bytes provided will most likely be mixed with real entropy on the guest as well. '/dev/hwrng' can be used to pass through a hardware RNG from the host.",
                                                    "enum" : [
                                                       "/dev/urandom",
                                                       "/dev/random",
@@ -17613,7 +18668,7 @@ const apiSchema = [
                                              "typetext" : "[source=]</dev/urandom|/dev/random|/dev/hwrng> [,max_bytes=<integer>] [,period=<integer>]"
                                           },
                                           "sata[n]" : {
-                                             "description" : "Use volume as SATA hard disk or CD-ROM (n is 0 to 5). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
+                                             "description" : "Use volume as SATA hard disk or CD-ROM (n is 0 to 5). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
                                              "format" : {
                                                 "aio" : {
                                                    "description" : "AIO type to use.",
@@ -17732,6 +18787,13 @@ const apiSchema = [
                                                    "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",
@@ -17928,10 +18990,10 @@ 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>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
+                                             "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,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.",
+                                             "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.",
@@ -18050,6 +19112,13 @@ const apiSchema = [
                                                    "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",
@@ -18186,6 +19255,11 @@ const apiSchema = [
                                                    "optional" : 1,
                                                    "type" : "string"
                                                 },
+                                                "ro" : {
+                                                   "description" : "Whether the drive is read-only.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
                                                 "scsiblock" : {
                                                    "default" : 0,
                                                    "description" : "whether to use scsi-block for full passthrough of host block device\n\nWARNING: can lead to I/O errors in combination with low memory or high memory fragmentation on host",
@@ -18263,7 +19337,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>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,queues=<integer>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,scsiblock=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
+                                             "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,import-from=<source volume>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,queues=<integer>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,ro=<1|0>] [,scsiblock=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
                                           },
                                           "scsihw" : {
                                              "default" : "lsi",
@@ -18280,7 +19354,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "searchdomain" : {
-                                             "description" : "cloud-init: Sets DNS search domains for a container. Create will'\n\t    .' automatically use the setting from the host if neither searchdomain nor nameserver'\n\t    .' are set.",
+                                             "description" : "cloud-init: Sets DNS search domains for a container. Create will automatically use the setting from the host if neither searchdomain nor nameserver are set.",
                                              "optional" : 1,
                                              "type" : "string",
                                              "typetext" : "<string>"
@@ -18407,6 +19481,48 @@ const apiSchema = [
                                              "type" : "boolean",
                                              "typetext" : "<boolean>"
                                           },
+                                          "tpmstate0" : {
+                                             "description" : "Configure a Disk for storing TPM state. The format is fixed to 'raw'. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and 4 MiB will be used instead. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
+                                             "format" : {
+                                                "file" : {
+                                                   "default_key" : 1,
+                                                   "description" : "The drive's backing volume.",
+                                                   "format" : "pve-volume-id-or-qm-path",
+                                                   "format_description" : "volume",
+                                                   "type" : "string"
+                                                },
+                                                "import-from" : {
+                                                   "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
+                                                   "format" : "pve-volume-id-or-absolute-path",
+                                                   "format_description" : "source volume",
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "size" : {
+                                                   "description" : "Disk size. This is purely informational and has no effect.",
+                                                   "format" : "disk-size",
+                                                   "format_description" : "DiskSize",
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "version" : {
+                                                   "default" : "v2.0",
+                                                   "description" : "The TPM interface version. v2.0 is newer and should be preferred. Note that this cannot be changed later on.",
+                                                   "enum" : [
+                                                      "v1.2",
+                                                      "v2.0"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                },
+                                                "volume" : {
+                                                   "alias" : "file"
+                                                }
+                                             },
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "[file=]<volume> [,import-from=<source volume>] [,size=<DiskSize>] [,version=<v1.2|v2.0>]"
+                                          },
                                           "unused[n]" : {
                                              "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.",
                                              "format" : {
@@ -18426,7 +19542,7 @@ const apiSchema = [
                                              "typetext" : "[file=]<volume>"
                                           },
                                           "usb[n]" : {
-                                             "description" : "Configure an USB device (n is 0 to 4).",
+                                             "description" : "Configure an USB device (n is 0 to 4, for machine version >= 7.1 and ostype l26 or windows > 7, n can be up to 14).",
                                              "format" : {
                                                 "host" : {
                                                    "default_key" : 1,
@@ -18437,7 +19553,7 @@ const apiSchema = [
                                                 },
                                                 "usb3" : {
                                                    "default" : 0,
-                                                   "description" : "Specifies whether if given host option is a USB3 device or port.",
+                                                   "description" : "Specifies whether if given host option is a USB3 device or port. For modern guests (machine version >= 7.1 and ostype l26 and windows > 7), this flag is irrelevant (all devices are plugged into a xhci controller).",
                                                    "optional" : 1,
                                                    "type" : "boolean"
                                                 }
@@ -18481,6 +19597,7 @@ const apiSchema = [
                                                       "serial3",
                                                       "std",
                                                       "virtio",
+                                                      "virtio-gl",
                                                       "vmware"
                                                    ],
                                                    "optional" : 1,
@@ -18493,7 +19610,7 @@ const apiSchema = [
                                              "verbose_description" : "Configure the VGA Hardware. If you want to use high resolution modes (>= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is 'std' for all OS types besides some Windows versions (XP and older) which use 'cirrus'. The 'qxl' option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays them self.\nYou can also run without any graphic card, using a serial device as terminal."
                                           },
                                           "virtio[n]" : {
-                                             "description" : "Use volume as VIRTIO hard disk (n is 0 to 15). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
+                                             "description" : "Use volume as VIRTIO hard disk (n is 0 to 15). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
                                              "format" : {
                                                 "aio" : {
                                                    "description" : "AIO type to use.",
@@ -18612,6 +19729,13 @@ const apiSchema = [
                                                    "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",
@@ -18742,6 +19866,11 @@ const apiSchema = [
                                                    "optional" : 1,
                                                    "type" : "string"
                                                 },
+                                                "ro" : {
+                                                   "description" : "Whether the drive is read-only.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
                                                 "secs" : {
                                                    "description" : "Force the drive's physical geometry to have a specific sector count.",
                                                    "optional" : 1,
@@ -18801,7 +19930,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>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>]"
+                                             "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,import-from=<source volume>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,ro=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>]"
                                           },
                                           "vmgenid" : {
                                              "default" : "1 (autogenerated)",
@@ -18935,6 +20064,160 @@ const apiSchema = [
                               "path" : "/nodes/{node}/qemu/{vmid}/pending",
                               "text" : "pending"
                            },
+                           {
+                              "children" : [
+                                 {
+                                    "info" : {
+                                       "GET" : {
+                                          "allowtoken" : 1,
+                                          "description" : "Get automatically generated cloudinit config.",
+                                          "method" : "GET",
+                                          "name" : "cloudinit_generated_config_dump",
+                                          "parameters" : {
+                                             "additionalProperties" : 0,
+                                             "properties" : {
+                                                "node" : {
+                                                   "description" : "The cluster node name.",
+                                                   "format" : "pve-node",
+                                                   "type" : "string",
+                                                   "typetext" : "<string>"
+                                                },
+                                                "type" : {
+                                                   "description" : "Config type.",
+                                                   "enum" : [
+                                                      "user",
+                                                      "network",
+                                                      "meta"
+                                                   ],
+                                                   "type" : "string"
+                                                },
+                                                "vmid" : {
+                                                   "description" : "The (unique) ID of the VM.",
+                                                   "format" : "pve-vmid",
+                                                   "minimum" : 1,
+                                                   "type" : "integer",
+                                                   "typetext" : "<integer> (1 - N)"
+                                                }
+                                             }
+                                          },
+                                          "permissions" : {
+                                             "check" : [
+                                                "perm",
+                                                "/vms/{vmid}",
+                                                [
+                                                   "VM.Audit"
+                                                ]
+                                             ]
+                                          },
+                                          "proxyto" : "node",
+                                          "returns" : {
+                                             "type" : "string"
+                                          }
+                                       }
+                                    },
+                                    "leaf" : 1,
+                                    "path" : "/nodes/{node}/qemu/{vmid}/cloudinit/dump",
+                                    "text" : "dump"
+                                 }
+                              ],
+                              "info" : {
+                                 "GET" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Get the cloudinit configuration with both current and pending values.",
+                                    "method" : "GET",
+                                    "name" : "cloudinit_pending",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "vmid" : {
+                                             "description" : "The (unique) ID of the VM.",
+                                             "format" : "pve-vmid",
+                                             "minimum" : 1,
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (1 - N)"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/vms/{vmid}",
+                                          [
+                                             "VM.Audit"
+                                          ]
+                                       ]
+                                    },
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "items" : {
+                                          "properties" : {
+                                             "key" : {
+                                                "description" : "Configuration option name.",
+                                                "type" : "string"
+                                             },
+                                             "new" : {
+                                                "description" : "The new pending value.",
+                                                "optional" : 1,
+                                                "type" : "string"
+                                             },
+                                             "old" : {
+                                                "description" : "Value as it was used to generate the current cloudinit image.",
+                                                "optional" : 1,
+                                                "type" : "string"
+                                             }
+                                          },
+                                          "type" : "object"
+                                       },
+                                       "type" : "array"
+                                    }
+                                 },
+                                 "PUT" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Regenerate and change cloudinit config drive.",
+                                    "method" : "PUT",
+                                    "name" : "cloudinit_update",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "vmid" : {
+                                             "description" : "The (unique) ID of the VM.",
+                                             "format" : "pve-vmid",
+                                             "minimum" : 1,
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (1 - N)"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/vms/{vmid}",
+                                          "VM.Config.Cloudinit"
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "type" : "null"
+                                    }
+                                 }
+                              },
+                              "leaf" : 0,
+                              "path" : "/nodes/{node}/qemu/{vmid}/cloudinit",
+                              "text" : "cloudinit"
+                           },
                            {
                               "info" : {
                                  "PUT" : {
@@ -19313,7 +20596,7 @@ const apiSchema = [
                                           "returns" : {
                                              "properties" : {
                                                 "agent" : {
-                                                   "description" : "Qemu GuestAgent enabled in config.",
+                                                   "description" : "QEMU Guest Agent is enabled in config.",
                                                    "optional" : 1,
                                                    "type" : "boolean"
                                                 },
@@ -19354,7 +20637,7 @@ const apiSchema = [
                                                    "type" : "integer"
                                                 },
                                                 "qmpstatus" : {
-                                                   "description" : "Qemu QMP agent status.",
+                                                   "description" : "QEMU QMP agent status.",
                                                    "optional" : 1,
                                                    "type" : "string"
                                                 },
@@ -19369,12 +20652,12 @@ const apiSchema = [
                                                    "type" : "string"
                                                 },
                                                 "spice" : {
-                                                   "description" : "Qemu VGA configuration supports spice.",
+                                                   "description" : "QEMU VGA configuration supports spice.",
                                                    "optional" : 1,
                                                    "type" : "boolean"
                                                 },
                                                 "status" : {
-                                                   "description" : "Qemu process status.",
+                                                   "description" : "QEMU process status.",
                                                    "enum" : [
                                                       "stopped",
                                                       "running"
@@ -19424,7 +20707,7 @@ const apiSchema = [
                                                    "typetext" : "<string>"
                                                 },
                                                 "machine" : {
-                                                   "description" : "Specifies the Qemu machine type.",
+                                                   "description" : "Specifies the QEMU machine type.",
                                                    "maxLength" : 40,
                                                    "optional" : 1,
                                                    "pattern" : "(pc|pc(-i440fx)?-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|q35|pc-q35-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|virt(?:-\\d+(\\.\\d+)+)?(\\+pve\\d+)?)",
@@ -19474,7 +20757,7 @@ const apiSchema = [
                                                 },
                                                 "targetstorage" : {
                                                    "description" : "Mapping from source to target storages. Providing only a single storage ID maps all source storages to that storage. Providing the special value '1' will map each source storage to itself.",
-                                                   "format" : "storagepair-list",
+                                                   "format" : "storage-pair-list",
                                                    "optional" : 1,
                                                    "type" : "string",
                                                    "typetext" : "<string>"
@@ -20212,7 +21495,7 @@ const apiSchema = [
                               "info" : {
                                  "POST" : {
                                     "allowtoken" : 1,
-                                    "description" : "Move volume to different storage.",
+                                    "description" : "Move volume to different storage or to a different VM.",
                                     "method" : "POST",
                                     "name" : "move_vm_disk",
                                     "parameters" : {
@@ -20234,7 +21517,7 @@ const apiSchema = [
                                              "typetext" : "<boolean>"
                                           },
                                           "digest" : {
-                                             "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                             "description" : "Prevent changes if current configuration file has different SHA1\"\n\t\t    .\" digest. This can be used to prevent concurrent modifications.",
                                              "maxLength" : 40,
                                              "optional" : 1,
                                              "type" : "string",
@@ -20300,7 +21583,264 @@ const apiSchema = [
                                                 "sata3",
                                                 "sata4",
                                                 "sata5",
-                                                "efidisk0"
+                                                "efidisk0",
+                                                "tpmstate0",
+                                                "unused0",
+                                                "unused1",
+                                                "unused2",
+                                                "unused3",
+                                                "unused4",
+                                                "unused5",
+                                                "unused6",
+                                                "unused7",
+                                                "unused8",
+                                                "unused9",
+                                                "unused10",
+                                                "unused11",
+                                                "unused12",
+                                                "unused13",
+                                                "unused14",
+                                                "unused15",
+                                                "unused16",
+                                                "unused17",
+                                                "unused18",
+                                                "unused19",
+                                                "unused20",
+                                                "unused21",
+                                                "unused22",
+                                                "unused23",
+                                                "unused24",
+                                                "unused25",
+                                                "unused26",
+                                                "unused27",
+                                                "unused28",
+                                                "unused29",
+                                                "unused30",
+                                                "unused31",
+                                                "unused32",
+                                                "unused33",
+                                                "unused34",
+                                                "unused35",
+                                                "unused36",
+                                                "unused37",
+                                                "unused38",
+                                                "unused39",
+                                                "unused40",
+                                                "unused41",
+                                                "unused42",
+                                                "unused43",
+                                                "unused44",
+                                                "unused45",
+                                                "unused46",
+                                                "unused47",
+                                                "unused48",
+                                                "unused49",
+                                                "unused50",
+                                                "unused51",
+                                                "unused52",
+                                                "unused53",
+                                                "unused54",
+                                                "unused55",
+                                                "unused56",
+                                                "unused57",
+                                                "unused58",
+                                                "unused59",
+                                                "unused60",
+                                                "unused61",
+                                                "unused62",
+                                                "unused63",
+                                                "unused64",
+                                                "unused65",
+                                                "unused66",
+                                                "unused67",
+                                                "unused68",
+                                                "unused69",
+                                                "unused70",
+                                                "unused71",
+                                                "unused72",
+                                                "unused73",
+                                                "unused74",
+                                                "unused75",
+                                                "unused76",
+                                                "unused77",
+                                                "unused78",
+                                                "unused79",
+                                                "unused80",
+                                                "unused81",
+                                                "unused82",
+                                                "unused83",
+                                                "unused84",
+                                                "unused85",
+                                                "unused86",
+                                                "unused87",
+                                                "unused88",
+                                                "unused89",
+                                                "unused90",
+                                                "unused91",
+                                                "unused92",
+                                                "unused93",
+                                                "unused94",
+                                                "unused95",
+                                                "unused96",
+                                                "unused97",
+                                                "unused98",
+                                                "unused99",
+                                                "unused100",
+                                                "unused101",
+                                                "unused102",
+                                                "unused103",
+                                                "unused104",
+                                                "unused105",
+                                                "unused106",
+                                                "unused107",
+                                                "unused108",
+                                                "unused109",
+                                                "unused110",
+                                                "unused111",
+                                                "unused112",
+                                                "unused113",
+                                                "unused114",
+                                                "unused115",
+                                                "unused116",
+                                                "unused117",
+                                                "unused118",
+                                                "unused119",
+                                                "unused120",
+                                                "unused121",
+                                                "unused122",
+                                                "unused123",
+                                                "unused124",
+                                                "unused125",
+                                                "unused126",
+                                                "unused127",
+                                                "unused128",
+                                                "unused129",
+                                                "unused130",
+                                                "unused131",
+                                                "unused132",
+                                                "unused133",
+                                                "unused134",
+                                                "unused135",
+                                                "unused136",
+                                                "unused137",
+                                                "unused138",
+                                                "unused139",
+                                                "unused140",
+                                                "unused141",
+                                                "unused142",
+                                                "unused143",
+                                                "unused144",
+                                                "unused145",
+                                                "unused146",
+                                                "unused147",
+                                                "unused148",
+                                                "unused149",
+                                                "unused150",
+                                                "unused151",
+                                                "unused152",
+                                                "unused153",
+                                                "unused154",
+                                                "unused155",
+                                                "unused156",
+                                                "unused157",
+                                                "unused158",
+                                                "unused159",
+                                                "unused160",
+                                                "unused161",
+                                                "unused162",
+                                                "unused163",
+                                                "unused164",
+                                                "unused165",
+                                                "unused166",
+                                                "unused167",
+                                                "unused168",
+                                                "unused169",
+                                                "unused170",
+                                                "unused171",
+                                                "unused172",
+                                                "unused173",
+                                                "unused174",
+                                                "unused175",
+                                                "unused176",
+                                                "unused177",
+                                                "unused178",
+                                                "unused179",
+                                                "unused180",
+                                                "unused181",
+                                                "unused182",
+                                                "unused183",
+                                                "unused184",
+                                                "unused185",
+                                                "unused186",
+                                                "unused187",
+                                                "unused188",
+                                                "unused189",
+                                                "unused190",
+                                                "unused191",
+                                                "unused192",
+                                                "unused193",
+                                                "unused194",
+                                                "unused195",
+                                                "unused196",
+                                                "unused197",
+                                                "unused198",
+                                                "unused199",
+                                                "unused200",
+                                                "unused201",
+                                                "unused202",
+                                                "unused203",
+                                                "unused204",
+                                                "unused205",
+                                                "unused206",
+                                                "unused207",
+                                                "unused208",
+                                                "unused209",
+                                                "unused210",
+                                                "unused211",
+                                                "unused212",
+                                                "unused213",
+                                                "unused214",
+                                                "unused215",
+                                                "unused216",
+                                                "unused217",
+                                                "unused218",
+                                                "unused219",
+                                                "unused220",
+                                                "unused221",
+                                                "unused222",
+                                                "unused223",
+                                                "unused224",
+                                                "unused225",
+                                                "unused226",
+                                                "unused227",
+                                                "unused228",
+                                                "unused229",
+                                                "unused230",
+                                                "unused231",
+                                                "unused232",
+                                                "unused233",
+                                                "unused234",
+                                                "unused235",
+                                                "unused236",
+                                                "unused237",
+                                                "unused238",
+                                                "unused239",
+                                                "unused240",
+                                                "unused241",
+                                                "unused242",
+                                                "unused243",
+                                                "unused244",
+                                                "unused245",
+                                                "unused246",
+                                                "unused247",
+                                                "unused248",
+                                                "unused249",
+                                                "unused250",
+                                                "unused251",
+                                                "unused252",
+                                                "unused253",
+                                                "unused254",
+                                                "unused255"
                                              ],
                                              "type" : "string"
                                           },
@@ -20323,9 +21863,347 @@ const apiSchema = [
                                           "storage" : {
                                              "description" : "Target storage.",
                                              "format" : "pve-storage-id",
+                                             "optional" : 1,
                                              "type" : "string",
                                              "typetext" : "<string>"
                                           },
+                                          "target-digest" : {
+                                             "description" : "Prevent changes if the current config file of the target VM has a\"\n\t\t    .\" different SHA1 digest. This can be used to detect concurrent modifications.",
+                                             "maxLength" : 40,
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "target-disk" : {
+                                             "description" : "The config key the disk will be moved to on the target VM (for example, ide0 or scsi1). Default is the source disk key.",
+                                             "enum" : [
+                                                "ide0",
+                                                "ide1",
+                                                "ide2",
+                                                "ide3",
+                                                "scsi0",
+                                                "scsi1",
+                                                "scsi2",
+                                                "scsi3",
+                                                "scsi4",
+                                                "scsi5",
+                                                "scsi6",
+                                                "scsi7",
+                                                "scsi8",
+                                                "scsi9",
+                                                "scsi10",
+                                                "scsi11",
+                                                "scsi12",
+                                                "scsi13",
+                                                "scsi14",
+                                                "scsi15",
+                                                "scsi16",
+                                                "scsi17",
+                                                "scsi18",
+                                                "scsi19",
+                                                "scsi20",
+                                                "scsi21",
+                                                "scsi22",
+                                                "scsi23",
+                                                "scsi24",
+                                                "scsi25",
+                                                "scsi26",
+                                                "scsi27",
+                                                "scsi28",
+                                                "scsi29",
+                                                "scsi30",
+                                                "virtio0",
+                                                "virtio1",
+                                                "virtio2",
+                                                "virtio3",
+                                                "virtio4",
+                                                "virtio5",
+                                                "virtio6",
+                                                "virtio7",
+                                                "virtio8",
+                                                "virtio9",
+                                                "virtio10",
+                                                "virtio11",
+                                                "virtio12",
+                                                "virtio13",
+                                                "virtio14",
+                                                "virtio15",
+                                                "sata0",
+                                                "sata1",
+                                                "sata2",
+                                                "sata3",
+                                                "sata4",
+                                                "sata5",
+                                                "efidisk0",
+                                                "tpmstate0",
+                                                "unused0",
+                                                "unused1",
+                                                "unused2",
+                                                "unused3",
+                                                "unused4",
+                                                "unused5",
+                                                "unused6",
+                                                "unused7",
+                                                "unused8",
+                                                "unused9",
+                                                "unused10",
+                                                "unused11",
+                                                "unused12",
+                                                "unused13",
+                                                "unused14",
+                                                "unused15",
+                                                "unused16",
+                                                "unused17",
+                                                "unused18",
+                                                "unused19",
+                                                "unused20",
+                                                "unused21",
+                                                "unused22",
+                                                "unused23",
+                                                "unused24",
+                                                "unused25",
+                                                "unused26",
+                                                "unused27",
+                                                "unused28",
+                                                "unused29",
+                                                "unused30",
+                                                "unused31",
+                                                "unused32",
+                                                "unused33",
+                                                "unused34",
+                                                "unused35",
+                                                "unused36",
+                                                "unused37",
+                                                "unused38",
+                                                "unused39",
+                                                "unused40",
+                                                "unused41",
+                                                "unused42",
+                                                "unused43",
+                                                "unused44",
+                                                "unused45",
+                                                "unused46",
+                                                "unused47",
+                                                "unused48",
+                                                "unused49",
+                                                "unused50",
+                                                "unused51",
+                                                "unused52",
+                                                "unused53",
+                                                "unused54",
+                                                "unused55",
+                                                "unused56",
+                                                "unused57",
+                                                "unused58",
+                                                "unused59",
+                                                "unused60",
+                                                "unused61",
+                                                "unused62",
+                                                "unused63",
+                                                "unused64",
+                                                "unused65",
+                                                "unused66",
+                                                "unused67",
+                                                "unused68",
+                                                "unused69",
+                                                "unused70",
+                                                "unused71",
+                                                "unused72",
+                                                "unused73",
+                                                "unused74",
+                                                "unused75",
+                                                "unused76",
+                                                "unused77",
+                                                "unused78",
+                                                "unused79",
+                                                "unused80",
+                                                "unused81",
+                                                "unused82",
+                                                "unused83",
+                                                "unused84",
+                                                "unused85",
+                                                "unused86",
+                                                "unused87",
+                                                "unused88",
+                                                "unused89",
+                                                "unused90",
+                                                "unused91",
+                                                "unused92",
+                                                "unused93",
+                                                "unused94",
+                                                "unused95",
+                                                "unused96",
+                                                "unused97",
+                                                "unused98",
+                                                "unused99",
+                                                "unused100",
+                                                "unused101",
+                                                "unused102",
+                                                "unused103",
+                                                "unused104",
+                                                "unused105",
+                                                "unused106",
+                                                "unused107",
+                                                "unused108",
+                                                "unused109",
+                                                "unused110",
+                                                "unused111",
+                                                "unused112",
+                                                "unused113",
+                                                "unused114",
+                                                "unused115",
+                                                "unused116",
+                                                "unused117",
+                                                "unused118",
+                                                "unused119",
+                                                "unused120",
+                                                "unused121",
+                                                "unused122",
+                                                "unused123",
+                                                "unused124",
+                                                "unused125",
+                                                "unused126",
+                                                "unused127",
+                                                "unused128",
+                                                "unused129",
+                                                "unused130",
+                                                "unused131",
+                                                "unused132",
+                                                "unused133",
+                                                "unused134",
+                                                "unused135",
+                                                "unused136",
+                                                "unused137",
+                                                "unused138",
+                                                "unused139",
+                                                "unused140",
+                                                "unused141",
+                                                "unused142",
+                                                "unused143",
+                                                "unused144",
+                                                "unused145",
+                                                "unused146",
+                                                "unused147",
+                                                "unused148",
+                                                "unused149",
+                                                "unused150",
+                                                "unused151",
+                                                "unused152",
+                                                "unused153",
+                                                "unused154",
+                                                "unused155",
+                                                "unused156",
+                                                "unused157",
+                                                "unused158",
+                                                "unused159",
+                                                "unused160",
+                                                "unused161",
+                                                "unused162",
+                                                "unused163",
+                                                "unused164",
+                                                "unused165",
+                                                "unused166",
+                                                "unused167",
+                                                "unused168",
+                                                "unused169",
+                                                "unused170",
+                                                "unused171",
+                                                "unused172",
+                                                "unused173",
+                                                "unused174",
+                                                "unused175",
+                                                "unused176",
+                                                "unused177",
+                                                "unused178",
+                                                "unused179",
+                                                "unused180",
+                                                "unused181",
+                                                "unused182",
+                                                "unused183",
+                                                "unused184",
+                                                "unused185",
+                                                "unused186",
+                                                "unused187",
+                                                "unused188",
+                                                "unused189",
+                                                "unused190",
+                                                "unused191",
+                                                "unused192",
+                                                "unused193",
+                                                "unused194",
+                                                "unused195",
+                                                "unused196",
+                                                "unused197",
+                                                "unused198",
+                                                "unused199",
+                                                "unused200",
+                                                "unused201",
+                                                "unused202",
+                                                "unused203",
+                                                "unused204",
+                                                "unused205",
+                                                "unused206",
+                                                "unused207",
+                                                "unused208",
+                                                "unused209",
+                                                "unused210",
+                                                "unused211",
+                                                "unused212",
+                                                "unused213",
+                                                "unused214",
+                                                "unused215",
+                                                "unused216",
+                                                "unused217",
+                                                "unused218",
+                                                "unused219",
+                                                "unused220",
+                                                "unused221",
+                                                "unused222",
+                                                "unused223",
+                                                "unused224",
+                                                "unused225",
+                                                "unused226",
+                                                "unused227",
+                                                "unused228",
+                                                "unused229",
+                                                "unused230",
+                                                "unused231",
+                                                "unused232",
+                                                "unused233",
+                                                "unused234",
+                                                "unused235",
+                                                "unused236",
+                                                "unused237",
+                                                "unused238",
+                                                "unused239",
+                                                "unused240",
+                                                "unused241",
+                                                "unused242",
+                                                "unused243",
+                                                "unused244",
+                                                "unused245",
+                                                "unused246",
+                                                "unused247",
+                                                "unused248",
+                                                "unused249",
+                                                "unused250",
+                                                "unused251",
+                                                "unused252",
+                                                "unused253",
+                                                "unused254",
+                                                "unused255"
+                                             ],
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "target-vmid" : {
+                                             "description" : "The (unique) ID of the VM.",
+                                             "format" : "pve-vmid",
+                                             "minimum" : 1,
+                                             "optional" : 1,
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (1 - N)"
+                                          },
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
@@ -20337,23 +22215,13 @@ const apiSchema = [
                                     },
                                     "permissions" : {
                                        "check" : [
-                                          "and",
-                                          [
-                                             "perm",
-                                             "/vms/{vmid}",
-                                             [
-                                                "VM.Config.Disk"
-                                             ]
-                                          ],
+                                          "perm",
+                                          "/vms/{vmid}",
                                           [
-                                             "perm",
-                                             "/storage/{storage}",
-                                             [
-                                                "Datastore.AllocateSpace"
-                                             ]
+                                             "VM.Config.Disk"
                                           ]
                                        ],
-                                       "description" : "You need 'VM.Config.Disk' permissions on /vms/{vmid}, and 'Datastore.AllocateSpace' permissions on the storage."
+                                       "description" : "You need 'VM.Config.Disk' permissions on /vms/{vmid}, and 'Datastore.AllocateSpace' permissions on the storage. To move a disk to another VM, you need the permissions on the target VM as well."
                                     },
                                     "protected" : 1,
                                     "proxyto" : "node",
@@ -20495,7 +22363,7 @@ const apiSchema = [
                                           },
                                           "targetstorage" : {
                                              "description" : "Mapping from source to target storages. Providing only a single storage ID maps all source storages to that storage. Providing the special value '1' will map each source storage to itself.",
-                                             "format" : "storagepair-list",
+                                             "format" : "storage-pair-list",
                                              "optional" : 1,
                                              "type" : "string",
                                              "typetext" : "<string>"
@@ -20540,7 +22408,101 @@ const apiSchema = [
                               "info" : {
                                  "POST" : {
                                     "allowtoken" : 1,
-                                    "description" : "Execute Qemu monitor commands.",
+                                    "description" : "Migrate virtual machine to a remote cluster. Creates a new migration task. EXPERIMENTAL feature!",
+                                    "method" : "POST",
+                                    "name" : "remote_migrate_vm",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "bwlimit" : {
+                                             "default" : "migrate limit from datacenter or storage config",
+                                             "description" : "Override I/O bandwidth limit (in KiB/s).",
+                                             "minimum" : "0",
+                                             "optional" : 1,
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (0 - N)"
+                                          },
+                                          "delete" : {
+                                             "default" : 0,
+                                             "description" : "Delete the original VM and related data after successful migration. By default the original VM is kept on the source cluster in a stopped state.",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "online" : {
+                                             "description" : "Use online/live migration if VM is running. Ignored if VM is stopped.",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
+                                          "target-bridge" : {
+                                             "description" : "Mapping from source to target bridges. Providing only a single bridge ID maps all source bridges to that bridge. Providing the special value '1' will map each source bridge to itself.",
+                                             "format" : "bridge-pair-list",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "target-endpoint" : {
+                                             "description" : "Remote target endpoint",
+                                             "format" : "proxmox-remote",
+                                             "type" : "string",
+                                             "typetext" : "apitoken=<A full Proxmox API token including the secret value.> ,host=<Remote Proxmox hostname or IP> [,fingerprint=<Remote host's certificate fingerprint, if not trusted by system store.>] [,port=<integer>]"
+                                          },
+                                          "target-storage" : {
+                                             "description" : "Mapping from source to target storages. Providing only a single storage ID maps all source storages to that storage. Providing the special value '1' will map each source storage to itself.",
+                                             "format" : "storage-pair-list",
+                                             "optional" : 0,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "target-vmid" : {
+                                             "description" : "The (unique) ID of the VM.",
+                                             "format" : "pve-vmid",
+                                             "minimum" : 1,
+                                             "optional" : 1,
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (1 - N)"
+                                          },
+                                          "vmid" : {
+                                             "description" : "The (unique) ID of the VM.",
+                                             "format" : "pve-vmid",
+                                             "minimum" : 1,
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (1 - N)"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/vms/{vmid}",
+                                          [
+                                             "VM.Migrate"
+                                          ]
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "description" : "the task ID.",
+                                       "type" : "string"
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/qemu/{vmid}/remote_migrate",
+                              "text" : "remote_migrate"
+                           },
+                           {
+                              "info" : {
+                                 "POST" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Execute QEMU monitor commands.",
                                     "method" : "POST",
                                     "name" : "monitor",
                                     "parameters" : {
@@ -20664,7 +22626,8 @@ const apiSchema = [
                                                 "sata3",
                                                 "sata4",
                                                 "sata5",
-                                                "efidisk0"
+                                                "efidisk0",
+                                                "tpmstate0"
                                              ],
                                              "type" : "string"
                                           },
@@ -20847,6 +22810,13 @@ const apiSchema = [
                                                          "type" : "string",
                                                          "typetext" : "<string>"
                                                       },
+                                                      "start" : {
+                                                         "default" : 0,
+                                                         "description" : "Whether the VM should get started after rolling back successfully. (Note: VMs will be automatically started if the snapshot includes RAM.)",
+                                                         "optional" : 1,
+                                                         "type" : "boolean",
+                                                         "typetext" : "<boolean>"
+                                                      },
                                                       "vmid" : {
                                                          "description" : "The (unique) ID of the VM.",
                                                          "format" : "pve-vmid",
@@ -21194,7 +23164,8 @@ const apiSchema = [
                                                 "sata3",
                                                 "sata4",
                                                 "sata5",
-                                                "efidisk0"
+                                                "efidisk0",
+                                                "tpmstate0"
                                              ],
                                              "optional" : 1,
                                              "type" : "string"
@@ -21227,7 +23198,8 @@ const apiSchema = [
                                     "protected" : 1,
                                     "proxyto" : "node",
                                     "returns" : {
-                                       "type" : "null"
+                                       "description" : "the task ID.",
+                                       "type" : "string"
                                     }
                                  }
                               },
@@ -21236,64 +23208,142 @@ const apiSchema = [
                               "text" : "template"
                            },
                            {
-                              "children" : [
-                                 {
-                                    "info" : {
-                                       "GET" : {
-                                          "allowtoken" : 1,
-                                          "description" : "Get automatically generated cloudinit config.",
-                                          "method" : "GET",
-                                          "name" : "cloudinit_generated_config_dump",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "type" : {
-                                                   "description" : "Config type.",
-                                                   "enum" : [
-                                                      "user",
-                                                      "network",
-                                                      "meta"
-                                                   ],
-                                                   "type" : "string"
-                                                },
-                                                "vmid" : {
-                                                   "description" : "The (unique) ID of the VM.",
-                                                   "format" : "pve-vmid",
-                                                   "minimum" : 1,
-                                                   "type" : "integer",
-                                                   "typetext" : "<integer> (1 - N)"
-                                                }
-                                             }
+                              "info" : {
+                                 "POST" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Migration tunnel endpoint - only for internal use by VM migration.",
+                                    "method" : "POST",
+                                    "name" : "mtunnel",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "bridges" : {
+                                             "description" : "List of network bridges to check availability. Will be checked again for actually used bridges during migration.",
+                                             "format" : "pve-bridge-id-list",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
                                           },
-                                          "permissions" : {
-                                             "check" : [
-                                                "perm",
-                                                "/vms/{vmid}",
-                                                [
-                                                   "VM.Audit"
-                                                ]
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "storages" : {
+                                             "description" : "List of storages to check permission and availability. Will be checked again for all actually used storages during migration.",
+                                             "format" : "pve-storage-id-list",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "vmid" : {
+                                             "description" : "The (unique) ID of the VM.",
+                                             "format" : "pve-vmid",
+                                             "minimum" : 1,
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (1 - N)"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "and",
+                                          [
+                                             "perm",
+                                             "/vms/{vmid}",
+                                             [
+                                                "VM.Allocate"
                                              ]
+                                          ],
+                                          [
+                                             "perm",
+                                             "/",
+                                             [
+                                                "Sys.Incoming"
+                                             ]
+                                          ]
+                                       ],
+                                       "description" : "You need 'VM.Allocate' permissions on '/vms/{vmid}' and Sys.Incoming on '/'. Further permission checks happen during the actual migration."
+                                    },
+                                    "protected" : 1,
+                                    "returns" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "socket" : {
+                                             "type" : "string"
                                           },
-                                          "proxyto" : "node",
-                                          "returns" : {
+                                          "ticket" : {
                                              "type" : "string"
+                                          },
+                                          "upid" : {
+                                             "type" : "string"
+                                          }
+                                       }
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/qemu/{vmid}/mtunnel",
+                              "text" : "mtunnel"
+                           },
+                           {
+                              "info" : {
+                                 "GET" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Migration tunnel endpoint for websocket upgrade - only for internal use by VM migration.",
+                                    "method" : "GET",
+                                    "name" : "mtunnelwebsocket",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "socket" : {
+                                             "description" : "unix socket to forward to",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "ticket" : {
+                                             "description" : "ticket return by initial 'mtunnel' API call, or retrieved via 'ticket' tunnel command",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "vmid" : {
+                                             "description" : "The (unique) ID of the VM.",
+                                             "format" : "pve-vmid",
+                                             "minimum" : 1,
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (1 - N)"
                                           }
                                        }
                                     },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/qemu/{vmid}/cloudinit/dump",
-                                    "text" : "dump"
+                                    "permissions" : {
+                                       "description" : "You need to pass a ticket valid for the selected socket. Tickets can be created via the mtunnel API call, which will check permissions accordingly.",
+                                       "user" : "all"
+                                    },
+                                    "returns" : {
+                                       "properties" : {
+                                          "port" : {
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "socket" : {
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          }
+                                       },
+                                       "type" : "object"
+                                    }
                                  }
-                              ],
-                              "leaf" : 0,
-                              "path" : "/nodes/{node}/qemu/{vmid}/cloudinit",
-                              "text" : "cloudinit"
+                              },
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/qemu/{vmid}/mtunnelwebsocket",
+                              "text" : "mtunnelwebsocket"
                            }
                         ],
                         "info" : {
@@ -21470,7 +23520,7 @@ const apiSchema = [
                                     "type" : "integer"
                                  },
                                  "qmpstatus" : {
-                                    "description" : "Qemu QMP agent status.",
+                                    "description" : "QEMU QMP agent status.",
                                     "optional" : 1,
                                     "type" : "string"
                                  },
@@ -21485,7 +23535,7 @@ const apiSchema = [
                                     "type" : "string"
                                  },
                                  "status" : {
-                                    "description" : "Qemu process status.",
+                                    "description" : "QEMU process status.",
                                     "enum" : [
                                        "stopped",
                                        "running"
@@ -21536,13 +23586,26 @@ const apiSchema = [
                                  "type" : "boolean",
                                  "typetext" : "<boolean>"
                               },
+                              "affinity" : {
+                                 "description" : "List of host cores used to execute guest processes, for example: 0,5,8-11",
+                                 "format" : "pve-cpuset",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
                               "agent" : {
-                                 "description" : "Enable/disable Qemu GuestAgent and its properties.",
+                                 "description" : "Enable/disable communication with the QEMU Guest Agent and its properties.",
                                  "format" : {
                                     "enabled" : {
                                        "default" : 0,
                                        "default_key" : 1,
-                                       "description" : "Enable/disable Qemu GuestAgent.",
+                                       "description" : "Enable/disable communication with a QEMU Guest Agent (QGA) running in the VM.",
+                                       "type" : "boolean"
+                                    },
+                                    "freeze-fs-on-backup" : {
+                                       "default" : 1,
+                                       "description" : "Freeze/thaw guest filesystems on backup for consistency.",
+                                       "optional" : 1,
                                        "type" : "boolean"
                                     },
                                     "fstrim_cloned_disks" : {
@@ -21564,7 +23627,7 @@ const apiSchema = [
                                  },
                                  "optional" : 1,
                                  "type" : "string",
-                                 "typetext" : "[enabled=]<1|0> [,fstrim_cloned_disks=<1|0>] [,type=<virtio|isa>]"
+                                 "typetext" : "[enabled=]<1|0> [,freeze-fs-on-backup=<1|0>] [,fstrim_cloned_disks=<1|0>] [,type=<virtio|isa>]"
                               },
                               "arch" : {
                                  "description" : "Virtual processor architecture. Defaults to the host.",
@@ -21624,7 +23687,7 @@ const apiSchema = [
                                  "typetext" : "<boolean>"
                               },
                               "balloon" : {
-                                 "description" : "Amount of target RAM for the VM in MB. Using zero disables the ballon driver.",
+                                 "description" : "Amount of target RAM for the VM in MiB. Using zero disables the ballon driver.",
                                  "minimum" : 0,
                                  "optional" : 1,
                                  "type" : "integer",
@@ -21641,7 +23704,7 @@ const apiSchema = [
                                  "type" : "string"
                               },
                               "boot" : {
-                                 "description" : "Specify guest boot order. Use with 'order=', usage with no key or 'legacy=' is deprecated.",
+                                 "description" : "Specify guest boot order. Use the 'order=' sub-property as usage with no key or 'legacy=' is deprecated.",
                                  "format" : "pve-qm-boot",
                                  "optional" : 1,
                                  "type" : "string",
@@ -21674,7 +23737,7 @@ const apiSchema = [
                                  "format" : "pve-qm-cicustom",
                                  "optional" : 1,
                                  "type" : "string",
-                                 "typetext" : "[meta=<volume>] [,network=<volume>] [,user=<volume>]"
+                                 "typetext" : "[meta=<volume>] [,network=<volume>] [,user=<volume>] [,vendor=<volume>]"
                               },
                               "cipassword" : {
                                  "description" : "cloud-init: Password to assign the user. Using this is generally not recommended. Use ssh keys instead. Also note that older cloud-init versions do not support hashed passwords.",
@@ -21724,13 +23787,13 @@ const apiSchema = [
                                  "verbose_description" : "Limit of CPU usage.\n\nNOTE: If the computer has 2 CPUs, it has total of '2' CPU time. Value '0' indicates no CPU limit."
                               },
                               "cpuunits" : {
-                                 "default" : 1024,
-                                 "description" : "CPU weight for a VM.",
+                                 "default" : "cgroup v1: 1024, cgroup v2: 100",
+                                 "description" : "CPU weight for a VM, will be clamped to [1, 10000] in cgroup v2.",
                                  "maximum" : 262144,
-                                 "minimum" : 2,
+                                 "minimum" : 1,
                                  "optional" : 1,
                                  "type" : "integer",
-                                 "typetext" : "<integer> (2 - 262144)",
+                                 "typetext" : "<integer> (1 - 262144)",
                                  "verbose_description" : "CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to weights of all the other running VMs."
                               },
                               "description" : {
@@ -21741,8 +23804,18 @@ const apiSchema = [
                                  "typetext" : "<string>"
                               },
                               "efidisk0" : {
-                                 "description" : "Configure a Disk for storing EFI vars. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and that the default EFI vars are copied to the volume instead.",
+                                 "description" : "Configure a disk for storing EFI vars. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and that the default EFI vars are copied to the volume instead. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
                                  "format" : {
+                                    "efitype" : {
+                                       "default" : "2m",
+                                       "description" : "Size and type of the OVMF EFI vars. '4m' is newer and recommended, and required for Secure Boot. For backwards compatibility, '2m' is used if not otherwise specified. Ignored for VMs with arch=aarc64 (ARM).",
+                                       "enum" : [
+                                          "2m",
+                                          "4m"
+                                       ],
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
                                     "file" : {
                                        "default_key" : 1,
                                        "description" : "The drive's backing volume.",
@@ -21764,6 +23837,19 @@ const apiSchema = [
                                        "optional" : 1,
                                        "type" : "string"
                                     },
+                                    "import-from" : {
+                                       "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
+                                       "format" : "pve-volume-id-or-absolute-path",
+                                       "format_description" : "source volume",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "pre-enrolled-keys" : {
+                                       "default" : 0,
+                                       "description" : "Use am EFI vars template with distribution-specific and Microsoft Standard keys enrolled, if used with 'efitype=4m'. Note that this will enable Secure Boot by default, though it can still be turned off from within the VM.",
+                                       "optional" : 1,
+                                       "type" : "boolean"
+                                    },
                                     "size" : {
                                        "description" : "Disk size. This is purely informational and has no effect.",
                                        "format" : "disk-size",
@@ -21777,7 +23863,7 @@ const apiSchema = [
                                  },
                                  "optional" : 1,
                                  "type" : "string",
-                                 "typetext" : "[file=]<volume> [,format=<enum>] [,size=<DiskSize>]"
+                                 "typetext" : "[file=]<volume> [,efitype=<2m|4m>] [,format=<enum>] [,import-from=<source volume>] [,pre-enrolled-keys=<1|0>] [,size=<DiskSize>]"
                               },
                               "force" : {
                                  "description" : "Allow to overwrite existing VM.",
@@ -21804,12 +23890,12 @@ const apiSchema = [
                                  "format" : "pve-qm-hostpci",
                                  "optional" : 1,
                                  "type" : "string",
-                                 "typetext" : "[host=]<HOSTPCIID[;HOSTPCIID2...]> [,legacy-igd=<1|0>] [,mdev=<string>] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=<string>] [,x-vga=<1|0>]",
+                                 "typetext" : "[host=]<HOSTPCIID[;HOSTPCIID2...]> [,device-id=<hex id>] [,legacy-igd=<1|0>] [,mdev=<string>] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=<string>] [,sub-device-id=<hex id>] [,sub-vendor-id=<hex id>] [,vendor-id=<hex id>] [,x-vga=<1|0>]",
                                  "verbose_description" : "Map host PCI devices into guest.\n\nNOTE: This option allows direct access to host hardware. So it is no longer\npossible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n"
                               },
                               "hotplug" : {
                                  "default" : "network,disk,usb",
-                                 "description" : "Selectively enable hotplug features. This is a comma separated list of hotplug features: 'network', 'disk', 'cpu', 'memory' and 'usb'. Use '0' to disable hotplug completely. Value '1' is an alias for the default 'network,disk,usb'.",
+                                 "description" : "Selectively enable hotplug features. This is a comma separated list of hotplug features: 'network', 'disk', 'cpu', 'memory', 'usb' and 'cloudinit'. Use '0' to disable hotplug completely. Using '1' as value is an alias for the default `network,disk,usb`. USB hotplugging is possible for guests with machine version >= 7.1 and ostype l26 or windows > 7.",
                                  "format" : "pve-hotplug-features",
                                  "optional" : 1,
                                  "type" : "string",
@@ -21826,7 +23912,7 @@ const apiSchema = [
                                  "type" : "string"
                               },
                               "ide[n]" : {
-                                 "description" : "Use volume as IDE hard disk or CD-ROM (n is 0 to 3). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
+                                 "description" : "Use volume as IDE hard disk or CD-ROM (n is 0 to 3). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
                                  "format" : {
                                     "aio" : {
                                        "description" : "AIO type to use.",
@@ -21945,6 +24031,13 @@ const apiSchema = [
                                        "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",
@@ -22149,7 +24242,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>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,model=<model>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
+                                 "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,import-from=<source volume>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,model=<model>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
                               },
                               "ipconfig[n]" : {
                                  "description" : "cloud-init: Specify IP addresses and gateways for the corresponding interface.\n\nIP addresses use CIDR notation, gateways are optional but need an IP of the same type specified.\n\nThe special string 'dhcp' can be used for IP addresses to use DHCP, in which case no explicit\ngateway should be provided.\nFor IPv6 the special string 'auto' can be used to use stateless autoconfiguration. This requires\ncloud-init 19.4 or newer.\n\nIf cloud-init is enabled and neither an IPv4 nor an IPv6 address is specified, it defaults to using\ndhcp on IPv4.\n",
@@ -22187,7 +24280,7 @@ const apiSchema = [
                               },
                               "keyboard" : {
                                  "default" : null,
-                                 "description" : "Keybord layout for vnc server. Default is read from the '/etc/pve/datacenter.cfg' configuration file.It should not be necessary to set it.",
+                                 "description" : "Keyboard layout for VNC server. This option is generally not required and is often better handled from within the guest OS.",
                                  "enum" : [
                                     "de",
                                     "de-ch",
@@ -22233,7 +24326,7 @@ const apiSchema = [
                                  "typetext" : "<boolean>"
                               },
                               "localtime" : {
-                                 "description" : "Set the real time clock to local time. This is enabled by default if ostype indicates a Microsoft OS.",
+                                 "description" : "Set the real time clock (RTC) to local time. This is enabled by default if the `ostype` indicates a Microsoft Windows OS.",
                                  "optional" : 1,
                                  "type" : "boolean",
                                  "typetext" : "<boolean>"
@@ -22255,7 +24348,7 @@ const apiSchema = [
                                  "type" : "string"
                               },
                               "machine" : {
-                                 "description" : "Specifies the Qemu machine type.",
+                                 "description" : "Specifies the QEMU machine type.",
                                  "maxLength" : 40,
                                  "optional" : 1,
                                  "pattern" : "(pc|pc(-i440fx)?-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|q35|pc-q35-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|virt(?:-\\d+(\\.\\d+)+)?(\\+pve\\d+)?)",
@@ -22263,7 +24356,7 @@ const apiSchema = [
                               },
                               "memory" : {
                                  "default" : 512,
-                                 "description" : "Amount of RAM for the VM in MB. This is the maximum available memory when you use the balloon device.",
+                                 "description" : "Amount of RAM for the VM in MiB. This is the maximum available memory when you use the balloon device.",
                                  "minimum" : 16,
                                  "optional" : 1,
                                  "type" : "integer",
@@ -22293,7 +24386,7 @@ const apiSchema = [
                                  "typetext" : "<string>"
                               },
                               "nameserver" : {
-                                 "description" : "cloud-init: Sets DNS server IP address for a container. Create will'\n\t    .' automatically use the setting from the host if neither searchdomain nor nameserver'\n\t    .' are set.",
+                                 "description" : "cloud-init: Sets DNS server IP address for a container. Create will automatically use the setting from the host if neither searchdomain nor nameserver are set.",
                                  "format" : "address-list",
                                  "optional" : 1,
                                  "type" : "string",
@@ -22304,9 +24397,9 @@ const apiSchema = [
                                  "format" : {
                                     "bridge" : {
                                        "description" : "Bridge to attach the network device to. The Proxmox VE standard bridge\nis called 'vmbr0'.\n\nIf you do not specify a bridge, we create a kvm user (NATed) network\ndevice, which provides DHCP and DNS services. The following addresses\nare used:\n\n 10.0.2.2   Gateway\n 10.0.2.3   DNS Server\n 10.0.2.4   SMB Server\n\nThe DHCP server assign addresses to the guest starting from 10.0.2.15.\n",
+                                       "format" : "pve-bridge-id",
                                        "format_description" : "bridge",
                                        "optional" : 1,
-                                       "pattern" : "[-_.\\w\\d]+",
                                        "type" : "string"
                                     },
                                     "e1000" : {
@@ -22325,6 +24418,10 @@ const apiSchema = [
                                        "alias" : "macaddr",
                                        "keyAlias" : "model"
                                     },
+                                    "e1000e" : {
+                                       "alias" : "macaddr",
+                                       "keyAlias" : "model"
+                                    },
                                     "firewall" : {
                                        "description" : "Whether this interface should be protected by the firewall.",
                                        "optional" : 1,
@@ -22359,19 +24456,20 @@ const apiSchema = [
                                        "default_key" : 1,
                                        "description" : "Network Card Model. The 'virtio' model provides the best performance with very low CPU overhead. If your guest does not support this driver, it is usually best to use 'e1000'.",
                                        "enum" : [
-                                          "rtl8139",
-                                          "ne2k_pci",
                                           "e1000",
-                                          "pcnet",
-                                          "virtio",
-                                          "ne2k_isa",
+                                          "e1000-82540em",
+                                          "e1000-82544gc",
+                                          "e1000-82545em",
+                                          "e1000e",
                                           "i82551",
                                           "i82557b",
                                           "i82559er",
-                                          "vmxnet3",
-                                          "e1000-82540em",
-                                          "e1000-82544gc",
-                                          "e1000-82545em"
+                                          "ne2k_isa",
+                                          "ne2k_pci",
+                                          "pcnet",
+                                          "rtl8139",
+                                          "virtio",
+                                          "vmxnet3"
                                        ],
                                        "type" : "string"
                                     },
@@ -22396,7 +24494,7 @@ const apiSchema = [
                                     },
                                     "queues" : {
                                        "description" : "Number of packet queues to be used on the device.",
-                                       "maximum" : 16,
+                                       "maximum" : 64,
                                        "minimum" : 0,
                                        "optional" : 1,
                                        "type" : "integer"
@@ -22506,13 +24604,14 @@ const apiSchema = [
                                     "win7",
                                     "win8",
                                     "win10",
+                                    "win11",
                                     "l24",
                                     "l26",
                                     "solaris"
                                  ],
                                  "optional" : 1,
                                  "type" : "string",
-                                 "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016/2019\nl24;; Linux 2.4 Kernel\nl26;; Linux 2.6 - 5.X Kernel\nsolaris;; Solaris/OpenSolaris/OpenIndiania kernel\n"
+                                 "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016/2019\nwin11;; Microsoft Windows 11/2022\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).",
@@ -22547,7 +24646,7 @@ const apiSchema = [
                                  "format" : {
                                     "max_bytes" : {
                                        "default" : 1024,
-                                       "description" : "Maximum bytes of entropy injected into the guest every 'period' milliseconds. Prefer a lower value when using /dev/random as source. Use 0 to disable limiting (potentially dangerous!).",
+                                       "description" : "Maximum bytes of entropy allowed to get injected into the guest every 'period' milliseconds. Prefer a lower value when using '/dev/random' as source. Use `0` to disable limiting (potentially dangerous!).",
                                        "optional" : 1,
                                        "type" : "integer"
                                     },
@@ -22559,7 +24658,7 @@ const apiSchema = [
                                     },
                                     "source" : {
                                        "default_key" : 1,
-                                       "description" : "The file on the host to gather entropy from. In most cases /dev/urandom should be preferred over /dev/random to avoid entropy-starvation issues on the host. Using urandom does *not* decrease security in any meaningful way, as it's still seeded from real entropy, and the bytes provided will most likely be mixed with real entropy on the guest as well. /dev/hwrng can be used to pass through a hardware RNG from the host.",
+                                       "description" : "The file on the host to gather entropy from. In most cases '/dev/urandom' should be preferred over '/dev/random' to avoid entropy-starvation issues on the host. Using urandom does *not* decrease security in any meaningful way, as it's still seeded from real entropy, and the bytes provided will most likely be mixed with real entropy on the guest as well. '/dev/hwrng' can be used to pass through a hardware RNG from the host.",
                                        "enum" : [
                                           "/dev/urandom",
                                           "/dev/random",
@@ -22573,7 +24672,7 @@ const apiSchema = [
                                  "typetext" : "[source=]</dev/urandom|/dev/random|/dev/hwrng> [,max_bytes=<integer>] [,period=<integer>]"
                               },
                               "sata[n]" : {
-                                 "description" : "Use volume as SATA hard disk or CD-ROM (n is 0 to 5). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
+                                 "description" : "Use volume as SATA hard disk or CD-ROM (n is 0 to 5). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
                                  "format" : {
                                     "aio" : {
                                        "description" : "AIO type to use.",
@@ -22692,324 +24791,338 @@ const apiSchema = [
                                        "optional" : 1,
                                        "type" : "integer"
                                     },
-                                    "iops" : {
-                                       "description" : "Maximum r/w I/O in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_max" : {
-                                       "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_max_length" : {
-                                       "description" : "Maximum length of I/O bursts in seconds.",
-                                       "format_description" : "seconds",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_rd" : {
-                                       "description" : "Maximum read I/O in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_rd_length" : {
-                                       "alias" : "iops_rd_max_length"
-                                    },
-                                    "iops_rd_max" : {
-                                       "description" : "Maximum unthrottled read I/O pool in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_rd_max_length" : {
-                                       "description" : "Maximum length of read I/O bursts in seconds.",
-                                       "format_description" : "seconds",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_wr" : {
-                                       "description" : "Maximum write I/O in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_wr_length" : {
-                                       "alias" : "iops_wr_max_length"
-                                    },
-                                    "iops_wr_max" : {
-                                       "description" : "Maximum unthrottled write I/O pool in operations per second.",
-                                       "format_description" : "iops",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "iops_wr_max_length" : {
-                                       "description" : "Maximum length of write I/O bursts in seconds.",
-                                       "format_description" : "seconds",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "mbps" : {
-                                       "description" : "Maximum r/w speed in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "mbps_max" : {
-                                       "description" : "Maximum unthrottled r/w pool in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "mbps_rd" : {
-                                       "description" : "Maximum read speed in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "mbps_rd_max" : {
-                                       "description" : "Maximum unthrottled read pool in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "mbps_wr" : {
-                                       "description" : "Maximum write speed in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "mbps_wr_max" : {
-                                       "description" : "Maximum unthrottled write pool in megabytes per second.",
-                                       "format_description" : "mbps",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "media" : {
-                                       "default" : "disk",
-                                       "description" : "The drive's media type.",
-                                       "enum" : [
-                                          "cdrom",
-                                          "disk"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "replicate" : {
-                                       "default" : 1,
-                                       "description" : "Whether the drive should considered for replication jobs.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "rerror" : {
-                                       "description" : "Read error action.",
-                                       "enum" : [
-                                          "ignore",
-                                          "report",
-                                          "stop"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "secs" : {
-                                       "description" : "Force the drive's physical geometry to have a specific sector count.",
-                                       "optional" : 1,
-                                       "type" : "integer"
-                                    },
-                                    "serial" : {
-                                       "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
-                                       "format" : "urlencoded",
-                                       "format_description" : "serial",
-                                       "maxLength" : 60,
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "shared" : {
-                                       "default" : 0,
-                                       "description" : "Mark this locally-managed volume as available on all nodes",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
-                                    },
-                                    "size" : {
-                                       "description" : "Disk size. This is purely informational and has no effect.",
-                                       "format" : "disk-size",
-                                       "format_description" : "DiskSize",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "snapshot" : {
-                                       "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "ssd" : {
-                                       "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
-                                       "optional" : 1,
-                                       "type" : "boolean"
-                                    },
-                                    "trans" : {
-                                       "description" : "Force disk geometry bios translation mode.",
-                                       "enum" : [
-                                          "none",
-                                          "lba",
-                                          "auto"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "volume" : {
-                                       "alias" : "file"
-                                    },
-                                    "werror" : {
-                                       "description" : "Write error action.",
-                                       "enum" : [
-                                          "enospc",
-                                          "ignore",
-                                          "report",
-                                          "stop"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "wwn" : {
-                                       "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
-                                       "format_description" : "wwn",
-                                       "optional" : 1,
-                                       "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
-                              },
-                              "scsi[n]" : {
-                                 "description" : "Use volume as SCSI hard disk or CD-ROM (n is 0 to 30). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
-                                 "format" : {
-                                    "aio" : {
-                                       "description" : "AIO type to use.",
-                                       "enum" : [
-                                          "native",
-                                          "threads",
-                                          "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"
-                                       ],
+                                    "import-from" : {
+                                       "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
+                                       "format" : "pve-volume-id-or-absolute-path",
+                                       "format_description" : "source volume",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "iops" : {
+                                       "description" : "Maximum r/w I/O in operations per second.",
+                                       "format_description" : "iops",
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    },
+                                    "iops_max" : {
+                                       "description" : "Maximum unthrottled r/w I/O pool in operations per second.",
+                                       "format_description" : "iops",
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    },
+                                    "iops_max_length" : {
+                                       "description" : "Maximum length of I/O bursts in seconds.",
+                                       "format_description" : "seconds",
+                                       "minimum" : 1,
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    },
+                                    "iops_rd" : {
+                                       "description" : "Maximum read I/O in operations per second.",
+                                       "format_description" : "iops",
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    },
+                                    "iops_rd_length" : {
+                                       "alias" : "iops_rd_max_length"
+                                    },
+                                    "iops_rd_max" : {
+                                       "description" : "Maximum unthrottled read I/O pool in operations per second.",
+                                       "format_description" : "iops",
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    },
+                                    "iops_rd_max_length" : {
+                                       "description" : "Maximum length of read I/O bursts in seconds.",
+                                       "format_description" : "seconds",
+                                       "minimum" : 1,
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    },
+                                    "iops_wr" : {
+                                       "description" : "Maximum write I/O in operations per second.",
+                                       "format_description" : "iops",
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    },
+                                    "iops_wr_length" : {
+                                       "alias" : "iops_wr_max_length"
+                                    },
+                                    "iops_wr_max" : {
+                                       "description" : "Maximum unthrottled write I/O pool in operations per second.",
+                                       "format_description" : "iops",
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    },
+                                    "iops_wr_max_length" : {
+                                       "description" : "Maximum length of write I/O bursts in seconds.",
+                                       "format_description" : "seconds",
+                                       "minimum" : 1,
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    },
+                                    "mbps" : {
+                                       "description" : "Maximum r/w speed in megabytes per second.",
+                                       "format_description" : "mbps",
+                                       "optional" : 1,
+                                       "type" : "number"
+                                    },
+                                    "mbps_max" : {
+                                       "description" : "Maximum unthrottled r/w pool in megabytes per second.",
+                                       "format_description" : "mbps",
+                                       "optional" : 1,
+                                       "type" : "number"
+                                    },
+                                    "mbps_rd" : {
+                                       "description" : "Maximum read speed in megabytes per second.",
+                                       "format_description" : "mbps",
+                                       "optional" : 1,
+                                       "type" : "number"
+                                    },
+                                    "mbps_rd_max" : {
+                                       "description" : "Maximum unthrottled read pool in megabytes per second.",
+                                       "format_description" : "mbps",
+                                       "optional" : 1,
+                                       "type" : "number"
+                                    },
+                                    "mbps_wr" : {
+                                       "description" : "Maximum write speed in megabytes per second.",
+                                       "format_description" : "mbps",
+                                       "optional" : 1,
+                                       "type" : "number"
+                                    },
+                                    "mbps_wr_max" : {
+                                       "description" : "Maximum unthrottled write pool in megabytes per second.",
+                                       "format_description" : "mbps",
+                                       "optional" : 1,
+                                       "type" : "number"
+                                    },
+                                    "media" : {
+                                       "default" : "disk",
+                                       "description" : "The drive's media type.",
+                                       "enum" : [
+                                          "cdrom",
+                                          "disk"
+                                       ],
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "replicate" : {
+                                       "default" : 1,
+                                       "description" : "Whether the drive should considered for replication jobs.",
+                                       "optional" : 1,
+                                       "type" : "boolean"
+                                    },
+                                    "rerror" : {
+                                       "description" : "Read error action.",
+                                       "enum" : [
+                                          "ignore",
+                                          "report",
+                                          "stop"
+                                       ],
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "secs" : {
+                                       "description" : "Force the drive's physical geometry to have a specific sector count.",
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    },
+                                    "serial" : {
+                                       "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.",
+                                       "format" : "urlencoded",
+                                       "format_description" : "serial",
+                                       "maxLength" : 60,
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "shared" : {
+                                       "default" : 0,
+                                       "description" : "Mark this locally-managed volume as available on all nodes",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!"
+                                    },
+                                    "size" : {
+                                       "description" : "Disk size. This is purely informational and has no effect.",
+                                       "format" : "disk-size",
+                                       "format_description" : "DiskSize",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "snapshot" : {
+                                       "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.",
+                                       "optional" : 1,
+                                       "type" : "boolean"
+                                    },
+                                    "ssd" : {
+                                       "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.",
+                                       "optional" : 1,
+                                       "type" : "boolean"
+                                    },
+                                    "trans" : {
+                                       "description" : "Force disk geometry bios translation mode.",
+                                       "enum" : [
+                                          "none",
+                                          "lba",
+                                          "auto"
+                                       ],
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "volume" : {
+                                       "alias" : "file"
+                                    },
+                                    "werror" : {
+                                       "description" : "Write error action.",
+                                       "enum" : [
+                                          "enospc",
+                                          "ignore",
+                                          "report",
+                                          "stop"
+                                       ],
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "wwn" : {
+                                       "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.",
+                                       "format_description" : "wwn",
+                                       "optional" : 1,
+                                       "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})",
+                                       "type" : "string"
+                                    }
+                                 },
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,import-from=<source volume>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
+                              },
+                              "scsi[n]" : {
+                                 "description" : "Use volume as SCSI hard disk or CD-ROM (n is 0 to 30). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
+                                 "format" : {
+                                    "aio" : {
+                                       "description" : "AIO type to use.",
+                                       "enum" : [
+                                          "native",
+                                          "threads",
+                                          "io_uring"
+                                       ],
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "backup" : {
+                                       "description" : "Whether the drive should be included when making backups.",
+                                       "optional" : 1,
+                                       "type" : "boolean"
+                                    },
+                                    "bps" : {
+                                       "description" : "Maximum r/w speed in bytes per second.",
+                                       "format_description" : "bps",
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    },
+                                    "bps_max_length" : {
+                                       "description" : "Maximum length of I/O bursts in seconds.",
+                                       "format_description" : "seconds",
+                                       "minimum" : 1,
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    },
+                                    "bps_rd" : {
+                                       "description" : "Maximum read speed in bytes per second.",
+                                       "format_description" : "bps",
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    },
+                                    "bps_rd_length" : {
+                                       "alias" : "bps_rd_max_length"
+                                    },
+                                    "bps_rd_max_length" : {
+                                       "description" : "Maximum length of read I/O bursts in seconds.",
+                                       "format_description" : "seconds",
+                                       "minimum" : 1,
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    },
+                                    "bps_wr" : {
+                                       "description" : "Maximum write speed in bytes per second.",
+                                       "format_description" : "bps",
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    },
+                                    "bps_wr_length" : {
+                                       "alias" : "bps_wr_max_length"
+                                    },
+                                    "bps_wr_max_length" : {
+                                       "description" : "Maximum length of write I/O bursts in seconds.",
+                                       "format_description" : "seconds",
+                                       "minimum" : 1,
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    },
+                                    "cache" : {
+                                       "description" : "The drive's cache mode",
+                                       "enum" : [
+                                          "none",
+                                          "writethrough",
+                                          "writeback",
+                                          "unsafe",
+                                          "directsync"
+                                       ],
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "cyls" : {
+                                       "description" : "Force the drive's physical geometry to have a specific cylinder count.",
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    },
+                                    "detect_zeroes" : {
+                                       "description" : "Controls whether to detect and try to optimize writes of zeroes.",
+                                       "optional" : 1,
+                                       "type" : "boolean"
+                                    },
+                                    "discard" : {
+                                       "description" : "Controls whether to pass discard/trim requests to the underlying storage.",
+                                       "enum" : [
+                                          "ignore",
+                                          "on"
+                                       ],
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "file" : {
+                                       "default_key" : 1,
+                                       "description" : "The drive's backing volume.",
+                                       "format" : "pve-volume-id-or-qm-path",
+                                       "format_description" : "volume",
+                                       "type" : "string"
+                                    },
+                                    "format" : {
+                                       "description" : "The drive's backing file's data format.",
+                                       "enum" : [
+                                          "raw",
+                                          "cow",
+                                          "qcow",
+                                          "qed",
+                                          "qcow2",
+                                          "vmdk",
+                                          "cloop"
+                                       ],
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "heads" : {
+                                       "description" : "Force the drive's physical geometry to have a specific head count.",
+                                       "optional" : 1,
+                                       "type" : "integer"
+                                    },
+                                    "import-from" : {
+                                       "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
+                                       "format" : "pve-volume-id-or-absolute-path",
+                                       "format_description" : "source volume",
                                        "optional" : 1,
                                        "type" : "string"
                                     },
-                                    "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",
@@ -23146,6 +25259,11 @@ const apiSchema = [
                                        "optional" : 1,
                                        "type" : "string"
                                     },
+                                    "ro" : {
+                                       "description" : "Whether the drive is read-only.",
+                                       "optional" : 1,
+                                       "type" : "boolean"
+                                    },
                                     "scsiblock" : {
                                        "default" : 0,
                                        "description" : "whether to use scsi-block for full passthrough of host block device\n\nWARNING: can lead to I/O errors in combination with low memory or high memory fragmentation on host",
@@ -23223,7 +25341,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>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,queues=<integer>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,scsiblock=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
+                                 "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,import-from=<source volume>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,queues=<integer>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,ro=<1|0>] [,scsiblock=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
                               },
                               "scsihw" : {
                                  "default" : "lsi",
@@ -23240,7 +25358,7 @@ const apiSchema = [
                                  "type" : "string"
                               },
                               "searchdomain" : {
-                                 "description" : "cloud-init: Sets DNS search domains for a container. Create will'\n\t    .' automatically use the setting from the host if neither searchdomain nor nameserver'\n\t    .' are set.",
+                                 "description" : "cloud-init: Sets DNS search domains for a container. Create will automatically use the setting from the host if neither searchdomain nor nameserver are set.",
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
@@ -23375,6 +25493,48 @@ const apiSchema = [
                                  "type" : "boolean",
                                  "typetext" : "<boolean>"
                               },
+                              "tpmstate0" : {
+                                 "description" : "Configure a Disk for storing TPM state. The format is fixed to 'raw'. Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Note that SIZE_IN_GiB is ignored here and 4 MiB will be used instead. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
+                                 "format" : {
+                                    "file" : {
+                                       "default_key" : 1,
+                                       "description" : "The drive's backing volume.",
+                                       "format" : "pve-volume-id-or-qm-path",
+                                       "format_description" : "volume",
+                                       "type" : "string"
+                                    },
+                                    "import-from" : {
+                                       "description" : "Create a new disk, importing from this source (volume ID or absolute path). When an absolute path is specified, it's up to you to ensure that the source is not actively used by another process during the import!",
+                                       "format" : "pve-volume-id-or-absolute-path",
+                                       "format_description" : "source volume",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "size" : {
+                                       "description" : "Disk size. This is purely informational and has no effect.",
+                                       "format" : "disk-size",
+                                       "format_description" : "DiskSize",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "version" : {
+                                       "default" : "v2.0",
+                                       "description" : "The TPM interface version. v2.0 is newer and should be preferred. Note that this cannot be changed later on.",
+                                       "enum" : [
+                                          "v1.2",
+                                          "v2.0"
+                                       ],
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "volume" : {
+                                       "alias" : "file"
+                                    }
+                                 },
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "[file=]<volume> [,import-from=<source volume>] [,size=<DiskSize>] [,version=<v1.2|v2.0>]"
+                              },
                               "unique" : {
                                  "description" : "Assign a unique random ethernet address.",
                                  "optional" : 1,
@@ -23401,7 +25561,7 @@ const apiSchema = [
                                  "typetext" : "[file=]<volume>"
                               },
                               "usb[n]" : {
-                                 "description" : "Configure an USB device (n is 0 to 4).",
+                                 "description" : "Configure an USB device (n is 0 to 4, for machine version >= 7.1 and ostype l26 or windows > 7, n can be up to 14).",
                                  "format" : {
                                     "host" : {
                                        "default_key" : 1,
@@ -23412,7 +25572,7 @@ const apiSchema = [
                                     },
                                     "usb3" : {
                                        "default" : 0,
-                                       "description" : "Specifies whether if given host option is a USB3 device or port.",
+                                       "description" : "Specifies whether if given host option is a USB3 device or port. For modern guests (machine version >= 7.1 and ostype l26 and windows > 7), this flag is irrelevant (all devices are plugged into a xhci controller).",
                                        "optional" : 1,
                                        "type" : "boolean"
                                     }
@@ -23456,6 +25616,7 @@ const apiSchema = [
                                           "serial3",
                                           "std",
                                           "virtio",
+                                          "virtio-gl",
                                           "vmware"
                                        ],
                                        "optional" : 1,
@@ -23468,7 +25629,7 @@ const apiSchema = [
                                  "verbose_description" : "Configure the VGA Hardware. If you want to use high resolution modes (>= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is 'std' for all OS types besides some Windows versions (XP and older) which use 'cirrus'. The 'qxl' option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays them self.\nYou can also run without any graphic card, using a serial device as terminal."
                               },
                               "virtio[n]" : {
-                                 "description" : "Use volume as VIRTIO hard disk (n is 0 to 15). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume.",
+                                 "description" : "Use volume as VIRTIO hard disk (n is 0 to 15). Use the special syntax STORAGE_ID:SIZE_IN_GiB to allocate a new volume. Use STORAGE_ID:0 and the 'import-from' parameter to import from an existing volume.",
                                  "format" : {
                                     "aio" : {
                                        "description" : "AIO type to use.",
@@ -23587,6 +25748,13 @@ const apiSchema = [
                                        "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",
@@ -23717,6 +25885,11 @@ const apiSchema = [
                                        "optional" : 1,
                                        "type" : "string"
                                     },
+                                    "ro" : {
+                                       "description" : "Whether the drive is read-only.",
+                                       "optional" : 1,
+                                       "type" : "boolean"
+                                    },
                                     "secs" : {
                                        "description" : "Force the drive's physical geometry to have a specific sector count.",
                                        "optional" : 1,
@@ -23776,7 +25949,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>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>]"
+                                 "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,import-from=<source volume>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,replicate=<1|0>] [,rerror=<ignore|report|stop>] [,ro=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>]"
                               },
                               "vmgenid" : {
                                  "default" : "1 (autogenerated)",
@@ -23889,7 +26062,9 @@ const apiSchema = [
                                                 "amd64",
                                                 "i386",
                                                 "arm64",
-                                                "armhf"
+                                                "armhf",
+                                                "riscv32",
+                                                "riscv64"
                                              ],
                                              "optional" : 1,
                                              "type" : "string"
@@ -23927,12 +26102,13 @@ const apiSchema = [
                                              "type" : "number"
                                           },
                                           "cpuunits" : {
-                                             "default" : 1024,
-                                             "description" : "CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to the weights of all the other running VMs.\n\nNOTE: You can disable fair-scheduler configuration by setting this to 0.",
+                                             "default" : "cgroup v1: 1024, cgroup v2: 100",
+                                             "description" : "CPU weight for a container, will be clamped to [1, 10000] in cgroup v2.",
                                              "maximum" : 500000,
                                              "minimum" : 0,
                                              "optional" : 1,
-                                             "type" : "integer"
+                                             "type" : "integer",
+                                             "verbose_description" : "CPU weight for a container. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this container gets. Number is relative to the weights of all the other running guests."
                                           },
                                           "debug" : {
                                              "default" : 0,
@@ -24008,7 +26184,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "lock" : {
-                                             "description" : "Lock/unlock the VM.",
+                                             "description" : "Lock/unlock the container.",
                                              "enum" : [
                                                 "backup",
                                                 "create",
@@ -24037,7 +26213,7 @@ const apiSchema = [
                                           },
                                           "memory" : {
                                              "default" : 512,
-                                             "description" : "Amount of RAM for the VM in MB.",
+                                             "description" : "Amount of RAM for the container in MB.",
                                              "minimum" : 16,
                                              "optional" : 1,
                                              "type" : "integer"
@@ -24060,7 +26236,7 @@ const apiSchema = [
                                                    "description" : "Extra mount options for rootfs/mps.",
                                                    "format_description" : "opt[;opt...]",
                                                    "optional" : 1,
-                                                   "pattern" : "(?^:(?^:(noatime|nodev|nosuid|noexec))(;(?^:(noatime|nodev|nosuid|noexec)))*)",
+                                                   "pattern" : "(?^:(?^:(noatime|lazytime|nodev|nosuid|noexec))(;(?^:(noatime|lazytime|nodev|nosuid|noexec)))*)",
                                                    "type" : "string"
                                                 },
                                                 "mp" : {
@@ -24168,8 +26344,14 @@ const apiSchema = [
                                                    "optional" : 1,
                                                    "type" : "string"
                                                 },
+                                                "link_down" : {
+                                                   "description" : "Whether this interface should be disconnected (like pulling the plug).",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
                                                 "mtu" : {
                                                    "description" : "Maximum transfer unit of the interface. (lxc.network.mtu)",
+                                                   "maximum" : 65535,
                                                    "minimum" : 64,
                                                    "optional" : 1,
                                                    "type" : "integer"
@@ -24214,7 +26396,7 @@ const apiSchema = [
                                           },
                                           "onboot" : {
                                              "default" : 0,
-                                             "description" : "Specifies whether a VM will be started during system bootup.",
+                                             "description" : "Specifies whether a container will be started during system bootup.",
                                              "optional" : 1,
                                              "type" : "boolean"
                                           },
@@ -24230,6 +26412,7 @@ const apiSchema = [
                                                 "archlinux",
                                                 "alpine",
                                                 "gentoo",
+                                                "nixos",
                                                 "unmanaged"
                                              ],
                                              "optional" : 1,
@@ -24253,7 +26436,7 @@ const apiSchema = [
                                                    "description" : "Extra mount options for rootfs/mps.",
                                                    "format_description" : "opt[;opt...]",
                                                    "optional" : 1,
-                                                   "pattern" : "(?^:(?^:(noatime|nodev|nosuid|noexec))(;(?^:(noatime|nodev|nosuid|noexec)))*)",
+                                                   "pattern" : "(?^:(?^:(noatime|lazytime|nodev|nosuid|noexec))(;(?^:(noatime|lazytime|nodev|nosuid|noexec)))*)",
                                                    "type" : "string"
                                                 },
                                                 "quota" : {
@@ -24312,7 +26495,7 @@ const apiSchema = [
                                           },
                                           "swap" : {
                                              "default" : 512,
-                                             "description" : "Amount of SWAP for the VM in MB.",
+                                             "description" : "Amount of SWAP for the container in MB.",
                                              "minimum" : 0,
                                              "optional" : 1,
                                              "type" : "integer"
@@ -24382,7 +26565,9 @@ const apiSchema = [
                                                 "amd64",
                                                 "i386",
                                                 "arm64",
-                                                "armhf"
+                                                "armhf",
+                                                "riscv32",
+                                                "riscv64"
                                              ],
                                              "optional" : 1,
                                              "type" : "string"
@@ -24423,13 +26608,14 @@ const apiSchema = [
                                              "typetext" : "<number> (0 - 8192)"
                                           },
                                           "cpuunits" : {
-                                             "default" : 1024,
-                                             "description" : "CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to the weights of all the other running VMs.\n\nNOTE: You can disable fair-scheduler configuration by setting this to 0.",
+                                             "default" : "cgroup v1: 1024, cgroup v2: 100",
+                                             "description" : "CPU weight for a container, will be clamped to [1, 10000] in cgroup v2.",
                                              "maximum" : 500000,
                                              "minimum" : 0,
                                              "optional" : 1,
                                              "type" : "integer",
-                                             "typetext" : "<integer> (0 - 500000)"
+                                             "typetext" : "<integer> (0 - 500000)",
+                                             "verbose_description" : "CPU weight for a container. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this container gets. Number is relative to the weights of all the other running guests."
                                           },
                                           "debug" : {
                                              "default" : 0,
@@ -24520,7 +26706,7 @@ const apiSchema = [
                                              "typetext" : "<string>"
                                           },
                                           "lock" : {
-                                             "description" : "Lock/unlock the VM.",
+                                             "description" : "Lock/unlock the container.",
                                              "enum" : [
                                                 "backup",
                                                 "create",
@@ -24538,7 +26724,7 @@ const apiSchema = [
                                           },
                                           "memory" : {
                                              "default" : 512,
-                                             "description" : "Amount of RAM for the VM in MB.",
+                                             "description" : "Amount of RAM for the container in MB.",
                                              "minimum" : 16,
                                              "optional" : 1,
                                              "type" : "integer",
@@ -24562,7 +26748,7 @@ const apiSchema = [
                                                    "description" : "Extra mount options for rootfs/mps.",
                                                    "format_description" : "opt[;opt...]",
                                                    "optional" : 1,
-                                                   "pattern" : "(?^:(?^:(noatime|nodev|nosuid|noexec))(;(?^:(noatime|nodev|nosuid|noexec)))*)",
+                                                   "pattern" : "(?^:(?^:(noatime|lazytime|nodev|nosuid|noexec))(;(?^:(noatime|lazytime|nodev|nosuid|noexec)))*)",
                                                    "type" : "string"
                                                 },
                                                 "mp" : {
@@ -24672,8 +26858,14 @@ const apiSchema = [
                                                    "optional" : 1,
                                                    "type" : "string"
                                                 },
+                                                "link_down" : {
+                                                   "description" : "Whether this interface should be disconnected (like pulling the plug).",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
                                                 "mtu" : {
                                                    "description" : "Maximum transfer unit of the interface. (lxc.network.mtu)",
+                                                   "maximum" : 65535,
                                                    "minimum" : 64,
                                                    "optional" : 1,
                                                    "type" : "integer"
@@ -24715,7 +26907,7 @@ const apiSchema = [
                                              },
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "name=<string> [,bridge=<bridge>] [,firewall=<1|0>] [,gw=<GatewayIPv4>] [,gw6=<GatewayIPv6>] [,hwaddr=<XX:XX:XX:XX:XX:XX>] [,ip=<(IPv4/CIDR|dhcp|manual)>] [,ip6=<(IPv6/CIDR|auto|dhcp|manual)>] [,mtu=<integer>] [,rate=<mbps>] [,tag=<integer>] [,trunks=<vlanid[;vlanid...]>] [,type=<veth>]"
+                                             "typetext" : "name=<string> [,bridge=<bridge>] [,firewall=<1|0>] [,gw=<GatewayIPv4>] [,gw6=<GatewayIPv6>] [,hwaddr=<XX:XX:XX:XX:XX:XX>] [,ip=<(IPv4/CIDR|dhcp|manual)>] [,ip6=<(IPv6/CIDR|auto|dhcp|manual)>] [,link_down=<1|0>] [,mtu=<integer>] [,rate=<mbps>] [,tag=<integer>] [,trunks=<vlanid[;vlanid...]>] [,type=<veth>]"
                                           },
                                           "node" : {
                                              "description" : "The cluster node name.",
@@ -24725,7 +26917,7 @@ const apiSchema = [
                                           },
                                           "onboot" : {
                                              "default" : 0,
-                                             "description" : "Specifies whether a VM will be started during system bootup.",
+                                             "description" : "Specifies whether a container will be started during system bootup.",
                                              "optional" : 1,
                                              "type" : "boolean",
                                              "typetext" : "<boolean>"
@@ -24742,6 +26934,7 @@ const apiSchema = [
                                                 "archlinux",
                                                 "alpine",
                                                 "gentoo",
+                                                "nixos",
                                                 "unmanaged"
                                              ],
                                              "optional" : 1,
@@ -24773,7 +26966,7 @@ const apiSchema = [
                                                    "description" : "Extra mount options for rootfs/mps.",
                                                    "format_description" : "opt[;opt...]",
                                                    "optional" : 1,
-                                                   "pattern" : "(?^:(?^:(noatime|nodev|nosuid|noexec))(;(?^:(noatime|nodev|nosuid|noexec)))*)",
+                                                   "pattern" : "(?^:(?^:(noatime|lazytime|nodev|nosuid|noexec))(;(?^:(noatime|lazytime|nodev|nosuid|noexec)))*)",
                                                    "type" : "string"
                                                 },
                                                 "quota" : {
@@ -24834,7 +27027,7 @@ const apiSchema = [
                                           },
                                           "swap" : {
                                              "default" : 512,
-                                             "description" : "Amount of SWAP for the VM in MB.",
+                                             "description" : "Amount of SWAP for the container in MB.",
                                              "minimum" : 0,
                                              "optional" : 1,
                                              "type" : "integer",
@@ -25212,7 +27405,7 @@ const apiSchema = [
                                     "info" : {
                                        "POST" : {
                                           "allowtoken" : 1,
-                                          "description" : "Suspend the container.",
+                                          "description" : "Suspend the container. This is experimental.",
                                           "method" : "POST",
                                           "name" : "vm_suspend",
                                           "parameters" : {
@@ -25429,6 +27622,13 @@ const apiSchema = [
                                                          "type" : "string",
                                                          "typetext" : "<string>"
                                                       },
+                                                      "start" : {
+                                                         "default" : 0,
+                                                         "description" : "Whether the container should get started after rolling back successfully",
+                                                         "optional" : 1,
+                                                         "type" : "boolean",
+                                                         "typetext" : "<boolean>"
+                                                      },
                                                       "vmid" : {
                                                          "description" : "The (unique) ID of the VM.",
                                                          "format" : "pve-vmid",
@@ -26033,7 +28233,7 @@ const apiSchema = [
                                                          "typetext" : "<integer> (0 - N)"
                                                       },
                                                       "icmp-type" : {
-                                                         "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
+                                                         "description" : "Specify icmp-type. Only valid if proto equals 'icmp' or 'icmpv6'/'ipv6-icmp'.",
                                                          "format" : "pve-fw-icmp-type-spec",
                                                          "optional" : 1,
                                                          "type" : "string",
@@ -26257,7 +28457,7 @@ const apiSchema = [
                                                    "typetext" : "<integer> (0 - N)"
                                                 },
                                                 "icmp-type" : {
-                                                   "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
+                                                   "description" : "Specify icmp-type. Only valid if proto equals 'icmp' or 'icmpv6'/'ipv6-icmp'.",
                                                    "format" : "pve-fw-icmp-type-spec",
                                                    "optional" : 1,
                                                    "type" : "string",
@@ -26862,6 +29062,12 @@ const apiSchema = [
                                                 "parameters" : {
                                                    "additionalProperties" : 0,
                                                    "properties" : {
+                                                      "force" : {
+                                                         "description" : "Delete all members of the IPSet, if there are any.",
+                                                         "optional" : 1,
+                                                         "type" : "boolean",
+                                                         "typetext" : "<boolean>"
+                                                      },
                                                       "name" : {
                                                          "description" : "IP set name.",
                                                          "maxLength" : 64,
@@ -27256,7 +29462,7 @@ const apiSchema = [
                                                    "type" : "string"
                                                 },
                                                 "macfilter" : {
-                                                   "default" : 0,
+                                                   "default" : 1,
                                                    "description" : "Enable/disable MAC address filter.",
                                                    "optional" : 1,
                                                    "type" : "boolean"
@@ -27371,7 +29577,7 @@ const apiSchema = [
                                                    "type" : "string"
                                                 },
                                                 "macfilter" : {
-                                                   "default" : 0,
+                                                   "default" : 1,
                                                    "description" : "Enable/disable MAC address filter.",
                                                    "optional" : 1,
                                                    "type" : "boolean",
@@ -27467,12 +29673,26 @@ const apiSchema = [
                                                    "type" : "string",
                                                    "typetext" : "<string>"
                                                 },
+                                                "since" : {
+                                                   "description" : "Display log since this UNIX epoch.",
+                                                   "minimum" : 0,
+                                                   "optional" : 1,
+                                                   "type" : "integer",
+                                                   "typetext" : "<integer> (0 - N)"
+                                                },
                                                 "start" : {
                                                    "minimum" : 0,
                                                    "optional" : 1,
                                                    "type" : "integer",
                                                    "typetext" : "<integer> (0 - N)"
                                                 },
+                                                "until" : {
+                                                   "description" : "Display log until this UNIX epoch.",
+                                                   "minimum" : 0,
+                                                   "optional" : 1,
+                                                   "type" : "integer",
+                                                   "typetext" : "<integer> (0 - N)"
+                                                },
                                                 "vmid" : {
                                                    "description" : "The (unique) ID of the VM.",
                                                    "format" : "pve-vmid",
@@ -28049,6 +30269,113 @@ const apiSchema = [
                               "path" : "/nodes/{node}/lxc/{vmid}/spiceproxy",
                               "text" : "spiceproxy"
                            },
+                           {
+                              "info" : {
+                                 "POST" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Migrate the container to another cluster. Creates a new migration task. EXPERIMENTAL feature!",
+                                    "method" : "POST",
+                                    "name" : "remote_migrate_vm",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "bwlimit" : {
+                                             "default" : "migrate limit from datacenter or storage config",
+                                             "description" : "Override I/O bandwidth limit (in KiB/s).",
+                                             "minimum" : "0",
+                                             "optional" : 1,
+                                             "type" : "number",
+                                             "typetext" : "<number> (0 - N)"
+                                          },
+                                          "delete" : {
+                                             "default" : 0,
+                                             "description" : "Delete the original CT and related data after successful migration. By default the original CT is kept on the source cluster in a stopped state.",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "online" : {
+                                             "description" : "Use online/live migration.",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
+                                          "restart" : {
+                                             "description" : "Use restart migration",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
+                                          "target-bridge" : {
+                                             "description" : "Mapping from source to target bridges. Providing only a single bridge ID maps all source bridges to that bridge. Providing the special value '1' will map each source bridge to itself.",
+                                             "format" : "bridge-pair-list",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "target-endpoint" : {
+                                             "description" : "Remote target endpoint",
+                                             "format" : "proxmox-remote",
+                                             "type" : "string",
+                                             "typetext" : "apitoken=<A full Proxmox API token including the secret value.> ,host=<Remote Proxmox hostname or IP> [,fingerprint=<Remote host's certificate fingerprint, if not trusted by system store.>] [,port=<integer>]"
+                                          },
+                                          "target-storage" : {
+                                             "description" : "Mapping from source to target storages. Providing only a single storage ID maps all source storages to that storage. Providing the special value '1' will map each source storage to itself.",
+                                             "format" : "storage-pair-list",
+                                             "optional" : 0,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "target-vmid" : {
+                                             "description" : "The (unique) ID of the VM.",
+                                             "format" : "pve-vmid",
+                                             "minimum" : 1,
+                                             "optional" : 1,
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (1 - N)"
+                                          },
+                                          "timeout" : {
+                                             "default" : 180,
+                                             "description" : "Timeout in seconds for shutdown for restart migration",
+                                             "optional" : 1,
+                                             "type" : "integer",
+                                             "typetext" : "<integer>"
+                                          },
+                                          "vmid" : {
+                                             "description" : "The (unique) ID of the VM.",
+                                             "format" : "pve-vmid",
+                                             "minimum" : 1,
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (1 - N)"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/vms/{vmid}",
+                                          [
+                                             "VM.Migrate"
+                                          ]
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "description" : "the task ID.",
+                                       "type" : "string"
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/lxc/{vmid}/remote_migrate",
+                              "text" : "remote_migrate"
+                           },
                            {
                               "info" : {
                                  "POST" : {
@@ -28091,6 +30418,13 @@ const apiSchema = [
                                              "type" : "string",
                                              "typetext" : "<string>"
                                           },
+                                          "target-storage" : {
+                                             "description" : "Mapping from source to target storages. Providing only a single storage ID maps all source storages to that storage. Providing the special value '1' will map each source storage to itself.",
+                                             "format" : "storage-pair-list",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
                                           "timeout" : {
                                              "default" : 180,
                                              "description" : "Timeout in seconds for shutdown for restart migration",
@@ -28699,7 +31033,7 @@ const apiSchema = [
                               "info" : {
                                  "POST" : {
                                     "allowtoken" : 1,
-                                    "description" : "Move a rootfs-/mp-volume to a different storage",
+                                    "description" : "Move a rootfs-/mp-volume to a different storage or to a different container.",
                                     "method" : "POST",
                                     "name" : "move_volume",
                                     "parameters" : {
@@ -28721,7 +31055,7 @@ const apiSchema = [
                                              "typetext" : "<boolean>"
                                           },
                                           "digest" : {
-                                             "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                             "description" : "Prevent changes if current configuration file has different SHA1 \" .\n\t\t    \"digest. This can be used to prevent concurrent modifications.",
                                              "maxLength" : 40,
                                              "optional" : 1,
                                              "type" : "string",
@@ -28736,9 +31070,545 @@ const apiSchema = [
                                           "storage" : {
                                              "description" : "Target Storage.",
                                              "format" : "pve-storage-id",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "target-digest" : {
+                                             "description" : "Prevent changes if current configuration file of the target \" .\n\t\t    \"container has a different SHA1 digest. This can be used to prevent \" .\n\t\t    \"concurrent modifications.",
+                                             "maxLength" : 40,
+                                             "optional" : 1,
                                              "type" : "string",
                                              "typetext" : "<string>"
                                           },
+                                          "target-vmid" : {
+                                             "description" : "The (unique) ID of the VM.",
+                                             "format" : "pve-vmid",
+                                             "minimum" : 1,
+                                             "optional" : 1,
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (1 - N)"
+                                          },
+                                          "target-volume" : {
+                                             "description" : "The config key the volume will be moved to. Default is the source volume key.",
+                                             "enum" : [
+                                                "rootfs",
+                                                "mp0",
+                                                "mp1",
+                                                "mp2",
+                                                "mp3",
+                                                "mp4",
+                                                "mp5",
+                                                "mp6",
+                                                "mp7",
+                                                "mp8",
+                                                "mp9",
+                                                "mp10",
+                                                "mp11",
+                                                "mp12",
+                                                "mp13",
+                                                "mp14",
+                                                "mp15",
+                                                "mp16",
+                                                "mp17",
+                                                "mp18",
+                                                "mp19",
+                                                "mp20",
+                                                "mp21",
+                                                "mp22",
+                                                "mp23",
+                                                "mp24",
+                                                "mp25",
+                                                "mp26",
+                                                "mp27",
+                                                "mp28",
+                                                "mp29",
+                                                "mp30",
+                                                "mp31",
+                                                "mp32",
+                                                "mp33",
+                                                "mp34",
+                                                "mp35",
+                                                "mp36",
+                                                "mp37",
+                                                "mp38",
+                                                "mp39",
+                                                "mp40",
+                                                "mp41",
+                                                "mp42",
+                                                "mp43",
+                                                "mp44",
+                                                "mp45",
+                                                "mp46",
+                                                "mp47",
+                                                "mp48",
+                                                "mp49",
+                                                "mp50",
+                                                "mp51",
+                                                "mp52",
+                                                "mp53",
+                                                "mp54",
+                                                "mp55",
+                                                "mp56",
+                                                "mp57",
+                                                "mp58",
+                                                "mp59",
+                                                "mp60",
+                                                "mp61",
+                                                "mp62",
+                                                "mp63",
+                                                "mp64",
+                                                "mp65",
+                                                "mp66",
+                                                "mp67",
+                                                "mp68",
+                                                "mp69",
+                                                "mp70",
+                                                "mp71",
+                                                "mp72",
+                                                "mp73",
+                                                "mp74",
+                                                "mp75",
+                                                "mp76",
+                                                "mp77",
+                                                "mp78",
+                                                "mp79",
+                                                "mp80",
+                                                "mp81",
+                                                "mp82",
+                                                "mp83",
+                                                "mp84",
+                                                "mp85",
+                                                "mp86",
+                                                "mp87",
+                                                "mp88",
+                                                "mp89",
+                                                "mp90",
+                                                "mp91",
+                                                "mp92",
+                                                "mp93",
+                                                "mp94",
+                                                "mp95",
+                                                "mp96",
+                                                "mp97",
+                                                "mp98",
+                                                "mp99",
+                                                "mp100",
+                                                "mp101",
+                                                "mp102",
+                                                "mp103",
+                                                "mp104",
+                                                "mp105",
+                                                "mp106",
+                                                "mp107",
+                                                "mp108",
+                                                "mp109",
+                                                "mp110",
+                                                "mp111",
+                                                "mp112",
+                                                "mp113",
+                                                "mp114",
+                                                "mp115",
+                                                "mp116",
+                                                "mp117",
+                                                "mp118",
+                                                "mp119",
+                                                "mp120",
+                                                "mp121",
+                                                "mp122",
+                                                "mp123",
+                                                "mp124",
+                                                "mp125",
+                                                "mp126",
+                                                "mp127",
+                                                "mp128",
+                                                "mp129",
+                                                "mp130",
+                                                "mp131",
+                                                "mp132",
+                                                "mp133",
+                                                "mp134",
+                                                "mp135",
+                                                "mp136",
+                                                "mp137",
+                                                "mp138",
+                                                "mp139",
+                                                "mp140",
+                                                "mp141",
+                                                "mp142",
+                                                "mp143",
+                                                "mp144",
+                                                "mp145",
+                                                "mp146",
+                                                "mp147",
+                                                "mp148",
+                                                "mp149",
+                                                "mp150",
+                                                "mp151",
+                                                "mp152",
+                                                "mp153",
+                                                "mp154",
+                                                "mp155",
+                                                "mp156",
+                                                "mp157",
+                                                "mp158",
+                                                "mp159",
+                                                "mp160",
+                                                "mp161",
+                                                "mp162",
+                                                "mp163",
+                                                "mp164",
+                                                "mp165",
+                                                "mp166",
+                                                "mp167",
+                                                "mp168",
+                                                "mp169",
+                                                "mp170",
+                                                "mp171",
+                                                "mp172",
+                                                "mp173",
+                                                "mp174",
+                                                "mp175",
+                                                "mp176",
+                                                "mp177",
+                                                "mp178",
+                                                "mp179",
+                                                "mp180",
+                                                "mp181",
+                                                "mp182",
+                                                "mp183",
+                                                "mp184",
+                                                "mp185",
+                                                "mp186",
+                                                "mp187",
+                                                "mp188",
+                                                "mp189",
+                                                "mp190",
+                                                "mp191",
+                                                "mp192",
+                                                "mp193",
+                                                "mp194",
+                                                "mp195",
+                                                "mp196",
+                                                "mp197",
+                                                "mp198",
+                                                "mp199",
+                                                "mp200",
+                                                "mp201",
+                                                "mp202",
+                                                "mp203",
+                                                "mp204",
+                                                "mp205",
+                                                "mp206",
+                                                "mp207",
+                                                "mp208",
+                                                "mp209",
+                                                "mp210",
+                                                "mp211",
+                                                "mp212",
+                                                "mp213",
+                                                "mp214",
+                                                "mp215",
+                                                "mp216",
+                                                "mp217",
+                                                "mp218",
+                                                "mp219",
+                                                "mp220",
+                                                "mp221",
+                                                "mp222",
+                                                "mp223",
+                                                "mp224",
+                                                "mp225",
+                                                "mp226",
+                                                "mp227",
+                                                "mp228",
+                                                "mp229",
+                                                "mp230",
+                                                "mp231",
+                                                "mp232",
+                                                "mp233",
+                                                "mp234",
+                                                "mp235",
+                                                "mp236",
+                                                "mp237",
+                                                "mp238",
+                                                "mp239",
+                                                "mp240",
+                                                "mp241",
+                                                "mp242",
+                                                "mp243",
+                                                "mp244",
+                                                "mp245",
+                                                "mp246",
+                                                "mp247",
+                                                "mp248",
+                                                "mp249",
+                                                "mp250",
+                                                "mp251",
+                                                "mp252",
+                                                "mp253",
+                                                "mp254",
+                                                "mp255",
+                                                "unused0",
+                                                "unused1",
+                                                "unused2",
+                                                "unused3",
+                                                "unused4",
+                                                "unused5",
+                                                "unused6",
+                                                "unused7",
+                                                "unused8",
+                                                "unused9",
+                                                "unused10",
+                                                "unused11",
+                                                "unused12",
+                                                "unused13",
+                                                "unused14",
+                                                "unused15",
+                                                "unused16",
+                                                "unused17",
+                                                "unused18",
+                                                "unused19",
+                                                "unused20",
+                                                "unused21",
+                                                "unused22",
+                                                "unused23",
+                                                "unused24",
+                                                "unused25",
+                                                "unused26",
+                                                "unused27",
+                                                "unused28",
+                                                "unused29",
+                                                "unused30",
+                                                "unused31",
+                                                "unused32",
+                                                "unused33",
+                                                "unused34",
+                                                "unused35",
+                                                "unused36",
+                                                "unused37",
+                                                "unused38",
+                                                "unused39",
+                                                "unused40",
+                                                "unused41",
+                                                "unused42",
+                                                "unused43",
+                                                "unused44",
+                                                "unused45",
+                                                "unused46",
+                                                "unused47",
+                                                "unused48",
+                                                "unused49",
+                                                "unused50",
+                                                "unused51",
+                                                "unused52",
+                                                "unused53",
+                                                "unused54",
+                                                "unused55",
+                                                "unused56",
+                                                "unused57",
+                                                "unused58",
+                                                "unused59",
+                                                "unused60",
+                                                "unused61",
+                                                "unused62",
+                                                "unused63",
+                                                "unused64",
+                                                "unused65",
+                                                "unused66",
+                                                "unused67",
+                                                "unused68",
+                                                "unused69",
+                                                "unused70",
+                                                "unused71",
+                                                "unused72",
+                                                "unused73",
+                                                "unused74",
+                                                "unused75",
+                                                "unused76",
+                                                "unused77",
+                                                "unused78",
+                                                "unused79",
+                                                "unused80",
+                                                "unused81",
+                                                "unused82",
+                                                "unused83",
+                                                "unused84",
+                                                "unused85",
+                                                "unused86",
+                                                "unused87",
+                                                "unused88",
+                                                "unused89",
+                                                "unused90",
+                                                "unused91",
+                                                "unused92",
+                                                "unused93",
+                                                "unused94",
+                                                "unused95",
+                                                "unused96",
+                                                "unused97",
+                                                "unused98",
+                                                "unused99",
+                                                "unused100",
+                                                "unused101",
+                                                "unused102",
+                                                "unused103",
+                                                "unused104",
+                                                "unused105",
+                                                "unused106",
+                                                "unused107",
+                                                "unused108",
+                                                "unused109",
+                                                "unused110",
+                                                "unused111",
+                                                "unused112",
+                                                "unused113",
+                                                "unused114",
+                                                "unused115",
+                                                "unused116",
+                                                "unused117",
+                                                "unused118",
+                                                "unused119",
+                                                "unused120",
+                                                "unused121",
+                                                "unused122",
+                                                "unused123",
+                                                "unused124",
+                                                "unused125",
+                                                "unused126",
+                                                "unused127",
+                                                "unused128",
+                                                "unused129",
+                                                "unused130",
+                                                "unused131",
+                                                "unused132",
+                                                "unused133",
+                                                "unused134",
+                                                "unused135",
+                                                "unused136",
+                                                "unused137",
+                                                "unused138",
+                                                "unused139",
+                                                "unused140",
+                                                "unused141",
+                                                "unused142",
+                                                "unused143",
+                                                "unused144",
+                                                "unused145",
+                                                "unused146",
+                                                "unused147",
+                                                "unused148",
+                                                "unused149",
+                                                "unused150",
+                                                "unused151",
+                                                "unused152",
+                                                "unused153",
+                                                "unused154",
+                                                "unused155",
+                                                "unused156",
+                                                "unused157",
+                                                "unused158",
+                                                "unused159",
+                                                "unused160",
+                                                "unused161",
+                                                "unused162",
+                                                "unused163",
+                                                "unused164",
+                                                "unused165",
+                                                "unused166",
+                                                "unused167",
+                                                "unused168",
+                                                "unused169",
+                                                "unused170",
+                                                "unused171",
+                                                "unused172",
+                                                "unused173",
+                                                "unused174",
+                                                "unused175",
+                                                "unused176",
+                                                "unused177",
+                                                "unused178",
+                                                "unused179",
+                                                "unused180",
+                                                "unused181",
+                                                "unused182",
+                                                "unused183",
+                                                "unused184",
+                                                "unused185",
+                                                "unused186",
+                                                "unused187",
+                                                "unused188",
+                                                "unused189",
+                                                "unused190",
+                                                "unused191",
+                                                "unused192",
+                                                "unused193",
+                                                "unused194",
+                                                "unused195",
+                                                "unused196",
+                                                "unused197",
+                                                "unused198",
+                                                "unused199",
+                                                "unused200",
+                                                "unused201",
+                                                "unused202",
+                                                "unused203",
+                                                "unused204",
+                                                "unused205",
+                                                "unused206",
+                                                "unused207",
+                                                "unused208",
+                                                "unused209",
+                                                "unused210",
+                                                "unused211",
+                                                "unused212",
+                                                "unused213",
+                                                "unused214",
+                                                "unused215",
+                                                "unused216",
+                                                "unused217",
+                                                "unused218",
+                                                "unused219",
+                                                "unused220",
+                                                "unused221",
+                                                "unused222",
+                                                "unused223",
+                                                "unused224",
+                                                "unused225",
+                                                "unused226",
+                                                "unused227",
+                                                "unused228",
+                                                "unused229",
+                                                "unused230",
+                                                "unused231",
+                                                "unused232",
+                                                "unused233",
+                                                "unused234",
+                                                "unused235",
+                                                "unused236",
+                                                "unused237",
+                                                "unused238",
+                                                "unused239",
+                                                "unused240",
+                                                "unused241",
+                                                "unused242",
+                                                "unused243",
+                                                "unused244",
+                                                "unused245",
+                                                "unused246",
+                                                "unused247",
+                                                "unused248",
+                                                "unused249",
+                                                "unused250",
+                                                "unused251",
+                                                "unused252",
+                                                "unused253",
+                                                "unused254",
+                                                "unused255"
+                                             ],
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
                                           "vmid" : {
                                              "description" : "The (unique) ID of the VM.",
                                              "format" : "pve-vmid",
@@ -29005,7 +31875,263 @@ const apiSchema = [
                                                 "mp252",
                                                 "mp253",
                                                 "mp254",
-                                                "mp255"
+                                                "mp255",
+                                                "unused0",
+                                                "unused1",
+                                                "unused2",
+                                                "unused3",
+                                                "unused4",
+                                                "unused5",
+                                                "unused6",
+                                                "unused7",
+                                                "unused8",
+                                                "unused9",
+                                                "unused10",
+                                                "unused11",
+                                                "unused12",
+                                                "unused13",
+                                                "unused14",
+                                                "unused15",
+                                                "unused16",
+                                                "unused17",
+                                                "unused18",
+                                                "unused19",
+                                                "unused20",
+                                                "unused21",
+                                                "unused22",
+                                                "unused23",
+                                                "unused24",
+                                                "unused25",
+                                                "unused26",
+                                                "unused27",
+                                                "unused28",
+                                                "unused29",
+                                                "unused30",
+                                                "unused31",
+                                                "unused32",
+                                                "unused33",
+                                                "unused34",
+                                                "unused35",
+                                                "unused36",
+                                                "unused37",
+                                                "unused38",
+                                                "unused39",
+                                                "unused40",
+                                                "unused41",
+                                                "unused42",
+                                                "unused43",
+                                                "unused44",
+                                                "unused45",
+                                                "unused46",
+                                                "unused47",
+                                                "unused48",
+                                                "unused49",
+                                                "unused50",
+                                                "unused51",
+                                                "unused52",
+                                                "unused53",
+                                                "unused54",
+                                                "unused55",
+                                                "unused56",
+                                                "unused57",
+                                                "unused58",
+                                                "unused59",
+                                                "unused60",
+                                                "unused61",
+                                                "unused62",
+                                                "unused63",
+                                                "unused64",
+                                                "unused65",
+                                                "unused66",
+                                                "unused67",
+                                                "unused68",
+                                                "unused69",
+                                                "unused70",
+                                                "unused71",
+                                                "unused72",
+                                                "unused73",
+                                                "unused74",
+                                                "unused75",
+                                                "unused76",
+                                                "unused77",
+                                                "unused78",
+                                                "unused79",
+                                                "unused80",
+                                                "unused81",
+                                                "unused82",
+                                                "unused83",
+                                                "unused84",
+                                                "unused85",
+                                                "unused86",
+                                                "unused87",
+                                                "unused88",
+                                                "unused89",
+                                                "unused90",
+                                                "unused91",
+                                                "unused92",
+                                                "unused93",
+                                                "unused94",
+                                                "unused95",
+                                                "unused96",
+                                                "unused97",
+                                                "unused98",
+                                                "unused99",
+                                                "unused100",
+                                                "unused101",
+                                                "unused102",
+                                                "unused103",
+                                                "unused104",
+                                                "unused105",
+                                                "unused106",
+                                                "unused107",
+                                                "unused108",
+                                                "unused109",
+                                                "unused110",
+                                                "unused111",
+                                                "unused112",
+                                                "unused113",
+                                                "unused114",
+                                                "unused115",
+                                                "unused116",
+                                                "unused117",
+                                                "unused118",
+                                                "unused119",
+                                                "unused120",
+                                                "unused121",
+                                                "unused122",
+                                                "unused123",
+                                                "unused124",
+                                                "unused125",
+                                                "unused126",
+                                                "unused127",
+                                                "unused128",
+                                                "unused129",
+                                                "unused130",
+                                                "unused131",
+                                                "unused132",
+                                                "unused133",
+                                                "unused134",
+                                                "unused135",
+                                                "unused136",
+                                                "unused137",
+                                                "unused138",
+                                                "unused139",
+                                                "unused140",
+                                                "unused141",
+                                                "unused142",
+                                                "unused143",
+                                                "unused144",
+                                                "unused145",
+                                                "unused146",
+                                                "unused147",
+                                                "unused148",
+                                                "unused149",
+                                                "unused150",
+                                                "unused151",
+                                                "unused152",
+                                                "unused153",
+                                                "unused154",
+                                                "unused155",
+                                                "unused156",
+                                                "unused157",
+                                                "unused158",
+                                                "unused159",
+                                                "unused160",
+                                                "unused161",
+                                                "unused162",
+                                                "unused163",
+                                                "unused164",
+                                                "unused165",
+                                                "unused166",
+                                                "unused167",
+                                                "unused168",
+                                                "unused169",
+                                                "unused170",
+                                                "unused171",
+                                                "unused172",
+                                                "unused173",
+                                                "unused174",
+                                                "unused175",
+                                                "unused176",
+                                                "unused177",
+                                                "unused178",
+                                                "unused179",
+                                                "unused180",
+                                                "unused181",
+                                                "unused182",
+                                                "unused183",
+                                                "unused184",
+                                                "unused185",
+                                                "unused186",
+                                                "unused187",
+                                                "unused188",
+                                                "unused189",
+                                                "unused190",
+                                                "unused191",
+                                                "unused192",
+                                                "unused193",
+                                                "unused194",
+                                                "unused195",
+                                                "unused196",
+                                                "unused197",
+                                                "unused198",
+                                                "unused199",
+                                                "unused200",
+                                                "unused201",
+                                                "unused202",
+                                                "unused203",
+                                                "unused204",
+                                                "unused205",
+                                                "unused206",
+                                                "unused207",
+                                                "unused208",
+                                                "unused209",
+                                                "unused210",
+                                                "unused211",
+                                                "unused212",
+                                                "unused213",
+                                                "unused214",
+                                                "unused215",
+                                                "unused216",
+                                                "unused217",
+                                                "unused218",
+                                                "unused219",
+                                                "unused220",
+                                                "unused221",
+                                                "unused222",
+                                                "unused223",
+                                                "unused224",
+                                                "unused225",
+                                                "unused226",
+                                                "unused227",
+                                                "unused228",
+                                                "unused229",
+                                                "unused230",
+                                                "unused231",
+                                                "unused232",
+                                                "unused233",
+                                                "unused234",
+                                                "unused235",
+                                                "unused236",
+                                                "unused237",
+                                                "unused238",
+                                                "unused239",
+                                                "unused240",
+                                                "unused241",
+                                                "unused242",
+                                                "unused243",
+                                                "unused244",
+                                                "unused245",
+                                                "unused246",
+                                                "unused247",
+                                                "unused248",
+                                                "unused249",
+                                                "unused250",
+                                                "unused251",
+                                                "unused252",
+                                                "unused253",
+                                                "unused254",
+                                                "unused255"
                                              ],
                                              "type" : "string"
                                           }
@@ -29013,23 +32139,13 @@ const apiSchema = [
                                     },
                                     "permissions" : {
                                        "check" : [
-                                          "and",
-                                          [
-                                             "perm",
-                                             "/vms/{vmid}",
-                                             [
-                                                "VM.Config.Disk"
-                                             ]
-                                          ],
+                                          "perm",
+                                          "/vms/{vmid}",
                                           [
-                                             "perm",
-                                             "/storage/{storage}",
-                                             [
-                                                "Datastore.AllocateSpace"
-                                             ]
+                                             "VM.Config.Disk"
                                           ]
                                        ],
-                                       "description" : "You need 'VM.Config.Disk' permissions on /vms/{vmid}, and 'Datastore.AllocateSpace' permissions on the storage."
+                                       "description" : "You need 'VM.Config.Disk' permissions on /vms/{vmid}, and 'Datastore.AllocateSpace' permissions on the storage. To move a volume to another container, you need the permissions on the target container as well."
                                     },
                                     "protected" : 1,
                                     "proxyto" : "node",
@@ -29111,6 +32227,144 @@ const apiSchema = [
                               "leaf" : 1,
                               "path" : "/nodes/{node}/lxc/{vmid}/pending",
                               "text" : "pending"
+                           },
+                           {
+                              "info" : {
+                                 "POST" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Migration tunnel endpoint - only for internal use by CT migration.",
+                                    "method" : "POST",
+                                    "name" : "mtunnel",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "bridges" : {
+                                             "description" : "List of network bridges to check availability. Will be checked again for actually used bridges during migration.",
+                                             "format" : "pve-bridge-id-list",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "storages" : {
+                                             "description" : "List of storages to check permission and availability. Will be checked again for all actually used storages during migration.",
+                                             "format" : "pve-storage-id-list",
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "vmid" : {
+                                             "description" : "The (unique) ID of the VM.",
+                                             "format" : "pve-vmid",
+                                             "minimum" : 1,
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (1 - N)"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "and",
+                                          [
+                                             "perm",
+                                             "/vms/{vmid}",
+                                             [
+                                                "VM.Allocate"
+                                             ]
+                                          ],
+                                          [
+                                             "perm",
+                                             "/",
+                                             [
+                                                "Sys.Incoming"
+                                             ]
+                                          ]
+                                       ],
+                                       "description" : "You need 'VM.Allocate' permissions on '/vms/{vmid}' and Sys.Incoming on '/'. Further permission checks happen during the actual migration."
+                                    },
+                                    "protected" : 1,
+                                    "returns" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "socket" : {
+                                             "type" : "string"
+                                          },
+                                          "ticket" : {
+                                             "type" : "string"
+                                          },
+                                          "upid" : {
+                                             "type" : "string"
+                                          }
+                                       }
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/lxc/{vmid}/mtunnel",
+                              "text" : "mtunnel"
+                           },
+                           {
+                              "info" : {
+                                 "GET" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Migration tunnel endpoint for websocket upgrade - only for internal use by VM migration.",
+                                    "method" : "GET",
+                                    "name" : "mtunnelwebsocket",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "socket" : {
+                                             "description" : "unix socket to forward to",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "ticket" : {
+                                             "description" : "ticket return by initial 'mtunnel' API call, or retrieved via 'ticket' tunnel command",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "vmid" : {
+                                             "description" : "The (unique) ID of the VM.",
+                                             "format" : "pve-vmid",
+                                             "minimum" : 1,
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (1 - N)"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "description" : "You need to pass a ticket valid for the selected socket. Tickets can be created via the mtunnel API call, which will check permissions accordingly.",
+                                       "user" : "all"
+                                    },
+                                    "returns" : {
+                                       "properties" : {
+                                          "port" : {
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "socket" : {
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          }
+                                       },
+                                       "type" : "object"
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/lxc/{vmid}/mtunnelwebsocket",
+                              "text" : "mtunnelwebsocket"
                            }
                         ],
                         "info" : {
@@ -29334,7 +32588,9 @@ const apiSchema = [
                                     "amd64",
                                     "i386",
                                     "arm64",
-                                    "armhf"
+                                    "armhf",
+                                    "riscv32",
+                                    "riscv64"
                                  ],
                                  "optional" : 1,
                                  "type" : "string"
@@ -29383,13 +32639,14 @@ const apiSchema = [
                                  "typetext" : "<number> (0 - 8192)"
                               },
                               "cpuunits" : {
-                                 "default" : 1024,
-                                 "description" : "CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to the weights of all the other running VMs.\n\nNOTE: You can disable fair-scheduler configuration by setting this to 0.",
+                                 "default" : "cgroup v1: 1024, cgroup v2: 100",
+                                 "description" : "CPU weight for a container, will be clamped to [1, 10000] in cgroup v2.",
                                  "maximum" : 500000,
                                  "minimum" : 0,
                                  "optional" : 1,
                                  "type" : "integer",
-                                 "typetext" : "<integer> (0 - 500000)"
+                                 "typetext" : "<integer> (0 - 500000)",
+                                 "verbose_description" : "CPU weight for a container. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this container gets. Number is relative to the weights of all the other running guests."
                               },
                               "debug" : {
                                  "default" : 0,
@@ -29478,7 +32735,7 @@ const apiSchema = [
                                  "typetext" : "<boolean>"
                               },
                               "lock" : {
-                                 "description" : "Lock/unlock the VM.",
+                                 "description" : "Lock/unlock the container.",
                                  "enum" : [
                                     "backup",
                                     "create",
@@ -29496,7 +32753,7 @@ const apiSchema = [
                               },
                               "memory" : {
                                  "default" : 512,
-                                 "description" : "Amount of RAM for the VM in MB.",
+                                 "description" : "Amount of RAM for the container in MB.",
                                  "minimum" : 16,
                                  "optional" : 1,
                                  "type" : "integer",
@@ -29520,7 +32777,7 @@ const apiSchema = [
                                        "description" : "Extra mount options for rootfs/mps.",
                                        "format_description" : "opt[;opt...]",
                                        "optional" : 1,
-                                       "pattern" : "(?^:(?^:(noatime|nodev|nosuid|noexec))(;(?^:(noatime|nodev|nosuid|noexec)))*)",
+                                       "pattern" : "(?^:(?^:(noatime|lazytime|nodev|nosuid|noexec))(;(?^:(noatime|lazytime|nodev|nosuid|noexec)))*)",
                                        "type" : "string"
                                     },
                                     "mp" : {
@@ -29630,8 +32887,14 @@ const apiSchema = [
                                        "optional" : 1,
                                        "type" : "string"
                                     },
+                                    "link_down" : {
+                                       "description" : "Whether this interface should be disconnected (like pulling the plug).",
+                                       "optional" : 1,
+                                       "type" : "boolean"
+                                    },
                                     "mtu" : {
                                        "description" : "Maximum transfer unit of the interface. (lxc.network.mtu)",
+                                       "maximum" : 65535,
                                        "minimum" : 64,
                                        "optional" : 1,
                                        "type" : "integer"
@@ -29673,7 +32936,7 @@ const apiSchema = [
                                  },
                                  "optional" : 1,
                                  "type" : "string",
-                                 "typetext" : "name=<string> [,bridge=<bridge>] [,firewall=<1|0>] [,gw=<GatewayIPv4>] [,gw6=<GatewayIPv6>] [,hwaddr=<XX:XX:XX:XX:XX:XX>] [,ip=<(IPv4/CIDR|dhcp|manual)>] [,ip6=<(IPv6/CIDR|auto|dhcp|manual)>] [,mtu=<integer>] [,rate=<mbps>] [,tag=<integer>] [,trunks=<vlanid[;vlanid...]>] [,type=<veth>]"
+                                 "typetext" : "name=<string> [,bridge=<bridge>] [,firewall=<1|0>] [,gw=<GatewayIPv4>] [,gw6=<GatewayIPv6>] [,hwaddr=<XX:XX:XX:XX:XX:XX>] [,ip=<(IPv4/CIDR|dhcp|manual)>] [,ip6=<(IPv6/CIDR|auto|dhcp|manual)>] [,link_down=<1|0>] [,mtu=<integer>] [,rate=<mbps>] [,tag=<integer>] [,trunks=<vlanid[;vlanid...]>] [,type=<veth>]"
                               },
                               "node" : {
                                  "description" : "The cluster node name.",
@@ -29683,7 +32946,7 @@ const apiSchema = [
                               },
                               "onboot" : {
                                  "default" : 0,
-                                 "description" : "Specifies whether a VM will be started during system bootup.",
+                                 "description" : "Specifies whether a container will be started during system bootup.",
                                  "optional" : 1,
                                  "type" : "boolean",
                                  "typetext" : "<boolean>"
@@ -29706,6 +32969,7 @@ const apiSchema = [
                                     "archlinux",
                                     "alpine",
                                     "gentoo",
+                                    "nixos",
                                     "unmanaged"
                                  ],
                                  "optional" : 1,
@@ -29750,7 +33014,7 @@ const apiSchema = [
                                        "description" : "Extra mount options for rootfs/mps.",
                                        "format_description" : "opt[;opt...]",
                                        "optional" : 1,
-                                       "pattern" : "(?^:(?^:(noatime|nodev|nosuid|noexec))(;(?^:(noatime|nodev|nosuid|noexec)))*)",
+                                       "pattern" : "(?^:(?^:(noatime|lazytime|nodev|nosuid|noexec))(;(?^:(noatime|lazytime|nodev|nosuid|noexec)))*)",
                                        "type" : "string"
                                     },
                                     "quota" : {
@@ -29832,7 +33096,7 @@ const apiSchema = [
                               },
                               "swap" : {
                                  "default" : 512,
-                                 "description" : "Amount of SWAP for the VM in MB.",
+                                 "description" : "Amount of SWAP for the container in MB.",
                                  "minimum" : 0,
                                  "optional" : 1,
                                  "type" : "integer",
@@ -29923,17 +33187,380 @@ const apiSchema = [
                },
                {
                   "children" : [
+                     {
+                        "children" : [
+                           {
+                              "info" : {
+                                 "GET" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Get the Ceph configuration file.",
+                                    "method" : "GET",
+                                    "name" : "raw",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/",
+                                          [
+                                             "Sys.Audit",
+                                             "Datastore.Audit"
+                                          ],
+                                          "any",
+                                          1
+                                       ]
+                                    },
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "type" : "string"
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/ceph/cfg/raw",
+                              "text" : "raw"
+                           },
+                           {
+                              "info" : {
+                                 "GET" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Get the Ceph configuration database.",
+                                    "method" : "GET",
+                                    "name" : "db",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/",
+                                          [
+                                             "Sys.Audit",
+                                             "Datastore.Audit"
+                                          ],
+                                          "any",
+                                          1
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "items" : {
+                                          "properties" : {
+                                             "can_update_at_runtime" : {
+                                                "type" : "boolean"
+                                             },
+                                             "level" : {
+                                                "type" : "string"
+                                             },
+                                             "mask" : {
+                                                "type" : "string"
+                                             },
+                                             "name" : {
+                                                "type" : "string"
+                                             },
+                                             "section" : {
+                                                "type" : "string"
+                                             },
+                                             "value" : {
+                                                "type" : "string"
+                                             }
+                                          },
+                                          "type" : "object"
+                                       },
+                                       "type" : "array"
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/ceph/cfg/db",
+                              "text" : "db"
+                           }
+                        ],
+                        "info" : {
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "Directory index.",
+                              "method" : "GET",
+                              "name" : "index",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "user" : "all"
+                              },
+                              "returns" : {
+                                 "items" : {
+                                    "properties" : {},
+                                    "type" : "object"
+                                 },
+                                 "links" : [
+                                    {
+                                       "href" : "{name}",
+                                       "rel" : "child"
+                                    }
+                                 ],
+                                 "type" : "array"
+                              }
+                           }
+                        },
+                        "leaf" : 0,
+                        "path" : "/nodes/{node}/ceph/cfg",
+                        "text" : "cfg"
+                     },
                      {
                         "children" : [
                            {
                               "children" : [
                                  {
                                     "info" : {
-                                       "POST" : {
+                                       "GET" : {
                                           "allowtoken" : 1,
-                                          "description" : "ceph osd in",
-                                          "method" : "POST",
-                                          "name" : "in",
+                                          "description" : "Get OSD details",
+                                          "method" : "GET",
+                                          "name" : "osddetails",
+                                          "parameters" : {
+                                             "additionalProperties" : 0,
+                                             "properties" : {
+                                                "node" : {
+                                                   "description" : "The cluster node name.",
+                                                   "format" : "pve-node",
+                                                   "type" : "string",
+                                                   "typetext" : "<string>"
+                                                },
+                                                "osdid" : {
+                                                   "description" : "OSD ID",
+                                                   "type" : "integer",
+                                                   "typetext" : "<integer>"
+                                                }
+                                             }
+                                          },
+                                          "permissions" : {
+                                             "check" : [
+                                                "perm",
+                                                "/",
+                                                [
+                                                   "Sys.Audit"
+                                                ],
+                                                "any",
+                                                1
+                                             ]
+                                          },
+                                          "protected" : 1,
+                                          "proxyto" : "node",
+                                          "returns" : {
+                                             "properties" : {
+                                                "devices" : {
+                                                   "description" : "Array containing data about devices",
+                                                   "items" : {
+                                                      "properties" : {
+                                                         "dev_node" : {
+                                                            "description" : "Device node",
+                                                            "type" : "string"
+                                                         },
+                                                         "device" : {
+                                                            "description" : "Kind of OSD device",
+                                                            "enum" : [
+                                                               "block",
+                                                               "db",
+                                                               "wal"
+                                                            ],
+                                                            "type" : "string"
+                                                         },
+                                                         "devices" : {
+                                                            "description" : "Physical disks used",
+                                                            "type" : "string"
+                                                         },
+                                                         "size" : {
+                                                            "description" : "Size in bytes",
+                                                            "type" : "integer"
+                                                         },
+                                                         "support_discard" : {
+                                                            "description" : "Discard support of the physical device",
+                                                            "type" : "boolean"
+                                                         },
+                                                         "type" : {
+                                                            "description" : "Type of device. For example, hdd or ssd",
+                                                            "type" : "string"
+                                                         }
+                                                      },
+                                                      "type" : "object"
+                                                   },
+                                                   "type" : "array"
+                                                },
+                                                "osd" : {
+                                                   "description" : "General information about the OSD",
+                                                   "properties" : {
+                                                      "back_addr" : {
+                                                         "description" : "Address and port used to talk to other OSDs.",
+                                                         "type" : "string"
+                                                      },
+                                                      "front_addr" : {
+                                                         "description" : "Address and port used to talk to clients and monitors.",
+                                                         "type" : "string"
+                                                      },
+                                                      "hb_back_addr" : {
+                                                         "description" : "Heartbeat address and port for other OSDs.",
+                                                         "type" : "string"
+                                                      },
+                                                      "hb_front_addr" : {
+                                                         "description" : "Heartbeat address and port for clients and monitors.",
+                                                         "type" : "string"
+                                                      },
+                                                      "hostname" : {
+                                                         "description" : "Name of the host containing the OSD.",
+                                                         "type" : "string"
+                                                      },
+                                                      "id" : {
+                                                         "description" : "ID of the OSD.",
+                                                         "type" : "integer"
+                                                      },
+                                                      "mem_usage" : {
+                                                         "description" : "Memory usage of the OSD service.",
+                                                         "type" : "integer"
+                                                      },
+                                                      "osd_data" : {
+                                                         "description" : "Path to the OSD's data directory.",
+                                                         "type" : "string"
+                                                      },
+                                                      "osd_objectstore" : {
+                                                         "description" : "The type of object store used.",
+                                                         "type" : "string"
+                                                      },
+                                                      "pid" : {
+                                                         "description" : "OSD process ID.",
+                                                         "type" : "integer"
+                                                      },
+                                                      "version" : {
+                                                         "description" : "Ceph version of the OSD service.",
+                                                         "type" : "string"
+                                                      }
+                                                   },
+                                                   "type" : "object"
+                                                }
+                                             },
+                                             "type" : "object"
+                                          }
+                                       }
+                                    },
+                                    "leaf" : 1,
+                                    "path" : "/nodes/{node}/ceph/osd/{osdid}/metadata",
+                                    "text" : "metadata"
+                                 },
+                                 {
+                                    "info" : {
+                                       "GET" : {
+                                          "allowtoken" : 1,
+                                          "description" : "Get OSD volume details",
+                                          "method" : "GET",
+                                          "name" : "osdvolume",
+                                          "parameters" : {
+                                             "additionalProperties" : 0,
+                                             "properties" : {
+                                                "node" : {
+                                                   "description" : "The cluster node name.",
+                                                   "format" : "pve-node",
+                                                   "type" : "string",
+                                                   "typetext" : "<string>"
+                                                },
+                                                "osdid" : {
+                                                   "description" : "OSD ID",
+                                                   "type" : "integer",
+                                                   "typetext" : "<integer>"
+                                                },
+                                                "type" : {
+                                                   "default" : "block",
+                                                   "description" : "OSD device type",
+                                                   "enum" : [
+                                                      "block",
+                                                      "db",
+                                                      "wal"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "type" : "string"
+                                                }
+                                             }
+                                          },
+                                          "permissions" : {
+                                             "check" : [
+                                                "perm",
+                                                "/",
+                                                [
+                                                   "Sys.Audit"
+                                                ],
+                                                "any",
+                                                1
+                                             ]
+                                          },
+                                          "protected" : 1,
+                                          "proxyto" : "node",
+                                          "returns" : {
+                                             "properties" : {
+                                                "creation_time" : {
+                                                   "description" : "Creation time as reported by `lvs`.",
+                                                   "type" : "string"
+                                                },
+                                                "lv_name" : {
+                                                   "description" : "Name of the logical volume (LV).",
+                                                   "type" : "string"
+                                                },
+                                                "lv_path" : {
+                                                   "description" : "Path to the logical volume (LV).",
+                                                   "type" : "string"
+                                                },
+                                                "lv_size" : {
+                                                   "description" : "Size of the logical volume (LV).",
+                                                   "type" : "integer"
+                                                },
+                                                "lv_uuid" : {
+                                                   "description" : "UUID of the logical volume (LV).",
+                                                   "type" : "string"
+                                                },
+                                                "vg_name" : {
+                                                   "description" : "Name of the volume group (VG).",
+                                                   "type" : "string"
+                                                }
+                                             },
+                                             "type" : "object"
+                                          }
+                                       }
+                                    },
+                                    "leaf" : 1,
+                                    "path" : "/nodes/{node}/ceph/osd/{osdid}/lv-info",
+                                    "text" : "lv-info"
+                                 },
+                                 {
+                                    "info" : {
+                                       "POST" : {
+                                          "allowtoken" : 1,
+                                          "description" : "ceph osd in",
+                                          "method" : "POST",
+                                          "name" : "in",
                                           "parameters" : {
                                              "additionalProperties" : 0,
                                              "properties" : {
@@ -30098,6 +33725,44 @@ const apiSchema = [
                                     "returns" : {
                                        "type" : "string"
                                     }
+                                 },
+                                 "GET" : {
+                                    "allowtoken" : 1,
+                                    "description" : "OSD index.",
+                                    "method" : "GET",
+                                    "name" : "osdindex",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "osdid" : {
+                                             "description" : "OSD ID",
+                                             "type" : "integer",
+                                             "typetext" : "<integer>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "user" : "all"
+                                    },
+                                    "returns" : {
+                                       "items" : {
+                                          "properties" : {},
+                                          "type" : "object"
+                                       },
+                                       "links" : [
+                                          {
+                                             "href" : "{name}",
+                                             "rel" : "child"
+                                          }
+                                       ],
+                                       "type" : "array"
+                                    }
                                  }
                               },
                               "leaf" : 0,
@@ -30137,6 +33802,18 @@ const apiSchema = [
                               "protected" : 1,
                               "proxyto" : "node",
                               "returns" : {
+                                 "items" : {
+                                    "properties" : {
+                                       "flags" : {
+                                          "type" : "string"
+                                       },
+                                       "root" : {
+                                          "description" : "Tree with OSDs in the CRUSH map structure.",
+                                          "type" : "object"
+                                       }
+                                    },
+                                    "type" : "object"
+                                 },
                                  "type" : "object"
                               }
                            },
@@ -30663,12 +34340,40 @@ const apiSchema = [
                                           "optional" : 1,
                                           "type" : "string"
                                        },
-                                       "host" : {
+                                       "ceph_version" : {
+                                          "optional" : 1,
+                                          "type" : "string"
+                                       },
+                                       "ceph_version_short" : {
+                                          "optional" : 1,
+                                          "type" : "string"
+                                       },
+                                       "direxists" : {
                                           "optional" : 1,
                                           "type" : "string"
                                        },
+                                       "host" : {
+                                          "optional" : 1,
+                                          "type" : "boolean"
+                                       },
                                        "name" : {
                                           "type" : "string"
+                                       },
+                                       "quorum" : {
+                                          "optional" : 1,
+                                          "type" : "boolean"
+                                       },
+                                       "rank" : {
+                                          "optional" : 1,
+                                          "type" : "integer"
+                                       },
+                                       "service" : {
+                                          "optional" : 1,
+                                          "type" : "integer"
+                                       },
+                                       "state" : {
+                                          "optional" : 1,
+                                          "type" : "string"
                                        }
                                     },
                                     "type" : "object"
@@ -30817,6 +34522,204 @@ const apiSchema = [
                      {
                         "children" : [
                            {
+                              "children" : [
+                                 {
+                                    "info" : {
+                                       "GET" : {
+                                          "allowtoken" : 1,
+                                          "description" : "Show the current pool status.",
+                                          "method" : "GET",
+                                          "name" : "getpool",
+                                          "parameters" : {
+                                             "additionalProperties" : 0,
+                                             "properties" : {
+                                                "name" : {
+                                                   "description" : "The name of the pool. It must be unique.",
+                                                   "type" : "string",
+                                                   "typetext" : "<string>"
+                                                },
+                                                "node" : {
+                                                   "description" : "The cluster node name.",
+                                                   "format" : "pve-node",
+                                                   "type" : "string",
+                                                   "typetext" : "<string>"
+                                                },
+                                                "verbose" : {
+                                                   "default" : 0,
+                                                   "description" : "If enabled, will display additional data(eg. statistics).",
+                                                   "optional" : 1,
+                                                   "type" : "boolean",
+                                                   "typetext" : "<boolean>"
+                                                }
+                                             }
+                                          },
+                                          "permissions" : {
+                                             "check" : [
+                                                "perm",
+                                                "/",
+                                                [
+                                                   "Sys.Audit",
+                                                   "Datastore.Audit"
+                                                ],
+                                                "any",
+                                                1
+                                             ]
+                                          },
+                                          "protected" : 1,
+                                          "proxyto" : "node",
+                                          "returns" : {
+                                             "properties" : {
+                                                "application" : {
+                                                   "default" : "rbd",
+                                                   "description" : "The application of the pool.",
+                                                   "enum" : [
+                                                      "rbd",
+                                                      "cephfs",
+                                                      "rgw"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "title" : "Application",
+                                                   "type" : "string"
+                                                },
+                                                "application_list" : {
+                                                   "optional" : 1,
+                                                   "title" : "Application",
+                                                   "type" : "array"
+                                                },
+                                                "autoscale_status" : {
+                                                   "optional" : 1,
+                                                   "title" : "Autoscale Status",
+                                                   "type" : "object"
+                                                },
+                                                "crush_rule" : {
+                                                   "description" : "The rule to use for mapping object placement in the cluster.",
+                                                   "optional" : 1,
+                                                   "title" : "Crush Rule Name",
+                                                   "type" : "string"
+                                                },
+                                                "fast_read" : {
+                                                   "title" : "Fast Read",
+                                                   "type" : "boolean"
+                                                },
+                                                "hashpspool" : {
+                                                   "title" : "hashpspool",
+                                                   "type" : "boolean"
+                                                },
+                                                "id" : {
+                                                   "title" : "ID",
+                                                   "type" : "integer"
+                                                },
+                                                "min_size" : {
+                                                   "default" : 2,
+                                                   "description" : "Minimum number of replicas per object",
+                                                   "maximum" : 7,
+                                                   "minimum" : 1,
+                                                   "optional" : 1,
+                                                   "title" : "Min Size",
+                                                   "type" : "integer"
+                                                },
+                                                "name" : {
+                                                   "description" : "The name of the pool. It must be unique.",
+                                                   "title" : "Name",
+                                                   "type" : "string"
+                                                },
+                                                "nodeep-scrub" : {
+                                                   "title" : "nodeep-scrub",
+                                                   "type" : "boolean"
+                                                },
+                                                "nodelete" : {
+                                                   "title" : "nodelete",
+                                                   "type" : "boolean"
+                                                },
+                                                "nopgchange" : {
+                                                   "title" : "nopgchange",
+                                                   "type" : "boolean"
+                                                },
+                                                "noscrub" : {
+                                                   "title" : "noscrub",
+                                                   "type" : "boolean"
+                                                },
+                                                "nosizechange" : {
+                                                   "title" : "nosizechange",
+                                                   "type" : "boolean"
+                                                },
+                                                "pg_autoscale_mode" : {
+                                                   "default" : "warn",
+                                                   "description" : "The automatic PG scaling mode of the pool.",
+                                                   "enum" : [
+                                                      "on",
+                                                      "off",
+                                                      "warn"
+                                                   ],
+                                                   "optional" : 1,
+                                                   "title" : "PG Autoscale Mode",
+                                                   "type" : "string"
+                                                },
+                                                "pg_num" : {
+                                                   "default" : 128,
+                                                   "description" : "Number of placement groups.",
+                                                   "maximum" : 32768,
+                                                   "minimum" : 1,
+                                                   "optional" : 1,
+                                                   "title" : "PG Num",
+                                                   "type" : "integer"
+                                                },
+                                                "pg_num_min" : {
+                                                   "description" : "Minimal number of placement groups.",
+                                                   "maximum" : 32768,
+                                                   "optional" : 1,
+                                                   "title" : "min. PG Num",
+                                                   "type" : "integer"
+                                                },
+                                                "pgp_num" : {
+                                                   "title" : "PGP num",
+                                                   "type" : "integer"
+                                                },
+                                                "size" : {
+                                                   "default" : 3,
+                                                   "description" : "Number of replicas per object",
+                                                   "maximum" : 7,
+                                                   "minimum" : 1,
+                                                   "optional" : 1,
+                                                   "title" : "Size",
+                                                   "type" : "integer"
+                                                },
+                                                "statistics" : {
+                                                   "optional" : 1,
+                                                   "title" : "Statistics",
+                                                   "type" : "object"
+                                                },
+                                                "target_size" : {
+                                                   "description" : "The estimated target size of the pool for the PG autoscaler.",
+                                                   "optional" : 1,
+                                                   "pattern" : "^(\\d+(\\.\\d+)?)([KMGT])?$",
+                                                   "title" : "PG Autoscale Target Size",
+                                                   "type" : "string"
+                                                },
+                                                "target_size_ratio" : {
+                                                   "description" : "The estimated target ratio of the pool for the PG autoscaler.",
+                                                   "optional" : 1,
+                                                   "title" : "PG Autoscale Target Ratio",
+                                                   "type" : "number"
+                                                },
+                                                "use_gmt_hitset" : {
+                                                   "title" : "use_gmt_hitset",
+                                                   "type" : "boolean"
+                                                },
+                                                "write_fadvise_dontneed" : {
+                                                   "title" : "write_fadvise_dontneed",
+                                                   "type" : "boolean"
+                                                }
+                                             },
+                                             "type" : "object"
+                                          }
+                                       }
+                                    },
+                                    "leaf" : 1,
+                                    "path" : "/nodes/{node}/ceph/pool/{name}/status",
+                                    "text" : "status"
+                                 }
+                              ],
                               "info" : {
                                  "DELETE" : {
                                     "allowtoken" : 1,
@@ -30844,6 +34747,537 @@ const apiSchema = [
                                              "type" : "string",
                                              "typetext" : "<string>"
                                           },
+                                          "remove_ecprofile" : {
+                                             "default" : 1,
+                                             "description" : "Remove the erasure code profile. Defaults to true, if applicable.",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
+                                          "remove_storages" : {
+                                             "default" : 0,
+                                             "description" : "Remove all pveceph-managed storages configured for this pool",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/",
+                                          [
+                                             "Sys.Modify"
+                                          ]
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "type" : "string"
+                                    }
+                                 },
+                                 "GET" : {
+                                    "allowtoken" : 1,
+                                    "description" : "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" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Change POOL settings",
+                                    "method" : "PUT",
+                                    "name" : "setpool",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "application" : {
+                                             "description" : "The application of the pool.",
+                                             "enum" : [
+                                                "rbd",
+                                                "cephfs",
+                                                "rgw"
+                                             ],
+                                             "optional" : 1,
+                                             "title" : "Application",
+                                             "type" : "string"
+                                          },
+                                          "crush_rule" : {
+                                             "description" : "The rule to use for mapping object placement in the cluster.",
+                                             "optional" : 1,
+                                             "title" : "Crush Rule Name",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "min_size" : {
+                                             "description" : "Minimum number of replicas per object",
+                                             "maximum" : 7,
+                                             "minimum" : 1,
+                                             "optional" : 1,
+                                             "title" : "Min Size",
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (1 - 7)"
+                                          },
+                                          "name" : {
+                                             "description" : "The name of the pool. It must be unique.",
+                                             "title" : "Name",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "pg_autoscale_mode" : {
+                                             "description" : "The automatic PG scaling mode of the pool.",
+                                             "enum" : [
+                                                "on",
+                                                "off",
+                                                "warn"
+                                             ],
+                                             "optional" : 1,
+                                             "title" : "PG Autoscale Mode",
+                                             "type" : "string"
+                                          },
+                                          "pg_num" : {
+                                             "description" : "Number of placement groups.",
+                                             "maximum" : 32768,
+                                             "minimum" : 1,
+                                             "optional" : 1,
+                                             "title" : "PG Num",
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (1 - 32768)"
+                                          },
+                                          "pg_num_min" : {
+                                             "description" : "Minimal number of placement groups.",
+                                             "maximum" : 32768,
+                                             "optional" : 1,
+                                             "title" : "min. PG Num",
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (-N - 32768)"
+                                          },
+                                          "size" : {
+                                             "description" : "Number of replicas per object",
+                                             "maximum" : 7,
+                                             "minimum" : 1,
+                                             "optional" : 1,
+                                             "title" : "Size",
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (1 - 7)"
+                                          },
+                                          "target_size" : {
+                                             "description" : "The estimated target size of the pool for the PG autoscaler.",
+                                             "optional" : 1,
+                                             "pattern" : "^(\\d+(\\.\\d+)?)([KMGT])?$",
+                                             "title" : "PG Autoscale Target Size",
+                                             "type" : "string"
+                                          },
+                                          "target_size_ratio" : {
+                                             "description" : "The estimated target ratio of the pool for the PG autoscaler.",
+                                             "optional" : 1,
+                                             "title" : "PG Autoscale Target Ratio",
+                                             "type" : "number",
+                                             "typetext" : "<number>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/",
+                                          [
+                                             "Sys.Modify"
+                                          ]
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "type" : "string"
+                                    }
+                                 }
+                              },
+                              "leaf" : 0,
+                              "path" : "/nodes/{node}/ceph/pool/{name}",
+                              "text" : "{name}"
+                           }
+                        ],
+                        "info" : {
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "List all pools and their settings (which are settable by the POST/PUT endpoints).",
+                              "method" : "GET",
+                              "name" : "lspools",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Audit",
+                                       "Datastore.Audit"
+                                    ],
+                                    "any",
+                                    1
+                                 ]
+                              },
+                              "protected" : 1,
+                              "proxyto" : "node",
+                              "returns" : {
+                                 "items" : {
+                                    "properties" : {
+                                       "application_metadata" : {
+                                          "optional" : 1,
+                                          "title" : "Associated Applications",
+                                          "type" : "object"
+                                       },
+                                       "autoscale_status" : {
+                                          "optional" : 1,
+                                          "title" : "Autoscale Status",
+                                          "type" : "object"
+                                       },
+                                       "bytes_used" : {
+                                          "title" : "Used",
+                                          "type" : "integer"
+                                       },
+                                       "crush_rule" : {
+                                          "title" : "Crush Rule",
+                                          "type" : "integer"
+                                       },
+                                       "crush_rule_name" : {
+                                          "title" : "Crush Rule Name",
+                                          "type" : "string"
+                                       },
+                                       "min_size" : {
+                                          "title" : "Min Size",
+                                          "type" : "integer"
+                                       },
+                                       "percent_used" : {
+                                          "title" : "%-Used",
+                                          "type" : "number"
+                                       },
+                                       "pg_autoscale_mode" : {
+                                          "optional" : 1,
+                                          "title" : "PG Autoscale Mode",
+                                          "type" : "string"
+                                       },
+                                       "pg_num" : {
+                                          "title" : "PG Num",
+                                          "type" : "integer"
+                                       },
+                                       "pg_num_final" : {
+                                          "optional" : 1,
+                                          "title" : "Optimal PG Num",
+                                          "type" : "integer"
+                                       },
+                                       "pg_num_min" : {
+                                          "optional" : 1,
+                                          "title" : "min. PG Num",
+                                          "type" : "integer"
+                                       },
+                                       "pool" : {
+                                          "title" : "ID",
+                                          "type" : "integer"
+                                       },
+                                       "pool_name" : {
+                                          "title" : "Name",
+                                          "type" : "string"
+                                       },
+                                       "size" : {
+                                          "title" : "Size",
+                                          "type" : "integer"
+                                       },
+                                       "target_size" : {
+                                          "optional" : 1,
+                                          "title" : "PG Autoscale Target Size",
+                                          "type" : "integer"
+                                       },
+                                       "target_size_ratio" : {
+                                          "optional" : 1,
+                                          "title" : "PG Autoscale Target Ratio",
+                                          "type" : "number"
+                                       },
+                                       "type" : {
+                                          "enum" : [
+                                             "replicated",
+                                             "erasure",
+                                             "unknown"
+                                          ],
+                                          "title" : "Type",
+                                          "type" : "string"
+                                       }
+                                    },
+                                    "type" : "object"
+                                 },
+                                 "links" : [
+                                    {
+                                       "href" : "{pool_name}",
+                                       "rel" : "child"
+                                    }
+                                 ],
+                                 "type" : "array"
+                              }
+                           },
+                           "POST" : {
+                              "allowtoken" : 1,
+                              "description" : "Create Ceph pool",
+                              "method" : "POST",
+                              "name" : "createpool",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "add_storages" : {
+                                       "default" : "0; for erasure coded pools: 1",
+                                       "description" : "Configure VM and CT storage using the new pool.",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    },
+                                    "application" : {
+                                       "default" : "rbd",
+                                       "description" : "The application of the pool.",
+                                       "enum" : [
+                                          "rbd",
+                                          "cephfs",
+                                          "rgw"
+                                       ],
+                                       "optional" : 1,
+                                       "title" : "Application",
+                                       "type" : "string"
+                                    },
+                                    "crush_rule" : {
+                                       "description" : "The rule to use for mapping object placement in the cluster.",
+                                       "optional" : 1,
+                                       "title" : "Crush Rule Name",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "erasure-coding" : {
+                                       "description" : "Create an erasure coded pool for RBD with an accompaning replicated pool for metadata storage. With EC, the common ceph options 'size', 'min_size' and 'crush_rule' parameters will be applied to the metadata pool.",
+                                       "format" : {
+                                          "device-class" : {
+                                             "description" : "CRUSH device class. Will create an erasure coded pool plus a replicated pool for metadata.",
+                                             "format_description" : "class",
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "failure-domain" : {
+                                             "default" : "host",
+                                             "description" : "CRUSH failure domain. Default is 'host'. Will create an erasure coded pool plus a replicated pool for metadata.",
+                                             "format_description" : "domain",
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "k" : {
+                                             "description" : "Number of data chunks. Will create an erasure coded pool plus a replicated pool for metadata.",
+                                             "minimum" : 2,
+                                             "type" : "integer"
+                                          },
+                                          "m" : {
+                                             "description" : "Number of coding chunks. Will create an erasure coded pool plus a replicated pool for metadata.",
+                                             "minimum" : 1,
+                                             "type" : "integer"
+                                          },
+                                          "profile" : {
+                                             "description" : "Override the erasure code (EC) profile to use. Will create an erasure coded pool plus a replicated pool for metadata.",
+                                             "format_description" : "profile",
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          }
+                                       },
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "k=<integer> ,m=<integer> [,device-class=<class>] [,failure-domain=<domain>] [,profile=<profile>]"
+                                    },
+                                    "min_size" : {
+                                       "default" : 2,
+                                       "description" : "Minimum number of replicas per object",
+                                       "maximum" : 7,
+                                       "minimum" : 1,
+                                       "optional" : 1,
+                                       "title" : "Min Size",
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (1 - 7)"
+                                    },
+                                    "name" : {
+                                       "description" : "The name of the pool. It must be unique.",
+                                       "title" : "Name",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "pg_autoscale_mode" : {
+                                       "default" : "warn",
+                                       "description" : "The automatic PG scaling mode of the pool.",
+                                       "enum" : [
+                                          "on",
+                                          "off",
+                                          "warn"
+                                       ],
+                                       "optional" : 1,
+                                       "title" : "PG Autoscale Mode",
+                                       "type" : "string"
+                                    },
+                                    "pg_num" : {
+                                       "default" : 128,
+                                       "description" : "Number of placement groups.",
+                                       "maximum" : 32768,
+                                       "minimum" : 1,
+                                       "optional" : 1,
+                                       "title" : "PG Num",
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (1 - 32768)"
+                                    },
+                                    "pg_num_min" : {
+                                       "description" : "Minimal number of placement groups.",
+                                       "maximum" : 32768,
+                                       "optional" : 1,
+                                       "title" : "min. PG Num",
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (-N - 32768)"
+                                    },
+                                    "size" : {
+                                       "default" : 3,
+                                       "description" : "Number of replicas per object",
+                                       "maximum" : 7,
+                                       "minimum" : 1,
+                                       "optional" : 1,
+                                       "title" : "Size",
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (1 - 7)"
+                                    },
+                                    "target_size" : {
+                                       "description" : "The estimated target size of the pool for the PG autoscaler.",
+                                       "optional" : 1,
+                                       "pattern" : "^(\\d+(\\.\\d+)?)([KMGT])?$",
+                                       "title" : "PG Autoscale Target Size",
+                                       "type" : "string"
+                                    },
+                                    "target_size_ratio" : {
+                                       "description" : "The estimated target ratio of the pool for the PG autoscaler.",
+                                       "optional" : 1,
+                                       "title" : "PG Autoscale Target Ratio",
+                                       "type" : "number",
+                                       "typetext" : "<number>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Modify"
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
+                              "proxyto" : "node",
+                              "returns" : {
+                                 "type" : "string"
+                              }
+                           }
+                        },
+                        "leaf" : 0,
+                        "path" : "/nodes/{node}/ceph/pool",
+                        "text" : "pool"
+                     },
+                     {
+                        "children" : [
+                           {
+                              "info" : {
+                                 "DELETE" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Destroy pool. Deprecated, please use `/nodes/{node}/ceph/pool/{name}`.",
+                                    "method" : "DELETE",
+                                    "name" : "destroypool",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "force" : {
+                                             "default" : 0,
+                                             "description" : "If true, destroys pool even if in use",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
+                                          "name" : {
+                                             "description" : "The name of the pool. It must be unique.",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "remove_ecprofile" : {
+                                             "default" : 1,
+                                             "description" : "Remove the erasure code profile. Defaults to true, if applicable.",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
                                           "remove_storages" : {
                                              "default" : 0,
                                              "description" : "Remove all pveceph-managed storages configured for this pool",
@@ -30870,7 +35304,7 @@ const apiSchema = [
                                  },
                                  "GET" : {
                                     "allowtoken" : 1,
-                                    "description" : "List pool settings.",
+                                    "description" : "List pool settings. Deprecated, please use `/nodes/{node}/ceph/pool/{pool}/status`.",
                                     "method" : "GET",
                                     "name" : "getpool",
                                     "parameters" : {
@@ -31059,7 +35493,7 @@ const apiSchema = [
                                  },
                                  "PUT" : {
                                     "allowtoken" : 1,
-                                    "description" : "Change POOL settings",
+                                    "description" : "Change POOL settings. Deprecated, please use `/nodes/{node}/ceph/pool/{name}`.",
                                     "method" : "PUT",
                                     "name" : "setpool",
                                     "parameters" : {
@@ -31181,7 +35615,7 @@ const apiSchema = [
                         "info" : {
                            "GET" : {
                               "allowtoken" : 1,
-                              "description" : "List all pools.",
+                              "description" : "List all pools. Deprecated, please use `/nodes/{node}/ceph/pool`.",
                               "method" : "GET",
                               "name" : "lspools",
                               "parameters" : {
@@ -31212,6 +35646,11 @@ const apiSchema = [
                               "returns" : {
                                  "items" : {
                                     "properties" : {
+                                       "application_metadata" : {
+                                          "optional" : 1,
+                                          "title" : "Associated Applications",
+                                          "type" : "object"
+                                       },
                                        "autoscale_status" : {
                                           "optional" : 1,
                                           "title" : "Autoscale Status",
@@ -31277,6 +35716,15 @@ const apiSchema = [
                                           "optional" : 1,
                                           "title" : "PG Autoscale Target Ratio",
                                           "type" : "number"
+                                       },
+                                       "type" : {
+                                          "enum" : [
+                                             "replicated",
+                                             "erasure",
+                                             "unknown"
+                                          ],
+                                          "title" : "Type",
+                                          "type" : "string"
                                        }
                                     },
                                     "type" : "object"
@@ -31292,13 +35740,14 @@ const apiSchema = [
                            },
                            "POST" : {
                               "allowtoken" : 1,
-                              "description" : "Create POOL",
+                              "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",
@@ -31323,6 +35772,43 @@ const apiSchema = [
                                        "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",
@@ -31425,7 +35911,7 @@ const apiSchema = [
                         "info" : {
                            "GET" : {
                               "allowtoken" : 1,
-                              "description" : "Get Ceph configuration.",
+                              "description" : "Get the Ceph configuration file. Deprecated, please use `/nodes/{node}/ceph/cfg/raw.",
                               "method" : "GET",
                               "name" : "config",
                               "parameters" : {
@@ -31465,7 +35951,7 @@ const apiSchema = [
                         "info" : {
                            "GET" : {
                               "allowtoken" : 1,
-                              "description" : "Get Ceph configuration database.",
+                              "description" : "Get the Ceph configuration database. Deprecated, please use `/nodes/{node}/ceph/cfg/db.",
                               "method" : "GET",
                               "name" : "configdb",
                               "parameters" : {
@@ -31928,7 +36414,12 @@ const apiSchema = [
                               "proxyto" : "node",
                               "returns" : {
                                  "items" : {
-                                    "properties" : {},
+                                    "properties" : {
+                                       "name" : {
+                                          "description" : "Name of the CRUSH rule.",
+                                          "type" : "string"
+                                       }
+                                    },
                                     "type" : "object"
                                  },
                                  "links" : [
@@ -31944,6 +36435,77 @@ const apiSchema = [
                         "leaf" : 1,
                         "path" : "/nodes/{node}/ceph/rules",
                         "text" : "rules"
+                     },
+                     {
+                        "info" : {
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "Heuristical check if it is safe to perform an action.",
+                              "method" : "GET",
+                              "name" : "cmd_safety",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "action" : {
+                                       "description" : "Action to check",
+                                       "enum" : [
+                                          "stop",
+                                          "destroy"
+                                       ],
+                                       "type" : "string"
+                                    },
+                                    "id" : {
+                                       "description" : "ID of the service",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "service" : {
+                                       "description" : "Service type",
+                                       "enum" : [
+                                          "osd",
+                                          "mon",
+                                          "mds"
+                                       ],
+                                       "type" : "string"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "perm",
+                                    "/",
+                                    [
+                                       "Sys.Audit"
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
+                              "proxyto" : "node",
+                              "returns" : {
+                                 "properties" : {
+                                    "safe" : {
+                                       "description" : "If it is safe to run the command.",
+                                       "type" : "boolean"
+                                    },
+                                    "status" : {
+                                       "description" : "Status message given by Ceph.",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    }
+                                 },
+                                 "type" : "object"
+                              }
+                           }
+                        },
+                        "leaf" : 1,
+                        "path" : "/nodes/{node}/ceph/cmd-safety",
+                        "text" : "cmd-safety"
                      }
                   ],
                   "info" : {
@@ -32126,6 +36688,19 @@ const apiSchema = [
                                        "optional" : 1,
                                        "type" : "string"
                                     },
+                                    "notes-template" : {
+                                       "description" : "Template string for generating notes for the backup(s). It can contain variables which will be replaced by their values. Currently supported are {{cluster}}, {{guestname}}, {{node}}, and {{vmid}}, but more might be added in the future. Needs to be a single line, newline and backslash need to be escaped as '\\n' and '\\\\' respectively.",
+                                       "maxLength" : 1024,
+                                       "optional" : 1,
+                                       "requires" : "storage",
+                                       "type" : "string"
+                                    },
+                                    "performance" : {
+                                       "description" : "Other performance-related settings.",
+                                       "format" : "backup-performance",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
                                     "pigz" : {
                                        "default" : 0,
                                        "description" : "Use pigz instead of gzip when N>0. N=1 uses half of cores, N>1 uses N as thread count.",
@@ -32137,6 +36712,12 @@ const apiSchema = [
                                        "optional" : 1,
                                        "type" : "string"
                                     },
+                                    "protected" : {
+                                       "description" : "If true, mark backup(s) as protected.",
+                                       "optional" : 1,
+                                       "requires" : "storage",
+                                       "type" : "boolean"
+                                    },
                                     "prune-backups" : {
                                        "default" : "keep-all=1",
                                        "description" : "Use these retention options instead of those from the storage configuration.",
@@ -32367,6 +36948,21 @@ const apiSchema = [
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
+                              "notes-template" : {
+                                 "description" : "Template string for generating notes for the backup(s). It can contain variables which will be replaced by their values. Currently supported are {{cluster}}, {{guestname}}, {{node}}, and {{vmid}}, but more might be added in the future. Needs to be a single line, newline and backslash need to be escaped as '\\n' and '\\\\' respectively.",
+                                 "maxLength" : 1024,
+                                 "optional" : 1,
+                                 "requires" : "storage",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "performance" : {
+                                 "description" : "Other performance-related settings.",
+                                 "format" : "backup-performance",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "[max-workers=<integer>]"
+                              },
                               "pigz" : {
                                  "default" : 0,
                                  "description" : "Use pigz instead of gzip when N>0. N=1 uses half of cores, N>1 uses N as thread count.",
@@ -32380,6 +36976,13 @@ const apiSchema = [
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
+                              "protected" : {
+                                 "description" : "If true, mark backup(s) as protected.",
+                                 "optional" : 1,
+                                 "requires" : "storage",
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
                               "prune-backups" : {
                                  "default" : "keep-all=1",
                                  "description" : "Use these retention options instead of those from the storage configuration.",
@@ -32466,7 +37069,7 @@ const apiSchema = [
                            }
                         },
                         "permissions" : {
-                           "description" : "The user needs 'VM.Backup' permissions on any VM, and 'Datastore.AllocateSpace' on the backup storage. The 'maxfiles', 'prune-backups', 'tmpdir', 'dumpdir', 'script', 'bwlimit' and 'ionice' parameters are restricted to the 'root@pam' user.",
+                           "description" : "The user needs 'VM.Backup' permissions on any VM, and 'Datastore.AllocateSpace' on the backup storage. The '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,
@@ -32503,24 +37106,25 @@ const apiSchema = [
                                           "service" : {
                                              "description" : "Service ID",
                                              "enum" : [
-                                                "pveproxy",
-                                                "pvedaemon",
-                                                "spiceproxy",
-                                                "pvestatd",
-                                                "pve-cluster",
+                                                "chrony",
                                                 "corosync",
+                                                "cron",
+                                                "ksmtuned",
+                                                "postfix",
+                                                "pve-cluster",
                                                 "pve-firewall",
-                                                "pvefw-logger",
                                                 "pve-ha-crm",
                                                 "pve-ha-lrm",
+                                                "pvedaemon",
+                                                "pvefw-logger",
+                                                "pveproxy",
+                                                "pvescheduler",
+                                                "pvestatd",
+                                                "spiceproxy",
                                                 "sshd",
                                                 "syslog",
                                                 "systemd-journald",
-                                                "cron",
-                                                "postfix",
-                                                "ksmtuned",
-                                                "systemd-timesyncd",
-                                                "chrony"
+                                                "systemd-timesyncd"
                                              ],
                                              "type" : "string"
                                           }
@@ -32565,24 +37169,25 @@ const apiSchema = [
                                           "service" : {
                                              "description" : "Service ID",
                                              "enum" : [
-                                                "pveproxy",
-                                                "pvedaemon",
-                                                "spiceproxy",
-                                                "pvestatd",
-                                                "pve-cluster",
+                                                "chrony",
                                                 "corosync",
+                                                "cron",
+                                                "ksmtuned",
+                                                "postfix",
+                                                "pve-cluster",
                                                 "pve-firewall",
-                                                "pvefw-logger",
                                                 "pve-ha-crm",
                                                 "pve-ha-lrm",
+                                                "pvedaemon",
+                                                "pvefw-logger",
+                                                "pveproxy",
+                                                "pvescheduler",
+                                                "pvestatd",
+                                                "spiceproxy",
                                                 "sshd",
                                                 "syslog",
                                                 "systemd-journald",
-                                                "cron",
-                                                "postfix",
-                                                "ksmtuned",
-                                                "systemd-timesyncd",
-                                                "chrony"
+                                                "systemd-timesyncd"
                                              ],
                                              "type" : "string"
                                           }
@@ -32627,24 +37232,25 @@ const apiSchema = [
                                           "service" : {
                                              "description" : "Service ID",
                                              "enum" : [
-                                                "pveproxy",
-                                                "pvedaemon",
-                                                "spiceproxy",
-                                                "pvestatd",
-                                                "pve-cluster",
+                                                "chrony",
                                                 "corosync",
+                                                "cron",
+                                                "ksmtuned",
+                                                "postfix",
+                                                "pve-cluster",
                                                 "pve-firewall",
-                                                "pvefw-logger",
                                                 "pve-ha-crm",
                                                 "pve-ha-lrm",
+                                                "pvedaemon",
+                                                "pvefw-logger",
+                                                "pveproxy",
+                                                "pvescheduler",
+                                                "pvestatd",
+                                                "spiceproxy",
                                                 "sshd",
                                                 "syslog",
                                                 "systemd-journald",
-                                                "cron",
-                                                "postfix",
-                                                "ksmtuned",
-                                                "systemd-timesyncd",
-                                                "chrony"
+                                                "systemd-timesyncd"
                                              ],
                                              "type" : "string"
                                           }
@@ -32689,24 +37295,25 @@ const apiSchema = [
                                           "service" : {
                                              "description" : "Service ID",
                                              "enum" : [
-                                                "pveproxy",
-                                                "pvedaemon",
-                                                "spiceproxy",
-                                                "pvestatd",
-                                                "pve-cluster",
+                                                "chrony",
                                                 "corosync",
+                                                "cron",
+                                                "ksmtuned",
+                                                "postfix",
+                                                "pve-cluster",
                                                 "pve-firewall",
-                                                "pvefw-logger",
                                                 "pve-ha-crm",
                                                 "pve-ha-lrm",
+                                                "pvedaemon",
+                                                "pvefw-logger",
+                                                "pveproxy",
+                                                "pvescheduler",
+                                                "pvestatd",
+                                                "spiceproxy",
                                                 "sshd",
                                                 "syslog",
                                                 "systemd-journald",
-                                                "cron",
-                                                "postfix",
-                                                "ksmtuned",
-                                                "systemd-timesyncd",
-                                                "chrony"
+                                                "systemd-timesyncd"
                                              ],
                                              "type" : "string"
                                           }
@@ -32751,24 +37358,25 @@ const apiSchema = [
                                           "service" : {
                                              "description" : "Service ID",
                                              "enum" : [
-                                                "pveproxy",
-                                                "pvedaemon",
-                                                "spiceproxy",
-                                                "pvestatd",
-                                                "pve-cluster",
+                                                "chrony",
                                                 "corosync",
+                                                "cron",
+                                                "ksmtuned",
+                                                "postfix",
+                                                "pve-cluster",
                                                 "pve-firewall",
-                                                "pvefw-logger",
                                                 "pve-ha-crm",
                                                 "pve-ha-lrm",
+                                                "pvedaemon",
+                                                "pvefw-logger",
+                                                "pveproxy",
+                                                "pvescheduler",
+                                                "pvestatd",
+                                                "spiceproxy",
                                                 "sshd",
                                                 "syslog",
                                                 "systemd-journald",
-                                                "cron",
-                                                "postfix",
-                                                "ksmtuned",
-                                                "systemd-timesyncd",
-                                                "chrony"
+                                                "systemd-timesyncd"
                                              ],
                                              "type" : "string"
                                           }
@@ -32813,24 +37421,25 @@ const apiSchema = [
                                     "service" : {
                                        "description" : "Service ID",
                                        "enum" : [
-                                          "pveproxy",
-                                          "pvedaemon",
-                                          "spiceproxy",
-                                          "pvestatd",
-                                          "pve-cluster",
+                                          "chrony",
                                           "corosync",
+                                          "cron",
+                                          "ksmtuned",
+                                          "postfix",
+                                          "pve-cluster",
                                           "pve-firewall",
-                                          "pvefw-logger",
                                           "pve-ha-crm",
                                           "pve-ha-lrm",
+                                          "pvedaemon",
+                                          "pvefw-logger",
+                                          "pveproxy",
+                                          "pvescheduler",
+                                          "pvestatd",
+                                          "spiceproxy",
                                           "sshd",
                                           "syslog",
                                           "systemd-journald",
-                                          "cron",
-                                          "postfix",
-                                          "ksmtuned",
-                                          "systemd-timesyncd",
-                                          "chrony"
+                                          "systemd-timesyncd"
                                        ],
                                        "type" : "string"
                                     }
@@ -33782,8 +38391,15 @@ const apiSchema = [
                                     "parameters" : {
                                        "additionalProperties" : 0,
                                        "properties" : {
+                                          "download" : {
+                                             "description" : "Whether the tasklog file should be downloaded. This parameter can't be used in conjunction with other parameters",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
                                           "limit" : {
                                              "default" : 50,
+                                             "description" : "The amount of lines to read from the tasklog.",
                                              "minimum" : 0,
                                              "optional" : 1,
                                              "type" : "integer",
@@ -33797,19 +38413,21 @@ const apiSchema = [
                                           },
                                           "start" : {
                                              "default" : 0,
+                                             "description" : "Start at this line when reading the tasklog",
                                              "minimum" : 0,
                                              "optional" : 1,
                                              "type" : "integer",
                                              "typetext" : "<integer> (0 - N)"
                                           },
                                           "upid" : {
+                                             "description" : "The task's unique ID.",
                                              "type" : "string",
                                              "typetext" : "<string>"
                                           }
                                        }
                                     },
                                     "permissions" : {
-                                       "description" : "The user needs 'Sys.Audit' permissions on '/nodes/<node>' if the task does not belong to him.",
+                                       "description" : "The user needs 'Sys.Audit' permissions on '/nodes/<node>' if they aren't the owner of the task.",
                                        "user" : "all"
                                     },
                                     "protected" : 1,
@@ -33853,28 +38471,51 @@ const apiSchema = [
                                              "typetext" : "<string>"
                                           },
                                           "upid" : {
+                                             "description" : "The task's unique ID.",
                                              "type" : "string",
                                              "typetext" : "<string>"
                                           }
                                        }
                                     },
                                     "permissions" : {
-                                       "description" : "The user needs 'Sys.Audit' permissions on '/nodes/<node>' if the task does not belong to him.",
+                                       "description" : "The user needs 'Sys.Audit' permissions on '/nodes/<node>' if they are not the owner of the task.",
                                        "user" : "all"
                                     },
                                     "protected" : 1,
                                     "proxyto" : "node",
                                     "returns" : {
                                        "properties" : {
+                                          "exitstatus" : {
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "id" : {
+                                             "type" : "string"
+                                          },
+                                          "node" : {
+                                             "type" : "string"
+                                          },
                                           "pid" : {
                                              "type" : "integer"
                                           },
+                                          "starttime" : {
+                                             "type" : "number"
+                                          },
                                           "status" : {
                                              "enum" : [
                                                 "running",
                                                 "stopped"
                                              ],
                                              "type" : "string"
+                                          },
+                                          "type" : {
+                                             "type" : "string"
+                                          },
+                                          "upid" : {
+                                             "type" : "string"
+                                          },
+                                          "user" : {
+                                             "type" : "string"
                                           }
                                        },
                                        "type" : "object"
@@ -33908,7 +38549,7 @@ const apiSchema = [
                                  }
                               },
                               "permissions" : {
-                                 "description" : "The user needs 'Sys.Modify' permissions on '/nodes/<node>' if the task does not belong to him.",
+                                 "description" : "The user needs 'Sys.Modify' permissions on '/nodes/<node>' if they aren't the owner of the task.",
                                  "user" : "all"
                               },
                               "protected" : 1,
@@ -33971,6 +38612,7 @@ const apiSchema = [
                            "properties" : {
                               "errors" : {
                                  "default" : 0,
+                                 "description" : "Only list tasks with a status of ERROR.",
                                  "optional" : 1,
                                  "type" : "boolean",
                                  "typetext" : "<boolean>"
@@ -34666,8 +39308,11 @@ const apiSchema = [
                                                 "perm",
                                                 "/",
                                                 [
+                                                   "Sys.Audit",
                                                    "Sys.Modify"
-                                                ]
+                                                ],
+                                                "any",
+                                                1
                                              ]
                                           },
                                           "protected" : 1,
@@ -34762,8 +39407,8 @@ const apiSchema = [
                                        "typetext" : "<string>"
                                     },
                                     "pci-class-blacklist" : {
-                                       "default" : "05;06;08;0b",
-                                       "description" : "A list of blacklisted PCI classes, which will not be returned. Following are filtered by default: Memory Controller (05), Bridge (06), Generic System Peripheral (08) and Processor (0b).",
+                                       "default" : "05;06;0b",
+                                       "description" : "A list of blacklisted PCI classes, which will not be returned. Following are filtered by default: Memory Controller (05), Bridge (06) and Processor (0b).",
                                        "format" : "string-list",
                                        "optional" : 1,
                                        "type" : "string",
@@ -34783,8 +39428,11 @@ const apiSchema = [
                                     "perm",
                                     "/",
                                     [
+                                       "Sys.Audit",
                                        "Sys.Modify"
-                                    ]
+                                    ],
+                                    "any",
+                                    1
                                  ]
                               },
                               "protected" : 1,
@@ -35308,7 +39956,13 @@ const apiSchema = [
                                                 "type" : "integer"
                                              },
                                              "mark" : {
-                                                "description" : "Whether the backup would be kept or removed. For backups that don't use the standard naming scheme, it's 'protected'.",
+                                                "description" : "Whether the backup would be kept or removed. Backups that are protected or don't use the standard naming scheme are not removed.",
+                                                "enum" : [
+                                                   "keep",
+                                                   "remove",
+                                                   "protected",
+                                                   "renamed"
+                                                ],
                                                 "type" : "string"
                                              },
                                              "type" : {
@@ -35435,6 +40089,11 @@ const apiSchema = [
                                                    "description" : "The Path",
                                                    "type" : "string"
                                                 },
+                                                "protected" : {
+                                                   "description" : "Protection status. Currently only supported for backups.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean"
+                                                },
                                                 "size" : {
                                                    "description" : "Volume size in bytes.",
                                                    "renderer" : "bytes",
@@ -35515,6 +40174,12 @@ const apiSchema = [
                                                    "type" : "string",
                                                    "typetext" : "<string>"
                                                 },
+                                                "protected" : {
+                                                   "description" : "Protection status. Currently only supported for backups.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean",
+                                                   "typetext" : "<boolean>"
+                                                },
                                                 "storage" : {
                                                    "description" : "The storage identifier.",
                                                    "format" : "pve-storage-id",
@@ -35625,6 +40290,11 @@ const apiSchema = [
                                                 "optional" : 1,
                                                 "type" : "string"
                                              },
+                                             "protected" : {
+                                                "description" : "Protection status. Currently only supported for backups.",
+                                                "optional" : 1,
+                                                "type" : "boolean"
+                                             },
                                              "size" : {
                                                 "description" : "Volume size in bytes.",
                                                 "renderer" : "bytes",
@@ -36084,14 +40754,39 @@ const apiSchema = [
                                     "parameters" : {
                                        "additionalProperties" : 0,
                                        "properties" : {
+                                          "checksum" : {
+                                             "description" : "The expected checksum of the file.",
+                                             "optional" : 1,
+                                             "requires" : "checksum-algorithm",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "checksum-algorithm" : {
+                                             "description" : "The algorithm to calculate the checksum of the file.",
+                                             "enum" : [
+                                                "md5",
+                                                "sha1",
+                                                "sha224",
+                                                "sha256",
+                                                "sha384",
+                                                "sha512"
+                                             ],
+                                             "optional" : 1,
+                                             "requires" : "checksum",
+                                             "type" : "string"
+                                          },
                                           "content" : {
                                              "description" : "Content type.",
+                                             "enum" : [
+                                                "iso",
+                                                "vztmpl"
+                                             ],
                                              "format" : "pve-storage-content",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
+                                             "type" : "string"
                                           },
                                           "filename" : {
-                                             "description" : "The name of the file to create.",
+                                             "description" : "The name of the file to create. Caution: This will be normalized!",
+                                             "maxLength" : 255,
                                              "type" : "string",
                                              "typetext" : "<string>"
                                           },
@@ -36431,6 +41126,67 @@ const apiSchema = [
                {
                   "children" : [
                      {
+                        "children" : [
+                           {
+                              "info" : {
+                                 "DELETE" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Remove an LVM Volume Group.",
+                                    "method" : "DELETE",
+                                    "name" : "delete",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "cleanup-config" : {
+                                             "default" : 0,
+                                             "description" : "Marks associated storage(s) as not available on this node anymore or removes them from the configuration (if configured for this node only).",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
+                                          "cleanup-disks" : {
+                                             "default" : 0,
+                                             "description" : "Also wipe disks so they can be repurposed afterwards.",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
+                                          "name" : {
+                                             "description" : "The storage identifier.",
+                                             "format" : "pve-storage-id",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/",
+                                          [
+                                             "Sys.Modify",
+                                             "Datastore.Allocate"
+                                          ]
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "type" : "string"
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/disks/lvm/{name}",
+                              "text" : "{name}"
+                           }
+                        ],
                         "info" : {
                            "GET" : {
                               "allowtoken" : 1,
@@ -36570,11 +41326,78 @@ const apiSchema = [
                               }
                            }
                         },
-                        "leaf" : 1,
+                        "leaf" : 0,
                         "path" : "/nodes/{node}/disks/lvm",
                         "text" : "lvm"
                      },
                      {
+                        "children" : [
+                           {
+                              "info" : {
+                                 "DELETE" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Remove an LVM thin pool.",
+                                    "method" : "DELETE",
+                                    "name" : "delete",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "cleanup-config" : {
+                                             "default" : 0,
+                                             "description" : "Marks associated storage(s) as not available on this node anymore or removes them from the configuration (if configured for this node only).",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
+                                          "cleanup-disks" : {
+                                             "default" : 0,
+                                             "description" : "Also wipe disks so they can be repurposed afterwards.",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
+                                          "name" : {
+                                             "description" : "The storage identifier.",
+                                             "format" : "pve-storage-id",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "volume-group" : {
+                                             "description" : "The storage identifier.",
+                                             "format" : "pve-storage-id",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/",
+                                          [
+                                             "Sys.Modify",
+                                             "Datastore.Allocate"
+                                          ]
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "type" : "string"
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/disks/lvmthin/{name}",
+                              "text" : "{name}"
+                           }
+                        ],
                         "info" : {
                            "GET" : {
                               "allowtoken" : 1,
@@ -36628,6 +41451,10 @@ const apiSchema = [
                                        "used" : {
                                           "description" : "The used bytes of the thinpool.",
                                           "type" : "integer"
+                                       },
+                                       "vg" : {
+                                          "description" : "The associated volume group.",
+                                          "type" : "string"
                                        }
                                     },
                                     "type" : "object"
@@ -36686,11 +41513,72 @@ const apiSchema = [
                               }
                            }
                         },
-                        "leaf" : 1,
+                        "leaf" : 0,
                         "path" : "/nodes/{node}/disks/lvmthin",
                         "text" : "lvmthin"
                      },
                      {
+                        "children" : [
+                           {
+                              "info" : {
+                                 "DELETE" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Unmounts the storage and removes the mount unit.",
+                                    "method" : "DELETE",
+                                    "name" : "delete",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "cleanup-config" : {
+                                             "default" : 0,
+                                             "description" : "Marks associated storage(s) as not available on this node anymore or removes them from the configuration (if configured for this node only).",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
+                                          "cleanup-disks" : {
+                                             "default" : 0,
+                                             "description" : "Also wipe disk so it can be repurposed afterwards.",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
+                                          "name" : {
+                                             "description" : "The storage identifier.",
+                                             "format" : "pve-storage-id",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/",
+                                          [
+                                             "Sys.Modify",
+                                             "Datastore.Allocate"
+                                          ]
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "type" : "string"
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/disks/directory/{name}",
+                              "text" : "{name}"
+                           }
+                        ],
                         "info" : {
                            "GET" : {
                               "allowtoken" : 1,
@@ -36812,7 +41700,7 @@ const apiSchema = [
                               }
                            }
                         },
-                        "leaf" : 1,
+                        "leaf" : 0,
                         "path" : "/nodes/{node}/disks/directory",
                         "text" : "directory"
                      },
@@ -36820,6 +41708,58 @@ const apiSchema = [
                         "children" : [
                            {
                               "info" : {
+                                 "DELETE" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Destroy a ZFS pool.",
+                                    "method" : "DELETE",
+                                    "name" : "delete",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "cleanup-config" : {
+                                             "default" : 0,
+                                             "description" : "Marks associated storage(s) as not available on this node anymore or removes them from the configuration (if configured for this node only).",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
+                                          "cleanup-disks" : {
+                                             "default" : 0,
+                                             "description" : "Also wipe disks so they can be repurposed afterwards.",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
+                                          "name" : {
+                                             "description" : "The storage identifier.",
+                                             "format" : "pve-storage-id",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "perm",
+                                          "/",
+                                          [
+                                             "Sys.Modify",
+                                             "Datastore.Allocate"
+                                          ]
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "type" : "string"
+                                    }
+                                 },
                                  "GET" : {
                                     "allowtoken" : 1,
                                     "description" : "Get details about a zpool.",
@@ -37036,7 +41976,8 @@ const apiSchema = [
                                           "gzip",
                                           "lz4",
                                           "lzjb",
-                                          "zle"
+                                          "zle",
+                                          "zstd"
                                        ],
                                        "optional" : 1,
                                        "type" : "string"
@@ -37047,6 +41988,23 @@ const apiSchema = [
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
+                                    "draid-config" : {
+                                       "format" : {
+                                          "data" : {
+                                             "description" : "The number of data devices per redundancy group. (dRAID)",
+                                             "minimum" : 1,
+                                             "type" : "integer"
+                                          },
+                                          "spares" : {
+                                             "description" : "Number of dRAID spares.",
+                                             "minimum" : 0,
+                                             "type" : "integer"
+                                          }
+                                       },
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "data=<integer> ,spares=<integer>"
+                                    },
                                     "name" : {
                                        "description" : "The storage identifier.",
                                        "format" : "pve-storage-id",
@@ -37067,7 +42025,10 @@ const apiSchema = [
                                           "raid10",
                                           "raidz",
                                           "raidz2",
-                                          "raidz3"
+                                          "raidz3",
+                                          "draid",
+                                          "draid2",
+                                          "draid3"
                                        ],
                                        "type" : "string"
                                     }
@@ -37180,6 +42141,9 @@ const apiSchema = [
                                           "optional" : 1,
                                           "type" : "string"
                                        },
+                                       "mounted" : {
+                                          "type" : "boolean"
+                                       },
                                        "osdid" : {
                                           "type" : "integer"
                                        },
@@ -38168,7 +43132,7 @@ const apiSchema = [
                                              "typetext" : "<integer> (0 - N)"
                                           },
                                           "icmp-type" : {
-                                             "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
+                                             "description" : "Specify icmp-type. Only valid if proto equals 'icmp' or 'icmpv6'/'ipv6-icmp'.",
                                              "format" : "pve-fw-icmp-type-spec",
                                              "optional" : 1,
                                              "type" : "string",
@@ -38378,7 +43342,7 @@ const apiSchema = [
                                        "typetext" : "<integer> (0 - N)"
                                     },
                                     "icmp-type" : {
-                                       "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.",
+                                       "description" : "Specify icmp-type. Only valid if proto equals 'icmp' or 'icmpv6'/'ipv6-icmp'.",
                                        "format" : "pve-fw-icmp-type-spec",
                                        "optional" : 1,
                                        "type" : "string",
@@ -38568,6 +43532,13 @@ const apiSchema = [
                                        "optional" : 1,
                                        "type" : "boolean"
                                     },
+                                    "nf_conntrack_helpers" : {
+                                       "default" : "",
+                                       "description" : "Enable conntrack helpers for specific protocols. Supported protocols: amanda, ftp, irc, netbios-ns, pptp, sane, sip, snmp, tftp",
+                                       "format" : "pve-fw-conntrack-helper",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
                                     "nf_conntrack_max" : {
                                        "default" : 262144,
                                        "description" : "Maximum number of tracked connections.",
@@ -38736,6 +43707,14 @@ const apiSchema = [
                                        "type" : "boolean",
                                        "typetext" : "<boolean>"
                                     },
+                                    "nf_conntrack_helpers" : {
+                                       "default" : "",
+                                       "description" : "Enable conntrack helpers for specific protocols. Supported protocols: amanda, ftp, irc, netbios-ns, pptp, sane, sip, snmp, tftp",
+                                       "format" : "pve-fw-conntrack-helper",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
                                     "nf_conntrack_max" : {
                                        "default" : 262144,
                                        "description" : "Maximum number of tracked connections.",
@@ -38877,11 +43856,25 @@ const apiSchema = [
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
+                                    "since" : {
+                                       "description" : "Display log since this UNIX epoch.",
+                                       "minimum" : 0,
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (0 - N)"
+                                    },
                                     "start" : {
                                        "minimum" : 0,
                                        "optional" : 1,
                                        "type" : "integer",
                                        "typetext" : "<integer> (0 - N)"
+                                    },
+                                    "until" : {
+                                       "description" : "Display log until this UNIX epoch.",
+                                       "minimum" : 0,
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (0 - N)"
                                     }
                                  }
                               },
@@ -39710,6 +44703,85 @@ const apiSchema = [
                         },
                         "proxyto" : "node",
                         "returns" : {
+                           "properties" : {
+                              "acme" : {
+                                 "description" : "Node specific ACME settings.",
+                                 "format" : {
+                                    "account" : {
+                                       "default" : "default",
+                                       "description" : "ACME account config file name.",
+                                       "format" : "pve-configid",
+                                       "format_description" : "name",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "domains" : {
+                                       "description" : "List of domains for this node's ACME certificate",
+                                       "format" : "pve-acme-domain-list",
+                                       "format_description" : "domain[;domain;...]",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    }
+                                 },
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "acmedomain[n]" : {
+                                 "description" : "ACME domain and validation plugin",
+                                 "format" : {
+                                    "alias" : {
+                                       "description" : "Alias for the Domain to verify ACME Challenge over DNS",
+                                       "format" : "pve-acme-alias",
+                                       "format_description" : "domain",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "domain" : {
+                                       "default_key" : 1,
+                                       "description" : "domain for this node's ACME certificate",
+                                       "format" : "pve-acme-domain",
+                                       "format_description" : "domain",
+                                       "type" : "string"
+                                    },
+                                    "plugin" : {
+                                       "default" : "standalone",
+                                       "description" : "The ACME plugin ID",
+                                       "format" : "pve-configid",
+                                       "format_description" : "name of the plugin configuration",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    }
+                                 },
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "description" : {
+                                 "description" : "Description for the Node. Shown in the web-interface node notes panel. This is saved as comment inside the configuration file.",
+                                 "maxLength" : 65536,
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "digest" : {
+                                 "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                 "maxLength" : 40,
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "startall-onboot-delay" : {
+                                 "default" : 0,
+                                 "description" : "Initial delay in seconds, before starting all the Virtual Guests with on-boot enabled.",
+                                 "maximum" : 300,
+                                 "minimum" : 0,
+                                 "optional" : 1,
+                                 "type" : "integer"
+                              },
+                              "wakeonlan" : {
+                                 "description" : "MAC address for wake on LAN",
+                                 "format" : "mac-addr",
+                                 "optional" : 1,
+                                 "type" : "string"
+                              }
+                           },
                            "type" : "object"
                         }
                      },
@@ -40246,8 +45318,10 @@ const apiSchema = [
                            "properties" : {
                               "commands" : {
                                  "description" : "JSON encoded array of commands.",
+                                 "format" : "pve-command-batch",
                                  "type" : "string",
-                                 "typetext" : "<string>"
+                                 "typetext" : "<string>",
+                                 "verbose_description" : "JSON encoded array of commands, where each command is an object with the following properties:\n  args:      <object>\n\n\t     A set of parameter names and their values.\n\n  method:    (GET|POST|PUT|DELETE)\n\n\t     A method related to the API endpoint (GET, POST etc.).\n\n  path:      <string>\n\n\t     A relative path to an API endpoint on this node.\n\n"
                               },
                               "node" : {
                                  "description" : "The cluster node name.",
@@ -40269,6 +45343,10 @@ const apiSchema = [
                         "protected" : 1,
                         "proxyto" : "node",
                         "returns" : {
+                           "items" : {
+                              "properties" : {},
+                              "type" : "object"
+                           },
                            "type" : "array"
                         }
                      }
@@ -40616,8 +45694,8 @@ const apiSchema = [
                                  "description" : "Run specific command or default to login.",
                                  "enum" : [
                                     "login",
-                                    "ceph_install",
-                                    "upgrade"
+                                    "upgrade",
+                                    "ceph_install"
                                  ],
                                  "optional" : 1,
                                  "type" : "string"
@@ -40712,8 +45790,8 @@ const apiSchema = [
                                  "description" : "Run specific command or default to login.",
                                  "enum" : [
                                     "login",
-                                    "ceph_install",
-                                    "upgrade"
+                                    "upgrade",
+                                    "ceph_install"
                                  ],
                                  "optional" : 1,
                                  "type" : "string"
@@ -40838,8 +45916,8 @@ const apiSchema = [
                                  "description" : "Run specific command or default to login.",
                                  "enum" : [
                                     "login",
-                                    "ceph_install",
-                                    "upgrade"
+                                    "upgrade",
+                                    "ceph_install"
                                  ],
                                  "optional" : 1,
                                  "type" : "string"
@@ -41020,16 +46098,108 @@ const apiSchema = [
                      }
                   },
                   "leaf" : 1,
-                  "path" : "/nodes/{node}/dns",
-                  "text" : "dns"
+                  "path" : "/nodes/{node}/dns",
+                  "text" : "dns"
+               },
+               {
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Read server time and time zone settings.",
+                        "method" : "GET",
+                        "name" : "time",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "node" : {
+                                 "description" : "The cluster node name.",
+                                 "format" : "pve-node",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/nodes/{node}",
+                              [
+                                 "Sys.Audit"
+                              ]
+                           ]
+                        },
+                        "proxyto" : "node",
+                        "returns" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "localtime" : {
+                                 "description" : "Seconds since 1970-01-01 00:00:00 (local time)",
+                                 "minimum" : 1297163644,
+                                 "renderer" : "timestamp_gmt",
+                                 "type" : "integer"
+                              },
+                              "time" : {
+                                 "description" : "Seconds since 1970-01-01 00:00:00 UTC.",
+                                 "minimum" : 1297163644,
+                                 "renderer" : "timestamp",
+                                 "type" : "integer"
+                              },
+                              "timezone" : {
+                                 "description" : "Time zone",
+                                 "type" : "string"
+                              }
+                           },
+                           "type" : "object"
+                        }
+                     },
+                     "PUT" : {
+                        "allowtoken" : 1,
+                        "description" : "Set time zone.",
+                        "method" : "PUT",
+                        "name" : "set_timezone",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "node" : {
+                                 "description" : "The cluster node name.",
+                                 "format" : "pve-node",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "timezone" : {
+                                 "description" : "Time zone. The file '/usr/share/zoneinfo/zone.tab' contains the list of valid names.",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "perm",
+                              "/nodes/{node}",
+                              [
+                                 "Sys.Modify"
+                              ]
+                           ]
+                        },
+                        "protected" : 1,
+                        "proxyto" : "node",
+                        "returns" : {
+                           "type" : "null"
+                        }
+                     }
+                  },
+                  "leaf" : 1,
+                  "path" : "/nodes/{node}/time",
+                  "text" : "time"
                },
                {
                   "info" : {
                      "GET" : {
                         "allowtoken" : 1,
-                        "description" : "Read server time and time zone settings.",
+                        "description" : "Get list of appliances.",
                         "method" : "GET",
-                        "name" : "time",
+                        "name" : "aplinfo",
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
@@ -41042,43 +46212,22 @@ const apiSchema = [
                            }
                         },
                         "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/nodes/{node}",
-                              [
-                                 "Sys.Audit"
-                              ]
-                           ]
+                           "user" : "all"
                         },
                         "proxyto" : "node",
                         "returns" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "localtime" : {
-                                 "description" : "Seconds since 1970-01-01 00:00:00 (local time)",
-                                 "minimum" : 1297163644,
-                                 "renderer" : "timestamp_gmt",
-                                 "type" : "integer"
-                              },
-                              "time" : {
-                                 "description" : "Seconds since 1970-01-01 00:00:00 UTC.",
-                                 "minimum" : 1297163644,
-                                 "renderer" : "timestamp",
-                                 "type" : "integer"
-                              },
-                              "timezone" : {
-                                 "description" : "Time zone",
-                                 "type" : "string"
-                              }
+                           "items" : {
+                              "properties" : {},
+                              "type" : "object"
                            },
-                           "type" : "object"
+                           "type" : "array"
                         }
                      },
-                     "PUT" : {
+                     "POST" : {
                         "allowtoken" : 1,
-                        "description" : "Set time zone.",
-                        "method" : "PUT",
-                        "name" : "set_timezone",
+                        "description" : "Download appliance templates.",
+                        "method" : "POST",
+                        "name" : "apl_download",
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
@@ -41088,8 +46237,15 @@ const apiSchema = [
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
-                              "timezone" : {
-                                 "description" : "Time zone. The file '/usr/share/zoneinfo/zone.tab' contains the list of valid names.",
+                              "storage" : {
+                                 "description" : "The storage where the template will be stored",
+                                 "format" : "pve-storage-id",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "template" : {
+                                 "description" : "The template which will downloaded",
+                                 "maxLength" : 255,
                                  "type" : "string",
                                  "typetext" : "<string>"
                               }
@@ -41098,58 +46254,30 @@ const apiSchema = [
                         "permissions" : {
                            "check" : [
                               "perm",
-                              "/nodes/{node}",
+                              "/storage/{storage}",
                               [
-                                 "Sys.Modify"
+                                 "Datastore.AllocateTemplate"
                               ]
                            ]
                         },
                         "protected" : 1,
                         "proxyto" : "node",
                         "returns" : {
-                           "type" : "null"
+                           "type" : "string"
                         }
                      }
                   },
                   "leaf" : 1,
-                  "path" : "/nodes/{node}/time",
-                  "text" : "time"
+                  "path" : "/nodes/{node}/aplinfo",
+                  "text" : "aplinfo"
                },
                {
                   "info" : {
                      "GET" : {
                         "allowtoken" : 1,
-                        "description" : "Get list of appliances.",
+                        "description" : "Query metadata of an URL: file size, file name and mime type.",
                         "method" : "GET",
-                        "name" : "aplinfo",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "user" : "all"
-                        },
-                        "proxyto" : "node",
-                        "returns" : {
-                           "items" : {
-                              "properties" : {},
-                              "type" : "object"
-                           },
-                           "type" : "array"
-                        }
-                     },
-                     "POST" : {
-                        "allowtoken" : 1,
-                        "description" : "Download appliance templates.",
-                        "method" : "POST",
-                        "name" : "apl_download",
+                        "name" : "query_url_metadata",
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
@@ -41159,39 +46287,54 @@ const apiSchema = [
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
-                              "storage" : {
-                                 "description" : "The storage where the template will be stored",
-                                 "format" : "pve-storage-id",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
+                              "url" : {
+                                 "description" : "The URL to query the metadata from.",
+                                 "pattern" : "https?://.*",
+                                 "type" : "string"
                               },
-                              "template" : {
-                                 "description" : "The template which will downloaded",
-                                 "maxLength" : 255,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
+                              "verify-certificates" : {
+                                 "default" : 1,
+                                 "description" : "If false, no SSL/TLS certificates will be verified.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
                               }
                            }
                         },
                         "permissions" : {
                            "check" : [
                               "perm",
-                              "/storage/{storage}",
+                              "/",
                               [
-                                 "Datastore.AllocateTemplate"
+                                 "Sys.Audit",
+                                 "Sys.Modify"
                               ]
                            ]
                         },
-                        "protected" : 1,
                         "proxyto" : "node",
                         "returns" : {
-                           "type" : "string"
+                           "properties" : {
+                              "filename" : {
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "mimetype" : {
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "size" : {
+                                 "optional" : 1,
+                                 "renderer" : "bytes",
+                                 "type" : "integer"
+                              }
+                           },
+                           "type" : "object"
                         }
                      }
                   },
                   "leaf" : 1,
-                  "path" : "/nodes/{node}/aplinfo",
-                  "text" : "aplinfo"
+                  "path" : "/nodes/{node}/query-url-metadata",
+                  "text" : "query-url-metadata"
                },
                {
                   "info" : {
@@ -41264,13 +46407,8 @@ const apiSchema = [
                            }
                         },
                         "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "VM.PowerMgmt"
-                              ]
-                           ]
+                           "description" : "The 'VM.PowerMgmt' permission is required on '/' or on '/vms/<ID>' for each ID passed via the 'vms' parameter.",
+                           "user" : "all"
                         },
                         "protected" : 1,
                         "proxyto" : "node",
@@ -41293,12 +46431,28 @@ const apiSchema = [
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
+                              "force-stop" : {
+                                 "default" : 1,
+                                 "description" : "Force a hard-stop after the timeout.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
                               "node" : {
                                  "description" : "The cluster node name.",
                                  "format" : "pve-node",
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
+                              "timeout" : {
+                                 "default" : 180,
+                                 "description" : "Timeout for each guest shutdown task. Depending on `force-stop`, the shutdown gets then simply aborted or a hard-stop is forced.",
+                                 "maximum" : 7200,
+                                 "minimum" : 0,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (0 - 7200)"
+                              },
                               "vms" : {
                                  "description" : "Only consider Guests with these IDs.",
                                  "format" : "pve-vmid-list",
@@ -41309,13 +46463,8 @@ const apiSchema = [
                            }
                         },
                         "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "VM.PowerMgmt"
-                              ]
-                           ]
+                           "description" : "The 'VM.PowerMgmt' permission is required on '/' or on '/vms/<ID>' for each ID passed via the 'vms' parameter.",
+                           "user" : "all"
                         },
                         "protected" : 1,
                         "proxyto" : "node",
@@ -41339,7 +46488,7 @@ const apiSchema = [
                            "additionalProperties" : 0,
                            "properties" : {
                               "maxworkers" : {
-                                 "description" : "Maximal number of parallel migration job. If not set use 'max_workers' from datacenter.cfg, one of both must be set!",
+                                 "description" : "Maximal number of parallel migration job. If not set, uses'max_workers' from datacenter.cfg. One of both must be set!",
                                  "minimum" : 1,
                                  "optional" : 1,
                                  "type" : "integer",
@@ -41373,13 +46522,8 @@ const apiSchema = [
                            }
                         },
                         "permissions" : {
-                           "check" : [
-                              "perm",
-                              "/",
-                              [
-                                 "VM.Migrate"
-                              ]
-                           ]
+                           "description" : "The 'VM.Migrate' permission is required on '/' or on '/vms/<ID>' for each ID passed via the 'vms' parameter.",
+                           "user" : "all"
                         },
                         "protected" : 1,
                         "proxyto" : "node",
@@ -41750,6 +46894,19 @@ const apiSchema = [
                            "type" : "string",
                            "typetext" : "<string>"
                         },
+                        "content-dirs" : {
+                           "description" : "Overrides for default content type directories.",
+                           "format" : "pve-dir-override-list",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "data-pool" : {
+                           "description" : "Data Pool (for erasure coding only)",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
                         "delete" : {
                            "description" : "A list of settings you want to delete.",
                            "format" : "pve-configid-list",
@@ -41797,6 +46954,13 @@ const apiSchema = [
                            "type" : "string",
                            "typetext" : "<string>"
                         },
+                        "fs-name" : {
+                           "description" : "The Ceph filesystem name.",
+                           "format" : "pve-configid",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
                         "fuse" : {
                            "description" : "Mount CephFS through FUSE.",
                            "optional" : 1,
@@ -41810,6 +46974,12 @@ const apiSchema = [
                            "type" : "string",
                            "typetext" : "<string>"
                         },
+                        "keyring" : {
+                           "description" : "Client keyring contents (for external clusters).",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
                         "krbd" : {
                            "description" : "Always access rbd through krbd kernel module.",
                            "optional" : 1,
@@ -41828,6 +46998,14 @@ const apiSchema = [
                            "type" : "string",
                            "typetext" : "<string>"
                         },
+                        "max-protected-backups" : {
+                           "default" : "Unlimited for users with Datastore.Allocate privilege, 5 for other users",
+                           "description" : "Maximal number of protected backups per guest. Use '-1' for unlimited.",
+                           "minimum" : -1,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (-1 - N)"
+                        },
                         "maxfiles" : {
                            "description" : "Deprecated: use 'prune-backups' instead. Maximal number of backup files per VM. Use '0' for unlimited.",
                            "minimum" : 0,
@@ -41857,7 +47035,7 @@ const apiSchema = [
                            "typetext" : "<string>"
                         },
                         "namespace" : {
-                           "description" : "RBD Namespace.",
+                           "description" : "Namespace.",
                            "optional" : 1,
                            "type" : "string",
                            "typetext" : "<string>"
@@ -41911,6 +47089,18 @@ const apiSchema = [
                            "type" : "integer",
                            "typetext" : "<integer> (1 - 65535)"
                         },
+                        "preallocation" : {
+                           "default" : "metadata",
+                           "description" : "Preallocation mode for raw and qcow2 images. Using 'metadata' on raw images results in preallocation=off.",
+                           "enum" : [
+                              "off",
+                              "metadata",
+                              "falloc",
+                              "full"
+                           ],
+                           "optional" : 1,
+                           "type" : "string"
+                        },
                         "prune-backups" : {
                            "description" : "The retention options with shorter intervals are processed first with --keep-last being the very first one. Each option covers a specific period of time. We say that backups within this period are covered by this option. The next option does not take care of already covered backups and only considers older backups.",
                            "format" : "prune-backups",
@@ -41952,11 +47142,15 @@ const apiSchema = [
                            "typetext" : "<boolean>"
                         },
                         "smbversion" : {
-                           "description" : "SMB protocol version",
+                           "default" : "default",
+                           "description" : "SMB protocol version. 'default' if not set, negotiates the highest SMB2+ version supported by both the client and server.",
                            "enum" : [
+                              "default",
                               "2.0",
                               "2.1",
-                              "3.0"
+                              "3",
+                              "3.0",
+                              "3.11"
                            ],
                            "optional" : 1,
                            "type" : "string"
@@ -42207,6 +47401,19 @@ const apiSchema = [
                      "type" : "string",
                      "typetext" : "<string>"
                   },
+                  "content-dirs" : {
+                     "description" : "Overrides for default content type directories.",
+                     "format" : "pve-dir-override-list",
+                     "optional" : 1,
+                     "type" : "string",
+                     "typetext" : "<string>"
+                  },
+                  "data-pool" : {
+                     "description" : "Data Pool (for erasure coding only)",
+                     "optional" : 1,
+                     "type" : "string",
+                     "typetext" : "<string>"
+                  },
                   "datastore" : {
                      "description" : "Proxmox Backup Server datastore name.",
                      "optional" : 1,
@@ -42252,6 +47459,13 @@ const apiSchema = [
                      "type" : "string",
                      "typetext" : "<string>"
                   },
+                  "fs-name" : {
+                     "description" : "The Ceph filesystem name.",
+                     "format" : "pve-configid",
+                     "optional" : 1,
+                     "type" : "string",
+                     "typetext" : "<string>"
+                  },
                   "fuse" : {
                      "description" : "Mount CephFS through FUSE.",
                      "optional" : 1,
@@ -42271,6 +47485,12 @@ const apiSchema = [
                      "type" : "string",
                      "typetext" : "<string>"
                   },
+                  "keyring" : {
+                     "description" : "Client keyring contents (for external clusters).",
+                     "optional" : 1,
+                     "type" : "string",
+                     "typetext" : "<string>"
+                  },
                   "krbd" : {
                      "description" : "Always access rbd through krbd kernel module.",
                      "optional" : 1,
@@ -42289,6 +47509,14 @@ const apiSchema = [
                      "type" : "string",
                      "typetext" : "<string>"
                   },
+                  "max-protected-backups" : {
+                     "default" : "Unlimited for users with Datastore.Allocate privilege, 5 for other users",
+                     "description" : "Maximal number of protected backups per guest. Use '-1' for unlimited.",
+                     "minimum" : -1,
+                     "optional" : 1,
+                     "type" : "integer",
+                     "typetext" : "<integer> (-1 - N)"
+                  },
                   "maxfiles" : {
                      "description" : "Deprecated: use 'prune-backups' instead. Maximal number of backup files per VM. Use '0' for unlimited.",
                      "minimum" : 0,
@@ -42318,7 +47546,7 @@ const apiSchema = [
                      "typetext" : "<string>"
                   },
                   "namespace" : {
-                     "description" : "RBD Namespace.",
+                     "description" : "Namespace.",
                      "optional" : 1,
                      "type" : "string",
                      "typetext" : "<string>"
@@ -42386,6 +47614,18 @@ const apiSchema = [
                      "type" : "string",
                      "typetext" : "<string>"
                   },
+                  "preallocation" : {
+                     "default" : "metadata",
+                     "description" : "Preallocation mode for raw and qcow2 images. Using 'metadata' on raw images results in preallocation=off.",
+                     "enum" : [
+                        "off",
+                        "metadata",
+                        "falloc",
+                        "full"
+                     ],
+                     "optional" : 1,
+                     "type" : "string"
+                  },
                   "prune-backups" : {
                      "description" : "The retention options with shorter intervals are processed first with --keep-last being the very first one. Each option covers a specific period of time. We say that backups within this period are covered by this option. The next option does not take care of already covered backups and only considers older backups.",
                      "format" : "prune-backups",
@@ -42433,11 +47673,15 @@ const apiSchema = [
                      "typetext" : "<boolean>"
                   },
                   "smbversion" : {
-                     "description" : "SMB protocol version",
+                     "default" : "default",
+                     "description" : "SMB protocol version. 'default' if not set, negotiates the highest SMB2+ version supported by both the client and server.",
                      "enum" : [
+                        "default",
                         "2.0",
                         "2.1",
-                        "3.0"
+                        "3",
+                        "3.0",
+                        "3.11"
                      ],
                      "optional" : 1,
                      "type" : "string"
@@ -42606,8 +47850,15 @@ const apiSchema = [
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
+                                    "multiple" : {
+                                       "default" : 0,
+                                       "description" : "Request all entries as an array.",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    },
                                     "userid" : {
-                                       "description" : "User ID",
+                                       "description" : "Full User ID, in the `name@realm` format.",
                                        "format" : "pve-userid",
                                        "maxLength" : 64,
                                        "type" : "string",
@@ -42644,8 +47895,24 @@ const apiSchema = [
                                        "optional" : 1,
                                        "type" : "string"
                                     },
+                                    "types" : {
+                                       "description" : "Array of the user configured TFA types, if any. Only available if 'multiple' was not passed.",
+                                       "items" : {
+                                          "description" : "A TFA type.",
+                                          "enum" : [
+                                             "totp",
+                                             "u2f",
+                                             "yubico",
+                                             "webauthn",
+                                             "recovedry"
+                                          ],
+                                          "type" : "string"
+                                       },
+                                       "optional" : 1,
+                                       "type" : "array"
+                                    },
                                     "user" : {
-                                       "description" : "The type of TFA the user has set, if any.",
+                                       "description" : "The type of TFA the user has set, if any. Only set if 'multiple' was not passed.",
                                        "enum" : [
                                           "oath",
                                           "u2f"
@@ -42680,7 +47947,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "userid" : {
-                                             "description" : "User ID",
+                                             "description" : "Full User ID, in the `name@realm` format.",
                                              "format" : "pve-userid",
                                              "maxLength" : 64,
                                              "type" : "string",
@@ -42696,8 +47963,7 @@ const apiSchema = [
                                              "self"
                                           ],
                                           [
-                                             "perm",
-                                             "/access/users/{userid}",
+                                             "userid-group",
                                              [
                                                 "User.Modify"
                                              ]
@@ -42723,7 +47989,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "userid" : {
-                                             "description" : "User ID",
+                                             "description" : "Full User ID, in the `name@realm` format.",
                                              "format" : "pve-userid",
                                              "maxLength" : 64,
                                              "type" : "string",
@@ -42739,8 +48005,7 @@ const apiSchema = [
                                              "self"
                                           ],
                                           [
-                                             "perm",
-                                             "/access/users/{userid}",
+                                             "userid-group",
                                              [
                                                 "User.Modify"
                                              ]
@@ -42804,7 +48069,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "userid" : {
-                                             "description" : "User ID",
+                                             "description" : "Full User ID, in the `name@realm` format.",
                                              "format" : "pve-userid",
                                              "maxLength" : 64,
                                              "type" : "string",
@@ -42820,8 +48085,7 @@ const apiSchema = [
                                              "self"
                                           ],
                                           [
-                                             "perm",
-                                             "/access/users/{userid}",
+                                             "userid-group",
                                              [
                                                 "User.Modify"
                                              ]
@@ -42901,7 +48165,7 @@ const apiSchema = [
                                              "type" : "string"
                                           },
                                           "userid" : {
-                                             "description" : "User ID",
+                                             "description" : "Full User ID, in the `name@realm` format.",
                                              "format" : "pve-userid",
                                              "maxLength" : 64,
                                              "type" : "string",
@@ -42917,8 +48181,7 @@ const apiSchema = [
                                              "self"
                                           ],
                                           [
-                                             "perm",
-                                             "/access/users/{userid}",
+                                             "userid-group",
                                              [
                                                 "User.Modify"
                                              ]
@@ -42966,7 +48229,7 @@ const apiSchema = [
                                  "additionalProperties" : 0,
                                  "properties" : {
                                     "userid" : {
-                                       "description" : "User ID",
+                                       "description" : "Full User ID, in the `name@realm` format.",
                                        "format" : "pve-userid",
                                        "maxLength" : 64,
                                        "type" : "string",
@@ -42982,8 +48245,7 @@ const apiSchema = [
                                        "self"
                                     ],
                                     [
-                                       "perm",
-                                       "/access/users/{userid}",
+                                       "userid-group",
                                        [
                                           "User.Modify"
                                        ]
@@ -43043,7 +48305,7 @@ const apiSchema = [
                            "additionalProperties" : 0,
                            "properties" : {
                               "userid" : {
-                                 "description" : "User ID",
+                                 "description" : "Full User ID, in the `name@realm` format.",
                                  "format" : "pve-userid",
                                  "maxLength" : 64,
                                  "type" : "string",
@@ -43080,7 +48342,7 @@ const apiSchema = [
                            "additionalProperties" : 0,
                            "properties" : {
                               "userid" : {
-                                 "description" : "User ID",
+                                 "description" : "Full User ID, in the `name@realm` format.",
                                  "format" : "pve-userid",
                                  "maxLength" : 64,
                                  "type" : "string",
@@ -43143,6 +48405,28 @@ const apiSchema = [
                                  "type" : "string"
                               },
                               "tokens" : {
+                                 "additionalProperties" : {
+                                    "properties" : {
+                                       "comment" : {
+                                          "optional" : 1,
+                                          "type" : "string"
+                                       },
+                                       "expire" : {
+                                          "default" : "same as user",
+                                          "description" : "API token expiration date (seconds since epoch). '0' means no expiration date.",
+                                          "minimum" : 0,
+                                          "optional" : 1,
+                                          "type" : "integer"
+                                       },
+                                       "privsep" : {
+                                          "default" : 1,
+                                          "description" : "Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.",
+                                          "optional" : 1,
+                                          "type" : "boolean"
+                                       }
+                                    },
+                                    "type" : "object"
+                                 },
                                  "optional" : 1,
                                  "type" : "object"
                               }
@@ -43212,7 +48496,7 @@ const apiSchema = [
                                  "typetext" : "<string>"
                               },
                               "userid" : {
-                                 "description" : "User ID",
+                                 "description" : "Full User ID, in the `name@realm` format.",
                                  "format" : "pve-userid",
                                  "maxLength" : 64,
                                  "type" : "string",
@@ -43227,7 +48511,7 @@ const apiSchema = [
                                  "User.Modify"
                               ],
                               "groups_param",
-                              1
+                              "update"
                            ]
                         },
                         "protected" : 1,
@@ -43349,7 +48633,7 @@ const apiSchema = [
                               "type" : "array"
                            },
                            "userid" : {
-                              "description" : "User ID",
+                              "description" : "Full User ID, in the `name@realm` format.",
                               "format" : "pve-userid",
                               "maxLength" : 64,
                               "type" : "string"
@@ -43430,7 +48714,7 @@ const apiSchema = [
                            "typetext" : "<string>"
                         },
                         "userid" : {
-                           "description" : "User ID",
+                           "description" : "Full User ID, in the `name@realm` format.",
                            "format" : "pve-userid",
                            "maxLength" : 64,
                            "type" : "string",
@@ -43451,7 +48735,7 @@ const apiSchema = [
                               "User.Modify"
                            ],
                            "groups_param",
-                           1
+                           "create"
                         ]
                      ],
                      "description" : "You need 'Realm.AllocateUser' on '/access/realm/<realm>' on the realm of user <userid>, and 'User.Modify' permissions to '/access/groups/<group>' for any group specified (or 'User.Modify' on '/access/groups' if you pass no groups."
@@ -43535,7 +48819,7 @@ const apiSchema = [
                               },
                               "members" : {
                                  "items" : {
-                                    "description" : "User ID",
+                                    "description" : "Full User ID, in the `name@realm` format.",
                                     "format" : "pve-userid",
                                     "maxLength" : 64,
                                     "type" : "string"
@@ -43777,6 +49061,10 @@ const apiSchema = [
                                  "optional" : 1,
                                  "type" : "boolean"
                               },
+                              "Sys.Incoming" : {
+                                 "optional" : 1,
+                                 "type" : "boolean"
+                              },
                               "Sys.Modify" : {
                                  "optional" : 1,
                                  "type" : "boolean"
@@ -44145,13 +49433,13 @@ const apiSchema = [
                                        "typetext" : "<boolean>"
                                     },
                                     "full" : {
-                                       "description" : "If set, uses the LDAP Directory as source of truth, deleting users or groups not returned from the sync. Otherwise only syncs information which is not already present, and does not deletes or modifies anything else.",
+                                       "description" : "DEPRECATED: use 'remove-vanished' instead. If set, uses the LDAP Directory as source of truth, deleting users or groups not returned from the sync and removing all locally modified properties of synced users. If not set, only syncs information which is present in the synced data, and does not delete or modify anything else.",
                                        "optional" : "1",
                                        "type" : "boolean",
                                        "typetext" : "<boolean>"
                                     },
                                     "purge" : {
-                                       "description" : "Remove ACLs for users or groups which were removed from the config during a sync.",
+                                       "description" : "DEPRECATED: use 'remove-vanished' instead. Remove ACLs for users or groups which were removed from the config during a sync.",
                                        "optional" : "1",
                                        "type" : "boolean",
                                        "typetext" : "<boolean>"
@@ -44163,6 +49451,14 @@ const apiSchema = [
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
+                                    "remove-vanished" : {
+                                       "default" : "none",
+                                       "description" : "A semicolon-seperated list of things to remove when they or the user vanishes during a sync. The following values are possible: 'entry' removes the user/group when not returned from the sync. 'properties' removes the set properties on existing user/group that do not appear in the source (even custom ones). 'acl' removes acls when the user/group is not returned from the sync. Instead of a list it also can be 'none' (the default).",
+                                       "optional" : "1",
+                                       "pattern" : "(?:(?:(?:acl|properties|entry);)*(?:acl|properties|entry))|none",
+                                       "type" : "string",
+                                       "typetext" : "([acl];[properties];[entry])|none"
+                                    },
                                     "scope" : {
                                        "description" : "Select what to sync.",
                                        "enum" : [
@@ -44179,11 +49475,15 @@ const apiSchema = [
                                  "check" : [
                                     "and",
                                     [
-                                       "userid-param",
-                                       "Realm.AllocateUser"
+                                       "perm",
+                                       "/access/realm/{realm}",
+                                       [
+                                          "Realm.AllocateUser"
+                                       ]
                                     ],
                                     [
-                                       "userid-group",
+                                       "perm",
+                                       "/access/groups",
                                        [
                                           "User.Modify"
                                        ]
@@ -44274,6 +49574,12 @@ const apiSchema = [
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
+                              "acr-values" : {
+                                 "description" : "Specifies the Authentication Context Class Reference values that theAuthorization Server is being requested to use for the Auth Request.",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
                               "autocreate" : {
                                  "default" : 0,
                                  "description" : "Automatically create users if they do not exist.",
@@ -44285,14 +49591,14 @@ const apiSchema = [
                                  "description" : "LDAP base domain name",
                                  "maxLength" : 256,
                                  "optional" : 1,
-                                 "pattern" : "\\w+=[^,]+(,\\s*\\w+=[^,]+)*",
+                                 "pattern" : "(?^:\\w+=(?^:(\"[^\"]+\"|[^ ,+\"/<>;=#][^,+\"/<>;=]*[^ ,+\"/<>;=]|[^ ,+\"/<>;=#]))(,\\s*\\w+=(?^:(\"[^\"]+\"|[^ ,+\"/<>;=#][^,+\"/<>;=]*[^ ,+\"/<>;=]|[^ ,+\"/<>;=#])))*)",
                                  "type" : "string"
                               },
                               "bind_dn" : {
                                  "description" : "LDAP bind domain name",
                                  "maxLength" : 256,
                                  "optional" : 1,
-                                 "pattern" : "\\w+=[^,]+(,\\s*\\w+=[^,]+)*",
+                                 "pattern" : "(?^:\\w+=(?^:(\"[^\"]+\"|[^ ,+\"/<>;=#][^,+\"/<>;=]*[^ ,+\"/<>;=]|[^ ,+\"/<>;=#]))(,\\s*\\w+=(?^:(\"[^\"]+\"|[^ ,+\"/<>;=#][^,+\"/<>;=]*[^ ,+\"/<>;=]|[^ ,+\"/<>;=#])))*)",
                                  "type" : "string"
                               },
                               "capath" : {
@@ -44389,7 +49695,7 @@ 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+=[^,]+)*",
+                                 "pattern" : "(?^:\\w+=(?^:(\"[^\"]+\"|[^ ,+\"/<>;=#][^,+\"/<>;=]*[^ ,+\"/<>;=]|[^ ,+\"/<>;=#]))(,\\s*\\w+=(?^:(\"[^\"]+\"|[^ ,+\"/<>;=#][^,+\"/<>;=]*[^ ,+\"/<>;=]|[^ ,+\"/<>;=#])))*)",
                                  "type" : "string"
                               },
                               "group_filter" : {
@@ -44439,6 +49745,12 @@ const apiSchema = [
                                  "type" : "integer",
                                  "typetext" : "<integer> (1 - 65535)"
                               },
+                              "prompt" : {
+                                 "description" : "Specifies whether the Authorization Server prompts the End-User for reauthentication and consent.",
+                                 "optional" : 1,
+                                 "pattern" : "(?:none|login|consent|select_account|\\S+)",
+                                 "type" : "string"
+                              },
                               "realm" : {
                                  "description" : "Authentication domain ID",
                                  "format" : "pve-realm",
@@ -44446,6 +49758,13 @@ const apiSchema = [
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
+                              "scopes" : {
+                                 "default" : "email profile",
+                                 "description" : "Specifies the scopes (user details) that should be authorized and returned, for example 'email' or 'profile'.",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
                               "secure" : {
                                  "description" : "Use secure LDAPS protocol. DEPRECATED: use 'mode' instead.",
                                  "optional" : 1,
@@ -44484,7 +49803,7 @@ const apiSchema = [
                                  "format" : "realm-sync-options",
                                  "optional" : 1,
                                  "type" : "string",
-                                 "typetext" : "[enable-new=<1|0>] [,full=<1|0>] [,purge=<1|0>] [,scope=<users|groups|both>]"
+                                 "typetext" : "[enable-new=<1|0>] [,full=<1|0>] [,purge=<1|0>] [,remove-vanished=([acl];[properties];[entry])|none] [,scope=<users|groups|both>]"
                               },
                               "sync_attributes" : {
                                  "description" : "Comma separated list of key=value pairs for specifying which LDAP attributes map to which PVE user field. For example, to map the LDAP attribute 'mail' to PVEs 'email', write  'email=mail'. By default, each PVE user field is represented  by an LDAP attribute of the same name.",
@@ -44601,6 +49920,12 @@ const apiSchema = [
                   "parameters" : {
                      "additionalProperties" : 0,
                      "properties" : {
+                        "acr-values" : {
+                           "description" : "Specifies the Authentication Context Class Reference values that theAuthorization Server is being requested to use for the Auth Request.",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
                         "autocreate" : {
                            "default" : 0,
                            "description" : "Automatically create users if they do not exist.",
@@ -44612,14 +49937,14 @@ const apiSchema = [
                            "description" : "LDAP base domain name",
                            "maxLength" : 256,
                            "optional" : 1,
-                           "pattern" : "\\w+=[^,]+(,\\s*\\w+=[^,]+)*",
+                           "pattern" : "(?^:\\w+=(?^:(\"[^\"]+\"|[^ ,+\"/<>;=#][^,+\"/<>;=]*[^ ,+\"/<>;=]|[^ ,+\"/<>;=#]))(,\\s*\\w+=(?^:(\"[^\"]+\"|[^ ,+\"/<>;=#][^,+\"/<>;=]*[^ ,+\"/<>;=]|[^ ,+\"/<>;=#])))*)",
                            "type" : "string"
                         },
                         "bind_dn" : {
                            "description" : "LDAP bind domain name",
                            "maxLength" : 256,
                            "optional" : 1,
-                           "pattern" : "\\w+=[^,]+(,\\s*\\w+=[^,]+)*",
+                           "pattern" : "(?^:\\w+=(?^:(\"[^\"]+\"|[^ ,+\"/<>;=#][^,+\"/<>;=]*[^ ,+\"/<>;=]|[^ ,+\"/<>;=#]))(,\\s*\\w+=(?^:(\"[^\"]+\"|[^ ,+\"/<>;=#][^,+\"/<>;=]*[^ ,+\"/<>;=]|[^ ,+\"/<>;=#])))*)",
                            "type" : "string"
                         },
                         "capath" : {
@@ -44701,7 +50026,7 @@ 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+=[^,]+)*",
+                           "pattern" : "(?^:\\w+=(?^:(\"[^\"]+\"|[^ ,+\"/<>;=#][^,+\"/<>;=]*[^ ,+\"/<>;=]|[^ ,+\"/<>;=#]))(,\\s*\\w+=(?^:(\"[^\"]+\"|[^ ,+\"/<>;=#][^,+\"/<>;=]*[^ ,+\"/<>;=]|[^ ,+\"/<>;=#])))*)",
                            "type" : "string"
                         },
                         "group_filter" : {
@@ -44751,6 +50076,12 @@ const apiSchema = [
                            "type" : "integer",
                            "typetext" : "<integer> (1 - 65535)"
                         },
+                        "prompt" : {
+                           "description" : "Specifies whether the Authorization Server prompts the End-User for reauthentication and consent.",
+                           "optional" : 1,
+                           "pattern" : "(?:none|login|consent|select_account|\\S+)",
+                           "type" : "string"
+                        },
                         "realm" : {
                            "description" : "Authentication domain ID",
                            "format" : "pve-realm",
@@ -44758,6 +50089,13 @@ const apiSchema = [
                            "type" : "string",
                            "typetext" : "<string>"
                         },
+                        "scopes" : {
+                           "default" : "email profile",
+                           "description" : "Specifies the scopes (user details) that should be authorized and returned, for example 'email' or 'profile'.",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
                         "secure" : {
                            "description" : "Use secure LDAPS protocol. DEPRECATED: use 'mode' instead.",
                            "optional" : 1,
@@ -44796,7 +50134,7 @@ const apiSchema = [
                            "format" : "realm-sync-options",
                            "optional" : 1,
                            "type" : "string",
-                           "typetext" : "[enable-new=<1|0>] [,full=<1|0>] [,purge=<1|0>] [,scope=<users|groups|both>]"
+                           "typetext" : "[enable-new=<1|0>] [,full=<1|0>] [,purge=<1|0>] [,remove-vanished=([acl];[properties];[entry])|none] [,scope=<users|groups|both>]"
                         },
                         "sync_attributes" : {
                            "description" : "Comma separated list of key=value pairs for specifying which LDAP attributes map to which PVE user field. For example, to map the LDAP attribute 'mail' to PVEs 'email', write  'email=mail'. By default, each PVE user field is represented  by an LDAP attribute of the same name.",
@@ -44840,13 +50178,9 @@ const apiSchema = [
                         },
                         "username-claim" : {
                            "description" : "OpenID claim used to generate the unique username.",
-                           "enum" : [
-                              "subject",
-                              "username",
-                              "email"
-                           ],
                            "optional" : 1,
-                           "type" : "string"
+                           "type" : "string",
+                           "typetext" : "<string>"
                         },
                         "verify" : {
                            "default" : 0,
@@ -44930,7 +50264,7 @@ const apiSchema = [
                            "properties" : {
                               "code" : {
                                  "description" : "OpenId authorization code.",
-                                 "maxLength" : 1024,
+                                 "maxLength" : 4096,
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
@@ -45014,6 +50348,487 @@ const apiSchema = [
             "path" : "/access/openid",
             "text" : "openid"
          },
+         {
+            "children" : [
+               {
+                  "children" : [
+                     {
+                        "info" : {
+                           "DELETE" : {
+                              "allowtoken" : 0,
+                              "description" : "Delete a TFA entry by ID.",
+                              "method" : "DELETE",
+                              "name" : "delete_tfa",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "id" : {
+                                       "description" : "A TFA entry id.",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "password" : {
+                                       "description" : "The current password.",
+                                       "maxLength" : 64,
+                                       "minLength" : 5,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "userid" : {
+                                       "description" : "Full User ID, in the `name@realm` format.",
+                                       "format" : "pve-userid",
+                                       "maxLength" : 64,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "or",
+                                    [
+                                       "userid-param",
+                                       "self"
+                                    ],
+                                    [
+                                       "userid-group",
+                                       [
+                                          "User.Modify"
+                                       ]
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           },
+                           "GET" : {
+                              "allowtoken" : 0,
+                              "description" : "Fetch a requested TFA entry if present.",
+                              "method" : "GET",
+                              "name" : "get_tfa_entry",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "id" : {
+                                       "description" : "A TFA entry id.",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "userid" : {
+                                       "description" : "Full User ID, in the `name@realm` format.",
+                                       "format" : "pve-userid",
+                                       "maxLength" : 64,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "or",
+                                    [
+                                       "userid-param",
+                                       "self"
+                                    ],
+                                    [
+                                       "userid-group",
+                                       [
+                                          "User.Modify",
+                                          "Sys.Audit"
+                                       ]
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
+                              "returns" : {
+                                 "description" : "TFA Entry.",
+                                 "properties" : {
+                                    "created" : {
+                                       "description" : "Creation time of this entry as unix epoch.",
+                                       "type" : "integer"
+                                    },
+                                    "description" : {
+                                       "description" : "User chosen description for this entry.",
+                                       "type" : "string"
+                                    },
+                                    "enable" : {
+                                       "default" : 1,
+                                       "description" : "Whether this TFA entry is currently enabled.",
+                                       "optional" : 1,
+                                       "type" : "boolean"
+                                    },
+                                    "id" : {
+                                       "description" : "The id used to reference this entry.",
+                                       "type" : "string"
+                                    },
+                                    "type" : {
+                                       "description" : "TFA Entry Type.",
+                                       "enum" : [
+                                          "totp",
+                                          "u2f",
+                                          "webauthn",
+                                          "recovery",
+                                          "yubico"
+                                       ],
+                                       "type" : "string"
+                                    }
+                                 },
+                                 "type" : "object"
+                              }
+                           },
+                           "PUT" : {
+                              "allowtoken" : 0,
+                              "description" : "Add a TFA entry for a user.",
+                              "method" : "PUT",
+                              "name" : "update_tfa_entry",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "description" : {
+                                       "description" : "A description to distinguish multiple entries from one another",
+                                       "maxLength" : 255,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "enable" : {
+                                       "description" : "Whether the entry should be enabled for login.",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    },
+                                    "id" : {
+                                       "description" : "A TFA entry id.",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "password" : {
+                                       "description" : "The current password.",
+                                       "maxLength" : 64,
+                                       "minLength" : 5,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "userid" : {
+                                       "description" : "Full User ID, in the `name@realm` format.",
+                                       "format" : "pve-userid",
+                                       "maxLength" : 64,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "or",
+                                    [
+                                       "userid-param",
+                                       "self"
+                                    ],
+                                    [
+                                       "userid-group",
+                                       [
+                                          "User.Modify"
+                                       ]
+                                    ]
+                                 ]
+                              },
+                              "protected" : 1,
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           }
+                        },
+                        "leaf" : 1,
+                        "path" : "/access/tfa/{userid}/{id}",
+                        "text" : "{id}"
+                     }
+                  ],
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 0,
+                        "description" : "List TFA configurations of users.",
+                        "method" : "GET",
+                        "name" : "list_user_tfa",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "userid" : {
+                                 "description" : "Full User ID, in the `name@realm` format.",
+                                 "format" : "pve-userid",
+                                 "maxLength" : 64,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "or",
+                              [
+                                 "userid-param",
+                                 "self"
+                              ],
+                              [
+                                 "userid-group",
+                                 [
+                                    "User.Modify",
+                                    "Sys.Audit"
+                                 ]
+                              ]
+                           ]
+                        },
+                        "protected" : 1,
+                        "returns" : {
+                           "description" : "A list of the user's TFA entries.",
+                           "items" : {
+                              "description" : "TFA Entry.",
+                              "properties" : {
+                                 "created" : {
+                                    "description" : "Creation time of this entry as unix epoch.",
+                                    "type" : "integer"
+                                 },
+                                 "description" : {
+                                    "description" : "User chosen description for this entry.",
+                                    "type" : "string"
+                                 },
+                                 "enable" : {
+                                    "default" : 1,
+                                    "description" : "Whether this TFA entry is currently enabled.",
+                                    "optional" : 1,
+                                    "type" : "boolean"
+                                 },
+                                 "id" : {
+                                    "description" : "The id used to reference this entry.",
+                                    "type" : "string"
+                                 },
+                                 "type" : {
+                                    "description" : "TFA Entry Type.",
+                                    "enum" : [
+                                       "totp",
+                                       "u2f",
+                                       "webauthn",
+                                       "recovery",
+                                       "yubico"
+                                    ],
+                                    "type" : "string"
+                                 }
+                              },
+                              "type" : "object"
+                           },
+                           "type" : "array"
+                        }
+                     },
+                     "POST" : {
+                        "allowtoken" : 0,
+                        "description" : "Add a TFA entry for a user.",
+                        "method" : "POST",
+                        "name" : "add_tfa_entry",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "challenge" : {
+                                 "description" : "When responding to a u2f challenge: the original challenge string",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "description" : {
+                                 "description" : "A description to distinguish multiple entries from one another",
+                                 "maxLength" : 255,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "password" : {
+                                 "description" : "The current password.",
+                                 "maxLength" : 64,
+                                 "minLength" : 5,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "totp" : {
+                                 "description" : "A totp URI.",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "type" : {
+                                 "description" : "TFA Entry Type.",
+                                 "enum" : [
+                                    "totp",
+                                    "u2f",
+                                    "webauthn",
+                                    "recovery",
+                                    "yubico"
+                                 ],
+                                 "type" : "string"
+                              },
+                              "userid" : {
+                                 "description" : "Full User ID, in the `name@realm` format.",
+                                 "format" : "pve-userid",
+                                 "maxLength" : 64,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "value" : {
+                                 "description" : "The current value for the provided totp URI, or a Webauthn/U2F challenge response",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "or",
+                              [
+                                 "userid-param",
+                                 "self"
+                              ],
+                              [
+                                 "userid-group",
+                                 [
+                                    "User.Modify"
+                                 ]
+                              ]
+                           ]
+                        },
+                        "protected" : 1,
+                        "returns" : {
+                           "properties" : {
+                              "challenge" : {
+                                 "description" : "When adding u2f entries, this contains a challenge the user must respond to in order to finish the registration.",
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "id" : {
+                                 "description" : "The id of a newly added TFA entry.",
+                                 "type" : "string"
+                              },
+                              "recovery" : {
+                                 "description" : "When adding recovery codes, this contains the list of codes to be displayed to the user",
+                                 "items" : {
+                                    "description" : "A recovery entry.",
+                                    "type" : "string"
+                                 },
+                                 "optional" : 1,
+                                 "type" : "array"
+                              }
+                           },
+                           "type" : "object"
+                        }
+                     }
+                  },
+                  "leaf" : 0,
+                  "path" : "/access/tfa/{userid}",
+                  "text" : "{userid}"
+               }
+            ],
+            "info" : {
+               "GET" : {
+                  "allowtoken" : 0,
+                  "description" : "List TFA configurations of users.",
+                  "method" : "GET",
+                  "name" : "list_tfa",
+                  "parameters" : {
+                     "additionalProperties" : 0
+                  },
+                  "permissions" : {
+                     "description" : "Returns all or just the logged-in user, depending on privileges.",
+                     "user" : "all"
+                  },
+                  "protected" : 1,
+                  "returns" : {
+                     "description" : "The list tuples of user and TFA entries.",
+                     "items" : {
+                        "properties" : {
+                           "entries" : {
+                              "items" : {
+                                 "description" : "TFA Entry.",
+                                 "properties" : {
+                                    "created" : {
+                                       "description" : "Creation time of this entry as unix epoch.",
+                                       "type" : "integer"
+                                    },
+                                    "description" : {
+                                       "description" : "User chosen description for this entry.",
+                                       "type" : "string"
+                                    },
+                                    "enable" : {
+                                       "default" : 1,
+                                       "description" : "Whether this TFA entry is currently enabled.",
+                                       "optional" : 1,
+                                       "type" : "boolean"
+                                    },
+                                    "id" : {
+                                       "description" : "The id used to reference this entry.",
+                                       "type" : "string"
+                                    },
+                                    "type" : {
+                                       "description" : "TFA Entry Type.",
+                                       "enum" : [
+                                          "totp",
+                                          "u2f",
+                                          "webauthn",
+                                          "recovery",
+                                          "yubico"
+                                       ],
+                                       "type" : "string"
+                                    }
+                                 },
+                                 "type" : "object"
+                              },
+                              "type" : "array"
+                           },
+                           "userid" : {
+                              "description" : "User this entry belongs to.",
+                              "type" : "string"
+                           }
+                        },
+                        "type" : "object"
+                     },
+                     "type" : "array"
+                  }
+               },
+               "POST" : {
+                  "allowtoken" : 0,
+                  "description" : "Finish a u2f challenge.",
+                  "method" : "POST",
+                  "name" : "verify_tfa",
+                  "parameters" : {
+                     "additionalProperties" : 0,
+                     "properties" : {
+                        "response" : {
+                           "description" : "The response to the current authentication challenge.",
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        }
+                     }
+                  },
+                  "permissions" : {
+                     "user" : "all"
+                  },
+                  "protected" : 1,
+                  "returns" : {
+                     "properties" : {
+                        "ticket" : {
+                           "type" : "string"
+                        }
+                     },
+                     "type" : "object"
+                  }
+               }
+            },
+            "leaf" : 0,
+            "path" : "/access/tfa",
+            "text" : "tfa"
+         },
          {
             "info" : {
                "GET" : {
@@ -45039,6 +50854,13 @@ const apiSchema = [
                   "parameters" : {
                      "additionalProperties" : 0,
                      "properties" : {
+                        "new-format" : {
+                           "default" : 0,
+                           "description" : "With webauthn the format of half-authenticated tickts changed. New clients should pass 1 here and not worry about the old format. The old format is deprecated and will be retired with PVE-8.0",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
                         "otp" : {
                            "description" : "One-time password for Two-factor authentication.",
                            "optional" : 1,
@@ -45075,6 +50897,12 @@ const apiSchema = [
                            "type" : "string",
                            "typetext" : "<string>"
                         },
+                        "tfa-challenge" : {
+                           "description" : "The signed TFA challenge string the user wants to respond to.",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
                         "username" : {
                            "description" : "User name",
                            "maxLength" : 64,
@@ -45132,7 +50960,7 @@ const apiSchema = [
                            "typetext" : "<string>"
                         },
                         "userid" : {
-                           "description" : "User ID",
+                           "description" : "Full User ID, in the `name@realm` format.",
                            "format" : "pve-userid",
                            "maxLength" : 64,
                            "type" : "string",
@@ -45173,124 +51001,6 @@ const apiSchema = [
             "path" : "/access/password",
             "text" : "password"
          },
-         {
-            "info" : {
-               "POST" : {
-                  "allowtoken" : 0,
-                  "description" : "Finish a u2f challenge.",
-                  "method" : "POST",
-                  "name" : "verify_tfa",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "response" : {
-                           "description" : "The response to the current authentication challenge.",
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        }
-                     }
-                  },
-                  "permissions" : {
-                     "user" : "all"
-                  },
-                  "protected" : 1,
-                  "returns" : {
-                     "properties" : {
-                        "ticket" : {
-                           "type" : "string"
-                        }
-                     },
-                     "type" : "object"
-                  }
-               },
-               "PUT" : {
-                  "allowtoken" : 0,
-                  "description" : "Change user u2f authentication.",
-                  "method" : "PUT",
-                  "name" : "change_tfa",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "action" : {
-                           "description" : "The action to perform",
-                           "enum" : [
-                              "delete",
-                              "new",
-                              "confirm"
-                           ],
-                           "type" : "string"
-                        },
-                        "config" : {
-                           "description" : "A TFA configuration. This must currently be of type TOTP of not set at all.",
-                           "format" : "pve-tfa-config",
-                           "maxLength" : 128,
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "type=<TFATYPE> [,digits=<COUNT>] [,id=<ID>] [,key=<KEY>] [,step=<SECONDS>] [,url=<URL>]"
-                        },
-                        "key" : {
-                           "description" : "When adding TOTP, the shared secret value.",
-                           "format" : "pve-tfa-secret",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "password" : {
-                           "description" : "The current password.",
-                           "maxLength" : 64,
-                           "minLength" : 5,
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "response" : {
-                           "description" : "Either the the response to the current u2f registration challenge, or, when adding TOTP, the currently valid TOTP value.",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "userid" : {
-                           "description" : "User ID",
-                           "format" : "pve-userid",
-                           "maxLength" : 64,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        }
-                     }
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "or",
-                        [
-                           "userid-param",
-                           "self"
-                        ],
-                        [
-                           "and",
-                           [
-                              "userid-param",
-                              "Realm.AllocateUser"
-                           ],
-                           [
-                              "userid-group",
-                              [
-                                 "User.Modify"
-                              ]
-                           ]
-                        ]
-                     ],
-                     "description" : "A user can change their own u2f or totp token."
-                  },
-                  "protected" : 1,
-                  "returns" : {
-                     "type" : "object"
-                  }
-               }
-            },
-            "leaf" : 1,
-            "path" : "/access/tfa",
-            "text" : "tfa"
-         },
          {
             "info" : {
                "GET" : {
@@ -45411,6 +51121,15 @@ const apiSchema = [
                            "format" : "pve-poolid",
                            "type" : "string",
                            "typetext" : "<string>"
+                        },
+                        "type" : {
+                           "enum" : [
+                              "qemu",
+                              "lxc",
+                              "storage"
+                           ],
+                           "optional" : 1,
+                           "type" : "string"
                         }
                      }
                   },
@@ -45601,7 +51320,7 @@ const apiSchema = [
       "info" : {
          "GET" : {
             "allowtoken" : 1,
-            "description" : "API version details. The result also includes the global datacenter confguration.",
+            "description" : "API version details, including some parts of the global datacenter config.",
             "method" : "GET",
             "name" : "version",
             "parameters" : {
@@ -45612,13 +51331,27 @@ const apiSchema = [
             },
             "returns" : {
                "properties" : {
+                  "console" : {
+                     "description" : "The default console viewer to use.",
+                     "enum" : [
+                        "applet",
+                        "vv",
+                        "html5",
+                        "xtermjs"
+                     ],
+                     "optional" : 1,
+                     "type" : "string"
+                  },
                   "release" : {
+                     "description" : "The current Proxmox VE point release in `x.y` format.",
                      "type" : "string"
                   },
                   "repoid" : {
+                     "description" : "The short git revision from which this version was build.",
                      "type" : "string"
                   },
                   "version" : {
+                     "description" : "The full pve-manager package version of this node.",
                      "type" : "string"
                   }
                },