]> git.proxmox.com Git - pve-docs.git/blobdiff - api-viewer/apidata.js
update static/schema information
[pve-docs.git] / api-viewer / apidata.js
index 5b793ee87d486ccd5ebb2f3fa4498a209ae111d3..1d4f7a32e9ad3c0ce3d35d6a7506bcfa45a92208 100644 (file)
@@ -1162,6 +1162,7 @@ const apiSchema = [
                               ]
                            ]
                         },
+                        "protected" : 1,
                         "returns" : {
                            "type" : "object"
                         }
@@ -3692,6 +3693,13 @@ 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.",
+                                 "optional" : 1,
+                                 "requires" : "storage",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
                               "pigz" : {
                                  "default" : 0,
                                  "description" : "Use pigz instead of gzip when N>0. N=1 uses half of cores, N>1 uses N as thread count.",
@@ -3705,6 +3713,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.",
@@ -3727,6 +3742,13 @@ 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",
@@ -4003,6 +4025,13 @@ 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.",
+                           "optional" : 1,
+                           "requires" : "storage",
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
                         "pigz" : {
                            "default" : 0,
                            "description" : "Use pigz instead of gzip when N>0. N=1 uses half of cores, N>1 uses N as thread count.",
@@ -4016,6 +4045,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.",
@@ -4038,6 +4074,13 @@ 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",
@@ -6991,6 +7034,12 @@ const apiSchema = [
                                        "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,
@@ -7050,6 +7099,13 @@ const apiSchema = [
                                        "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,
@@ -7089,6 +7145,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,
@@ -7251,6 +7314,12 @@ const apiSchema = [
                                  "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,
@@ -7295,6 +7364,13 @@ const apiSchema = [
                                  "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,
@@ -7334,6 +7410,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,
@@ -7482,9 +7565,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.",
@@ -7636,9 +7726,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.",
@@ -8715,6 +8812,30 @@ 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>]"
+                        },
                         "u2f" : {
                            "description" : "u2f",
                            "format" : {
@@ -8874,7 +8995,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" : {
@@ -10398,7 +10519,7 @@ const apiSchema = [
                                                    "type" : "string"
                                                 },
                                                 "macfilter" : {
-                                                   "default" : 0,
+                                                   "default" : 1,
                                                    "description" : "Enable/disable MAC address filter.",
                                                    "optional" : 1,
                                                    "type" : "boolean"
@@ -10513,7 +10634,7 @@ const apiSchema = [
                                                    "type" : "string"
                                                 },
                                                 "macfilter" : {
-                                                   "default" : 0,
+                                                   "default" : 1,
                                                    "description" : "Enable/disable MAC address filter.",
                                                    "optional" : 1,
                                                    "type" : "boolean",
@@ -11991,6 +12112,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",
@@ -12511,7 +12639,7 @@ const apiSchema = [
                                              "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."
@@ -12527,7 +12655,7 @@ 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",
@@ -12616,7 +12744,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.",
@@ -12973,7 +13101,7 @@ const apiSchema = [
                                           },
                                           "keyboard" : {
                                              "default" : null,
-                                             "description" : "Keyboard layout for VNC server. The 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",
@@ -13066,7 +13194,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"
@@ -13076,9 +13204,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" : {
@@ -13331,7 +13459,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.",
@@ -13648,7 +13776,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.",
@@ -14001,7 +14129,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"
                                           },
@@ -14112,7 +14240,7 @@ const apiSchema = [
                                              "type" : "boolean"
                                           },
                                           "tpmstate0" : {
-                                             "description" : "Configure a Disk for storing TPM state. 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 size of 4 MiB will always be used instead. The format is also fixed to 'raw'.",
+                                             "description" : "Configure a Disk for storing TPM state. The format is fixed to 'raw'.",
                                              "format" : {
                                                 "file" : {
                                                    "default_key" : 1,
@@ -14216,6 +14344,7 @@ const apiSchema = [
                                                       "serial3",
                                                       "std",
                                                       "virtio",
+                                                      "virtio-gl",
                                                       "vmware"
                                                    ],
                                                    "optional" : 1,
@@ -14227,7 +14356,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.",
@@ -14766,10 +14895,10 @@ const apiSchema = [
                                              "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" : {
@@ -14794,7 +14923,7 @@ 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",
@@ -14827,6 +14956,13 @@ 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.",
@@ -14846,7 +14982,7 @@ const apiSchema = [
                                              },
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "[file=]<volume> [,efitype=<2m|4m>] [,format=<enum>] [,pre-enrolled-keys=<1|0>] [,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.",
@@ -14873,7 +15009,7 @@ 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" : {
@@ -14895,7 +15031,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.",
@@ -15014,6 +15150,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",
@@ -15218,7 +15361,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",
@@ -15256,7 +15399,7 @@ const apiSchema = [
                                           },
                                           "keyboard" : {
                                              "default" : null,
-                                             "description" : "Keyboard layout for VNC server. The 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",
@@ -15355,7 +15498,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",
@@ -15366,9 +15509,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" : {
@@ -15641,7 +15784,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.",
@@ -15760,6 +15903,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",
@@ -15956,10 +16106,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.",
@@ -16078,6 +16228,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",
@@ -16296,7 +16453,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>] [,ro=<1|0>] [,scsiblock=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
+                                             "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,import-from=<source volume>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,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",
@@ -16313,7 +16470,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>"
@@ -16441,7 +16598,7 @@ const apiSchema = [
                                              "typetext" : "<boolean>"
                                           },
                                           "tpmstate0" : {
-                                             "description" : "Configure a Disk for storing TPM state. 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 size of 4 MiB will always be used instead. The format is also fixed to 'raw'.",
+                                             "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,
@@ -16450,6 +16607,13 @@ const apiSchema = [
                                                    "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",
@@ -16473,7 +16637,7 @@ const apiSchema = [
                                              },
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "[file=]<volume> [,size=<DiskSize>] [,version=<v1.2|v2.0>]"
+                                             "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.",
@@ -16549,6 +16713,7 @@ const apiSchema = [
                                                       "serial3",
                                                       "std",
                                                       "virtio",
+                                                      "virtio-gl",
                                                       "vmware"
                                                    ],
                                                    "optional" : 1,
@@ -16561,7 +16726,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.",
@@ -16680,6 +16845,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",
@@ -16874,7 +17046,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>] [,ro=<1|0>] [,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)",
@@ -17125,10 +17297,10 @@ const apiSchema = [
                                              "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" : {
@@ -17153,7 +17325,7 @@ 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",
@@ -17186,6 +17358,13 @@ 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.",
@@ -17205,7 +17384,7 @@ const apiSchema = [
                                              },
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "[file=]<volume> [,efitype=<2m|4m>] [,format=<enum>] [,pre-enrolled-keys=<1|0>] [,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.",
@@ -17232,7 +17411,7 @@ 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" : {
@@ -17254,7 +17433,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.",
@@ -17373,6 +17552,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",
@@ -17577,7 +17763,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",
@@ -17615,7 +17801,7 @@ const apiSchema = [
                                           },
                                           "keyboard" : {
                                              "default" : null,
-                                             "description" : "Keyboard layout for VNC server. The 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",
@@ -17714,7 +17900,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",
@@ -17725,9 +17911,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" : {
@@ -18000,7 +18186,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.",
@@ -18119,6 +18305,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",
@@ -18315,10 +18508,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.",
@@ -18437,6 +18630,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",
@@ -18655,7 +18855,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>] [,ro=<1|0>] [,scsiblock=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
+                                             "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,import-from=<source volume>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,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",
@@ -18672,7 +18872,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>"
@@ -18800,7 +19000,7 @@ const apiSchema = [
                                              "typetext" : "<boolean>"
                                           },
                                           "tpmstate0" : {
-                                             "description" : "Configure a Disk for storing TPM state. 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 size of 4 MiB will always be used instead. The format is also fixed to 'raw'.",
+                                             "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,
@@ -18809,6 +19009,13 @@ const apiSchema = [
                                                    "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",
@@ -18832,7 +19039,7 @@ const apiSchema = [
                                              },
                                              "optional" : 1,
                                              "type" : "string",
-                                             "typetext" : "[file=]<volume> [,size=<DiskSize>] [,version=<v1.2|v2.0>]"
+                                             "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.",
@@ -18908,6 +19115,7 @@ const apiSchema = [
                                                       "serial3",
                                                       "std",
                                                       "virtio",
+                                                      "virtio-gl",
                                                       "vmware"
                                                    ],
                                                    "optional" : 1,
@@ -18920,7 +19128,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.",
@@ -19039,6 +19247,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",
@@ -19233,7 +19448,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>] [,ro=<1|0>] [,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)",
@@ -22747,10 +22962,10 @@ const apiSchema = [
                                  "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" : {
@@ -22761,7 +22976,7 @@ 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",
@@ -22794,6 +23009,13 @@ 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.",
@@ -22813,7 +23035,7 @@ const apiSchema = [
                                  },
                                  "optional" : 1,
                                  "type" : "string",
-                                 "typetext" : "[file=]<volume> [,efitype=<2m|4m>] [,format=<enum>] [,pre-enrolled-keys=<1|0>] [,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.",
@@ -22840,7 +23062,7 @@ 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" : {
@@ -22862,7 +23084,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.",
@@ -22981,6 +23203,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",
@@ -23185,7 +23414,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",
@@ -23223,7 +23452,7 @@ const apiSchema = [
                               },
                               "keyboard" : {
                                  "default" : null,
-                                 "description" : "Keyboard layout for VNC server. The 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",
@@ -23329,7 +23558,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",
@@ -23340,9 +23569,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" : {
@@ -23615,7 +23844,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.",
@@ -23734,6 +23963,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",
@@ -23930,10 +24166,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.",
@@ -24052,6 +24288,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",
@@ -24270,7 +24513,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>] [,ro=<1|0>] [,scsiblock=<1|0>] [,secs=<integer>] [,serial=<serial>] [,shared=<1|0>] [,size=<DiskSize>] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=<none|lba|auto>] [,werror=<enum>] [,wwn=<wwn>]"
+                                 "typetext" : "[file=]<volume> [,aio=<native|threads|io_uring>] [,backup=<1|0>] [,bps=<bps>] [,bps_max_length=<seconds>] [,bps_rd=<bps>] [,bps_rd_max_length=<seconds>] [,bps_wr=<bps>] [,bps_wr_max_length=<seconds>] [,cache=<enum>] [,cyls=<integer>] [,detect_zeroes=<1|0>] [,discard=<ignore|on>] [,format=<enum>] [,heads=<integer>] [,import-from=<source volume>] [,iops=<iops>] [,iops_max=<iops>] [,iops_max_length=<seconds>] [,iops_rd=<iops>] [,iops_rd_max=<iops>] [,iops_rd_max_length=<seconds>] [,iops_wr=<iops>] [,iops_wr_max=<iops>] [,iops_wr_max_length=<seconds>] [,iothread=<1|0>] [,mbps=<mbps>] [,mbps_max=<mbps>] [,mbps_rd=<mbps>] [,mbps_rd_max=<mbps>] [,mbps_wr=<mbps>] [,mbps_wr_max=<mbps>] [,media=<cdrom|disk>] [,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",
@@ -24287,7 +24530,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>"
@@ -24423,7 +24666,7 @@ const apiSchema = [
                                  "typetext" : "<boolean>"
                               },
                               "tpmstate0" : {
-                                 "description" : "Configure a Disk for storing TPM state. 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 size of 4 MiB will always be used instead. The format is also fixed to 'raw'.",
+                                 "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,
@@ -24432,6 +24675,13 @@ const apiSchema = [
                                        "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",
@@ -24455,7 +24705,7 @@ const apiSchema = [
                                  },
                                  "optional" : 1,
                                  "type" : "string",
-                                 "typetext" : "[file=]<volume> [,size=<DiskSize>] [,version=<v1.2|v2.0>]"
+                                 "typetext" : "[file=]<volume> [,import-from=<source volume>] [,size=<DiskSize>] [,version=<v1.2|v2.0>]"
                               },
                               "unique" : {
                                  "description" : "Assign a unique random ethernet address.",
@@ -24538,6 +24788,7 @@ const apiSchema = [
                                           "serial3",
                                           "std",
                                           "virtio",
+                                          "virtio-gl",
                                           "vmware"
                                        ],
                                        "optional" : 1,
@@ -24550,7 +24801,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.",
@@ -24669,6 +24920,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",
@@ -24863,7 +25121,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>] [,ro=<1|0>] [,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)",
@@ -25147,7 +25405,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" : {
@@ -25317,6 +25575,7 @@ const apiSchema = [
                                                 "archlinux",
                                                 "alpine",
                                                 "gentoo",
+                                                "nixos",
                                                 "unmanaged"
                                              ],
                                              "optional" : 1,
@@ -25340,7 +25599,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" : {
@@ -25649,7 +25908,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" : {
@@ -25829,6 +26088,7 @@ const apiSchema = [
                                                 "archlinux",
                                                 "alpine",
                                                 "gentoo",
+                                                "nixos",
                                                 "unmanaged"
                                              ],
                                              "optional" : 1,
@@ -25860,7 +26120,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" : {
@@ -28343,7 +28603,7 @@ const apiSchema = [
                                                    "type" : "string"
                                                 },
                                                 "macfilter" : {
-                                                   "default" : 0,
+                                                   "default" : 1,
                                                    "description" : "Enable/disable MAC address filter.",
                                                    "optional" : 1,
                                                    "type" : "boolean"
@@ -28458,7 +28718,7 @@ const apiSchema = [
                                                    "type" : "string"
                                                 },
                                                 "macfilter" : {
-                                                   "default" : 0,
+                                                   "default" : 1,
                                                    "description" : "Enable/disable MAC address filter.",
                                                    "optional" : 1,
                                                    "type" : "boolean",
@@ -29178,6 +29438,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",
@@ -31389,7 +31656,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" : {
@@ -31575,6 +31842,7 @@ const apiSchema = [
                                     "archlinux",
                                     "alpine",
                                     "gentoo",
+                                    "nixos",
                                     "unmanaged"
                                  ],
                                  "optional" : 1,
@@ -31619,7 +31887,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" : {
@@ -32713,6 +32981,13 @@ 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",
@@ -33146,6 +33421,15 @@ const apiSchema = [
                                           "optional" : 1,
                                           "title" : "PG Autoscale Target Ratio",
                                           "type" : "number"
+                                       },
+                                       "type" : {
+                                          "enum" : [
+                                             "replicated",
+                                             "erasure",
+                                             "unknown"
+                                          ],
+                                          "title" : "Type",
+                                          "type" : "string"
                                        }
                                     },
                                     "type" : "object"
@@ -33161,13 +33445,14 @@ const apiSchema = [
                            },
                            "POST" : {
                               "allowtoken" : 1,
-                              "description" : "Create POOL",
+                              "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",
@@ -33192,6 +33477,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",
@@ -33995,6 +34317,12 @@ 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.",
+                                       "optional" : 1,
+                                       "requires" : "storage",
+                                       "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.",
@@ -34006,6 +34334,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.",
@@ -34236,6 +34570,13 @@ 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.",
+                                 "optional" : 1,
+                                 "requires" : "storage",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
                               "pigz" : {
                                  "default" : 0,
                                  "description" : "Use pigz instead of gzip when N>0. N=1 uses half of cores, N>1 uses N as thread count.",
@@ -34249,6 +34590,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.",
@@ -39375,6 +39723,9 @@ const apiSchema = [
                                           "optional" : 1,
                                           "type" : "string"
                                        },
+                                       "mounted" : {
+                                          "type" : "boolean"
+                                       },
                                        "osdid" : {
                                           "type" : "integer"
                                        },
@@ -41905,6 +42256,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"
                         }
                      },
@@ -42441,8 +42871,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.",
@@ -42464,6 +42896,10 @@ const apiSchema = [
                         "protected" : 1,
                         "proxyto" : "node",
                         "returns" : {
+                           "items" : {
+                              "properties" : {},
+                              "type" : "object"
+                           },
                            "type" : "array"
                         }
                      }
@@ -42810,9 +43246,9 @@ const apiSchema = [
                                  "default" : "login",
                                  "description" : "Run specific command or default to login.",
                                  "enum" : [
-                                    "ceph_install",
                                     "upgrade",
-                                    "login"
+                                    "login",
+                                    "ceph_install"
                                  ],
                                  "optional" : 1,
                                  "type" : "string"
@@ -42906,9 +43342,9 @@ const apiSchema = [
                                  "default" : "login",
                                  "description" : "Run specific command or default to login.",
                                  "enum" : [
-                                    "ceph_install",
                                     "upgrade",
-                                    "login"
+                                    "login",
+                                    "ceph_install"
                                  ],
                                  "optional" : 1,
                                  "type" : "string"
@@ -43032,9 +43468,9 @@ const apiSchema = [
                                  "default" : "login",
                                  "description" : "Run specific command or default to login.",
                                  "enum" : [
-                                    "ceph_install",
                                     "upgrade",
-                                    "login"
+                                    "login",
+                                    "ceph_install"
                                  ],
                                  "optional" : 1,
                                  "type" : "string"
@@ -44010,6 +44446,12 @@ const apiSchema = [
                            "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",
@@ -44101,6 +44543,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,
@@ -44130,7 +44580,7 @@ const apiSchema = [
                            "typetext" : "<string>"
                         },
                         "namespace" : {
-                           "description" : "RBD Namespace.",
+                           "description" : "Namespace.",
                            "optional" : 1,
                            "type" : "string",
                            "typetext" : "<string>"
@@ -44496,6 +44946,12 @@ const apiSchema = [
                      "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,
@@ -44591,6 +45047,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,
@@ -44620,7 +45084,7 @@ const apiSchema = [
                      "typetext" : "<string>"
                   },
                   "namespace" : {
-                     "description" : "RBD Namespace.",
+                     "description" : "Namespace.",
                      "optional" : 1,
                      "type" : "string",
                      "typetext" : "<string>"
@@ -45037,8 +45501,7 @@ const apiSchema = [
                                              "self"
                                           ],
                                           [
-                                             "perm",
-                                             "/access/users/{userid}",
+                                             "userid-group",
                                              [
                                                 "User.Modify"
                                              ]
@@ -45080,8 +45543,7 @@ const apiSchema = [
                                              "self"
                                           ],
                                           [
-                                             "perm",
-                                             "/access/users/{userid}",
+                                             "userid-group",
                                              [
                                                 "User.Modify"
                                              ]
@@ -45161,8 +45623,7 @@ const apiSchema = [
                                              "self"
                                           ],
                                           [
-                                             "perm",
-                                             "/access/users/{userid}",
+                                             "userid-group",
                                              [
                                                 "User.Modify"
                                              ]
@@ -45258,8 +45719,7 @@ const apiSchema = [
                                              "self"
                                           ],
                                           [
-                                             "perm",
-                                             "/access/users/{userid}",
+                                             "userid-group",
                                              [
                                                 "User.Modify"
                                              ]
@@ -45323,8 +45783,7 @@ const apiSchema = [
                                        "self"
                                     ],
                                     [
-                                       "perm",
-                                       "/access/users/{userid}",
+                                       "userid-group",
                                        [
                                           "User.Modify"
                                        ]
@@ -45484,6 +45943,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"
                               }
@@ -45568,7 +46049,7 @@ const apiSchema = [
                                  "User.Modify"
                               ],
                               "groups_param",
-                              1
+                              "update"
                            ]
                         },
                         "protected" : 1,
@@ -45792,7 +46273,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."
@@ -46486,13 +46967,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>"
@@ -46504,6 +46985,13 @@ const apiSchema = [
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
+                                    "remove-vanished" : {
+                                       "description" : "A semicolon-seperated list of things to remove when they or the user vanishes during a sync. The following values are possible: 'entry' removes the user/group when not returned from the sync. 'properties' removes the set properties on existing user/group that do not appear in the source (even custom ones). 'acl' removes acls when the user/group is not returned from the sync.",
+                                       "optional" : "1",
+                                       "pattern" : "(?:(?:acl|properties|entry);)*(?:acl|properties|entry)",
+                                       "type" : "string",
+                                       "typetext" : "[acl];[properties];[entry]"
+                                    },
                                     "scope" : {
                                        "description" : "Select what to sync.",
                                        "enum" : [
@@ -46520,11 +47008,15 @@ const apiSchema = [
                                  "check" : [
                                     "and",
                                     [
-                                       "userid-param",
-                                       "Realm.AllocateUser"
+                                       "perm",
+                                       "/access/realm/{realm}",
+                                       [
+                                          "Realm.AllocateUser"
+                                       ]
                                     ],
                                     [
-                                       "userid-group",
+                                       "perm",
+                                       "/access/groups",
                                        [
                                           "User.Modify"
                                        ]
@@ -46615,6 +47107,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.",
@@ -46780,6 +47278,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",
@@ -46787,6 +47291,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,
@@ -46825,7 +47336,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]] [,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.",
@@ -46942,6 +47453,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.",
@@ -47092,6 +47609,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",
@@ -47099,6 +47622,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,
@@ -47137,7 +47667,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]] [,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.",
@@ -47181,13 +47711,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,
@@ -47271,7 +47797,7 @@ const apiSchema = [
                            "properties" : {
                               "code" : {
                                  "description" : "OpenId authorization code.",
-                                 "maxLength" : 1024,
+                                 "maxLength" : 4096,
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
@@ -48128,6 +48654,15 @@ const apiSchema = [
                            "format" : "pve-poolid",
                            "type" : "string",
                            "typetext" : "<string>"
+                        },
+                        "type" : {
+                           "enum" : [
+                              "qemu",
+                              "lxc",
+                              "storage"
+                           ],
+                           "optional" : 1,
+                           "type" : "string"
                         }
                      }
                   },