]> git.proxmox.com Git - pmg-docs.git/blobdiff - api-viewer/apidata.js
update static schema info
[pmg-docs.git] / api-viewer / apidata.js
index 37b817e95f42dd9140219736f9c89078ab5ece22..db6899ba9077dc1b4be3b80b946d6df7bd85ada6 100644 (file)
@@ -5833,9 +5833,10 @@ var apiSchema = [
                                        "properties" : {
                                           "email" : {
                                              "description" : "Email address.",
-                                             "format" : "email",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
+                                             "maxLength" : 512,
+                                             "minLength" : 3,
+                                             "pattern" : "(?:[^\\s\\\\@]+\\@[^\\s\\/\\\\@]+)",
+                                             "type" : "string"
                                           },
                                           "profile" : {
                                              "description" : "Profile ID.",
@@ -7456,7 +7457,7 @@ var apiSchema = [
                               "hostrsapubkey" : {
                                  "description" : "Public SSH RSA key for the host.",
                                  "optional" : 0,
-                                 "pattern" : "^[A-Za-z0-9\\.\\/\\+]{200,}$",
+                                 "pattern" : "^[A-Za-z0-9\\.\\/\\+=]{200,}$",
                                  "type" : "string"
                               },
                               "ip" : {
@@ -7483,7 +7484,7 @@ var apiSchema = [
                               "rootrsapubkey" : {
                                  "description" : "Public SSH RSA key for the root user.",
                                  "optional" : 0,
-                                 "pattern" : "^[A-Za-z0-9\\.\\/\\+]{200,}$",
+                                 "pattern" : "^[A-Za-z0-9\\.\\/\\+=]{200,}$",
                                  "type" : "string"
                               }
                            },
@@ -8571,8 +8572,8 @@ var apiSchema = [
                               "datastore" : {
                                  "description" : "Proxmox Backup Server datastore name.",
                                  "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
+                                 "pattern" : "(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)",
+                                 "type" : "string"
                               },
                               "delete" : {
                                  "description" : "A list of settings you want to delete.",
@@ -8655,6 +8656,13 @@ var apiSchema = [
                                  "type" : "integer",
                                  "typetext" : "<N>"
                               },
+                              "namespace" : {
+                                 "description" : "Proxmox Backup Server namespace in the datastore, defaults to the root NS.",
+                                 "maxLength" : 256,
+                                 "optional" : 1,
+                                 "pattern" : "(?:(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)/){0,7}(?:(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*))?",
+                                 "type" : "string"
+                              },
                               "notify" : {
                                  "description" : "Specify when to notify via e-mail",
                                  "enum" : [
@@ -8737,6 +8745,7 @@ var apiSchema = [
                            "datastore" : {
                               "description" : "Proxmox Backup Server datastore name.",
                               "optional" : 0,
+                              "pattern" : "(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)",
                               "type" : "string"
                            },
                            "disable" : {
@@ -8797,6 +8806,13 @@ var apiSchema = [
                               "optional" : 1,
                               "type" : "integer"
                            },
+                           "namespace" : {
+                              "description" : "Proxmox Backup Server namespace in the datastore, defaults to the root NS.",
+                              "maxLength" : 256,
+                              "optional" : 1,
+                              "pattern" : "(?:(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)/){0,7}(?:(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*))?",
+                              "type" : "string"
+                           },
                            "notify" : {
                               "description" : "Specify when to notify via e-mail",
                               "enum" : [
@@ -8855,8 +8871,8 @@ var apiSchema = [
                         "datastore" : {
                            "description" : "Proxmox Backup Server datastore name.",
                            "optional" : 0,
-                           "type" : "string",
-                           "typetext" : "<string>"
+                           "pattern" : "(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)",
+                           "type" : "string"
                         },
                         "disable" : {
                            "description" : "Flag to disable (deactivate) the entry.",
@@ -8924,6 +8940,13 @@ var apiSchema = [
                            "type" : "integer",
                            "typetext" : "<N>"
                         },
+                        "namespace" : {
+                           "description" : "Proxmox Backup Server namespace in the datastore, defaults to the root NS.",
+                           "maxLength" : 256,
+                           "optional" : 1,
+                           "pattern" : "(?:(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)/){0,7}(?:(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*))?",
+                           "type" : "string"
+                        },
                         "notify" : {
                            "description" : "Specify when to notify via e-mail",
                            "enum" : [
@@ -9061,6 +9084,7 @@ var apiSchema = [
                                           "aurora",
                                           "autodns",
                                           "aws",
+                                          "azion",
                                           "azure",
                                           "cf",
                                           "clouddns",
@@ -9140,6 +9164,7 @@ var apiSchema = [
                                           "nsone",
                                           "nsupdate",
                                           "nw",
+                                          "oci",
                                           "one",
                                           "online",
                                           "openprovider",
@@ -9164,6 +9189,7 @@ var apiSchema = [
                                           "ultra",
                                           "unoeuro",
                                           "variomedia",
+                                          "veesp",
                                           "vscale",
                                           "vultr",
                                           "websupport",
@@ -9312,6 +9338,7 @@ var apiSchema = [
                                     "aurora",
                                     "autodns",
                                     "aws",
+                                    "azion",
                                     "azure",
                                     "cf",
                                     "clouddns",
@@ -9391,6 +9418,7 @@ var apiSchema = [
                                     "nsone",
                                     "nsupdate",
                                     "nw",
+                                    "oci",
                                     "one",
                                     "online",
                                     "openprovider",
@@ -9415,6 +9443,7 @@ var apiSchema = [
                                     "ultra",
                                     "unoeuro",
                                     "variomedia",
+                                    "veesp",
                                     "vscale",
                                     "vultr",
                                     "websupport",
@@ -9844,6 +9873,152 @@ var apiSchema = [
             "path" : "/config/acme",
             "text" : "acme"
          },
+         {
+            "children" : [
+               {
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Read the webauthn configuration.",
+                        "method" : "GET",
+                        "name" : "get_webauthn_config",
+                        "parameters" : {
+                           "additionalProperties" : 0
+                        },
+                        "permissions" : {
+                           "user" : "all"
+                        },
+                        "protected" : 1,
+                        "returns" : {
+                           "optional" : 1,
+                           "properties" : {
+                              "allow-subdomains" : {
+                                 "default" : 1,
+                                 "description" : "Whether to allow the origin to be a subdomain, rather than the exact URL.",
+                                 "optional" : 1,
+                                 "type" : "boolean"
+                              },
+                              "id" : {
+                                 "description" : "Relying part ID. Must be the domain name without protocol, port or location.\nChanging this *will* break existing credentials.",
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "origin" : {
+                                 "description" : "Site origin. Must be a `https://` URL (or `http://localhost`). Should contain the address users type in their browsers to access the web interface.\nChanging this *may* break existing credentials.",
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "rp" : {
+                                 "description" : "Relying party name. Any text identifier.\nChanging this *may* break existing credentials.",
+                                 "optional" : 1,
+                                 "type" : "string"
+                              }
+                           },
+                           "type" : "object"
+                        }
+                     },
+                     "PUT" : {
+                        "allowtoken" : 1,
+                        "description" : "Read the webauthn configuration.",
+                        "method" : "PUT",
+                        "name" : "update_webauthn_config",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "allow-subdomains" : {
+                                 "default" : 1,
+                                 "description" : "Whether to allow the origin to be a subdomain, rather than the exact URL.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
+                              "delete" : {
+                                 "description" : "A list of settings you want to delete.",
+                                 "enum" : [
+                                    "id",
+                                    "origin",
+                                    "allow-subdomains",
+                                    "rp"
+                                 ],
+                                 "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",
+                                 "typetext" : "<string>"
+                              },
+                              "id" : {
+                                 "description" : "Relying part ID. Must be the domain name without protocol, port or location.\nChanging this *will* break existing credentials.",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "origin" : {
+                                 "description" : "Site origin. Must be a `https://` URL (or `http://localhost`). Should contain the address users type in their browsers to access the web interface.\nChanging this *may* break existing credentials.",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "rp" : {
+                                 "description" : "Relying party name. Any text identifier.\nChanging this *may* break existing credentials.",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "admin"
+                           ]
+                        },
+                        "protected" : 1,
+                        "proxyto" : "master",
+                        "returns" : {
+                           "type" : "null"
+                        }
+                     }
+                  },
+                  "leaf" : 1,
+                  "path" : "/config/tfa/webauthn",
+                  "text" : "webauthn"
+               }
+            ],
+            "info" : {
+               "GET" : {
+                  "allowtoken" : 1,
+                  "description" : "Directory index.",
+                  "method" : "GET",
+                  "name" : "index",
+                  "parameters" : {
+                     "additionalProperties" : 0
+                  },
+                  "returns" : {
+                     "items" : {
+                        "properties" : {
+                           "section" : {
+                              "type" : "string"
+                           }
+                        },
+                        "type" : "object"
+                     },
+                     "links" : [
+                        {
+                           "href" : "{section}",
+                           "rel" : "child"
+                        }
+                     ],
+                     "type" : "array"
+                  }
+               }
+            },
+            "leaf" : 0,
+            "path" : "/config/tfa",
+            "text" : "tfa"
+         },
          {
             "info" : {
                "GET" : {
@@ -10105,7 +10280,7 @@ var apiSchema = [
                            "typetext" : "<boolean>"
                         },
                         "scriptedupdates" : {
-                           "default" : 0,
+                           "default" : 1,
                            "description" : "Enables ScriptedUpdates (incremental download of signatures)",
                            "optional" : 1,
                            "type" : "boolean",
@@ -11028,6 +11203,13 @@ var apiSchema = [
                                                    "type" : "boolean",
                                                    "typetext" : "<boolean>"
                                                 },
+                                                "decode-header" : {
+                                                   "default" : 0,
+                                                   "description" : "Decodes the header fields.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean",
+                                                   "typetext" : "<boolean>"
+                                                },
                                                 "header" : {
                                                    "default" : 1,
                                                    "description" : "Show message header content.",
@@ -12323,6 +12505,28 @@ var apiSchema = [
                         "returns" : {
                            "type" : "null"
                         }
+                     },
+                     "PUT" : {
+                        "allowtoken" : 1,
+                        "description" : "Reload network configuration",
+                        "method" : "PUT",
+                        "name" : "reload_network_config",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "node" : {
+                                 "description" : "The cluster node name.",
+                                 "format" : "pve-node",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
+                        },
+                        "protected" : 1,
+                        "proxyto" : "node",
+                        "returns" : {
+                           "type" : "string"
+                        }
                      }
                   },
                   "leaf" : 0,
@@ -12661,7 +12865,8 @@ var apiSchema = [
                                                 "pmg-hourly",
                                                 "pmg-daily",
                                                 "pmgreport",
-                                                "pmgspamreport"
+                                                "pmgspamreport",
+                                                "chrony"
                                              ],
                                              "type" : "string"
                                           }
@@ -12720,7 +12925,8 @@ var apiSchema = [
                                                 "pmg-hourly",
                                                 "pmg-daily",
                                                 "pmgreport",
-                                                "pmgspamreport"
+                                                "pmgspamreport",
+                                                "chrony"
                                              ],
                                              "type" : "string"
                                           }
@@ -12778,7 +12984,8 @@ var apiSchema = [
                                                 "pmg-hourly",
                                                 "pmg-daily",
                                                 "pmgreport",
-                                                "pmgspamreport"
+                                                "pmgspamreport",
+                                                "chrony"
                                              ],
                                              "type" : "string"
                                           }
@@ -12836,7 +13043,8 @@ var apiSchema = [
                                                 "pmg-hourly",
                                                 "pmg-daily",
                                                 "pmgreport",
-                                                "pmgspamreport"
+                                                "pmgspamreport",
+                                                "chrony"
                                              ],
                                              "type" : "string"
                                           }
@@ -12894,7 +13102,8 @@ var apiSchema = [
                                                 "pmg-hourly",
                                                 "pmg-daily",
                                                 "pmgreport",
-                                                "pmgspamreport"
+                                                "pmgspamreport",
+                                                "chrony"
                                              ],
                                              "type" : "string"
                                           }
@@ -12952,7 +13161,8 @@ var apiSchema = [
                                           "pmg-hourly",
                                           "pmg-daily",
                                           "pmgreport",
-                                          "pmgspamreport"
+                                          "pmgspamreport",
+                                          "chrony"
                                        ],
                                        "type" : "string"
                                     }
@@ -13283,9 +13493,9 @@ var apiSchema = [
                         "info" : {
                            "GET" : {
                               "allowtoken" : 1,
-                              "description" : "Get package information for important Proxmox packages.",
+                              "description" : "Get APT repository information.",
                               "method" : "GET",
-                              "name" : "versions",
+                              "name" : "repositories",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
@@ -13305,91 +13515,400 @@ var apiSchema = [
                               },
                               "proxyto" : "node",
                               "returns" : {
-                                 "items" : {
-                                    "properties" : {},
-                                    "type" : "object"
-                                 },
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/apt/versions",
-                        "text" : "versions"
-                     }
-                  ],
-                  "info" : {
-                     "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Directory index for apt (Advanced Package Tool).",
-                        "method" : "GET",
-                        "name" : "index",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "user" : "all"
-                        },
-                        "returns" : {
-                           "items" : {
-                              "properties" : {
-                                 "id" : {
-                                    "type" : "string"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{id}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/nodes/{node}/apt",
-                  "text" : "apt"
-               },
-               {
-                  "children" : [
-                     {
-                        "info" : {
-                           "GET" : {
-                              "allowtoken" : 1,
-                              "description" : "Get the detailed syslog entries for a specific mail ID.",
-                              "method" : "GET",
-                              "name" : "maillog",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
+                                 "description" : "Result from parsing the APT repository files in /etc/apt/.",
                                  "properties" : {
-                                    "endtime" : {
-                                       "description" : "Only consider entries older than 'endtime' (unix epoch). This is set to '<start> + 1day' by default.",
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (1 - N)"
-                                    },
-                                    "id" : {
-                                       "description" : "Mail ID (as returned by the list API).",
-                                       "maxLength" : 64,
-                                       "minLength" : 3,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                                    "digest" : {
+                                       "description" : "Common digest of all files.",
+                                       "type" : "string"
                                     },
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
+                                    "errors" : {
+                                       "description" : "List of problematic repository files.",
+                                       "items" : {
+                                          "properties" : {
+                                             "error" : {
+                                                "description" : "The error message",
+                                                "type" : "string"
+                                             },
+                                             "path" : {
+                                                "description" : "Path to the problematic file.",
+                                                "type" : "string"
+                                             }
+                                          },
+                                          "type" : "object"
+                                       },
+                                       "type" : "array"
+                                    },
+                                    "files" : {
+                                       "description" : "List of parsed repository files.",
+                                       "items" : {
+                                          "properties" : {
+                                             "digest" : {
+                                                "description" : "Digest of the file as bytes.",
+                                                "items" : {
+                                                   "type" : "integer"
+                                                },
+                                                "type" : "array"
+                                             },
+                                             "file-type" : {
+                                                "description" : "Format of the file.",
+                                                "enum" : [
+                                                   "list",
+                                                   "sources"
+                                                ],
+                                                "type" : "string"
+                                             },
+                                             "path" : {
+                                                "description" : "Path to the problematic file.",
+                                                "type" : "string"
+                                             },
+                                             "repositories" : {
+                                                "description" : "The parsed repositories.",
+                                                "items" : {
+                                                   "properties" : {
+                                                      "Comment" : {
+                                                         "description" : "Associated comment",
+                                                         "optional" : 1,
+                                                         "type" : "string"
+                                                      },
+                                                      "Components" : {
+                                                         "description" : "List of repository components",
+                                                         "items" : {
+                                                            "type" : "string"
+                                                         },
+                                                         "optional" : 1,
+                                                         "type" : "array"
+                                                      },
+                                                      "Enabled" : {
+                                                         "description" : "Whether the repository is enabled or not",
+                                                         "type" : "boolean"
+                                                      },
+                                                      "FileType" : {
+                                                         "description" : "Format of the defining file.",
+                                                         "enum" : [
+                                                            "list",
+                                                            "sources"
+                                                         ],
+                                                         "type" : "string"
+                                                      },
+                                                      "Options" : {
+                                                         "description" : "Additional options",
+                                                         "items" : {
+                                                            "properties" : {
+                                                               "Key" : {
+                                                                  "type" : "string"
+                                                               },
+                                                               "Values" : {
+                                                                  "items" : {
+                                                                     "type" : "string"
+                                                                  },
+                                                                  "type" : "array"
+                                                               }
+                                                            },
+                                                            "type" : "object"
+                                                         },
+                                                         "optional" : 1,
+                                                         "type" : "array"
+                                                      },
+                                                      "Suites" : {
+                                                         "description" : "List of package distribuitions",
+                                                         "items" : {
+                                                            "type" : "string"
+                                                         },
+                                                         "type" : "array"
+                                                      },
+                                                      "Types" : {
+                                                         "description" : "List of package types.",
+                                                         "items" : {
+                                                            "enum" : [
+                                                               "deb",
+                                                               "deb-src"
+                                                            ],
+                                                            "type" : "string"
+                                                         },
+                                                         "type" : "array"
+                                                      },
+                                                      "URIs" : {
+                                                         "description" : "List of repository URIs.",
+                                                         "items" : {
+                                                            "type" : "string"
+                                                         },
+                                                         "type" : "array"
+                                                      }
+                                                   },
+                                                   "type" : "object"
+                                                },
+                                                "type" : "array"
+                                             }
+                                          },
+                                          "type" : "object"
+                                       },
+                                       "type" : "array"
+                                    },
+                                    "infos" : {
+                                       "description" : "Additional information/warnings for APT repositories.",
+                                       "items" : {
+                                          "properties" : {
+                                             "index" : {
+                                                "description" : "Index of the associated repository within the file.",
+                                                "type" : "string"
+                                             },
+                                             "kind" : {
+                                                "description" : "Kind of the information (e.g. warning).",
+                                                "type" : "string"
+                                             },
+                                             "message" : {
+                                                "description" : "Information message.",
+                                                "type" : "string"
+                                             },
+                                             "path" : {
+                                                "description" : "Path to the associated file.",
+                                                "type" : "string"
+                                             },
+                                             "property" : {
+                                                "description" : "Property from which the info originates.",
+                                                "optional" : 1,
+                                                "type" : "string"
+                                             }
+                                          },
+                                          "type" : "object"
+                                       },
+                                       "type" : "array"
+                                    },
+                                    "standard-repos" : {
+                                       "description" : "List of standard repositories and their configuration status",
+                                       "items" : {
+                                          "properties" : {
+                                             "description" : {
+                                                "description" : "Description of the repository.",
+                                                "type" : "string"
+                                             },
+                                             "handle" : {
+                                                "description" : "Handle to identify the repository.",
+                                                "type" : "string"
+                                             },
+                                             "name" : {
+                                                "description" : "Display name of the repository.",
+                                                "type" : "string"
+                                             },
+                                             "status" : {
+                                                "description" : "Indicating enabled/disabled status, if the repository is configured.",
+                                                "optional" : 1,
+                                                "type" : "boolean"
+                                             }
+                                          },
+                                          "type" : "object"
+                                       },
+                                       "type" : "array"
+                                    }
+                                 },
+                                 "type" : "object"
+                              }
+                           },
+                           "POST" : {
+                              "allowtoken" : 1,
+                              "description" : "Change the properties of a repository. Currently only allows enabling/disabling.",
+                              "method" : "POST",
+                              "name" : "change_repository",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "digest" : {
+                                       "description" : "Digest to detect modifications.",
+                                       "maxLength" : 80,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "enabled" : {
+                                       "description" : "Whether the repository should be enabled or not.",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    },
+                                    "index" : {
+                                       "description" : "Index within the file (starting from 0).",
+                                       "type" : "integer",
+                                       "typetext" : "<integer>"
+                                    },
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "path" : {
+                                       "description" : "Path to the containing file.",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin"
+                                 ]
+                              },
+                              "protected" : 1,
+                              "proxyto" : "node",
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           },
+                           "PUT" : {
+                              "allowtoken" : 1,
+                              "description" : "Add a standard repository to the configuration",
+                              "method" : "PUT",
+                              "name" : "add_repository",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "digest" : {
+                                       "description" : "Digest to detect modifications.",
+                                       "maxLength" : 80,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "handle" : {
+                                       "description" : "Handle that identifies a repository.",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin"
+                                 ]
+                              },
+                              "protected" : 1,
+                              "proxyto" : "node",
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           }
+                        },
+                        "leaf" : 1,
+                        "path" : "/nodes/{node}/apt/repositories",
+                        "text" : "repositories"
+                     },
+                     {
+                        "info" : {
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "Get package information for important Proxmox packages.",
+                              "method" : "GET",
+                              "name" : "versions",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin",
+                                    "audit"
+                                 ]
+                              },
+                              "proxyto" : "node",
+                              "returns" : {
+                                 "items" : {
+                                    "properties" : {},
+                                    "type" : "object"
+                                 },
+                                 "type" : "array"
+                              }
+                           }
+                        },
+                        "leaf" : 1,
+                        "path" : "/nodes/{node}/apt/versions",
+                        "text" : "versions"
+                     }
+                  ],
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Directory index for apt (Advanced Package Tool).",
+                        "method" : "GET",
+                        "name" : "index",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "node" : {
+                                 "description" : "The cluster node name.",
+                                 "format" : "pve-node",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "user" : "all"
+                        },
+                        "returns" : {
+                           "items" : {
+                              "properties" : {
+                                 "id" : {
+                                    "type" : "string"
+                                 }
+                              },
+                              "type" : "object"
+                           },
+                           "links" : [
+                              {
+                                 "href" : "{id}",
+                                 "rel" : "child"
+                              }
+                           ],
+                           "type" : "array"
+                        }
+                     }
+                  },
+                  "leaf" : 0,
+                  "path" : "/nodes/{node}/apt",
+                  "text" : "apt"
+               },
+               {
+                  "children" : [
+                     {
+                        "info" : {
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "Get the detailed syslog entries for a specific mail ID.",
+                              "method" : "GET",
+                              "name" : "maillog",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "endtime" : {
+                                       "description" : "Only consider entries older than 'endtime' (unix epoch). This is set to '<start> + 1day' by default.",
+                                       "minimum" : 1,
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (1 - N)"
+                                    },
+                                    "id" : {
+                                       "description" : "Mail ID (as returned by the list API).",
+                                       "maxLength" : 64,
+                                       "minLength" : 3,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
@@ -14415,6 +14934,7 @@ var apiSchema = [
                                  "datastore" : {
                                     "description" : "Proxmox Backup Server datastore name.",
                                     "optional" : 0,
+                                    "pattern" : "(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)",
                                     "type" : "string"
                                  },
                                  "disable" : {
@@ -14475,6 +14995,13 @@ var apiSchema = [
                                     "optional" : 1,
                                     "type" : "integer"
                                  },
+                                 "namespace" : {
+                                    "description" : "Proxmox Backup Server namespace in the datastore, defaults to the root NS.",
+                                    "maxLength" : 256,
+                                    "optional" : 1,
+                                    "pattern" : "(?:(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)/){0,7}(?:(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*))?",
+                                    "type" : "string"
+                                 },
                                  "notify" : {
                                     "description" : "Specify when to notify via e-mail",
                                     "enum" : [
@@ -15764,29 +16291,219 @@ var apiSchema = [
                            }
                         },
                         "protected" : 1,
-                        "proxyto" : "node",
+                        "proxyto" : "node",
+                        "returns" : {
+                           "type" : "null"
+                        }
+                     }
+                  },
+                  "leaf" : 1,
+                  "path" : "/nodes/{node}/time",
+                  "text" : "time"
+               },
+               {
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Read server status. This is used by the cluster manager to test the node health.",
+                        "method" : "GET",
+                        "name" : "status",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "node" : {
+                                 "description" : "The cluster node name.",
+                                 "format" : "pve-node",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "admin",
+                              "qmanager",
+                              "audit"
+                           ]
+                        },
+                        "protected" : 1,
+                        "proxyto" : "node",
+                        "returns" : {
+                           "additionalProperties" : 1,
+                           "properties" : {
+                              "insync" : {
+                                 "description" : "Database is synced with other nodes.",
+                                 "type" : "boolean"
+                              },
+                              "time" : {
+                                 "description" : "Seconds since 1970-01-01 00:00:00 UTC.",
+                                 "minimum" : 1297163644,
+                                 "type" : "integer"
+                              },
+                              "uptime" : {
+                                 "description" : "The uptime of the system in seconds.",
+                                 "minimum" : 0,
+                                 "type" : "integer"
+                              }
+                           },
+                           "type" : "object"
+                        }
+                     },
+                     "POST" : {
+                        "allowtoken" : 1,
+                        "description" : "Reboot or shutdown a node.",
+                        "method" : "POST",
+                        "name" : "node_cmd",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "command" : {
+                                 "description" : "Specify the command.",
+                                 "enum" : [
+                                    "reboot",
+                                    "shutdown"
+                                 ],
+                                 "type" : "string"
+                              },
+                              "node" : {
+                                 "description" : "The cluster node name.",
+                                 "format" : "pve-node",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "admin"
+                           ]
+                        },
+                        "protected" : 1,
+                        "proxyto" : "node",
+                        "returns" : {
+                           "type" : "null"
+                        }
+                     }
+                  },
+                  "leaf" : 1,
+                  "path" : "/nodes/{node}/status",
+                  "text" : "status"
+               }
+            ],
+            "info" : {
+               "GET" : {
+                  "allowtoken" : 1,
+                  "description" : "Node index.",
+                  "method" : "GET",
+                  "name" : "index",
+                  "parameters" : {
+                     "additionalProperties" : 0,
+                     "properties" : {
+                        "node" : {
+                           "description" : "The cluster node name.",
+                           "format" : "pve-node",
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        }
+                     }
+                  },
+                  "permissions" : {
+                     "user" : "all"
+                  },
+                  "returns" : {
+                     "items" : {
+                        "properties" : {},
+                        "type" : "object"
+                     },
+                     "links" : [
+                        {
+                           "href" : "{name}",
+                           "rel" : "child"
+                        }
+                     ],
+                     "type" : "array"
+                  }
+               }
+            },
+            "leaf" : 0,
+            "path" : "/nodes/{node}",
+            "text" : "{node}"
+         }
+      ],
+      "info" : {
+         "GET" : {
+            "allowtoken" : 1,
+            "description" : "Cluster node index.",
+            "method" : "GET",
+            "name" : "index",
+            "parameters" : {
+               "additionalProperties" : 0
+            },
+            "permissions" : {
+               "user" : "all"
+            },
+            "returns" : {
+               "items" : {
+                  "properties" : {},
+                  "type" : "object"
+               },
+               "links" : [
+                  {
+                     "href" : "{node}",
+                     "rel" : "child"
+                  }
+               ],
+               "type" : "array"
+            }
+         }
+      },
+      "leaf" : 0,
+      "path" : "/nodes",
+      "text" : "nodes"
+   },
+   {
+      "children" : [
+         {
+            "children" : [
+               {
+                  "info" : {
+                     "DELETE" : {
+                        "allowtoken" : 1,
+                        "description" : "Delete a user.",
+                        "method" : "DELETE",
+                        "name" : "delete",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "userid" : {
+                                 "description" : "User ID",
+                                 "format" : "pmg-userid",
+                                 "maxLength" : 64,
+                                 "minLength" : 4,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
+                        },
+                        "protected" : 1,
+                        "proxyto" : "master",
                         "returns" : {
                            "type" : "null"
                         }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/nodes/{node}/time",
-                  "text" : "time"
-               },
-               {
-                  "info" : {
+                     },
                      "GET" : {
                         "allowtoken" : 1,
-                        "description" : "Read server status. This is used by the cluster manager to test the node health.",
+                        "description" : "Read User data.",
                         "method" : "GET",
-                        "name" : "status",
+                        "name" : "read",
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
+                              "userid" : {
+                                 "description" : "User ID",
+                                 "format" : "pmg-userid",
+                                 "maxLength" : 64,
+                                 "minLength" : 4,
                                  "type" : "string",
                                  "typetext" : "<string>"
                               }
@@ -15800,175 +16517,458 @@ var apiSchema = [
                            ]
                         },
                         "protected" : 1,
-                        "proxyto" : "node",
+                        "proxyto" : "master",
                         "returns" : {
-                           "additionalProperties" : 1,
-                           "properties" : {
-                              "insync" : {
-                                 "description" : "Database is synced with other nodes.",
-                                 "type" : "boolean"
-                              },
-                              "time" : {
-                                 "description" : "Seconds since 1970-01-01 00:00:00 UTC.",
-                                 "minimum" : 1297163644,
-                                 "type" : "integer"
-                              },
-                              "uptime" : {
-                                 "description" : "The uptime of the system in seconds.",
-                                 "minimum" : 0,
-                                 "type" : "integer"
-                              }
-                           },
                            "type" : "object"
                         }
                      },
-                     "POST" : {
+                     "PUT" : {
                         "allowtoken" : 1,
-                        "description" : "Reboot or shutdown a node.",
-                        "method" : "POST",
-                        "name" : "node_cmd",
+                        "description" : "Update user data.",
+                        "method" : "PUT",
+                        "name" : "write",
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
-                              "command" : {
-                                 "description" : "Specify the command.",
+                              "comment" : {
+                                 "description" : "Comment.",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "crypt_pass" : {
+                                 "description" : "Encrypted password (see `man crypt`)",
+                                 "optional" : 1,
+                                 "pattern" : "\\$\\d\\$[a-zA-Z0-9\\.\\/]+\\$[a-zA-Z0-9\\.\\/]+",
+                                 "type" : "string"
+                              },
+                              "delete" : {
+                                 "description" : "A list of settings you want to delete.",
+                                 "format" : "pve-configid-list",
+                                 "maxLength" : 4096,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "email" : {
+                                 "description" : "Users E-Mail address.",
+                                 "format" : "email",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "enable" : {
+                                 "default" : 0,
+                                 "description" : "Flag to enable or disable the account.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
+                              "expire" : {
+                                 "default" : 0,
+                                 "description" : "Account expiration date (seconds since epoch). '0' means no expiration date.",
+                                 "minimum" : 0,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (0 - N)"
+                              },
+                              "firstname" : {
+                                 "description" : "First name.",
+                                 "maxLength" : 64,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "keys" : {
+                                 "description" : "Keys for two factor auth (yubico).",
+                                 "maxLength" : 128,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "lastname" : {
+                                 "description" : "Last name.",
+                                 "maxLength" : 64,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "password" : {
+                                 "description" : "Password",
+                                 "maxLength" : 32,
+                                 "minLength" : 5,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "role" : {
+                                 "description" : "User role. Role 'root' is reserved for the Unix Superuser.",
                                  "enum" : [
-                                    "reboot",
-                                    "shutdown"
+                                    "root",
+                                    "admin",
+                                    "helpdesk",
+                                    "qmanager",
+                                    "audit"
                                  ],
+                                 "optional" : 1,
                                  "type" : "string"
                               },
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
+                              "userid" : {
+                                 "description" : "User ID",
+                                 "format" : "pmg-userid",
+                                 "maxLength" : 64,
+                                 "minLength" : 4,
                                  "type" : "string",
                                  "typetext" : "<string>"
                               }
                            }
                         },
-                        "permissions" : {
-                           "check" : [
-                              "admin"
-                           ]
-                        },
                         "protected" : 1,
-                        "proxyto" : "node",
+                        "proxyto" : "master",
                         "returns" : {
                            "type" : "null"
                         }
                      }
                   },
                   "leaf" : 1,
-                  "path" : "/nodes/{node}/status",
-                  "text" : "status"
+                  "path" : "/access/users/{userid}",
+                  "text" : "{userid}"
                }
             ],
             "info" : {
                "GET" : {
                   "allowtoken" : 1,
-                  "description" : "Node index.",
+                  "description" : "List users.",
                   "method" : "GET",
                   "name" : "index",
+                  "parameters" : {
+                     "additionalProperties" : 0
+                  },
+                  "permissions" : {
+                     "check" : [
+                        "admin",
+                        "qmanager",
+                        "audit"
+                     ]
+                  },
+                  "protected" : 1,
+                  "proxyto" : "master",
+                  "returns" : {
+                     "items" : {
+                        "properties" : {
+                           "comment" : {
+                              "optional" : 1,
+                              "type" : "string"
+                           },
+                           "enable" : {
+                              "type" : "boolean"
+                           },
+                           "role" : {
+                              "type" : "string"
+                           },
+                           "userid" : {
+                              "type" : "string"
+                           }
+                        },
+                        "type" : "object"
+                     },
+                     "links" : [
+                        {
+                           "href" : "{userid}",
+                           "rel" : "child"
+                        }
+                     ],
+                     "type" : "array"
+                  }
+               },
+               "POST" : {
+                  "allowtoken" : 1,
+                  "description" : "Create new user",
+                  "method" : "POST",
+                  "name" : "create",
                   "parameters" : {
                      "additionalProperties" : 0,
                      "properties" : {
-                        "node" : {
-                           "description" : "The cluster node name.",
-                           "format" : "pve-node",
+                        "comment" : {
+                           "description" : "Comment.",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "crypt_pass" : {
+                           "description" : "Encrypted password (see `man crypt`)",
+                           "optional" : 1,
+                           "pattern" : "\\$\\d\\$[a-zA-Z0-9\\.\\/]+\\$[a-zA-Z0-9\\.\\/]+",
+                           "type" : "string"
+                        },
+                        "email" : {
+                           "description" : "Users E-Mail address.",
+                           "format" : "email",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "enable" : {
+                           "default" : 0,
+                           "description" : "Flag to enable or disable the account.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "expire" : {
+                           "default" : 0,
+                           "description" : "Account expiration date (seconds since epoch). '0' means no expiration date.",
+                           "minimum" : 0,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (0 - N)"
+                        },
+                        "firstname" : {
+                           "description" : "First name.",
+                           "maxLength" : 64,
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "keys" : {
+                           "description" : "Keys for two factor auth (yubico).",
+                           "maxLength" : 128,
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "lastname" : {
+                           "description" : "Last name.",
+                           "maxLength" : 64,
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "password" : {
+                           "description" : "Password",
+                           "maxLength" : 32,
+                           "minLength" : 5,
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "role" : {
+                           "description" : "User role. Role 'root' is reserved for the Unix Superuser.",
+                           "enum" : [
+                              "root",
+                              "admin",
+                              "helpdesk",
+                              "qmanager",
+                              "audit"
+                           ],
+                           "type" : "string"
+                        },
+                        "userid" : {
+                           "description" : "User ID",
+                           "format" : "pmg-userid",
+                           "maxLength" : 64,
+                           "minLength" : 4,
                            "type" : "string",
                            "typetext" : "<string>"
                         }
                      }
                   },
-                  "permissions" : {
-                     "user" : "all"
-                  },
+                  "protected" : 1,
+                  "proxyto" : "master",
                   "returns" : {
-                     "items" : {
-                        "properties" : {},
-                        "type" : "object"
-                     },
-                     "links" : [
-                        {
-                           "href" : "{name}",
-                           "rel" : "child"
-                        }
-                     ],
-                     "type" : "array"
+                     "type" : "null"
                   }
                }
             },
             "leaf" : 0,
-            "path" : "/nodes/{node}",
-            "text" : "{node}"
-         }
-      ],
-      "info" : {
-         "GET" : {
-            "allowtoken" : 1,
-            "description" : "Cluster node index.",
-            "method" : "GET",
-            "name" : "index",
-            "parameters" : {
-               "additionalProperties" : 0
-            },
-            "permissions" : {
-               "user" : "all"
-            },
-            "returns" : {
-               "items" : {
-                  "properties" : {},
-                  "type" : "object"
-               },
-               "links" : [
-                  {
-                     "href" : "{node}",
-                     "rel" : "child"
-                  }
-               ],
-               "type" : "array"
-            }
-         }
-      },
-      "leaf" : 0,
-      "path" : "/nodes",
-      "text" : "nodes"
-   },
-   {
-      "children" : [
+            "path" : "/access/users",
+            "text" : "users"
+         },
          {
             "children" : [
                {
-                  "info" : {
-                     "DELETE" : {
-                        "allowtoken" : 1,
-                        "description" : "Delete a user.",
-                        "method" : "DELETE",
-                        "name" : "delete",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "userid" : {
-                                 "description" : "User ID",
-                                 "format" : "pmg-userid",
-                                 "maxLength" : 64,
-                                 "minLength" : 4,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
+                  "children" : [
+                     {
+                        "info" : {
+                           "DELETE" : {
+                              "allowtoken" : 0,
+                              "description" : "Delete a TFA entry by ID.",
+                              "method" : "DELETE",
+                              "name" : "delete_tfa",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "id" : {
+                                       "description" : "A TFA entry id.",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "password" : {
+                                       "description" : "The current password.",
+                                       "maxLength" : 64,
+                                       "minLength" : 5,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "userid" : {
+                                       "description" : "User ID",
+                                       "format" : "pmg-userid",
+                                       "maxLength" : 64,
+                                       "minLength" : 4,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin",
+                                    "qmanager",
+                                    "audit"
+                                 ],
+                                 "description" : "Each user is allowed to modify their own TFA entries. Only root can modify entries of another user."
+                              },
+                              "protected" : 1,
+                              "proxyto" : "master",
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           },
+                           "GET" : {
+                              "allowtoken" : 0,
+                              "description" : "Fetch a requested TFA entry if present.",
+                              "method" : "GET",
+                              "name" : "get_tfa_entry",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "id" : {
+                                       "description" : "A TFA entry id.",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "userid" : {
+                                       "description" : "User ID",
+                                       "format" : "pmg-userid",
+                                       "maxLength" : 64,
+                                       "minLength" : 4,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "description" : "Each user is allowed to view their own TFA entries. Only root can view entries of another user.",
+                                 "user" : "all"
+                              },
+                              "protected" : 1,
+                              "proxyto" : "master",
+                              "returns" : {
+                                 "description" : "TFA Entry.",
+                                 "properties" : {
+                                    "created" : {
+                                       "description" : "Creation time of this entry as unix epoch.",
+                                       "type" : "integer"
+                                    },
+                                    "description" : {
+                                       "description" : "User chosen description for this entry.",
+                                       "type" : "string"
+                                    },
+                                    "enable" : {
+                                       "default" : 1,
+                                       "description" : "Whether this TFA entry is currently enabled.",
+                                       "optional" : 1,
+                                       "type" : "boolean"
+                                    },
+                                    "id" : {
+                                       "description" : "The id used to reference this entry.",
+                                       "type" : "string"
+                                    },
+                                    "type" : {
+                                       "description" : "TFA Entry Type.",
+                                       "enum" : [
+                                          "totp",
+                                          "u2f",
+                                          "webauthn",
+                                          "recovery"
+                                       ],
+                                       "type" : "string"
+                                    }
+                                 },
+                                 "type" : "object"
+                              }
+                           },
+                           "PUT" : {
+                              "allowtoken" : 0,
+                              "description" : "Add a TFA entry for a user.",
+                              "method" : "PUT",
+                              "name" : "update_tfa_entry",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "description" : {
+                                       "description" : "A description to distinguish multiple entries from one another",
+                                       "maxLength" : 255,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "enable" : {
+                                       "description" : "Whether the entry should be enabled for login.",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    },
+                                    "id" : {
+                                       "description" : "A TFA entry id.",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "password" : {
+                                       "description" : "The current password.",
+                                       "maxLength" : 64,
+                                       "minLength" : 5,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "userid" : {
+                                       "description" : "User ID",
+                                       "format" : "pmg-userid",
+                                       "maxLength" : 64,
+                                       "minLength" : 4,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin",
+                                    "qmanager",
+                                    "audit"
+                                 ],
+                                 "description" : "Each user is allowed to modify their own TFA entries. Only root can modify entries of another user."
+                              },
+                              "protected" : 1,
+                              "proxyto" : "master",
+                              "returns" : {
+                                 "type" : "null"
                               }
                            }
                         },
-                        "protected" : 1,
-                        "proxyto" : "master",
-                        "returns" : {
-                           "type" : "null"
-                        }
-                     },
+                        "leaf" : 1,
+                        "path" : "/access/tfa/{userid}/{id}",
+                        "text" : "{id}"
+                     }
+                  ],
+                  "info" : {
                      "GET" : {
-                        "allowtoken" : 1,
-                        "description" : "Read User data.",
+                        "allowtoken" : 0,
+                        "description" : "List TFA configurations of users.",
                         "method" : "GET",
-                        "name" : "read",
+                        "name" : "list_user_tfa",
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
@@ -15983,107 +16983,93 @@ var apiSchema = [
                            }
                         },
                         "permissions" : {
-                           "check" : [
-                              "admin",
-                              "qmanager",
-                              "audit"
-                           ]
+                           "description" : "Each user is allowed to view their own TFA entries. Only root can view entries of another user.",
+                           "user" : "all"
                         },
                         "protected" : 1,
                         "proxyto" : "master",
                         "returns" : {
-                           "type" : "object"
+                           "description" : "A list of the user's TFA entries.",
+                           "items" : {
+                              "description" : "TFA Entry.",
+                              "properties" : {
+                                 "created" : {
+                                    "description" : "Creation time of this entry as unix epoch.",
+                                    "type" : "integer"
+                                 },
+                                 "description" : {
+                                    "description" : "User chosen description for this entry.",
+                                    "type" : "string"
+                                 },
+                                 "enable" : {
+                                    "default" : 1,
+                                    "description" : "Whether this TFA entry is currently enabled.",
+                                    "optional" : 1,
+                                    "type" : "boolean"
+                                 },
+                                 "id" : {
+                                    "description" : "The id used to reference this entry.",
+                                    "type" : "string"
+                                 },
+                                 "type" : {
+                                    "description" : "TFA Entry Type.",
+                                    "enum" : [
+                                       "totp",
+                                       "u2f",
+                                       "webauthn",
+                                       "recovery"
+                                    ],
+                                    "type" : "string"
+                                 }
+                              },
+                              "type" : "object"
+                           },
+                           "type" : "array"
                         }
                      },
-                     "PUT" : {
-                        "allowtoken" : 1,
-                        "description" : "Update user data.",
-                        "method" : "PUT",
-                        "name" : "write",
+                     "POST" : {
+                        "allowtoken" : 0,
+                        "description" : "Add a TFA entry for a user.",
+                        "method" : "POST",
+                        "name" : "add_tfa_entry",
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
-                              "comment" : {
-                                 "description" : "Comment.",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "crypt_pass" : {
-                                 "description" : "Encrypted password (see `man crypt`)",
-                                 "optional" : 1,
-                                 "pattern" : "\\$\\d\\$[a-zA-Z0-9\\.\\/]+\\$[a-zA-Z0-9\\.\\/]+",
-                                 "type" : "string"
-                              },
-                              "delete" : {
-                                 "description" : "A list of settings you want to delete.",
-                                 "format" : "pve-configid-list",
-                                 "maxLength" : 4096,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "email" : {
-                                 "description" : "Users E-Mail address.",
-                                 "format" : "email",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "enable" : {
-                                 "default" : 0,
-                                 "description" : "Flag to enable or disable the account.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "expire" : {
-                                 "default" : 0,
-                                 "description" : "Account expiration date (seconds since epoch). '0' means no expiration date.",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
-                              },
-                              "firstname" : {
-                                 "description" : "First name.",
-                                 "maxLength" : 64,
+                              "challenge" : {
+                                 "description" : "When responding to a u2f challenge: the original challenge string",
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
-                              "keys" : {
-                                 "description" : "Keys for two factor auth (yubico).",
-                                 "maxLength" : 128,
+                              "description" : {
+                                 "description" : "A description to distinguish multiple entries from one another",
+                                 "maxLength" : 255,
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
-                              "lastname" : {
-                                 "description" : "Last name.",
+                              "password" : {
+                                 "description" : "The current password.",
                                  "maxLength" : 64,
+                                 "minLength" : 5,
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
-                              "password" : {
-                                 "description" : "Password",
-                                 "maxLength" : 32,
-                                 "minLength" : 5,
+                              "totp" : {
+                                 "description" : "A totp URI.",
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
-                              "role" : {
-                                 "description" : "User role. Role 'root' is reserved for the Unix Superuser.",
+                              "type" : {
+                                 "description" : "TFA Entry Type.",
                                  "enum" : [
-                                    "root",
-                                    "admin",
-                                    "helpdesk",
-                                    "qmanager",
-                                    "audit"
+                                    "totp",
+                                    "u2f",
+                                    "webauthn",
+                                    "recovery"
                                  ],
-                                 "optional" : 1,
                                  "type" : "string"
                               },
                               "userid" : {
@@ -16093,169 +17079,125 @@ var apiSchema = [
                                  "minLength" : 4,
                                  "type" : "string",
                                  "typetext" : "<string>"
+                              },
+                              "value" : {
+                                 "description" : "The current value for the provided totp URI, or a Webauthn/U2F challenge response",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
                               }
                            }
                         },
+                        "permissions" : {
+                           "check" : [
+                              "admin",
+                              "qmanager",
+                              "audit"
+                           ],
+                           "description" : "Each user is allowed to modify their own TFA entries. Only root can modify entries of another user."
+                        },
                         "protected" : 1,
                         "proxyto" : "master",
                         "returns" : {
-                           "type" : "null"
+                           "properties" : {
+                              "challenge" : {
+                                 "description" : "When adding u2f entries, this contains a challenge the user must respond to in order to finish the registration.",
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "id" : {
+                                 "description" : "The id of a newly added TFA entry.",
+                                 "type" : "string"
+                              },
+                              "recovery" : {
+                                 "description" : "When adding recovery codes, this contains the list of codes to be displayed to the user",
+                                 "items" : {
+                                    "description" : "A recovery entry.",
+                                    "type" : "string"
+                                 },
+                                 "optional" : 1,
+                                 "type" : "array"
+                              }
+                           },
+                           "type" : "object"
                         }
                      }
                   },
-                  "leaf" : 1,
-                  "path" : "/access/users/{userid}",
+                  "leaf" : 0,
+                  "path" : "/access/tfa/{userid}",
                   "text" : "{userid}"
                }
             ],
             "info" : {
                "GET" : {
-                  "allowtoken" : 1,
-                  "description" : "List users.",
+                  "allowtoken" : 0,
+                  "description" : "List TFA configurations of users.",
                   "method" : "GET",
-                  "name" : "index",
+                  "name" : "list_tfa",
                   "parameters" : {
                      "additionalProperties" : 0
                   },
                   "permissions" : {
-                     "check" : [
-                        "admin",
-                        "qmanager",
-                        "audit"
-                     ]
+                     "description" : "Returns all or just the logged-in user, depending on privileges.",
+                     "user" : "all"
                   },
                   "protected" : 1,
                   "proxyto" : "master",
                   "returns" : {
+                     "description" : "The list tuples of user and TFA entries.",
                      "items" : {
                         "properties" : {
-                           "comment" : {
-                              "optional" : 1,
-                              "type" : "string"
-                           },
-                           "enable" : {
-                              "type" : "boolean"
-                           },
-                           "role" : {
-                              "type" : "string"
+                           "entries" : {
+                              "items" : {
+                                 "description" : "TFA Entry.",
+                                 "properties" : {
+                                    "created" : {
+                                       "description" : "Creation time of this entry as unix epoch.",
+                                       "type" : "integer"
+                                    },
+                                    "description" : {
+                                       "description" : "User chosen description for this entry.",
+                                       "type" : "string"
+                                    },
+                                    "enable" : {
+                                       "default" : 1,
+                                       "description" : "Whether this TFA entry is currently enabled.",
+                                       "optional" : 1,
+                                       "type" : "boolean"
+                                    },
+                                    "id" : {
+                                       "description" : "The id used to reference this entry.",
+                                       "type" : "string"
+                                    },
+                                    "type" : {
+                                       "description" : "TFA Entry Type.",
+                                       "enum" : [
+                                          "totp",
+                                          "u2f",
+                                          "webauthn",
+                                          "recovery"
+                                       ],
+                                       "type" : "string"
+                                    }
+                                 },
+                                 "type" : "object"
+                              },
+                              "type" : "array"
                            },
                            "userid" : {
+                              "description" : "User this entry belongs to.",
                               "type" : "string"
                            }
                         },
                         "type" : "object"
                      },
-                     "links" : [
-                        {
-                           "href" : "{userid}",
-                           "rel" : "child"
-                        }
-                     ],
                      "type" : "array"
                   }
-               },
-               "POST" : {
-                  "allowtoken" : 1,
-                  "description" : "Create new user",
-                  "method" : "POST",
-                  "name" : "create",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "comment" : {
-                           "description" : "Comment.",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "crypt_pass" : {
-                           "description" : "Encrypted password (see `man crypt`)",
-                           "optional" : 1,
-                           "pattern" : "\\$\\d\\$[a-zA-Z0-9\\.\\/]+\\$[a-zA-Z0-9\\.\\/]+",
-                           "type" : "string"
-                        },
-                        "email" : {
-                           "description" : "Users E-Mail address.",
-                           "format" : "email",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "enable" : {
-                           "default" : 0,
-                           "description" : "Flag to enable or disable the account.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "expire" : {
-                           "default" : 0,
-                           "description" : "Account expiration date (seconds since epoch). '0' means no expiration date.",
-                           "minimum" : 0,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (0 - N)"
-                        },
-                        "firstname" : {
-                           "description" : "First name.",
-                           "maxLength" : 64,
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "keys" : {
-                           "description" : "Keys for two factor auth (yubico).",
-                           "maxLength" : 128,
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "lastname" : {
-                           "description" : "Last name.",
-                           "maxLength" : 64,
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "password" : {
-                           "description" : "Password",
-                           "maxLength" : 32,
-                           "minLength" : 5,
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "role" : {
-                           "description" : "User role. Role 'root' is reserved for the Unix Superuser.",
-                           "enum" : [
-                              "root",
-                              "admin",
-                              "helpdesk",
-                              "qmanager",
-                              "audit"
-                           ],
-                           "type" : "string"
-                        },
-                        "userid" : {
-                           "description" : "User ID",
-                           "format" : "pmg-userid",
-                           "maxLength" : 64,
-                           "minLength" : 4,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        }
-                     }
-                  },
-                  "protected" : 1,
-                  "proxyto" : "master",
-                  "returns" : {
-                     "type" : "null"
-                  }
                }
             },
             "leaf" : 0,
-            "path" : "/access/users",
-            "text" : "users"
+            "path" : "/access/tfa",
+            "text" : "tfa"
          },
          {
             "info" : {
@@ -16311,6 +17253,12 @@ var apiSchema = [
                            "optional" : 1,
                            "type" : "string"
                         },
+                        "tfa-challenge" : {
+                           "description" : "The signed TFA challenge string the user wants to respond to.",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
                         "username" : {
                            "description" : "User name",
                            "maxLength" : 64,