]> git.proxmox.com Git - pmg-docs.git/blobdiff - api-viewer/apidata.js
update static schema info
[pmg-docs.git] / api-viewer / apidata.js
index e66f13d703094a77a0101b31db62a3eaed23258c..d6b3dd25293a9713d36ac3df9a84826069025b3d 100644 (file)
@@ -1,4 +1,4 @@
-var pmgapi = [
+var apiSchema = [
    {
       "children" : [
          {
@@ -6,6 +6,7 @@ var pmgapi = [
                {
                   "info" : {
                      "GET" : {
+                        "allowtoken" : 1,
                         "description" : "Returns the rule database digest. This is used internally for cluster synchronization.",
                         "method" : "GET",
                         "name" : "ruledb_digest",
@@ -34,6 +35,7 @@ var pmgapi = [
                            {
                               "info" : {
                                  "GET" : {
+                                    "allowtoken" : 1,
                                     "description" : "Get common rule properties.",
                                     "method" : "GET",
                                     "name" : "config",
@@ -76,6 +78,7 @@ var pmgapi = [
                                     }
                                  },
                                  "PUT" : {
+                                    "allowtoken" : 1,
                                     "description" : "Set rule properties.",
                                     "method" : "PUT",
                                     "name" : "update_config",
@@ -89,7 +92,7 @@ var pmgapi = [
                                              "typetext" : "<boolean>"
                                           },
                                           "direction" : {
-                                             "description" : "Rule direction. Value `0` matches incomming mails, value `1` matches outgoing mails, and value `2` matches both directions.",
+                                             "description" : "Rule direction. Value `0` matches incoming mails, value `1` matches outgoing mails, and value `2` matches both directions.",
                                              "maximum" : 2,
                                              "minimum" : 0,
                                              "optional" : 1,
@@ -138,6 +141,7 @@ var pmgapi = [
                                  {
                                     "info" : {
                                        "DELETE" : {
+                                          "allowtoken" : 1,
                                           "description" : "Delete group from 'from' list.",
                                           "method" : "DELETE",
                                           "name" : "delete_from_group",
@@ -175,6 +179,7 @@ var pmgapi = [
                               ],
                               "info" : {
                                  "GET" : {
+                                    "allowtoken" : 1,
                                     "description" : "Get 'from' group list.",
                                     "method" : "GET",
                                     "name" : "from",
@@ -208,6 +213,7 @@ var pmgapi = [
                                     }
                                  },
                                  "POST" : {
+                                    "allowtoken" : 1,
                                     "description" : "Add  group to 'from' list.",
                                     "method" : "POST",
                                     "name" : "add_from_group",
@@ -247,6 +253,7 @@ var pmgapi = [
                                  {
                                     "info" : {
                                        "DELETE" : {
+                                          "allowtoken" : 1,
                                           "description" : "Delete group from 'to' list.",
                                           "method" : "DELETE",
                                           "name" : "delete_to_group",
@@ -284,6 +291,7 @@ var pmgapi = [
                               ],
                               "info" : {
                                  "GET" : {
+                                    "allowtoken" : 1,
                                     "description" : "Get 'to' group list.",
                                     "method" : "GET",
                                     "name" : "to",
@@ -317,6 +325,7 @@ var pmgapi = [
                                     }
                                  },
                                  "POST" : {
+                                    "allowtoken" : 1,
                                     "description" : "Add  group to 'to' list.",
                                     "method" : "POST",
                                     "name" : "add_to_group",
@@ -356,6 +365,7 @@ var pmgapi = [
                                  {
                                     "info" : {
                                        "DELETE" : {
+                                          "allowtoken" : 1,
                                           "description" : "Delete group from 'when' list.",
                                           "method" : "DELETE",
                                           "name" : "delete_when_group",
@@ -393,6 +403,7 @@ var pmgapi = [
                               ],
                               "info" : {
                                  "GET" : {
+                                    "allowtoken" : 1,
                                     "description" : "Get 'when' group list.",
                                     "method" : "GET",
                                     "name" : "when",
@@ -426,6 +437,7 @@ var pmgapi = [
                                     }
                                  },
                                  "POST" : {
+                                    "allowtoken" : 1,
                                     "description" : "Add  group to 'when' list.",
                                     "method" : "POST",
                                     "name" : "add_when_group",
@@ -465,6 +477,7 @@ var pmgapi = [
                                  {
                                     "info" : {
                                        "DELETE" : {
+                                          "allowtoken" : 1,
                                           "description" : "Delete group from 'what' list.",
                                           "method" : "DELETE",
                                           "name" : "delete_what_group",
@@ -502,6 +515,7 @@ var pmgapi = [
                               ],
                               "info" : {
                                  "GET" : {
+                                    "allowtoken" : 1,
                                     "description" : "Get 'what' group list.",
                                     "method" : "GET",
                                     "name" : "what",
@@ -535,6 +549,7 @@ var pmgapi = [
                                     }
                                  },
                                  "POST" : {
+                                    "allowtoken" : 1,
                                     "description" : "Add  group to 'what' list.",
                                     "method" : "POST",
                                     "name" : "add_what_group",
@@ -574,6 +589,7 @@ var pmgapi = [
                                  {
                                     "info" : {
                                        "DELETE" : {
+                                          "allowtoken" : 1,
                                           "description" : "Delete group from 'action' list.",
                                           "method" : "DELETE",
                                           "name" : "delete_action_group",
@@ -611,6 +627,7 @@ var pmgapi = [
                               ],
                               "info" : {
                                  "GET" : {
+                                    "allowtoken" : 1,
                                     "description" : "Get 'action' group list.",
                                     "method" : "GET",
                                     "name" : "action",
@@ -644,6 +661,7 @@ var pmgapi = [
                                     }
                                  },
                                  "POST" : {
+                                    "allowtoken" : 1,
                                     "description" : "Add  group to 'action' list.",
                                     "method" : "POST",
                                     "name" : "add_action_group",
@@ -681,6 +699,7 @@ var pmgapi = [
                         ],
                         "info" : {
                            "DELETE" : {
+                              "allowtoken" : 1,
                               "description" : "Delete rule.",
                               "method" : "DELETE",
                               "name" : "delete_rule",
@@ -706,6 +725,7 @@ var pmgapi = [
                               }
                            },
                            "GET" : {
+                              "allowtoken" : 1,
                               "description" : "Directory index.",
                               "method" : "GET",
                               "name" : "index",
@@ -751,6 +771,7 @@ var pmgapi = [
                   ],
                   "info" : {
                      "GET" : {
+                        "allowtoken" : 1,
                         "description" : "Get list of rules.",
                         "method" : "GET",
                         "name" : "list_rules",
@@ -783,6 +804,7 @@ var pmgapi = [
                         }
                      },
                      "POST" : {
+                        "allowtoken" : 1,
                         "description" : "Create new rule.",
                         "method" : "POST",
                         "name" : "create_rule",
@@ -796,7 +818,7 @@ var pmgapi = [
                                  "typetext" : "<boolean>"
                               },
                               "direction" : {
-                                 "description" : "Rule direction. Value `0` matches incomming mails, value `1` matches outgoing mails, and value `2` matches both directions.",
+                                 "description" : "Rule direction. Value `0` matches incoming mails, value `1` matches outgoing mails, and value `2` matches both directions.",
                                  "maximum" : 2,
                                  "minimum" : 0,
                                  "optional" : 1,
@@ -840,6 +862,7 @@ var pmgapi = [
                            {
                               "info" : {
                                  "DELETE" : {
+                                    "allowtoken" : 1,
                                     "description" : "Delete 'actions' object.",
                                     "method" : "DELETE",
                                     "name" : "delete_action",
@@ -872,6 +895,7 @@ var pmgapi = [
                         ],
                         "info" : {
                            "GET" : {
+                              "allowtoken" : 1,
                               "description" : "List 'actions' objects.",
                               "method" : "GET",
                               "name" : "list_actions",
@@ -915,6 +939,7 @@ var pmgapi = [
                            {
                               "info" : {
                                  "GET" : {
+                                    "allowtoken" : 1,
                                     "description" : "Read 'BCC' object settings.",
                                     "method" : "GET",
                                     "name" : "read_bcc",
@@ -945,6 +970,7 @@ var pmgapi = [
                                     }
                                  },
                                  "PUT" : {
+                                    "allowtoken" : 1,
                                     "description" : "Update 'BCC' object.",
                                     "method" : "PUT",
                                     "name" : "update_bcc",
@@ -1004,6 +1030,7 @@ var pmgapi = [
                         ],
                         "info" : {
                            "POST" : {
+                              "allowtoken" : 1,
                               "description" : "Create 'BCC' object.",
                               "method" : "POST",
                               "name" : "bcc",
@@ -1060,6 +1087,7 @@ var pmgapi = [
                            {
                               "info" : {
                                  "GET" : {
+                                    "allowtoken" : 1,
                                     "description" : "Read 'Header Attribute' object settings.",
                                     "method" : "GET",
                                     "name" : "read_field",
@@ -1090,6 +1118,7 @@ var pmgapi = [
                                     }
                                  },
                                  "PUT" : {
+                                    "allowtoken" : 1,
                                     "description" : "Update 'Header Attribute' object.",
                                     "method" : "PUT",
                                     "name" : "update_field",
@@ -1148,6 +1177,7 @@ var pmgapi = [
                         ],
                         "info" : {
                            "POST" : {
+                              "allowtoken" : 1,
                               "description" : "Create 'Header Attribute' object.",
                               "method" : "POST",
                               "name" : "field",
@@ -1203,6 +1233,7 @@ var pmgapi = [
                            {
                               "info" : {
                                  "GET" : {
+                                    "allowtoken" : 1,
                                     "description" : "Read 'Notification' object settings.",
                                     "method" : "GET",
                                     "name" : "read_notification",
@@ -1233,6 +1264,7 @@ var pmgapi = [
                                     }
                                  },
                                  "PUT" : {
+                                    "allowtoken" : 1,
                                     "description" : "Update 'Notification' object.",
                                     "method" : "PUT",
                                     "name" : "update_notification",
@@ -1304,6 +1336,7 @@ var pmgapi = [
                         ],
                         "info" : {
                            "POST" : {
+                              "allowtoken" : 1,
                               "description" : "Create 'Notification' object.",
                               "method" : "POST",
                               "name" : "notification",
@@ -1372,6 +1405,7 @@ var pmgapi = [
                            {
                               "info" : {
                                  "GET" : {
+                                    "allowtoken" : 1,
                                     "description" : "Read 'Disclaimer' object settings.",
                                     "method" : "GET",
                                     "name" : "read_disclaimer",
@@ -1402,6 +1436,7 @@ var pmgapi = [
                                     }
                                  },
                                  "PUT" : {
+                                    "allowtoken" : 1,
                                     "description" : "Update 'Disclaimer' object.",
                                     "method" : "PUT",
                                     "name" : "update_disclaimer",
@@ -1454,6 +1489,7 @@ var pmgapi = [
                         ],
                         "info" : {
                            "POST" : {
+                              "allowtoken" : 1,
                               "description" : "Create 'Disclaimer' object.",
                               "method" : "POST",
                               "name" : "disclaimer",
@@ -1503,6 +1539,7 @@ var pmgapi = [
                            {
                               "info" : {
                                  "GET" : {
+                                    "allowtoken" : 1,
                                     "description" : "Read 'Remove attachments' object settings.",
                                     "method" : "GET",
                                     "name" : "read_removeattachments",
@@ -1533,6 +1570,7 @@ var pmgapi = [
                                     }
                                  },
                                  "PUT" : {
+                                    "allowtoken" : 1,
                                     "description" : "Update 'Remove attachments' object.",
                                     "method" : "PUT",
                                     "name" : "update_removeattachments",
@@ -1564,6 +1602,13 @@ var pmgapi = [
                                              "type" : "string",
                                              "typetext" : "<string>"
                                           },
+                                          "quarantine" : {
+                                             "default" : 0,
+                                             "description" : "Copy original mail to attachment Quarantine.",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
                                           "text" : {
                                              "description" : "The replacement text.",
                                              "maxLength" : 2048,
@@ -1591,6 +1636,7 @@ var pmgapi = [
                         ],
                         "info" : {
                            "POST" : {
+                              "allowtoken" : 1,
                               "description" : "Create 'Remove attachments' object.",
                               "method" : "POST",
                               "name" : "removeattachments",
@@ -1616,6 +1662,13 @@ var pmgapi = [
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
+                                    "quarantine" : {
+                                       "default" : 0,
+                                       "description" : "Copy original mail to attachment Quarantine.",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    },
                                     "text" : {
                                        "description" : "The replacement text.",
                                        "maxLength" : 2048,
@@ -1644,6 +1697,7 @@ var pmgapi = [
                   ],
                   "info" : {
                      "GET" : {
+                        "allowtoken" : 1,
                         "description" : "Directory index.",
                         "method" : "GET",
                         "name" : "index",
@@ -1686,6 +1740,7 @@ var pmgapi = [
                            {
                               "info" : {
                                  "GET" : {
+                                    "allowtoken" : 1,
                                     "description" : "Get 'what' group properties",
                                     "method" : "GET",
                                     "name" : "get_config",
@@ -1722,6 +1777,7 @@ var pmgapi = [
                                     }
                                  },
                                  "PUT" : {
+                                    "allowtoken" : 1,
                                     "description" : "Modify 'what' group properties",
                                     "method" : "PUT",
                                     "name" : "set_config",
@@ -1770,6 +1826,7 @@ var pmgapi = [
                                  {
                                     "info" : {
                                        "DELETE" : {
+                                          "allowtoken" : 1,
                                           "description" : "Remove an object from the 'what' group.",
                                           "method" : "DELETE",
                                           "name" : "delete_object",
@@ -1807,6 +1864,7 @@ var pmgapi = [
                               ],
                               "info" : {
                                  "GET" : {
+                                    "allowtoken" : 1,
                                     "description" : "List 'what' group objects.",
                                     "method" : "GET",
                                     "name" : "objects",
@@ -1855,6 +1913,7 @@ var pmgapi = [
                                  {
                                     "info" : {
                                        "GET" : {
+                                          "allowtoken" : 1,
                                           "description" : "Read 'ContentType Filter' object settings.",
                                           "method" : "GET",
                                           "name" : "read_contenttype",
@@ -1873,6 +1932,12 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin",
+                                                "audit"
+                                             ]
+                                          },
                                           "proxyto" : "master",
                                           "returns" : {
                                              "properties" : {
@@ -1884,6 +1949,7 @@ var pmgapi = [
                                           }
                                        },
                                        "PUT" : {
+                                          "allowtoken" : 1,
                                           "description" : "Update 'ContentType Filter' object.",
                                           "method" : "PUT",
                                           "name" : "update_contenttype",
@@ -1908,6 +1974,11 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin"
+                                             ]
+                                          },
                                           "protected" : 1,
                                           "proxyto" : "master",
                                           "returns" : {
@@ -1922,6 +1993,7 @@ var pmgapi = [
                               ],
                               "info" : {
                                  "POST" : {
+                                    "allowtoken" : 1,
                                     "description" : "Add 'ContentType Filter' object.",
                                     "method" : "POST",
                                     "name" : "contenttype",
@@ -1941,6 +2013,11 @@ var pmgapi = [
                                           }
                                        }
                                     },
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin"
+                                       ]
+                                    },
                                     "protected" : 1,
                                     "proxyto" : "master",
                                     "returns" : {
@@ -1958,6 +2035,7 @@ var pmgapi = [
                                  {
                                     "info" : {
                                        "GET" : {
+                                          "allowtoken" : 1,
                                           "description" : "Read 'Match Field' object settings.",
                                           "method" : "GET",
                                           "name" : "read_matchfield",
@@ -1976,6 +2054,12 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin",
+                                                "audit"
+                                             ]
+                                          },
                                           "proxyto" : "master",
                                           "returns" : {
                                              "properties" : {
@@ -1987,6 +2071,7 @@ var pmgapi = [
                                           }
                                        },
                                        "PUT" : {
+                                          "allowtoken" : 1,
                                           "description" : "Update 'Match Field' object.",
                                           "method" : "PUT",
                                           "name" : "update_matchfield",
@@ -2017,6 +2102,11 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin"
+                                             ]
+                                          },
                                           "protected" : 1,
                                           "proxyto" : "master",
                                           "returns" : {
@@ -2031,6 +2121,7 @@ var pmgapi = [
                               ],
                               "info" : {
                                  "POST" : {
+                                    "allowtoken" : 1,
                                     "description" : "Add 'Match Field' object.",
                                     "method" : "POST",
                                     "name" : "matchfield",
@@ -2056,6 +2147,11 @@ var pmgapi = [
                                           }
                                        }
                                     },
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin"
+                                       ]
+                                    },
                                     "protected" : 1,
                                     "proxyto" : "master",
                                     "returns" : {
@@ -2073,6 +2169,7 @@ var pmgapi = [
                                  {
                                     "info" : {
                                        "GET" : {
+                                          "allowtoken" : 1,
                                           "description" : "Read 'Spam Filter' object settings.",
                                           "method" : "GET",
                                           "name" : "read_spamfilter",
@@ -2091,6 +2188,12 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin",
+                                                "audit"
+                                             ]
+                                          },
                                           "proxyto" : "master",
                                           "returns" : {
                                              "properties" : {
@@ -2102,6 +2205,7 @@ var pmgapi = [
                                           }
                                        },
                                        "PUT" : {
+                                          "allowtoken" : 1,
                                           "description" : "Update 'Spam Filter' object.",
                                           "method" : "PUT",
                                           "name" : "update_spamfilter",
@@ -2126,6 +2230,11 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin"
+                                             ]
+                                          },
                                           "protected" : 1,
                                           "proxyto" : "master",
                                           "returns" : {
@@ -2140,6 +2249,7 @@ var pmgapi = [
                               ],
                               "info" : {
                                  "POST" : {
+                                    "allowtoken" : 1,
                                     "description" : "Add 'Spam Filter' object.",
                                     "method" : "POST",
                                     "name" : "spamfilter",
@@ -2159,6 +2269,11 @@ var pmgapi = [
                                           }
                                        }
                                     },
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin"
+                                       ]
+                                    },
                                     "protected" : 1,
                                     "proxyto" : "master",
                                     "returns" : {
@@ -2176,6 +2291,7 @@ var pmgapi = [
                                  {
                                     "info" : {
                                        "GET" : {
+                                          "allowtoken" : 1,
                                           "description" : "Read 'Archive Filter' object settings.",
                                           "method" : "GET",
                                           "name" : "read_archivefilter",
@@ -2194,6 +2310,12 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin",
+                                                "audit"
+                                             ]
+                                          },
                                           "proxyto" : "master",
                                           "returns" : {
                                              "properties" : {
@@ -2205,6 +2327,7 @@ var pmgapi = [
                                           }
                                        },
                                        "PUT" : {
+                                          "allowtoken" : 1,
                                           "description" : "Update 'Archive Filter' object.",
                                           "method" : "PUT",
                                           "name" : "update_archivefilter",
@@ -2229,6 +2352,11 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin"
+                                             ]
+                                          },
                                           "protected" : 1,
                                           "proxyto" : "master",
                                           "returns" : {
@@ -2243,6 +2371,7 @@ var pmgapi = [
                               ],
                               "info" : {
                                  "POST" : {
+                                    "allowtoken" : 1,
                                     "description" : "Add 'Archive Filter' object.",
                                     "method" : "POST",
                                     "name" : "archivefilter",
@@ -2262,6 +2391,11 @@ var pmgapi = [
                                           }
                                        }
                                     },
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin"
+                                       ]
+                                    },
                                     "protected" : 1,
                                     "proxyto" : "master",
                                     "returns" : {
@@ -2279,6 +2413,7 @@ var pmgapi = [
                                  {
                                     "info" : {
                                        "GET" : {
+                                          "allowtoken" : 1,
                                           "description" : "Read 'Match Filename' object settings.",
                                           "method" : "GET",
                                           "name" : "read_filenamefilter",
@@ -2297,6 +2432,12 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin",
+                                                "audit"
+                                             ]
+                                          },
                                           "proxyto" : "master",
                                           "returns" : {
                                              "properties" : {
@@ -2308,6 +2449,7 @@ var pmgapi = [
                                           }
                                        },
                                        "PUT" : {
+                                          "allowtoken" : 1,
                                           "description" : "Update 'Match Filename' object.",
                                           "method" : "PUT",
                                           "name" : "update_filenamefilter",
@@ -2332,6 +2474,11 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin"
+                                             ]
+                                          },
                                           "protected" : 1,
                                           "proxyto" : "master",
                                           "returns" : {
@@ -2346,6 +2493,7 @@ var pmgapi = [
                               ],
                               "info" : {
                                  "POST" : {
+                                    "allowtoken" : 1,
                                     "description" : "Add 'Match Filename' object.",
                                     "method" : "POST",
                                     "name" : "filenamefilter",
@@ -2365,6 +2513,11 @@ var pmgapi = [
                                           }
                                        }
                                     },
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin"
+                                       ]
+                                    },
                                     "protected" : 1,
                                     "proxyto" : "master",
                                     "returns" : {
@@ -2382,6 +2535,7 @@ var pmgapi = [
                                  {
                                     "info" : {
                                        "GET" : {
+                                          "allowtoken" : 1,
                                           "description" : "Read 'Virus Filter' object settings.",
                                           "method" : "GET",
                                           "name" : "read_virusfilter",
@@ -2400,6 +2554,12 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin",
+                                                "audit"
+                                             ]
+                                          },
                                           "proxyto" : "master",
                                           "returns" : {
                                              "properties" : {
@@ -2411,6 +2571,7 @@ var pmgapi = [
                                           }
                                        },
                                        "PUT" : {
+                                          "allowtoken" : 1,
                                           "description" : "Update 'Virus Filter' object.",
                                           "method" : "PUT",
                                           "name" : "update_virusfilter",
@@ -2429,6 +2590,11 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin"
+                                             ]
+                                          },
                                           "protected" : 1,
                                           "proxyto" : "master",
                                           "returns" : {
@@ -2443,6 +2609,7 @@ var pmgapi = [
                               ],
                               "info" : {
                                  "POST" : {
+                                    "allowtoken" : 1,
                                     "description" : "Add 'Virus Filter' object.",
                                     "method" : "POST",
                                     "name" : "virusfilter",
@@ -2456,6 +2623,11 @@ var pmgapi = [
                                           }
                                        }
                                     },
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin"
+                                       ]
+                                    },
                                     "protected" : 1,
                                     "proxyto" : "master",
                                     "returns" : {
@@ -2467,10 +2639,133 @@ var pmgapi = [
                               "leaf" : 0,
                               "path" : "/config/ruledb/what/{ogroup}/virusfilter",
                               "text" : "virusfilter"
+                           },
+                           {
+                              "children" : [
+                                 {
+                                    "info" : {
+                                       "GET" : {
+                                          "allowtoken" : 1,
+                                          "description" : "Read 'Match Archive Filename' object settings.",
+                                          "method" : "GET",
+                                          "name" : "read_archivefilenamefilter",
+                                          "parameters" : {
+                                             "additionalProperties" : 0,
+                                             "properties" : {
+                                                "id" : {
+                                                   "description" : "Object ID.",
+                                                   "type" : "integer",
+                                                   "typetext" : "<integer>"
+                                                },
+                                                "ogroup" : {
+                                                   "description" : "Object Groups ID.",
+                                                   "type" : "integer",
+                                                   "typetext" : "<integer>"
+                                                }
+                                             }
+                                          },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin",
+                                                "audit"
+                                             ]
+                                          },
+                                          "proxyto" : "master",
+                                          "returns" : {
+                                             "properties" : {
+                                                "id" : {
+                                                   "type" : "integer"
+                                                }
+                                             },
+                                             "type" : "object"
+                                          }
+                                       },
+                                       "PUT" : {
+                                          "allowtoken" : 1,
+                                          "description" : "Update 'Match Archive Filename' object.",
+                                          "method" : "PUT",
+                                          "name" : "update_archivefilenamefilter",
+                                          "parameters" : {
+                                             "additionalProperties" : 0,
+                                             "properties" : {
+                                                "filename" : {
+                                                   "description" : "Filename filter",
+                                                   "maxLength" : 1024,
+                                                   "type" : "string",
+                                                   "typetext" : "<string>"
+                                                },
+                                                "id" : {
+                                                   "description" : "Object ID.",
+                                                   "type" : "integer",
+                                                   "typetext" : "<integer>"
+                                                },
+                                                "ogroup" : {
+                                                   "description" : "Object Groups ID.",
+                                                   "type" : "integer",
+                                                   "typetext" : "<integer>"
+                                                }
+                                             }
+                                          },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin"
+                                             ]
+                                          },
+                                          "protected" : 1,
+                                          "proxyto" : "master",
+                                          "returns" : {
+                                             "type" : "null"
+                                          }
+                                       }
+                                    },
+                                    "leaf" : 1,
+                                    "path" : "/config/ruledb/what/{ogroup}/archivefilenamefilter/{id}",
+                                    "text" : "{id}"
+                                 }
+                              ],
+                              "info" : {
+                                 "POST" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Add 'Match Archive Filename' object.",
+                                    "method" : "POST",
+                                    "name" : "archivefilenamefilter",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "filename" : {
+                                             "description" : "Filename filter",
+                                             "maxLength" : 1024,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "ogroup" : {
+                                             "description" : "Object Groups ID.",
+                                             "type" : "integer",
+                                             "typetext" : "<integer>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin"
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : "master",
+                                    "returns" : {
+                                       "description" : "The object ID.",
+                                       "type" : "integer"
+                                    }
+                                 }
+                              },
+                              "leaf" : 0,
+                              "path" : "/config/ruledb/what/{ogroup}/archivefilenamefilter",
+                              "text" : "archivefilenamefilter"
                            }
                         ],
                         "info" : {
                            "DELETE" : {
+                              "allowtoken" : 1,
                               "description" : "Delete a 'what' group.",
                               "method" : "DELETE",
                               "name" : "delete_{$oclass}_group",
@@ -2496,6 +2791,7 @@ var pmgapi = [
                               }
                            },
                            "GET" : {
+                              "allowtoken" : 1,
                               "description" : "Directory index.",
                               "method" : "GET",
                               "name" : "index",
@@ -2541,6 +2837,7 @@ var pmgapi = [
                   ],
                   "info" : {
                      "GET" : {
+                        "allowtoken" : 1,
                         "description" : "Get list of 'what' groups.",
                         "method" : "GET",
                         "name" : "list_what_groups",
@@ -2567,6 +2864,7 @@ var pmgapi = [
                         }
                      },
                      "POST" : {
+                        "allowtoken" : 1,
                         "description" : "Create a new 'what' group.",
                         "method" : "POST",
                         "name" : "create_what_group",
@@ -2611,6 +2909,7 @@ var pmgapi = [
                            {
                               "info" : {
                                  "GET" : {
+                                    "allowtoken" : 1,
                                     "description" : "Get 'when' group properties",
                                     "method" : "GET",
                                     "name" : "get_config",
@@ -2647,6 +2946,7 @@ var pmgapi = [
                                     }
                                  },
                                  "PUT" : {
+                                    "allowtoken" : 1,
                                     "description" : "Modify 'when' group properties",
                                     "method" : "PUT",
                                     "name" : "set_config",
@@ -2695,6 +2995,7 @@ var pmgapi = [
                                  {
                                     "info" : {
                                        "DELETE" : {
+                                          "allowtoken" : 1,
                                           "description" : "Remove an object from the 'when' group.",
                                           "method" : "DELETE",
                                           "name" : "delete_object",
@@ -2732,6 +3033,7 @@ var pmgapi = [
                               ],
                               "info" : {
                                  "GET" : {
+                                    "allowtoken" : 1,
                                     "description" : "List 'when' group objects.",
                                     "method" : "GET",
                                     "name" : "objects",
@@ -2780,6 +3082,7 @@ var pmgapi = [
                                  {
                                     "info" : {
                                        "GET" : {
+                                          "allowtoken" : 1,
                                           "description" : "Read 'TimeFrame' object settings.",
                                           "method" : "GET",
                                           "name" : "read_timeframe",
@@ -2798,6 +3101,12 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin",
+                                                "audit"
+                                             ]
+                                          },
                                           "proxyto" : "master",
                                           "returns" : {
                                              "properties" : {
@@ -2809,6 +3118,7 @@ var pmgapi = [
                                           }
                                        },
                                        "PUT" : {
+                                          "allowtoken" : 1,
                                           "description" : "Update 'TimeFrame' object.",
                                           "method" : "PUT",
                                           "name" : "update_timeframe",
@@ -2837,6 +3147,11 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin"
+                                             ]
+                                          },
                                           "protected" : 1,
                                           "proxyto" : "master",
                                           "returns" : {
@@ -2851,6 +3166,7 @@ var pmgapi = [
                               ],
                               "info" : {
                                  "POST" : {
+                                    "allowtoken" : 1,
                                     "description" : "Add 'TimeFrame' object.",
                                     "method" : "POST",
                                     "name" : "timeframe",
@@ -2874,6 +3190,11 @@ var pmgapi = [
                                           }
                                        }
                                     },
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin"
+                                       ]
+                                    },
                                     "protected" : 1,
                                     "proxyto" : "master",
                                     "returns" : {
@@ -2889,6 +3210,7 @@ var pmgapi = [
                         ],
                         "info" : {
                            "DELETE" : {
+                              "allowtoken" : 1,
                               "description" : "Delete a 'when' group.",
                               "method" : "DELETE",
                               "name" : "delete_{$oclass}_group",
@@ -2914,6 +3236,7 @@ var pmgapi = [
                               }
                            },
                            "GET" : {
+                              "allowtoken" : 1,
                               "description" : "Directory index.",
                               "method" : "GET",
                               "name" : "index",
@@ -2959,6 +3282,7 @@ var pmgapi = [
                   ],
                   "info" : {
                      "GET" : {
+                        "allowtoken" : 1,
                         "description" : "Get list of 'when' groups.",
                         "method" : "GET",
                         "name" : "list_when_groups",
@@ -2985,6 +3309,7 @@ var pmgapi = [
                         }
                      },
                      "POST" : {
+                        "allowtoken" : 1,
                         "description" : "Create a new 'when' group.",
                         "method" : "POST",
                         "name" : "create_when_group",
@@ -3029,6 +3354,7 @@ var pmgapi = [
                            {
                               "info" : {
                                  "GET" : {
+                                    "allowtoken" : 1,
                                     "description" : "Get 'who' group properties",
                                     "method" : "GET",
                                     "name" : "get_config",
@@ -3065,6 +3391,7 @@ var pmgapi = [
                                     }
                                  },
                                  "PUT" : {
+                                    "allowtoken" : 1,
                                     "description" : "Modify 'who' group properties",
                                     "method" : "PUT",
                                     "name" : "set_config",
@@ -3113,6 +3440,7 @@ var pmgapi = [
                                  {
                                     "info" : {
                                        "DELETE" : {
+                                          "allowtoken" : 1,
                                           "description" : "Remove an object from the 'who' group.",
                                           "method" : "DELETE",
                                           "name" : "delete_object",
@@ -3150,6 +3478,7 @@ var pmgapi = [
                               ],
                               "info" : {
                                  "GET" : {
+                                    "allowtoken" : 1,
                                     "description" : "List 'who' group objects.",
                                     "method" : "GET",
                                     "name" : "objects",
@@ -3198,6 +3527,7 @@ var pmgapi = [
                                  {
                                     "info" : {
                                        "GET" : {
+                                          "allowtoken" : 1,
                                           "description" : "Read 'Mail address' object settings.",
                                           "method" : "GET",
                                           "name" : "read_email",
@@ -3216,6 +3546,12 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin",
+                                                "audit"
+                                             ]
+                                          },
                                           "proxyto" : "master",
                                           "returns" : {
                                              "properties" : {
@@ -3227,6 +3563,7 @@ var pmgapi = [
                                           }
                                        },
                                        "PUT" : {
+                                          "allowtoken" : 1,
                                           "description" : "Update 'Mail address' object.",
                                           "method" : "PUT",
                                           "name" : "update_email",
@@ -3251,6 +3588,11 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin"
+                                             ]
+                                          },
                                           "protected" : 1,
                                           "proxyto" : "master",
                                           "returns" : {
@@ -3265,6 +3607,7 @@ var pmgapi = [
                               ],
                               "info" : {
                                  "POST" : {
+                                    "allowtoken" : 1,
                                     "description" : "Add 'Mail address' object.",
                                     "method" : "POST",
                                     "name" : "email",
@@ -3284,6 +3627,11 @@ var pmgapi = [
                                           }
                                        }
                                     },
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin"
+                                       ]
+                                    },
                                     "protected" : 1,
                                     "proxyto" : "master",
                                     "returns" : {
@@ -3301,6 +3649,7 @@ var pmgapi = [
                                  {
                                     "info" : {
                                        "GET" : {
+                                          "allowtoken" : 1,
                                           "description" : "Read 'Domain' object settings.",
                                           "method" : "GET",
                                           "name" : "read_domain",
@@ -3319,6 +3668,12 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin",
+                                                "audit"
+                                             ]
+                                          },
                                           "proxyto" : "master",
                                           "returns" : {
                                              "properties" : {
@@ -3330,6 +3685,7 @@ var pmgapi = [
                                           }
                                        },
                                        "PUT" : {
+                                          "allowtoken" : 1,
                                           "description" : "Update 'Domain' object.",
                                           "method" : "PUT",
                                           "name" : "update_domain",
@@ -3354,6 +3710,11 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin"
+                                             ]
+                                          },
                                           "protected" : 1,
                                           "proxyto" : "master",
                                           "returns" : {
@@ -3368,6 +3729,7 @@ var pmgapi = [
                               ],
                               "info" : {
                                  "POST" : {
+                                    "allowtoken" : 1,
                                     "description" : "Add 'Domain' object.",
                                     "method" : "POST",
                                     "name" : "domain",
@@ -3387,6 +3749,11 @@ var pmgapi = [
                                           }
                                        }
                                     },
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin"
+                                       ]
+                                    },
                                     "protected" : 1,
                                     "proxyto" : "master",
                                     "returns" : {
@@ -3404,6 +3771,7 @@ var pmgapi = [
                                  {
                                     "info" : {
                                        "GET" : {
+                                          "allowtoken" : 1,
                                           "description" : "Read 'Regular Expression' object settings.",
                                           "method" : "GET",
                                           "name" : "read_regex",
@@ -3422,6 +3790,12 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin",
+                                                "audit"
+                                             ]
+                                          },
                                           "proxyto" : "master",
                                           "returns" : {
                                              "properties" : {
@@ -3433,6 +3807,7 @@ var pmgapi = [
                                           }
                                        },
                                        "PUT" : {
+                                          "allowtoken" : 1,
                                           "description" : "Update 'Regular Expression' object.",
                                           "method" : "PUT",
                                           "name" : "update_regex",
@@ -3457,6 +3832,11 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin"
+                                             ]
+                                          },
                                           "protected" : 1,
                                           "proxyto" : "master",
                                           "returns" : {
@@ -3471,6 +3851,7 @@ var pmgapi = [
                               ],
                               "info" : {
                                  "POST" : {
+                                    "allowtoken" : 1,
                                     "description" : "Add 'Regular Expression' object.",
                                     "method" : "POST",
                                     "name" : "regex",
@@ -3490,9 +3871,14 @@ var pmgapi = [
                                           }
                                        }
                                     },
-                                    "protected" : 1,
-                                    "proxyto" : "master",
-                                    "returns" : {
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin"
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : "master",
+                                    "returns" : {
                                        "description" : "The object ID.",
                                        "type" : "integer"
                                     }
@@ -3507,6 +3893,7 @@ var pmgapi = [
                                  {
                                     "info" : {
                                        "GET" : {
+                                          "allowtoken" : 1,
                                           "description" : "Read 'IP Address' object settings.",
                                           "method" : "GET",
                                           "name" : "read_ip",
@@ -3525,6 +3912,12 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin",
+                                                "audit"
+                                             ]
+                                          },
                                           "proxyto" : "master",
                                           "returns" : {
                                              "properties" : {
@@ -3536,6 +3929,7 @@ var pmgapi = [
                                           }
                                        },
                                        "PUT" : {
+                                          "allowtoken" : 1,
                                           "description" : "Update 'IP Address' object.",
                                           "method" : "PUT",
                                           "name" : "update_ip",
@@ -3560,6 +3954,11 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin"
+                                             ]
+                                          },
                                           "protected" : 1,
                                           "proxyto" : "master",
                                           "returns" : {
@@ -3574,6 +3973,7 @@ var pmgapi = [
                               ],
                               "info" : {
                                  "POST" : {
+                                    "allowtoken" : 1,
                                     "description" : "Add 'IP Address' object.",
                                     "method" : "POST",
                                     "name" : "ip",
@@ -3593,6 +3993,11 @@ var pmgapi = [
                                           }
                                        }
                                     },
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin"
+                                       ]
+                                    },
                                     "protected" : 1,
                                     "proxyto" : "master",
                                     "returns" : {
@@ -3610,6 +4015,7 @@ var pmgapi = [
                                  {
                                     "info" : {
                                        "GET" : {
+                                          "allowtoken" : 1,
                                           "description" : "Read 'IP Network' object settings.",
                                           "method" : "GET",
                                           "name" : "read_network",
@@ -3628,6 +4034,12 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin",
+                                                "audit"
+                                             ]
+                                          },
                                           "proxyto" : "master",
                                           "returns" : {
                                              "properties" : {
@@ -3639,6 +4051,7 @@ var pmgapi = [
                                           }
                                        },
                                        "PUT" : {
+                                          "allowtoken" : 1,
                                           "description" : "Update 'IP Network' object.",
                                           "method" : "PUT",
                                           "name" : "update_network",
@@ -3663,6 +4076,11 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin"
+                                             ]
+                                          },
                                           "protected" : 1,
                                           "proxyto" : "master",
                                           "returns" : {
@@ -3677,6 +4095,7 @@ var pmgapi = [
                               ],
                               "info" : {
                                  "POST" : {
+                                    "allowtoken" : 1,
                                     "description" : "Add 'IP Network' object.",
                                     "method" : "POST",
                                     "name" : "network",
@@ -3696,6 +4115,11 @@ var pmgapi = [
                                           }
                                        }
                                     },
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin"
+                                       ]
+                                    },
                                     "protected" : 1,
                                     "proxyto" : "master",
                                     "returns" : {
@@ -3713,6 +4137,7 @@ var pmgapi = [
                                  {
                                     "info" : {
                                        "GET" : {
+                                          "allowtoken" : 1,
                                           "description" : "Read 'LDAP Group' object settings.",
                                           "method" : "GET",
                                           "name" : "read_ldap",
@@ -3731,6 +4156,12 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin",
+                                                "audit"
+                                             ]
+                                          },
                                           "proxyto" : "master",
                                           "returns" : {
                                              "properties" : {
@@ -3742,6 +4173,7 @@ var pmgapi = [
                                           }
                                        },
                                        "PUT" : {
+                                          "allowtoken" : 1,
                                           "description" : "Update 'LDAP Group' object.",
                                           "method" : "PUT",
                                           "name" : "update_ldap",
@@ -3784,6 +4216,11 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin"
+                                             ]
+                                          },
                                           "protected" : 1,
                                           "proxyto" : "master",
                                           "returns" : {
@@ -3798,6 +4235,7 @@ var pmgapi = [
                               ],
                               "info" : {
                                  "POST" : {
+                                    "allowtoken" : 1,
                                     "description" : "Add 'LDAP Group' object.",
                                     "method" : "POST",
                                     "name" : "ldap",
@@ -3835,6 +4273,11 @@ var pmgapi = [
                                           }
                                        }
                                     },
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin"
+                                       ]
+                                    },
                                     "protected" : 1,
                                     "proxyto" : "master",
                                     "returns" : {
@@ -3852,6 +4295,7 @@ var pmgapi = [
                                  {
                                     "info" : {
                                        "GET" : {
+                                          "allowtoken" : 1,
                                           "description" : "Read 'LDAP User' object settings.",
                                           "method" : "GET",
                                           "name" : "read_ldapuser",
@@ -3870,6 +4314,12 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin",
+                                                "audit"
+                                             ]
+                                          },
                                           "proxyto" : "master",
                                           "returns" : {
                                              "properties" : {
@@ -3881,6 +4331,7 @@ var pmgapi = [
                                           }
                                        },
                                        "PUT" : {
+                                          "allowtoken" : 1,
                                           "description" : "Update 'LDAP User' object.",
                                           "method" : "PUT",
                                           "name" : "update_ldapuser",
@@ -3912,6 +4363,11 @@ var pmgapi = [
                                                 }
                                              }
                                           },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin"
+                                             ]
+                                          },
                                           "protected" : 1,
                                           "proxyto" : "master",
                                           "returns" : {
@@ -3926,6 +4382,7 @@ var pmgapi = [
                               ],
                               "info" : {
                                  "POST" : {
+                                    "allowtoken" : 1,
                                     "description" : "Add 'LDAP User' object.",
                                     "method" : "POST",
                                     "name" : "ldapuser",
@@ -3952,6 +4409,11 @@ var pmgapi = [
                                           }
                                        }
                                     },
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin"
+                                       ]
+                                    },
                                     "protected" : 1,
                                     "proxyto" : "master",
                                     "returns" : {
@@ -3967,6 +4429,7 @@ var pmgapi = [
                         ],
                         "info" : {
                            "DELETE" : {
+                              "allowtoken" : 1,
                               "description" : "Delete a 'who' group.",
                               "method" : "DELETE",
                               "name" : "delete_{$oclass}_group",
@@ -3992,6 +4455,7 @@ var pmgapi = [
                               }
                            },
                            "GET" : {
+                              "allowtoken" : 1,
                               "description" : "Directory index.",
                               "method" : "GET",
                               "name" : "index",
@@ -4037,6 +4501,7 @@ var pmgapi = [
                   ],
                   "info" : {
                      "GET" : {
+                        "allowtoken" : 1,
                         "description" : "Get list of 'who' groups.",
                         "method" : "GET",
                         "name" : "list_who_groups",
@@ -4063,6 +4528,7 @@ var pmgapi = [
                         }
                      },
                      "POST" : {
+                        "allowtoken" : 1,
                         "description" : "Create a new 'who' group.",
                         "method" : "POST",
                         "name" : "create_who_group",
@@ -4103,6 +4569,7 @@ var pmgapi = [
             ],
             "info" : {
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "Directory index.",
                   "method" : "GET",
                   "name" : "index",
@@ -4130,6 +4597,7 @@ var pmgapi = [
                   }
                },
                "POST" : {
+                  "allowtoken" : 1,
                   "description" : "Reset PMG rule database back to factory defaults.",
                   "method" : "POST",
                   "name" : "reset_ruledb",
@@ -4158,6 +4626,7 @@ var pmgapi = [
                      {
                         "info" : {
                            "DELETE" : {
+                              "allowtoken" : 1,
                               "description" : "Remove an object from the SMTP whitelist.",
                               "method" : "DELETE",
                               "name" : "delete_object",
@@ -4190,6 +4659,7 @@ var pmgapi = [
                   ],
                   "info" : {
                      "GET" : {
+                        "allowtoken" : 1,
                         "description" : "Get list of all SMTP whitelist entries.",
                         "method" : "GET",
                         "name" : "objects",
@@ -4231,6 +4701,7 @@ var pmgapi = [
                      {
                         "info" : {
                            "GET" : {
+                              "allowtoken" : 1,
                               "description" : "Read 'Mail address' object settings.",
                               "method" : "GET",
                               "name" : "read_email",
@@ -4244,6 +4715,12 @@ var pmgapi = [
                                     }
                                  }
                               },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin",
+                                    "audit"
+                                 ]
+                              },
                               "proxyto" : "master",
                               "returns" : {
                                  "properties" : {
@@ -4255,6 +4732,7 @@ var pmgapi = [
                               }
                            },
                            "PUT" : {
+                              "allowtoken" : 1,
                               "description" : "Update 'Mail address' object.",
                               "method" : "PUT",
                               "name" : "update_email",
@@ -4274,6 +4752,11 @@ var pmgapi = [
                                     }
                                  }
                               },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin"
+                                 ]
+                              },
                               "protected" : 1,
                               "proxyto" : "master",
                               "returns" : {
@@ -4288,6 +4771,7 @@ var pmgapi = [
                   ],
                   "info" : {
                      "POST" : {
+                        "allowtoken" : 1,
                         "description" : "Add 'Mail address' object.",
                         "method" : "POST",
                         "name" : "email",
@@ -4302,6 +4786,11 @@ var pmgapi = [
                               }
                            }
                         },
+                        "permissions" : {
+                           "check" : [
+                              "admin"
+                           ]
+                        },
                         "protected" : 1,
                         "proxyto" : "master",
                         "returns" : {
@@ -4319,6 +4808,7 @@ var pmgapi = [
                      {
                         "info" : {
                            "GET" : {
+                              "allowtoken" : 1,
                               "description" : "Read 'Mail address' object settings.",
                               "method" : "GET",
                               "name" : "read_receiver",
@@ -4332,6 +4822,12 @@ var pmgapi = [
                                     }
                                  }
                               },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin",
+                                    "audit"
+                                 ]
+                              },
                               "proxyto" : "master",
                               "returns" : {
                                  "properties" : {
@@ -4343,6 +4839,7 @@ var pmgapi = [
                               }
                            },
                            "PUT" : {
+                              "allowtoken" : 1,
                               "description" : "Update 'Mail address' object.",
                               "method" : "PUT",
                               "name" : "update_receiver",
@@ -4362,6 +4859,11 @@ var pmgapi = [
                                     }
                                  }
                               },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin"
+                                 ]
+                              },
                               "protected" : 1,
                               "proxyto" : "master",
                               "returns" : {
@@ -4376,6 +4878,7 @@ var pmgapi = [
                   ],
                   "info" : {
                      "POST" : {
+                        "allowtoken" : 1,
                         "description" : "Add 'Mail address' object.",
                         "method" : "POST",
                         "name" : "receiver",
@@ -4390,6 +4893,11 @@ var pmgapi = [
                               }
                            }
                         },
+                        "permissions" : {
+                           "check" : [
+                              "admin"
+                           ]
+                        },
                         "protected" : 1,
                         "proxyto" : "master",
                         "returns" : {
@@ -4407,6 +4915,7 @@ var pmgapi = [
                      {
                         "info" : {
                            "GET" : {
+                              "allowtoken" : 1,
                               "description" : "Read 'Domain' object settings.",
                               "method" : "GET",
                               "name" : "read_domain",
@@ -4420,6 +4929,12 @@ var pmgapi = [
                                     }
                                  }
                               },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin",
+                                    "audit"
+                                 ]
+                              },
                               "proxyto" : "master",
                               "returns" : {
                                  "properties" : {
@@ -4431,6 +4946,7 @@ var pmgapi = [
                               }
                            },
                            "PUT" : {
+                              "allowtoken" : 1,
                               "description" : "Update 'Domain' object.",
                               "method" : "PUT",
                               "name" : "update_domain",
@@ -4450,6 +4966,11 @@ var pmgapi = [
                                     }
                                  }
                               },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin"
+                                 ]
+                              },
                               "protected" : 1,
                               "proxyto" : "master",
                               "returns" : {
@@ -4464,6 +4985,7 @@ var pmgapi = [
                   ],
                   "info" : {
                      "POST" : {
+                        "allowtoken" : 1,
                         "description" : "Add 'Domain' object.",
                         "method" : "POST",
                         "name" : "domain",
@@ -4478,6 +5000,11 @@ var pmgapi = [
                               }
                            }
                         },
+                        "permissions" : {
+                           "check" : [
+                              "admin"
+                           ]
+                        },
                         "protected" : 1,
                         "proxyto" : "master",
                         "returns" : {
@@ -4495,6 +5022,7 @@ var pmgapi = [
                      {
                         "info" : {
                            "GET" : {
+                              "allowtoken" : 1,
                               "description" : "Read 'Domain' object settings.",
                               "method" : "GET",
                               "name" : "read_receiver_domain",
@@ -4508,6 +5036,12 @@ var pmgapi = [
                                     }
                                  }
                               },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin",
+                                    "audit"
+                                 ]
+                              },
                               "proxyto" : "master",
                               "returns" : {
                                  "properties" : {
@@ -4519,6 +5053,7 @@ var pmgapi = [
                               }
                            },
                            "PUT" : {
+                              "allowtoken" : 1,
                               "description" : "Update 'Domain' object.",
                               "method" : "PUT",
                               "name" : "update_receiver_domain",
@@ -4538,6 +5073,11 @@ var pmgapi = [
                                     }
                                  }
                               },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin"
+                                 ]
+                              },
                               "protected" : 1,
                               "proxyto" : "master",
                               "returns" : {
@@ -4552,6 +5092,7 @@ var pmgapi = [
                   ],
                   "info" : {
                      "POST" : {
+                        "allowtoken" : 1,
                         "description" : "Add 'Domain' object.",
                         "method" : "POST",
                         "name" : "receiver_domain",
@@ -4566,6 +5107,11 @@ var pmgapi = [
                               }
                            }
                         },
+                        "permissions" : {
+                           "check" : [
+                              "admin"
+                           ]
+                        },
                         "protected" : 1,
                         "proxyto" : "master",
                         "returns" : {
@@ -4583,6 +5129,7 @@ var pmgapi = [
                      {
                         "info" : {
                            "GET" : {
+                              "allowtoken" : 1,
                               "description" : "Read 'Regular Expression' object settings.",
                               "method" : "GET",
                               "name" : "read_regex",
@@ -4596,6 +5143,12 @@ var pmgapi = [
                                     }
                                  }
                               },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin",
+                                    "audit"
+                                 ]
+                              },
                               "proxyto" : "master",
                               "returns" : {
                                  "properties" : {
@@ -4607,6 +5160,7 @@ var pmgapi = [
                               }
                            },
                            "PUT" : {
+                              "allowtoken" : 1,
                               "description" : "Update 'Regular Expression' object.",
                               "method" : "PUT",
                               "name" : "update_regex",
@@ -4626,6 +5180,11 @@ var pmgapi = [
                                     }
                                  }
                               },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin"
+                                 ]
+                              },
                               "protected" : 1,
                               "proxyto" : "master",
                               "returns" : {
@@ -4640,6 +5199,7 @@ var pmgapi = [
                   ],
                   "info" : {
                      "POST" : {
+                        "allowtoken" : 1,
                         "description" : "Add 'Regular Expression' object.",
                         "method" : "POST",
                         "name" : "regex",
@@ -4654,6 +5214,11 @@ var pmgapi = [
                               }
                            }
                         },
+                        "permissions" : {
+                           "check" : [
+                              "admin"
+                           ]
+                        },
                         "protected" : 1,
                         "proxyto" : "master",
                         "returns" : {
@@ -4671,6 +5236,7 @@ var pmgapi = [
                      {
                         "info" : {
                            "GET" : {
+                              "allowtoken" : 1,
                               "description" : "Read 'Regular Expression' object settings.",
                               "method" : "GET",
                               "name" : "read_receiver_regex",
@@ -4684,6 +5250,12 @@ var pmgapi = [
                                     }
                                  }
                               },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin",
+                                    "audit"
+                                 ]
+                              },
                               "proxyto" : "master",
                               "returns" : {
                                  "properties" : {
@@ -4695,6 +5267,7 @@ var pmgapi = [
                               }
                            },
                            "PUT" : {
+                              "allowtoken" : 1,
                               "description" : "Update 'Regular Expression' object.",
                               "method" : "PUT",
                               "name" : "update_receiver_regex",
@@ -4714,6 +5287,11 @@ var pmgapi = [
                                     }
                                  }
                               },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin"
+                                 ]
+                              },
                               "protected" : 1,
                               "proxyto" : "master",
                               "returns" : {
@@ -4728,6 +5306,7 @@ var pmgapi = [
                   ],
                   "info" : {
                      "POST" : {
+                        "allowtoken" : 1,
                         "description" : "Add 'Regular Expression' object.",
                         "method" : "POST",
                         "name" : "receiver_regex",
@@ -4742,6 +5321,11 @@ var pmgapi = [
                               }
                            }
                         },
+                        "permissions" : {
+                           "check" : [
+                              "admin"
+                           ]
+                        },
                         "protected" : 1,
                         "proxyto" : "master",
                         "returns" : {
@@ -4759,6 +5343,7 @@ var pmgapi = [
                      {
                         "info" : {
                            "GET" : {
+                              "allowtoken" : 1,
                               "description" : "Read 'IP Address' object settings.",
                               "method" : "GET",
                               "name" : "read_ip",
@@ -4772,6 +5357,12 @@ var pmgapi = [
                                     }
                                  }
                               },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin",
+                                    "audit"
+                                 ]
+                              },
                               "proxyto" : "master",
                               "returns" : {
                                  "properties" : {
@@ -4783,6 +5374,7 @@ var pmgapi = [
                               }
                            },
                            "PUT" : {
+                              "allowtoken" : 1,
                               "description" : "Update 'IP Address' object.",
                               "method" : "PUT",
                               "name" : "update_ip",
@@ -4802,6 +5394,11 @@ var pmgapi = [
                                     }
                                  }
                               },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin"
+                                 ]
+                              },
                               "protected" : 1,
                               "proxyto" : "master",
                               "returns" : {
@@ -4816,6 +5413,7 @@ var pmgapi = [
                   ],
                   "info" : {
                      "POST" : {
+                        "allowtoken" : 1,
                         "description" : "Add 'IP Address' object.",
                         "method" : "POST",
                         "name" : "ip",
@@ -4830,6 +5428,11 @@ var pmgapi = [
                               }
                            }
                         },
+                        "permissions" : {
+                           "check" : [
+                              "admin"
+                           ]
+                        },
                         "protected" : 1,
                         "proxyto" : "master",
                         "returns" : {
@@ -4847,6 +5450,7 @@ var pmgapi = [
                      {
                         "info" : {
                            "GET" : {
+                              "allowtoken" : 1,
                               "description" : "Read 'IP Network' object settings.",
                               "method" : "GET",
                               "name" : "read_network",
@@ -4860,6 +5464,12 @@ var pmgapi = [
                                     }
                                  }
                               },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin",
+                                    "audit"
+                                 ]
+                              },
                               "proxyto" : "master",
                               "returns" : {
                                  "properties" : {
@@ -4871,6 +5481,7 @@ var pmgapi = [
                               }
                            },
                            "PUT" : {
+                              "allowtoken" : 1,
                               "description" : "Update 'IP Network' object.",
                               "method" : "PUT",
                               "name" : "update_network",
@@ -4890,6 +5501,11 @@ var pmgapi = [
                                     }
                                  }
                               },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin"
+                                 ]
+                              },
                               "protected" : 1,
                               "proxyto" : "master",
                               "returns" : {
@@ -4904,6 +5520,7 @@ var pmgapi = [
                   ],
                   "info" : {
                      "POST" : {
+                        "allowtoken" : 1,
                         "description" : "Add 'IP Network' object.",
                         "method" : "POST",
                         "name" : "network",
@@ -4918,6 +5535,11 @@ var pmgapi = [
                               }
                            }
                         },
+                        "permissions" : {
+                           "check" : [
+                              "admin"
+                           ]
+                        },
                         "protected" : 1,
                         "proxyto" : "master",
                         "returns" : {
@@ -4933,6 +5555,7 @@ var pmgapi = [
             ],
             "info" : {
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "Directory index.",
                   "method" : "GET",
                   "name" : "index",
@@ -4975,6 +5598,7 @@ var pmgapi = [
                      {
                         "info" : {
                            "GET" : {
+                              "allowtoken" : 1,
                               "description" : "Get LDAP profile configuration.",
                               "method" : "GET",
                               "name" : "read_config",
@@ -4999,6 +5623,7 @@ var pmgapi = [
                               "returns" : {}
                            },
                            "PUT" : {
+                              "allowtoken" : 1,
                               "description" : "Update LDAP profile settings.",
                               "method" : "PUT",
                               "name" : "update_config",
@@ -5031,6 +5656,12 @@ var pmgapi = [
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
+                                    "cafile" : {
+                                       "description" : "Path to CA file. Only useful with option 'verify'",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
                                     "comment" : {
                                        "description" : "Description.",
                                        "maxLength" : 4096,
@@ -5089,10 +5720,11 @@ var pmgapi = [
                                     },
                                     "mode" : {
                                        "default" : "ldap",
-                                       "description" : "LDAP protocol mode ('ldap' or 'ldaps').",
+                                       "description" : "LDAP protocol mode ('ldap', 'ldaps' or 'ldap+starttls').",
                                        "enum" : [
                                           "ldap",
-                                          "ldaps"
+                                          "ldaps",
+                                          "ldap+starttls"
                                        ],
                                        "optional" : 1,
                                        "type" : "string"
@@ -5126,6 +5758,13 @@ var pmgapi = [
                                        "optional" : 1,
                                        "type" : "string",
                                        "typetext" : "<string>"
+                                    },
+                                    "verify" : {
+                                       "default" : 0,
+                                       "description" : "Verify server certificate. Only useful with ldaps or ldap+starttls.",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
                                     }
                                  },
                                  "type" : "object"
@@ -5149,6 +5788,7 @@ var pmgapi = [
                      {
                         "info" : {
                            "POST" : {
+                              "allowtoken" : 1,
                               "description" : "Synchronice LDAP users to local database.",
                               "method" : "POST",
                               "name" : "sync_profile",
@@ -5184,6 +5824,7 @@ var pmgapi = [
                            {
                               "info" : {
                                  "GET" : {
+                                    "allowtoken" : 1,
                                     "description" : "Get all email addresses for the specified user.",
                                     "method" : "GET",
                                     "name" : "address_list",
@@ -5235,6 +5876,7 @@ var pmgapi = [
                         ],
                         "info" : {
                            "GET" : {
+                              "allowtoken" : 1,
                               "description" : "List LDAP users.",
                               "method" : "GET",
                               "name" : "profile_list_users",
@@ -5291,6 +5933,7 @@ var pmgapi = [
                            {
                               "info" : {
                                  "GET" : {
+                                    "allowtoken" : 1,
                                     "description" : "List LDAP group members.",
                                     "method" : "GET",
                                     "name" : "profile_list_group_members",
@@ -5344,6 +5987,7 @@ var pmgapi = [
                         ],
                         "info" : {
                            "GET" : {
+                              "allowtoken" : 1,
                               "description" : "List LDAP groups.",
                               "method" : "GET",
                               "name" : "profile_list_groups",
@@ -5395,6 +6039,7 @@ var pmgapi = [
                   ],
                   "info" : {
                      "DELETE" : {
+                        "allowtoken" : 1,
                         "description" : "Delete an LDAP profile",
                         "method" : "DELETE",
                         "name" : "delete",
@@ -5421,6 +6066,7 @@ var pmgapi = [
                         }
                      },
                      "GET" : {
+                        "allowtoken" : 1,
                         "description" : "Directory index",
                         "method" : "GET",
                         "name" : "profile_index",
@@ -5464,6 +6110,7 @@ var pmgapi = [
             ],
             "info" : {
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "List configured LDAP profiles.",
                   "method" : "GET",
                   "name" : "index",
@@ -5525,6 +6172,7 @@ var pmgapi = [
                   }
                },
                "POST" : {
+                  "allowtoken" : 1,
                   "description" : "Add LDAP profile.",
                   "method" : "POST",
                   "name" : "create",
@@ -5557,6 +6205,12 @@ var pmgapi = [
                            "type" : "string",
                            "typetext" : "<string>"
                         },
+                        "cafile" : {
+                           "description" : "Path to CA file. Only useful with option 'verify'",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
                         "comment" : {
                            "description" : "Description.",
                            "maxLength" : 4096,
@@ -5600,10 +6254,11 @@ var pmgapi = [
                         },
                         "mode" : {
                            "default" : "ldap",
-                           "description" : "LDAP protocol mode ('ldap' or 'ldaps').",
+                           "description" : "LDAP protocol mode ('ldap', 'ldaps' or 'ldap+starttls').",
                            "enum" : [
                               "ldap",
-                              "ldaps"
+                              "ldaps",
+                              "ldap+starttls"
                            ],
                            "optional" : 1,
                            "type" : "string"
@@ -5637,6 +6292,13 @@ var pmgapi = [
                            "optional" : 1,
                            "type" : "string",
                            "typetext" : "<string>"
+                        },
+                        "verify" : {
+                           "default" : 0,
+                           "description" : "Verify server certificate. Only useful with ldaps or ldap+starttls.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
                         }
                      },
                      "type" : "object"
@@ -5662,6 +6324,7 @@ var pmgapi = [
                {
                   "info" : {
                      "DELETE" : {
+                        "allowtoken" : 1,
                         "description" : "Delete a relay domain",
                         "method" : "DELETE",
                         "name" : "delete",
@@ -5670,7 +6333,7 @@ var pmgapi = [
                            "properties" : {
                               "domain" : {
                                  "description" : "Domain name.",
-                                 "format" : "dns-name",
+                                 "format" : "transport-domain",
                                  "type" : "string",
                                  "typetext" : "<string>"
                               }
@@ -5688,6 +6351,7 @@ var pmgapi = [
                         }
                      },
                      "GET" : {
+                        "allowtoken" : 1,
                         "description" : "Read Domain data (comment).",
                         "method" : "GET",
                         "name" : "read",
@@ -5696,7 +6360,7 @@ var pmgapi = [
                            "properties" : {
                               "domain" : {
                                  "description" : "Domain name.",
-                                 "format" : "dns-name",
+                                 "format" : "transport-domain",
                                  "type" : "string",
                                  "typetext" : "<string>"
                               }
@@ -5722,6 +6386,7 @@ var pmgapi = [
                         }
                      },
                      "PUT" : {
+                        "allowtoken" : 1,
                         "description" : "Update relay domain data (comment).",
                         "method" : "PUT",
                         "name" : "write",
@@ -5735,7 +6400,7 @@ var pmgapi = [
                               },
                               "domain" : {
                                  "description" : "Domain name.",
-                                 "format" : "dns-name",
+                                 "format" : "transport-domain",
                                  "type" : "string",
                                  "typetext" : "<string>"
                               }
@@ -5760,6 +6425,7 @@ var pmgapi = [
             ],
             "info" : {
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "List relay domains.",
                   "method" : "GET",
                   "name" : "index",
@@ -5795,6 +6461,7 @@ var pmgapi = [
                   }
                },
                "POST" : {
+                  "allowtoken" : 1,
                   "description" : "Add relay domain.",
                   "method" : "POST",
                   "name" : "create",
@@ -5809,7 +6476,7 @@ var pmgapi = [
                         },
                         "domain" : {
                            "description" : "Domain name.",
-                           "format" : "dns-name",
+                           "format" : "transport-domain",
                            "type" : "string",
                            "typetext" : "<string>"
                         }
@@ -5836,6 +6503,7 @@ var pmgapi = [
                {
                   "info" : {
                      "DELETE" : {
+                        "allowtoken" : 1,
                         "description" : "Delete a fetchmail configuration entry.",
                         "method" : "DELETE",
                         "name" : "delete",
@@ -5862,6 +6530,7 @@ var pmgapi = [
                         }
                      },
                      "GET" : {
+                        "allowtoken" : 1,
                         "description" : "Read fetchmail user configuration.",
                         "method" : "GET",
                         "name" : "read",
@@ -5950,7 +6619,7 @@ var pmgapi = [
                                  "maxLength" : 512,
                                  "minLength" : 3,
                                  "optional" : 1,
-                                 "pattern" : "(?:|[^\\s\\/\\@]+\\@[^\\s\\/\\@]+)",
+                                 "pattern" : "(?:[^\\s\\\\@]+\\@[^\\s\\/\\\\@]+)",
                                  "type" : "string"
                               },
                               "user" : {
@@ -5965,6 +6634,7 @@ var pmgapi = [
                         }
                      },
                      "PUT" : {
+                        "allowtoken" : 1,
                         "description" : "Update fetchmail user configuration.",
                         "method" : "PUT",
                         "name" : "write",
@@ -6042,7 +6712,7 @@ var pmgapi = [
                                  "maxLength" : 512,
                                  "minLength" : 3,
                                  "optional" : 1,
-                                 "pattern" : "(?:|[^\\s\\/\\@]+\\@[^\\s\\/\\@]+)",
+                                 "pattern" : "(?:[^\\s\\\\@]+\\@[^\\s\\/\\\\@]+)",
                                  "type" : "string"
                               },
                               "user" : {
@@ -6074,6 +6744,7 @@ var pmgapi = [
             ],
             "info" : {
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "List fetchmail users.",
                   "method" : "GET",
                   "name" : "index",
@@ -6155,7 +6826,7 @@ var pmgapi = [
                               "maxLength" : 512,
                               "minLength" : 3,
                               "optional" : 1,
-                              "pattern" : "(?:|[^\\s\\/\\@]+\\@[^\\s\\/\\@]+)",
+                              "pattern" : "(?:[^\\s\\\\@]+\\@[^\\s\\/\\\\@]+)",
                               "type" : "string"
                            },
                            "user" : {
@@ -6178,6 +6849,7 @@ var pmgapi = [
                   }
                },
                "POST" : {
+                  "allowtoken" : 1,
                   "description" : "Create fetchmail user configuration.",
                   "method" : "POST",
                   "name" : "create",
@@ -6245,7 +6917,7 @@ var pmgapi = [
                            "description" : "The target email address (where to deliver fetched mails).",
                            "maxLength" : 512,
                            "minLength" : 3,
-                           "pattern" : "(?:|[^\\s\\/\\@]+\\@[^\\s\\/\\@]+)",
+                           "pattern" : "(?:[^\\s\\\\@]+\\@[^\\s\\/\\\\@]+)",
                            "type" : "string"
                         },
                         "user" : {
@@ -6281,6 +6953,7 @@ var pmgapi = [
                {
                   "info" : {
                      "DELETE" : {
+                        "allowtoken" : 1,
                         "description" : "Delete a transport map entry",
                         "method" : "DELETE",
                         "name" : "delete",
@@ -6289,7 +6962,7 @@ var pmgapi = [
                            "properties" : {
                               "domain" : {
                                  "description" : "Domain name.",
-                                 "format" : "transport-domain",
+                                 "format" : "transport-domain-or-email",
                                  "type" : "string",
                                  "typetext" : "<string>"
                               }
@@ -6307,6 +6980,7 @@ var pmgapi = [
                         }
                      },
                      "GET" : {
+                        "allowtoken" : 1,
                         "description" : "Read transport map entry.",
                         "method" : "GET",
                         "name" : "read",
@@ -6315,7 +6989,7 @@ var pmgapi = [
                            "properties" : {
                               "domain" : {
                                  "description" : "Domain name.",
-                                 "format" : "transport-domain",
+                                 "format" : "transport-domain-or-email",
                                  "type" : "string",
                                  "typetext" : "<string>"
                               }
@@ -6342,6 +7016,9 @@ var pmgapi = [
                               "port" : {
                                  "type" : "integer"
                               },
+                              "protocol" : {
+                                 "type" : "string"
+                              },
                               "use_mx" : {
                                  "type" : "boolean"
                               }
@@ -6350,6 +7027,7 @@ var pmgapi = [
                         }
                      },
                      "PUT" : {
+                        "allowtoken" : 1,
                         "description" : "Update transport map entry.",
                         "method" : "PUT",
                         "name" : "write",
@@ -6364,27 +7042,37 @@ var pmgapi = [
                               },
                               "domain" : {
                                  "description" : "Domain name.",
-                                 "format" : "transport-domain",
+                                 "format" : "transport-domain-or-email",
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
                               "host" : {
                                  "description" : "Target host (name or IP address).",
-                                 "format" : "address",
+                                 "format" : "transport-address",
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
                               "port" : {
-                                 "description" : "SMTP port.",
+                                 "description" : "Transport port.",
                                  "maximum" : 65535,
                                  "minimum" : 1,
                                  "optional" : 1,
                                  "type" : "integer",
                                  "typetext" : "<integer> (1 - 65535)"
                               },
+                              "protocol" : {
+                                 "default" : "smtp",
+                                 "description" : "Transport protocol.",
+                                 "enum" : [
+                                    "smtp",
+                                    "lmtp"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
                               "use_mx" : {
-                                 "description" : "Enable MX lookups.",
+                                 "description" : "Enable MX lookups (SMTP).",
                                  "optional" : 1,
                                  "type" : "boolean",
                                  "typetext" : "<boolean>"
@@ -6410,6 +7098,7 @@ var pmgapi = [
             ],
             "info" : {
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "List transport map entries.",
                   "method" : "GET",
                   "name" : "index",
@@ -6438,6 +7127,9 @@ var pmgapi = [
                            "port" : {
                               "type" : "integer"
                            },
+                           "protocol" : {
+                              "type" : "string"
+                           },
                            "use_mx" : {
                               "type" : "boolean"
                            }
@@ -6446,7 +7138,7 @@ var pmgapi = [
                      },
                      "links" : [
                         {
-                           "href" : "{id}",
+                           "href" : "{domain}",
                            "rel" : "child"
                         }
                      ],
@@ -6454,6 +7146,7 @@ var pmgapi = [
                   }
                },
                "POST" : {
+                  "allowtoken" : 1,
                   "description" : "Add transport map entry.",
                   "method" : "POST",
                   "name" : "create",
@@ -6468,28 +7161,38 @@ var pmgapi = [
                         },
                         "domain" : {
                            "description" : "Domain name.",
-                           "format" : "transport-domain",
+                           "format" : "transport-domain-or-email",
                            "type" : "string",
                            "typetext" : "<string>"
                         },
                         "host" : {
                            "description" : "Target host (name or IP address).",
-                           "format" : "address",
+                           "format" : "transport-address",
                            "type" : "string",
                            "typetext" : "<string>"
                         },
                         "port" : {
                            "default" : 25,
-                           "description" : "SMTP port.",
+                           "description" : "Transport port.",
                            "maximum" : 65535,
                            "minimum" : 1,
                            "optional" : 1,
                            "type" : "integer",
                            "typetext" : "<integer> (1 - 65535)"
                         },
+                        "protocol" : {
+                           "default" : "smtp",
+                           "description" : "Transport protocol.",
+                           "enum" : [
+                              "smtp",
+                              "lmtp"
+                           ],
+                           "optional" : 1,
+                           "type" : "string"
+                        },
                         "use_mx" : {
                            "default" : 1,
-                           "description" : "Enable MX lookups.",
+                           "description" : "Enable MX lookups (SMTP).",
                            "optional" : 1,
                            "type" : "boolean",
                            "typetext" : "<boolean>"
@@ -6517,6 +7220,7 @@ var pmgapi = [
                {
                   "info" : {
                      "DELETE" : {
+                        "allowtoken" : 1,
                         "description" : "Delete a truster network",
                         "method" : "DELETE",
                         "name" : "delete",
@@ -6543,6 +7247,7 @@ var pmgapi = [
                         }
                      },
                      "GET" : {
+                        "allowtoken" : 1,
                         "description" : "Read trusted network data (comment).",
                         "method" : "GET",
                         "name" : "read",
@@ -6577,6 +7282,7 @@ var pmgapi = [
                         }
                      },
                      "PUT" : {
+                        "allowtoken" : 1,
                         "description" : "Update trusted data (comment).",
                         "method" : "PUT",
                         "name" : "write",
@@ -6614,6 +7320,7 @@ var pmgapi = [
             ],
             "info" : {
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "List of trusted networks from where SMTP clients are allowed to relay mail through Proxmox Mail Gateway.",
                   "method" : "GET",
                   "name" : "index",
@@ -6638,7 +7345,7 @@ var pmgapi = [
                      },
                      "links" : [
                         {
-                           "href" : "{cide}",
+                           "href" : "{cidr}",
                            "rel" : "child"
                         }
                      ],
@@ -6646,6 +7353,7 @@ var pmgapi = [
                   }
                },
                "POST" : {
+                  "allowtoken" : 1,
                   "description" : "Add a trusted network.",
                   "method" : "POST",
                   "name" : "create",
@@ -6687,6 +7395,7 @@ var pmgapi = [
                {
                   "info" : {
                      "GET" : {
+                        "allowtoken" : 1,
                         "description" : "Cluster node index.",
                         "method" : "GET",
                         "name" : "nodes",
@@ -6731,6 +7440,7 @@ var pmgapi = [
                         }
                      },
                      "POST" : {
+                        "allowtoken" : 1,
                         "description" : "Add an node to the cluster config.",
                         "method" : "POST",
                         "name" : "add_node",
@@ -6802,6 +7512,7 @@ var pmgapi = [
                {
                   "info" : {
                      "GET" : {
+                        "allowtoken" : 1,
                         "description" : "Cluster node status.",
                         "method" : "GET",
                         "name" : "status",
@@ -6868,6 +7579,7 @@ var pmgapi = [
                {
                   "info" : {
                      "POST" : {
+                        "allowtoken" : 1,
                         "description" : "Create initial cluster config with current node as master.",
                         "method" : "POST",
                         "name" : "create",
@@ -6887,6 +7599,7 @@ var pmgapi = [
                {
                   "info" : {
                      "POST" : {
+                        "allowtoken" : 1,
                         "description" : "Join local node to an existing cluster.",
                         "method" : "POST",
                         "name" : "join",
@@ -6921,18 +7634,40 @@ var pmgapi = [
                   "leaf" : 1,
                   "path" : "/config/cluster/join",
                   "text" : "join"
-               }
-            ],
-            "info" : {
-               "GET" : {
-                  "description" : "Directory index.",
-                  "method" : "GET",
-                  "name" : "index",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
-                  "permissions" : {
-                     "user" : "all"
+               },
+               {
+                  "info" : {
+                     "POST" : {
+                        "allowtoken" : 1,
+                        "description" : "Update API certificate fingerprints (by fetching it via ssh).",
+                        "method" : "POST",
+                        "name" : "update_fingerprints",
+                        "parameters" : {
+                           "additionalProperties" : 0
+                        },
+                        "protected" : 1,
+                        "proxyto" : "master",
+                        "returns" : {
+                           "type" : "null"
+                        }
+                     }
+                  },
+                  "leaf" : 1,
+                  "path" : "/config/cluster/update-fingerprints",
+                  "text" : "update-fingerprints"
+               }
+            ],
+            "info" : {
+               "GET" : {
+                  "allowtoken" : 1,
+                  "description" : "Directory index.",
+                  "method" : "GET",
+                  "name" : "index",
+                  "parameters" : {
+                     "additionalProperties" : 0
+                  },
+                  "permissions" : {
+                     "user" : "all"
                   },
                   "returns" : {
                      "items" : {
@@ -6956,6 +7691,7 @@ var pmgapi = [
          {
             "info" : {
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "Get Mime Types List",
                   "method" : "GET",
                   "name" : "index",
@@ -6983,11 +7719,118 @@ var pmgapi = [
             "text" : "mimetypes"
          },
          {
+            "children" : [
+               {
+                  "info" : {
+                     "DELETE" : {
+                        "allowtoken" : 1,
+                        "description" : "Delete a tls_policy entry",
+                        "method" : "DELETE",
+                        "name" : "delete",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "destination" : {
+                                 "description" : "Destination (Domain or next-hop).",
+                                 "format" : "transport-domain-or-nexthop",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "admin"
+                           ]
+                        },
+                        "protected" : 1,
+                        "proxyto" : "master",
+                        "returns" : {
+                           "type" : "null"
+                        }
+                     },
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Read tls_policy entry.",
+                        "method" : "GET",
+                        "name" : "read",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "destination" : {
+                                 "description" : "Destination (Domain or next-hop).",
+                                 "format" : "transport-domain-or-nexthop",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "admin",
+                              "audit"
+                           ]
+                        },
+                        "proxyto" : "master",
+                        "returns" : {
+                           "properties" : {
+                              "destination" : {
+                                 "format" : "transport-domain-or-nexthop",
+                                 "type" : "string"
+                              },
+                              "policy" : {
+                                 "format" : "tls-policy",
+                                 "type" : "string"
+                              }
+                           },
+                           "type" : "object"
+                        }
+                     },
+                     "PUT" : {
+                        "allowtoken" : 1,
+                        "description" : "Update tls_policy entry.",
+                        "method" : "PUT",
+                        "name" : "write",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "destination" : {
+                                 "description" : "Destination (Domain or next-hop).",
+                                 "format" : "transport-domain-or-nexthop",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "policy" : {
+                                 "description" : "TLS policy",
+                                 "format" : "tls-policy-strict",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "admin"
+                           ]
+                        },
+                        "protected" : 1,
+                        "proxyto" : "master",
+                        "returns" : {
+                           "type" : "null"
+                        }
+                     }
+                  },
+                  "leaf" : 1,
+                  "path" : "/config/tlspolicy/{destination}",
+                  "text" : "{destination}"
+               }
+            ],
             "info" : {
                "GET" : {
-                  "description" : "Read admin configuration properties.",
+                  "allowtoken" : 1,
+                  "description" : "List tls_policy entries.",
                   "method" : "GET",
-                  "name" : "read_admin_section",
+                  "name" : "index",
                   "parameters" : {
                      "additionalProperties" : 0
                   },
@@ -6999,76 +7842,49 @@ var pmgapi = [
                   },
                   "proxyto" : "master",
                   "returns" : {
-                     "type" : "object"
+                     "items" : {
+                        "properties" : {
+                           "destination" : {
+                              "format" : "transport-domain-or-nexthop",
+                              "type" : "string"
+                           },
+                           "policy" : {
+                              "format" : "tls-policy",
+                              "type" : "string"
+                           }
+                        },
+                        "type" : "object"
+                     },
+                     "links" : [
+                        {
+                           "href" : "{destination}",
+                           "rel" : "child"
+                        }
+                     ],
+                     "type" : "array"
                   }
                },
-               "PUT" : {
-                  "description" : "Update admin configuration properties.",
-                  "method" : "PUT",
-                  "name" : "update_admin_section",
+               "POST" : {
+                  "allowtoken" : 1,
+                  "description" : "Add tls_policy entry.",
+                  "method" : "POST",
+                  "name" : "create",
                   "parameters" : {
                      "additionalProperties" : 0,
                      "properties" : {
-                        "advfilter" : {
-                           "default" : 1,
-                           "description" : "Use advanced filters for statistic.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "dailyreport" : {
-                           "default" : 1,
-                           "description" : "Send daily reports.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "delete" : {
-                           "description" : "A list of settings you want to delete.",
-                           "format" : "pve-configid-list",
-                           "maxLength" : 4096,
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "demo" : {
-                           "default" : 0,
-                           "description" : "Demo mode - do not start SMTP filter.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "digest" : {
-                           "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                           "maxLength" : 40,
-                           "optional" : 1,
+                        "destination" : {
+                           "description" : "Destination (Domain or next-hop).",
+                           "format" : "transport-domain-or-nexthop",
                            "type" : "string",
                            "typetext" : "<string>"
                         },
-                        "email" : {
-                           "default" : "admin@domain.tld",
-                           "description" : "Administrator E-Mail address.",
-                           "format" : "email",
-                           "optional" : 1,
+                        "policy" : {
+                           "description" : "TLS policy",
+                           "format" : "tls-policy-strict",
                            "type" : "string",
                            "typetext" : "<string>"
-                        },
-                        "http_proxy" : {
-                           "description" : "Specify external http proxy which is used for downloads (example: 'http://username:password@host:port/')",
-                           "optional" : 1,
-                           "pattern" : "http://.*",
-                           "type" : "string"
-                        },
-                        "statlifetime" : {
-                           "default" : 7,
-                           "description" : "User Statistics Lifetime (days)",
-                           "minimum" : 1,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (1 - N)"
                         }
-                     },
-                     "type" : "object"
+                     }
                   },
                   "permissions" : {
                      "check" : [
@@ -7082,187 +7898,543 @@ var pmgapi = [
                   }
                }
             },
-            "leaf" : 1,
-            "path" : "/config/admin",
-            "text" : "admin"
+            "leaf" : 0,
+            "path" : "/config/tlspolicy",
+            "text" : "tlspolicy"
          },
          {
-            "info" : {
-               "GET" : {
-                  "description" : "Read clamav configuration properties.",
-                  "method" : "GET",
-                  "name" : "read_clamav_section",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "admin",
-                        "audit"
-                     ]
-                  },
-                  "proxyto" : "master",
-                  "returns" : {
-                     "type" : "object"
-                  }
-               },
-               "PUT" : {
-                  "description" : "Update clamav configuration properties.",
-                  "method" : "PUT",
-                  "name" : "update_clamav_section",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "archiveblockencrypted" : {
-                           "default" : 0,
-                           "description" : "Wether to block encrypted archives. Mark encrypted archives as viruses.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "archivemaxfiles" : {
-                           "default" : 1000,
-                           "description" : "Number of files to be scanned within an archive, a document, or any other kind of container. Warning: disabling this limit or setting it too high may result in severe damage to the system.",
-                           "minimum" : 0,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (0 - N)"
-                        },
-                        "archivemaxrec" : {
-                           "default" : 5,
-                           "description" : "Nested archives are scanned recursively, e.g. if a ZIP archive contains a TAR  file,  all files within it will also be scanned. This options specifies how deeply the process should be continued. Warning: setting this limit too high may result in severe damage to the system.",
-                           "minimum" : 1,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (1 - N)"
-                        },
-                        "archivemaxsize" : {
-                           "default" : 25000000,
-                           "description" : "Files larger than this limit won't be scanned.",
-                           "minimum" : 1000000,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (1000000 - N)"
-                        },
-                        "dbmirror" : {
-                           "default" : "database.clamav.net",
-                           "description" : "ClamAV database mirror server.",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
+            "children" : [
+               {
+                  "children" : [
+                     {
+                        "info" : {
+                           "DELETE" : {
+                              "allowtoken" : 1,
+                              "description" : "Delete a DKIM-sign domain",
+                              "method" : "DELETE",
+                              "name" : "delete",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "domain" : {
+                                       "description" : "Domain name.",
+                                       "format" : "transport-domain",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin"
+                                 ]
+                              },
+                              "protected" : 1,
+                              "proxyto" : "master",
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           },
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "Read Domain data (comment).",
+                              "method" : "GET",
+                              "name" : "read",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "domain" : {
+                                       "description" : "Domain name.",
+                                       "format" : "transport-domain",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin",
+                                    "audit"
+                                 ]
+                              },
+                              "proxyto" : "master",
+                              "returns" : {
+                                 "properties" : {
+                                    "comment" : {
+                                       "type" : "string"
+                                    },
+                                    "domain" : {
+                                       "type" : "string"
+                                    }
+                                 },
+                                 "type" : "object"
+                              }
+                           },
+                           "PUT" : {
+                              "allowtoken" : 1,
+                              "description" : "Update DKIM-sign domain data (comment).",
+                              "method" : "PUT",
+                              "name" : "write",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "comment" : {
+                                       "description" : "Comment.",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "domain" : {
+                                       "description" : "Domain name.",
+                                       "format" : "transport-domain",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin"
+                                 ]
+                              },
+                              "protected" : 1,
+                              "proxyto" : "master",
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           }
                         },
-                        "delete" : {
-                           "description" : "A list of settings you want to delete.",
-                           "format" : "pve-configid-list",
-                           "maxLength" : 4096,
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
+                        "leaf" : 1,
+                        "path" : "/config/dkim/domains/{domain}",
+                        "text" : "{domain}"
+                     }
+                  ],
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "List DKIM-sign domains.",
+                        "method" : "GET",
+                        "name" : "index",
+                        "parameters" : {
+                           "additionalProperties" : 0
                         },
-                        "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>"
+                        "permissions" : {
+                           "check" : [
+                              "admin",
+                              "audit"
+                           ]
                         },
-                        "maxcccount" : {
-                           "default" : 0,
-                           "description" : "This option sets the lowest number of Credit Card or Social Security numbers found in a file to generate a detect.",
-                           "minimum" : 0,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (0 - N)"
+                        "proxyto" : "master",
+                        "returns" : {
+                           "items" : {
+                              "properties" : {
+                                 "comment" : {
+                                    "type" : "string"
+                                 },
+                                 "domain" : {
+                                    "type" : "string"
+                                 }
+                              },
+                              "type" : "object"
+                           },
+                           "links" : [
+                              {
+                                 "href" : "{domain}",
+                                 "rel" : "child"
+                              }
+                           ],
+                           "type" : "array"
+                        }
+                     },
+                     "POST" : {
+                        "allowtoken" : 1,
+                        "description" : "Add DKIM-sign domain.",
+                        "method" : "POST",
+                        "name" : "create",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "comment" : {
+                                 "description" : "Comment.",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "domain" : {
+                                 "description" : "Domain name.",
+                                 "format" : "transport-domain",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
                         },
-                        "maxscansize" : {
-                           "default" : 100000000,
-                           "description" : "Sets the maximum amount of data to be scanned for each input file.",
-                           "minimum" : 1000000,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (1000000 - N)"
+                        "permissions" : {
+                           "check" : [
+                              "admin"
+                           ]
                         },
-                        "safebrowsing" : {
-                           "default" : 1,
-                           "description" : "Enables support for Google Safe Browsing.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
+                        "protected" : 1,
+                        "proxyto" : "master",
+                        "returns" : {
+                           "type" : "null"
                         }
-                     },
-                     "type" : "object"
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "admin"
-                     ]
-                  },
-                  "protected" : 1,
-                  "proxyto" : "master",
-                  "returns" : {
-                     "type" : "null"
-                  }
-               }
-            },
-            "leaf" : 1,
-            "path" : "/config/clamav",
-            "text" : "clamav"
-         },
-         {
-            "info" : {
-               "GET" : {
-                  "description" : "Read mail configuration properties.",
-                  "method" : "GET",
-                  "name" : "read_mail_section",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "admin",
-                        "audit"
-                     ]
+                     }
                   },
-                  "proxyto" : "master",
-                  "returns" : {
-                     "type" : "object"
-                  }
+                  "leaf" : 0,
+                  "path" : "/config/dkim/domains",
+                  "text" : "domains"
                },
-               "PUT" : {
-                  "description" : "Update mail configuration properties.",
-                  "method" : "PUT",
-                  "name" : "update_mail_section",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "banner" : {
-                           "default" : "ESMTP Proxmox",
-                           "description" : "ESMTP banner.",
-                           "maxLength" : 1024,
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "conn_count_limit" : {
-                           "default" : 50,
-                           "description" : "How many simultaneous connections any client is allowed to make to this service. To disable this feature, specify a limit of 0.",
-                           "minimum" : 0,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (0 - N)"
+               {
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Get the public key for the configured selector, prepared as DKIM TXT record",
+                        "method" : "GET",
+                        "name" : "get_selector_info",
+                        "parameters" : {
+                           "additionalProperties" : 0
                         },
-                        "conn_rate_limit" : {
-                           "default" : 0,
-                           "description" : "The maximal number of connection attempts any client is allowed to make to this service per minute. To disable this feature, specify a limit of 0.",
-                           "minimum" : 0,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (0 - N)"
+                        "permissions" : {
+                           "check" : [
+                              "admin"
+                           ]
                         },
-                        "delete" : {
-                           "description" : "A list of settings you want to delete.",
-                           "format" : "pve-configid-list",
-                           "maxLength" : 4096,
+                        "protected" : 1,
+                        "proxyto" : "master",
+                        "returns" : {
+                           "properties" : {
+                              "keysize" : {
+                                 "minimum" : 1024,
+                                 "optional" : 1,
+                                 "type" : "integer"
+                              },
+                              "record" : {
+                                 "format" : "pmg-dkim-record",
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "selector" : {
+                                 "format" : "dns-name",
+                                 "optional" : 1,
+                                 "type" : "string"
+                              }
+                           },
+                           "type" : "object"
+                        }
+                     },
+                     "POST" : {
+                        "allowtoken" : 1,
+                        "description" : "Generate a new private key for selector. All future mail will be signed with the new key!",
+                        "method" : "POST",
+                        "name" : "set_selector",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "force" : {
+                                 "description" : "Overwrite existing key",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
+                              "keysize" : {
+                                 "description" : "Number of bits for the RSA-Key",
+                                 "minimum" : 1024,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (1024 - N)"
+                              },
+                              "selector" : {
+                                 "description" : "DKIM Selector",
+                                 "format" : "dns-name",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "admin"
+                           ]
+                        },
+                        "protected" : 1,
+                        "proxyto" : "master",
+                        "returns" : {
+                           "type" : "null"
+                        }
+                     }
+                  },
+                  "leaf" : 1,
+                  "path" : "/config/dkim/selector",
+                  "text" : "selector"
+               },
+               {
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Get a list of all existing selectors",
+                        "method" : "GET",
+                        "name" : "get_selector_list",
+                        "parameters" : {
+                           "additionalProperties" : 0
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "admin"
+                           ]
+                        },
+                        "protected" : 1,
+                        "proxyto" : "master",
+                        "returns" : {
+                           "items" : {
+                              "properties" : {
+                                 "selector" : {
+                                    "format" : "dns-name",
+                                    "type" : "string"
+                                 }
+                              },
+                              "type" : "object"
+                           },
+                           "links" : [
+                              {
+                                 "href" : "{selector}",
+                                 "rel" : "child"
+                              }
+                           ],
+                           "type" : "array"
+                        }
+                     }
+                  },
+                  "leaf" : 1,
+                  "path" : "/config/dkim/selectors",
+                  "text" : "selectors"
+               }
+            ],
+            "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/dkim",
+            "text" : "dkim"
+         },
+         {
+            "children" : [
+               {
+                  "info" : {
+                     "DELETE" : {
+                        "allowtoken" : 1,
+                        "description" : "Edit custom SpamAssassin score",
+                        "method" : "DELETE",
+                        "name" : "delete_score",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "digest" : {
+                                 "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                 "maxLength" : 40,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "name" : {
+                                 "description" : "The name of the rule.",
+                                 "pattern" : "[a-zA-Z\\_\\-\\.0-9]+",
+                                 "type" : "string"
+                              }
+                           }
+                        },
+                        "protected" : 1,
+                        "proxyto" : "master",
+                        "returns" : {
+                           "type" : "null"
+                        }
+                     },
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Get custom SpamAssassin score",
+                        "method" : "GET",
+                        "name" : "get_score",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "name" : {
+                                 "description" : "The name of the rule.",
+                                 "pattern" : "[a-zA-Z\\_\\-\\.0-9]+",
+                                 "type" : "string"
+                              }
+                           }
+                        },
+                        "protected" : 1,
+                        "proxyto" : "master",
+                        "returns" : {
+                           "properties" : {
+                              "comment" : {
+                                 "description" : "The Comment.",
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "name" : {
+                                 "description" : "The name of the rule.",
+                                 "pattern" : "[a-zA-Z\\_\\-\\.0-9]+",
+                                 "type" : "string"
+                              },
+                              "score" : {
+                                 "description" : "The score the rule should be valued at.",
+                                 "type" : "number"
+                              }
+                           },
+                           "type" : "object"
+                        }
+                     },
+                     "PUT" : {
+                        "allowtoken" : 1,
+                        "description" : "Edit custom SpamAssassin score",
+                        "method" : "PUT",
+                        "name" : "edit_score",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "comment" : {
+                                 "description" : "The Comment.",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "digest" : {
+                                 "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                 "maxLength" : 40,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "name" : {
+                                 "description" : "The name of the rule.",
+                                 "pattern" : "[a-zA-Z\\_\\-\\.0-9]+",
+                                 "type" : "string"
+                              },
+                              "score" : {
+                                 "description" : "The score the rule should be valued at.",
+                                 "type" : "number",
+                                 "typetext" : "<number>"
+                              }
+                           }
+                        },
+                        "protected" : 1,
+                        "proxyto" : "master",
+                        "returns" : {
+                           "type" : "null"
+                        }
+                     }
+                  },
+                  "leaf" : 1,
+                  "path" : "/config/customscores/{name}",
+                  "text" : "{name}"
+               }
+            ],
+            "info" : {
+               "DELETE" : {
+                  "allowtoken" : 1,
+                  "description" : "Revert custom score changes.",
+                  "method" : "DELETE",
+                  "name" : "revert_score_changes",
+                  "parameters" : {
+                     "additionalProperties" : 0
+                  },
+                  "permissions" : {
+                     "check" : [
+                        "admin"
+                     ]
+                  },
+                  "protected" : 1,
+                  "proxyto" : "master",
+                  "returns" : {
+                     "type" : "null"
+                  }
+               },
+               "GET" : {
+                  "allowtoken" : 1,
+                  "description" : "List custom scores.",
+                  "method" : "GET",
+                  "name" : "list_scores",
+                  "parameters" : {
+                     "additionalProperties" : 0
+                  },
+                  "permissions" : {
+                     "check" : [
+                        "admin",
+                        "audit"
+                     ]
+                  },
+                  "proxyto" : "master",
+                  "returns" : {
+                     "items" : {
+                        "properties" : {
+                           "comment" : {
+                              "description" : "The Comment.",
+                              "optional" : 1,
+                              "type" : "string"
+                           },
+                           "digest" : {
+                              "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                              "maxLength" : 40,
+                              "optional" : 1,
+                              "type" : "string"
+                           },
+                           "name" : {
+                              "description" : "The name of the rule.",
+                              "optional" : 1,
+                              "pattern" : "[a-zA-Z\\_\\-\\.0-9]+",
+                              "type" : "string"
+                           },
+                           "score" : {
+                              "description" : "The score the rule should be valued at.",
+                              "optional" : 1,
+                              "type" : "number"
+                           }
+                        },
+                        "type" : "object"
+                     },
+                     "links" : [
+                        {
+                           "href" : "{name}",
+                           "rel" : "child"
+                        }
+                     ],
+                     "type" : "array"
+                  }
+               },
+               "POST" : {
+                  "allowtoken" : 1,
+                  "description" : "Create custom SpamAssassin score",
+                  "method" : "POST",
+                  "name" : "create_score",
+                  "parameters" : {
+                     "additionalProperties" : 0,
+                     "properties" : {
+                        "comment" : {
+                           "description" : "The Comment.",
                            "optional" : 1,
                            "type" : "string",
                            "typetext" : "<string>"
@@ -7274,195 +8446,47 @@ var pmgapi = [
                            "type" : "string",
                            "typetext" : "<string>"
                         },
-                        "dnsbl_sites" : {
-                           "description" : "Optional list of DNS white/blacklist domains (see postscreen_dnsbl_sites parameter).",
-                           "format" : "dnsbl-entry-list",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "dwarning" : {
-                           "default" : 4,
-                           "description" : "SMTP delay warning time (in hours).",
-                           "minimum" : 0,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (0 - N)"
-                        },
-                        "ext_port" : {
-                           "default" : 25,
-                           "description" : "SMTP port number for incoming mail (untrusted). This must be a different number than 'int_port'.",
-                           "maximum" : 65535,
-                           "minimum" : 1,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (1 - 65535)"
-                        },
-                        "greylist" : {
-                           "default" : 1,
-                           "description" : "Use Greylisting.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "helotests" : {
-                           "default" : 0,
-                           "description" : "Use SMTP HELO tests.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "hide_received" : {
-                           "default" : 0,
-                           "description" : "Hide received header in outgoing mails.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "int_port" : {
-                           "default" : 26,
-                           "description" : "SMTP port number for outgoing mail (trusted).",
-                           "maximum" : 65535,
-                           "minimum" : 1,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (1 - 65535)"
-                        },
-                        "max_filters" : {
-                           "default" : 15,
-                           "description" : "Maximum number of pmg-smtp-filter processes.",
-                           "maximum" : 40,
-                           "minimum" : 3,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (3 - 40)"
-                        },
-                        "max_policy" : {
-                           "default" : 5,
-                           "description" : "Maximum number of pmgpolicy processes.",
-                           "maximum" : 10,
-                           "minimum" : 2,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (2 - 10)"
-                        },
-                        "max_smtpd_in" : {
-                           "default" : 99,
-                           "description" : "Maximum number of SMTP daemon processes (in).",
-                           "maximum" : 100,
-                           "minimum" : 3,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (3 - 100)"
-                        },
-                        "max_smtpd_out" : {
-                           "default" : 99,
-                           "description" : "Maximum number of SMTP daemon processes (out).",
-                           "maximum" : 100,
-                           "minimum" : 3,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (3 - 100)"
-                        },
-                        "maxsize" : {
-                           "default" : 10485760,
-                           "description" : "Maximum email size. Larger mails are rejected.",
-                           "minimum" : 1024,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (1024 - N)"
-                        },
-                        "message_rate_limit" : {
-                           "default" : 0,
-                           "description" : "The maximal number of message delivery requests that any client is allowed to make to this service per minute.To disable this feature, specify a limit of 0.",
-                           "minimum" : 0,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (0 - N)"
-                        },
-                        "rejectunknown" : {
-                           "default" : 0,
-                           "description" : "Reject unknown clients.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "rejectunknownsender" : {
-                           "default" : 0,
-                           "description" : "Reject unknown senders.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "relay" : {
-                           "description" : "The default mail delivery transport (incoming mails).",
-                           "format" : "address",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "relaynomx" : {
-                           "default" : 0,
-                           "description" : "Disable MX lookups for default relay.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "relayport" : {
-                           "default" : 25,
-                           "description" : "SMTP port number for relay host.",
-                           "maximum" : 65535,
-                           "minimum" : 1,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (1 - 65535)"
+                        "name" : {
+                           "description" : "The name of the rule.",
+                           "pattern" : "[a-zA-Z\\_\\-\\.0-9]+",
+                           "type" : "string"
                         },
-                        "smarthost" : {
-                           "description" : "When set, all outgoing mails are deliverd to the specified smarthost.",
-                           "format" : "address",
+                        "score" : {
+                           "description" : "The score the rule should be valued at.",
+                           "type" : "number",
+                           "typetext" : "<number>"
+                        }
+                     }
+                  },
+                  "protected" : 1,
+                  "proxyto" : "master",
+                  "returns" : {
+                     "type" : "null"
+                  }
+               },
+               "PUT" : {
+                  "allowtoken" : 1,
+                  "description" : "Apply custom score changes.",
+                  "method" : "PUT",
+                  "name" : "apply_score_changes",
+                  "parameters" : {
+                     "additionalProperties" : 0,
+                     "properties" : {
+                        "digest" : {
+                           "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                           "maxLength" : 40,
                            "optional" : 1,
                            "type" : "string",
                            "typetext" : "<string>"
                         },
-                        "spf" : {
-                           "default" : 1,
-                           "description" : "Use Sender Policy Framework.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "tls" : {
-                           "default" : 0,
-                           "description" : "Enable TLS.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "tlsheader" : {
-                           "default" : 0,
-                           "description" : "Add TLS received header.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        },
-                        "tlslog" : {
+                        "restart-daemon" : {
                            "default" : 0,
-                           "description" : "Enable TLS Logging.",
+                           "description" : "If set, also restarts pmg-smtp-filter. This is necessary for the changes to work.",
                            "optional" : 1,
                            "type" : "boolean",
                            "typetext" : "<boolean>"
-                        },
-                        "verifyreceivers" : {
-                           "description" : "Enable receiver verification. The value spefifies the numerical reply code when the Postfix SMTP server rejects a recipient address.",
-                           "enum" : [
-                              "450",
-                              "550"
-                           ],
-                           "optional" : 1,
-                           "type" : "string"
                         }
-                     },
-                     "type" : "object"
+                     }
                   },
                   "permissions" : {
                      "check" : [
@@ -7472,148 +8496,229 @@ var pmgapi = [
                   "protected" : 1,
                   "proxyto" : "master",
                   "returns" : {
-                     "type" : "null"
+                     "type" : "string"
                   }
                }
             },
-            "leaf" : 1,
-            "path" : "/config/mail",
-            "text" : "mail"
+            "leaf" : 0,
+            "path" : "/config/customscores",
+            "text" : "customscores"
          },
          {
-            "info" : {
-               "GET" : {
-                  "description" : "Read spam configuration properties.",
-                  "method" : "GET",
-                  "name" : "read_spam_section",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "admin",
-                        "audit"
-                     ]
-                  },
-                  "proxyto" : "master",
-                  "returns" : {
-                     "type" : "object"
-                  }
-               },
-               "PUT" : {
-                  "description" : "Update spam configuration properties.",
-                  "method" : "PUT",
-                  "name" : "update_spam_section",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "bounce_score" : {
-                           "default" : 0,
-                           "description" : "Additional score for bounce mails.",
-                           "maximum" : 1000,
-                           "minimum" : 0,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (0 - 1000)"
+            "children" : [
+               {
+                  "info" : {
+                     "DELETE" : {
+                        "allowtoken" : 1,
+                        "description" : "Delete an PBS remote",
+                        "method" : "DELETE",
+                        "name" : "delete",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "remote" : {
+                                 "description" : "Profile ID.",
+                                 "format" : "pve-configid",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
                         },
-                        "clamav_heuristic_score" : {
-                           "default" : 3,
-                           "description" : "Score for ClamaAV heuristics (Google Safe Browsing database, PhishingScanURLs, ...).",
-                           "maximum" : 1000,
-                           "minimum" : 0,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (0 - 1000)"
+                        "permissions" : {
+                           "check" : [
+                              "admin"
+                           ]
                         },
-                        "delete" : {
-                           "description" : "A list of settings you want to delete.",
-                           "format" : "pve-configid-list",
-                           "maxLength" : 4096,
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "digest" : {
-                           "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                           "maxLength" : 40,
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "languages" : {
-                           "default" : "all",
-                           "description" : "This option is used to specify which languages are considered OK for incoming mail.",
-                           "optional" : 1,
-                           "pattern" : "(all|([a-z][a-z])+( ([a-z][a-z])+)*)",
-                           "type" : "string"
-                        },
-                        "maxspamsize" : {
-                           "default" : 262144,
-                           "description" : "Maximum size of spam messages in bytes.",
-                           "minimum" : 64,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (64 - N)"
-                        },
-                        "rbl_checks" : {
-                           "default" : 1,
-                           "description" : "Enable real time blacklists (RBL) checks.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
+                        "protected" : 1,
+                        "proxyto" : "master",
+                        "returns" : {
+                           "type" : "null"
+                        }
+                     },
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Get Proxmox Backup Server remote configuration.",
+                        "method" : "GET",
+                        "name" : "read_config",
+                        "parameters" : {
+                           "additionalProperties" : 1,
+                           "properties" : {
+                              "remote" : {
+                                 "description" : "Proxmox Backup Server ID.",
+                                 "format" : "pve-configid",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
                         },
-                        "use_awl" : {
-                           "default" : 1,
-                           "description" : "Use the Auto-Whitelist plugin.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
+                        "permissions" : {
+                           "check" : [
+                              "admin",
+                              "audit"
+                           ]
                         },
-                        "use_bayes" : {
-                           "default" : 1,
-                           "description" : "Whether to use the naive-Bayesian-style classifier.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
+                        "proxyto" : "master",
+                        "returns" : {}
+                     },
+                     "PUT" : {
+                        "allowtoken" : 1,
+                        "description" : "Update PBS remote settings.",
+                        "method" : "PUT",
+                        "name" : "update_config",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "datastore" : {
+                                 "description" : "Proxmox Backup Server datastore name.",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "delete" : {
+                                 "description" : "A list of settings you want to delete.",
+                                 "format" : "pve-configid-list",
+                                 "maxLength" : 4096,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "digest" : {
+                                 "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                 "maxLength" : 40,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "disable" : {
+                                 "description" : "Flag to disable (deactivate) the entry.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
+                              "fingerprint" : {
+                                 "description" : "Certificate SHA 256 fingerprint.",
+                                 "optional" : 1,
+                                 "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}",
+                                 "type" : "string"
+                              },
+                              "include-statistics" : {
+                                 "description" : "Include statistics in scheduled backups",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
+                              "keep-daily" : {
+                                 "description" : "Keep backups for the last <N> different days. If there is more than one backup for a single day, only the latest one is kept.",
+                                 "format_description" : "N",
+                                 "minimum" : "0",
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<N>"
+                              },
+                              "keep-hourly" : {
+                                 "description" : "Keep backups for the last <N> different hours. If there is more than one backup for a single hour, only the latest one is kept.",
+                                 "format_description" : "N",
+                                 "minimum" : "0",
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<N>"
+                              },
+                              "keep-last" : {
+                                 "description" : "Keep the last <N> backups.",
+                                 "format_description" : "N",
+                                 "minimum" : "0",
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<N>"
+                              },
+                              "keep-monthly" : {
+                                 "description" : "Keep backups for the last <N> different months. If there is more than one backup for a single month, only the latest one is kept.",
+                                 "format_description" : "N",
+                                 "minimum" : "0",
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<N>"
+                              },
+                              "keep-weekly" : {
+                                 "description" : "Keep backups for the last <N> different weeks. If there ismore than one backup for a single week, only the latest one is kept.",
+                                 "format_description" : "N",
+                                 "minimum" : "0",
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<N>"
+                              },
+                              "keep-yearly" : {
+                                 "description" : "Keep backups for the last <N> different years. If there is more than one backup for a single year, only the latest one is kept.",
+                                 "format_description" : "N",
+                                 "minimum" : "0",
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<N>"
+                              },
+                              "notify" : {
+                                 "description" : "Specify when to notify via e-mail",
+                                 "enum" : [
+                                    "always",
+                                    "error",
+                                    "never"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "password" : {
+                                 "description" : "Password or API token secret for the user on the Proxmox Backup Server.",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "remote" : {
+                                 "description" : "Proxmox Backup Server ID.",
+                                 "format" : "pve-configid",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "server" : {
+                                 "description" : "Proxmox Backup Server address.",
+                                 "format" : "address",
+                                 "maxLength" : 256,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "username" : {
+                                 "description" : "Username or API token ID on the Proxmox Backup Server",
+                                 "maxLength" : 512,
+                                 "minLength" : 3,
+                                 "optional" : 1,
+                                 "pattern" : "(?:[^\\s\\\\@]+\\@[^\\s\\/\\\\@]+)",
+                                 "type" : "string"
+                              }
+                           },
+                           "type" : "object"
                         },
-                        "use_razor" : {
-                           "default" : 1,
-                           "description" : "Whether to use Razor2, if it is available.",
-                           "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
+                        "permissions" : {
+                           "check" : [
+                              "admin"
+                           ]
                         },
-                        "wl_bounce_relays" : {
-                           "description" : "Whitelist legitimate bounce relays.",
-                           "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
+                        "protected" : 1,
+                        "proxyto" : "master",
+                        "returns" : {
+                           "type" : "null"
                         }
-                     },
-                     "type" : "object"
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "admin"
-                     ]
+                     }
                   },
-                  "protected" : 1,
-                  "proxyto" : "master",
-                  "returns" : {
-                     "type" : "null"
-                  }
+                  "leaf" : 1,
+                  "path" : "/config/pbs/{remote}",
+                  "text" : "{remote}"
                }
-            },
-            "leaf" : 1,
-            "path" : "/config/spam",
-            "text" : "spam"
-         },
-         {
+            ],
             "info" : {
                "GET" : {
-                  "description" : "Read spamquar configuration properties.",
+                  "allowtoken" : 1,
+                  "description" : "List all configured Proxmox Backup Server instances.",
                   "method" : "GET",
-                  "name" : "read_spamquar_section",
+                  "name" : "list",
                   "parameters" : {
                      "additionalProperties" : 0
                   },
@@ -7623,173 +8728,239 @@ var pmgapi = [
                         "audit"
                      ]
                   },
+                  "protected" : 1,
                   "proxyto" : "master",
                   "returns" : {
-                     "type" : "object"
+                     "items" : {
+                        "additionalProperties" : 0,
+                        "properties" : {
+                           "datastore" : {
+                              "description" : "Proxmox Backup Server datastore name.",
+                              "optional" : 0,
+                              "type" : "string"
+                           },
+                           "disable" : {
+                              "description" : "Flag to disable (deactivate) the entry.",
+                              "optional" : 1,
+                              "type" : "boolean"
+                           },
+                           "fingerprint" : {
+                              "description" : "Certificate SHA 256 fingerprint.",
+                              "optional" : 1,
+                              "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}",
+                              "type" : "string"
+                           },
+                           "include-statistics" : {
+                              "description" : "Include statistics in scheduled backups",
+                              "optional" : 1,
+                              "type" : "boolean"
+                           },
+                           "keep-daily" : {
+                              "description" : "Keep backups for the last <N> different days. If there is more than one backup for a single day, only the latest one is kept.",
+                              "format_description" : "N",
+                              "minimum" : "0",
+                              "optional" : 1,
+                              "type" : "integer"
+                           },
+                           "keep-hourly" : {
+                              "description" : "Keep backups for the last <N> different hours. If there is more than one backup for a single hour, only the latest one is kept.",
+                              "format_description" : "N",
+                              "minimum" : "0",
+                              "optional" : 1,
+                              "type" : "integer"
+                           },
+                           "keep-last" : {
+                              "description" : "Keep the last <N> backups.",
+                              "format_description" : "N",
+                              "minimum" : "0",
+                              "optional" : 1,
+                              "type" : "integer"
+                           },
+                           "keep-monthly" : {
+                              "description" : "Keep backups for the last <N> different months. If there is more than one backup for a single month, only the latest one is kept.",
+                              "format_description" : "N",
+                              "minimum" : "0",
+                              "optional" : 1,
+                              "type" : "integer"
+                           },
+                           "keep-weekly" : {
+                              "description" : "Keep backups for the last <N> different weeks. If there ismore than one backup for a single week, only the latest one is kept.",
+                              "format_description" : "N",
+                              "minimum" : "0",
+                              "optional" : 1,
+                              "type" : "integer"
+                           },
+                           "keep-yearly" : {
+                              "description" : "Keep backups for the last <N> different years. If there is more than one backup for a single year, only the latest one is kept.",
+                              "format_description" : "N",
+                              "minimum" : "0",
+                              "optional" : 1,
+                              "type" : "integer"
+                           },
+                           "notify" : {
+                              "description" : "Specify when to notify via e-mail",
+                              "enum" : [
+                                 "always",
+                                 "error",
+                                 "never"
+                              ],
+                              "optional" : 1,
+                              "type" : "string"
+                           },
+                           "password" : {
+                              "description" : "Password or API token secret for the user on the Proxmox Backup Server.",
+                              "optional" : 1,
+                              "type" : "string"
+                           },
+                           "remote" : {
+                              "description" : "Proxmox Backup Server ID.",
+                              "format" : "pve-configid",
+                              "type" : "string"
+                           },
+                           "server" : {
+                              "description" : "Proxmox Backup Server address.",
+                              "format" : "address",
+                              "maxLength" : 256,
+                              "optional" : 0,
+                              "type" : "string"
+                           },
+                           "username" : {
+                              "description" : "Username or API token ID on the Proxmox Backup Server",
+                              "maxLength" : 512,
+                              "minLength" : 3,
+                              "optional" : 1,
+                              "pattern" : "(?:[^\\s\\\\@]+\\@[^\\s\\/\\\\@]+)",
+                              "type" : "string"
+                           }
+                        },
+                        "type" : "object"
+                     },
+                     "links" : [
+                        {
+                           "href" : "{remote}",
+                           "rel" : "child"
+                        }
+                     ],
+                     "type" : "array"
                   }
                },
-               "PUT" : {
-                  "description" : "Update spamquar configuration properties.",
-                  "method" : "PUT",
-                  "name" : "update_spamquar_section",
+               "POST" : {
+                  "allowtoken" : 1,
+                  "description" : "Add Proxmox Backup Server remote instance.",
+                  "method" : "POST",
+                  "name" : "create",
                   "parameters" : {
                      "additionalProperties" : 0,
                      "properties" : {
-                        "allowhrefs" : {
-                           "default" : 1,
-                           "description" : "Allow to view hyperlinks.",
+                        "datastore" : {
+                           "description" : "Proxmox Backup Server datastore name.",
+                           "optional" : 0,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "disable" : {
+                           "description" : "Flag to disable (deactivate) the entry.",
                            "optional" : 1,
                            "type" : "boolean",
                            "typetext" : "<boolean>"
                         },
-                        "authmode" : {
-                           "default" : "ticket",
-                           "description" : "Authentication mode to access the quarantine interface. Mode 'ticket' allows login using tickets sent with the daily spam report. Mode 'ldap' requires to login using an LDAP account. Finally, mode 'ldapticket' allows both ways.",
-                           "enum" : [
-                              "ticket",
-                              "ldap",
-                              "ldapticket"
-                           ],
+                        "fingerprint" : {
+                           "description" : "Certificate SHA 256 fingerprint.",
                            "optional" : 1,
+                           "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}",
                            "type" : "string"
                         },
-                        "delete" : {
-                           "description" : "A list of settings you want to delete.",
-                           "format" : "pve-configid-list",
-                           "maxLength" : 4096,
+                        "include-statistics" : {
+                           "description" : "Include statistics in scheduled backups",
                            "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
                         },
-                        "digest" : {
-                           "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                           "maxLength" : 40,
+                        "keep-daily" : {
+                           "description" : "Keep backups for the last <N> different days. If there is more than one backup for a single day, only the latest one is kept.",
+                           "format_description" : "N",
+                           "minimum" : "0",
                            "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
+                           "type" : "integer",
+                           "typetext" : "<N>"
                         },
-                        "hostname" : {
-                           "description" : "Quarantine Host. Usefule if you run a Cluster and want users to connect to a specific host.",
-                           "format" : "address",
+                        "keep-hourly" : {
+                           "description" : "Keep backups for the last <N> different hours. If there is more than one backup for a single hour, only the latest one is kept.",
+                           "format_description" : "N",
+                           "minimum" : "0",
                            "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
+                           "type" : "integer",
+                           "typetext" : "<N>"
                         },
-                        "lifetime" : {
-                           "default" : 7,
-                           "description" : "Quarantine life time (days)",
-                           "minimum" : 1,
+                        "keep-last" : {
+                           "description" : "Keep the last <N> backups.",
+                           "format_description" : "N",
+                           "minimum" : "0",
                            "optional" : 1,
                            "type" : "integer",
-                           "typetext" : "<integer> (1 - N)"
+                           "typetext" : "<N>"
                         },
-                        "mailfrom" : {
-                           "description" : "Text for 'From' header in daily spam report mails.",
+                        "keep-monthly" : {
+                           "description" : "Keep backups for the last <N> different months. If there is more than one backup for a single month, only the latest one is kept.",
+                           "format_description" : "N",
+                           "minimum" : "0",
                            "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
+                           "type" : "integer",
+                           "typetext" : "<N>"
                         },
-                        "reportstyle" : {
-                           "default" : "verbose",
-                           "description" : "Spam report style.",
-                           "enum" : [
-                              "none",
-                              "short",
-                              "verbose",
-                              "custom"
-                           ],
+                        "keep-weekly" : {
+                           "description" : "Keep backups for the last <N> different weeks. If there ismore than one backup for a single week, only the latest one is kept.",
+                           "format_description" : "N",
+                           "minimum" : "0",
                            "optional" : 1,
-                           "type" : "string"
+                           "type" : "integer",
+                           "typetext" : "<N>"
                         },
-                        "viewimages" : {
-                           "default" : 1,
-                           "description" : "Allow to view images.",
+                        "keep-yearly" : {
+                           "description" : "Keep backups for the last <N> different years. If there is more than one backup for a single year, only the latest one is kept.",
+                           "format_description" : "N",
+                           "minimum" : "0",
                            "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
-                        }
-                     },
-                     "type" : "object"
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "admin"
-                     ]
-                  },
-                  "protected" : 1,
-                  "proxyto" : "master",
-                  "returns" : {
-                     "type" : "null"
-                  }
-               }
-            },
-            "leaf" : 1,
-            "path" : "/config/spamquar",
-            "text" : "spamquar"
-         },
-         {
-            "info" : {
-               "GET" : {
-                  "description" : "Read virusquar configuration properties.",
-                  "method" : "GET",
-                  "name" : "read_virusquar_section",
-                  "parameters" : {
-                     "additionalProperties" : 0
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "admin",
-                        "audit"
-                     ]
-                  },
-                  "proxyto" : "master",
-                  "returns" : {
-                     "type" : "object"
-                  }
-               },
-               "PUT" : {
-                  "description" : "Update virusquar configuration properties.",
-                  "method" : "PUT",
-                  "name" : "update_virusquar_section",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "allowhrefs" : {
-                           "default" : 1,
-                           "description" : "Allow to view hyperlinks.",
+                           "type" : "integer",
+                           "typetext" : "<N>"
+                        },
+                        "notify" : {
+                           "description" : "Specify when to notify via e-mail",
+                           "enum" : [
+                              "always",
+                              "error",
+                              "never"
+                           ],
                            "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
+                           "type" : "string"
                         },
-                        "delete" : {
-                           "description" : "A list of settings you want to delete.",
-                           "format" : "pve-configid-list",
-                           "maxLength" : 4096,
+                        "password" : {
+                           "description" : "Password or API token secret for the user on the Proxmox Backup Server.",
                            "optional" : 1,
                            "type" : "string",
                            "typetext" : "<string>"
                         },
-                        "digest" : {
-                           "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
-                           "maxLength" : 40,
-                           "optional" : 1,
+                        "remote" : {
+                           "description" : "Proxmox Backup Server ID.",
+                           "format" : "pve-configid",
                            "type" : "string",
                            "typetext" : "<string>"
                         },
-                        "lifetime" : {
-                           "default" : 7,
-                           "description" : "Quarantine life time (days)",
-                           "minimum" : 1,
-                           "optional" : 1,
-                           "type" : "integer",
-                           "typetext" : "<integer> (1 - N)"
+                        "server" : {
+                           "description" : "Proxmox Backup Server address.",
+                           "format" : "address",
+                           "maxLength" : 256,
+                           "optional" : 0,
+                           "type" : "string",
+                           "typetext" : "<string>"
                         },
-                        "viewimages" : {
-                           "default" : 1,
-                           "description" : "Allow to view images.",
+                        "username" : {
+                           "description" : "Username or API token ID on the Proxmox Backup Server",
+                           "maxLength" : 512,
+                           "minLength" : 3,
                            "optional" : 1,
-                           "type" : "boolean",
-                           "typetext" : "<boolean>"
+                           "pattern" : "(?:[^\\s\\\\@]+\\@[^\\s\\/\\\\@]+)",
+                           "type" : "string"
                         }
                      },
                      "type" : "object"
@@ -7806,415 +8977,543 @@ var pmgapi = [
                   }
                }
             },
-            "leaf" : 1,
-            "path" : "/config/virusquar",
-            "text" : "virusquar"
+            "leaf" : 0,
+            "path" : "/config/pbs",
+            "text" : "pbs"
          },
-         {
-            "info" : {
-               "POST" : {
-                  "description" : "Test Regex",
-                  "method" : "POST",
-                  "name" : "regextest",
-                  "parameters" : {
-                     "additionalProperties" : 0,
-                     "properties" : {
-                        "regex" : {
-                           "description" : "The Regex to test",
-                           "maxLength" : 1024,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        },
-                        "text" : {
-                           "description" : "The String to test",
-                           "maxLength" : 1024,
-                           "type" : "string",
-                           "typetext" : "<string>"
-                        }
-                     }
-                  },
-                  "permissions" : {
-                     "check" : [
-                        "admin",
-                        "qmanager",
-                        "audit"
-                     ]
-                  },
-                  "protected" : 0,
-                  "returns" : {
-                     "type" : "number"
-                  }
-               }
-            },
-            "leaf" : 1,
-            "path" : "/config/regextest",
-            "text" : "regextest"
-         }
-      ],
-      "info" : {
-         "GET" : {
-            "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",
-      "text" : "config"
-   },
-   {
-      "children" : [
          {
             "children" : [
                {
                   "children" : [
                      {
                         "info" : {
-                           "GET" : {
-                              "description" : "Print Postfix queue domain and age distribution.",
-                              "method" : "GET",
-                              "name" : "qshape",
+                           "DELETE" : {
+                              "allowtoken" : 1,
+                              "description" : "Delete ACME plugin configuration.",
+                              "method" : "DELETE",
+                              "name" : "delete_plugin",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
+                                    "id" : {
+                                       "description" : "Unique identifier for ACME plugin instance.",
+                                       "format" : "pve-configid",
                                        "type" : "string",
                                        "typetext" : "<string>"
-                                    },
-                                    "queue" : {
-                                       "default" : "deferred",
-                                       "description" : "Postfix queue name.",
-                                       "enum" : [
-                                          "deferred",
-                                          "active",
-                                          "incoming",
-                                          "hold"
-                                       ],
-                                       "optional" : 1,
-                                       "type" : "string"
                                     }
                                  }
                               },
                               "permissions" : {
                                  "check" : [
-                                    "admin",
-                                    "audit"
+                                    "admin"
                                  ]
                               },
                               "protected" : 1,
-                              "proxyto" : "node",
                               "returns" : {
-                                 "items" : {
-                                    "properties" : {},
-                                    "type" : "object"
+                                 "type" : "null"
+                              }
+                           },
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "Get ACME plugin configuration.",
+                              "method" : "GET",
+                              "name" : "get_plugin_config",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "id" : {
+                                       "description" : "Unique identifier for ACME plugin instance.",
+                                       "format" : "pve-configid",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin"
+                                 ]
+                              },
+                              "protected" : 1,
+                              "returns" : {
+                                 "type" : "object"
+                              }
+                           },
+                           "PUT" : {
+                              "allowtoken" : 1,
+                              "description" : "Update ACME plugin configuration.",
+                              "method" : "PUT",
+                              "name" : "update_plugin",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "api" : {
+                                       "description" : "API plugin name",
+                                       "enum" : [
+                                          "1984hosting",
+                                          "acmedns",
+                                          "acmeproxy",
+                                          "active24",
+                                          "ad",
+                                          "ali",
+                                          "anx",
+                                          "arvan",
+                                          "aurora",
+                                          "autodns",
+                                          "aws",
+                                          "azure",
+                                          "cf",
+                                          "clouddns",
+                                          "cloudns",
+                                          "cn",
+                                          "conoha",
+                                          "constellix",
+                                          "cx",
+                                          "cyon",
+                                          "da",
+                                          "ddnss",
+                                          "desec",
+                                          "df",
+                                          "dgon",
+                                          "dnsimple",
+                                          "do",
+                                          "doapi",
+                                          "domeneshop",
+                                          "dp",
+                                          "dpi",
+                                          "dreamhost",
+                                          "duckdns",
+                                          "durabledns",
+                                          "dyn",
+                                          "dynu",
+                                          "dynv6",
+                                          "easydns",
+                                          "edgedns",
+                                          "euserv",
+                                          "exoscale",
+                                          "freedns",
+                                          "gandi_livedns",
+                                          "gcloud",
+                                          "gd",
+                                          "gdnsdk",
+                                          "he",
+                                          "hetzner",
+                                          "hexonet",
+                                          "hostingde",
+                                          "huaweicloud",
+                                          "infoblox",
+                                          "infomaniak",
+                                          "internetbs",
+                                          "inwx",
+                                          "ionos",
+                                          "ispconfig",
+                                          "jd",
+                                          "joker",
+                                          "kappernet",
+                                          "kas",
+                                          "kinghost",
+                                          "knot",
+                                          "leaseweb",
+                                          "lexicon",
+                                          "linode",
+                                          "linode_v4",
+                                          "loopia",
+                                          "lua",
+                                          "maradns",
+                                          "me",
+                                          "miab",
+                                          "misaka",
+                                          "myapi",
+                                          "mydevil",
+                                          "mydnsjp",
+                                          "namecheap",
+                                          "namecom",
+                                          "namesilo",
+                                          "nederhost",
+                                          "neodigit",
+                                          "netcup",
+                                          "netlify",
+                                          "nic",
+                                          "njalla",
+                                          "nm",
+                                          "nsd",
+                                          "nsone",
+                                          "nsupdate",
+                                          "nw",
+                                          "one",
+                                          "online",
+                                          "openprovider",
+                                          "openstack",
+                                          "opnsense",
+                                          "ovh",
+                                          "pdns",
+                                          "pleskxml",
+                                          "pointhq",
+                                          "porkbun",
+                                          "rackcorp",
+                                          "rackspace",
+                                          "rcode0",
+                                          "regru",
+                                          "scaleway",
+                                          "schlundtech",
+                                          "selectel",
+                                          "servercow",
+                                          "simply",
+                                          "tele3",
+                                          "transip",
+                                          "ultra",
+                                          "unoeuro",
+                                          "variomedia",
+                                          "vscale",
+                                          "vultr",
+                                          "websupport",
+                                          "world4you",
+                                          "yandex",
+                                          "zilore",
+                                          "zone",
+                                          "zonomi"
+                                       ],
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "data" : {
+                                       "description" : "DNS plugin data. (base64 encoded)",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "delete" : {
+                                       "description" : "A list of settings you want to delete.",
+                                       "format" : "pve-configid-list",
+                                       "maxLength" : 4096,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "digest" : {
+                                       "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                       "maxLength" : 40,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "disable" : {
+                                       "description" : "Flag to disable the config.",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    },
+                                    "id" : {
+                                       "description" : "ACME Plugin ID name",
+                                       "format" : "pve-configid",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "nodes" : {
+                                       "description" : "List of cluster node names.",
+                                       "format" : "pve-node-list",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "validation-delay" : {
+                                       "default" : 30,
+                                       "description" : "Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records.",
+                                       "maximum" : 172800,
+                                       "minimum" : 0,
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (0 - 172800)"
+                                    }
                                  },
-                                 "type" : "array"
+                                 "type" : "object"
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin"
+                                 ]
+                              },
+                              "protected" : 1,
+                              "returns" : {
+                                 "type" : "null"
                               }
                            }
                         },
                         "leaf" : 1,
-                        "path" : "/nodes/{node}/postfix/qshape",
-                        "text" : "qshape"
+                        "path" : "/config/acme/plugins/{id}",
+                        "text" : "{id}"
+                     }
+                  ],
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "ACME plugin index.",
+                        "method" : "GET",
+                        "name" : "index",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "type" : {
+                                 "description" : "Only list ACME plugins of a specific type",
+                                 "enum" : [
+                                    "dns",
+                                    "standalone"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "admin"
+                           ]
+                        },
+                        "protected" : 1,
+                        "returns" : {
+                           "items" : {
+                              "properties" : {
+                                 "plugin" : {
+                                    "description" : "Unique identifier for ACME plugin instance.",
+                                    "format" : "pve-configid",
+                                    "type" : "string"
+                                 }
+                              },
+                              "type" : "object"
+                           },
+                           "links" : [
+                              {
+                                 "href" : "{plugin}",
+                                 "rel" : "child"
+                              }
+                           ],
+                           "type" : "array"
+                        }
                      },
+                     "POST" : {
+                        "allowtoken" : 1,
+                        "description" : "Add ACME plugin configuration.",
+                        "method" : "POST",
+                        "name" : "add_plugin",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "api" : {
+                                 "description" : "API plugin name",
+                                 "enum" : [
+                                    "1984hosting",
+                                    "acmedns",
+                                    "acmeproxy",
+                                    "active24",
+                                    "ad",
+                                    "ali",
+                                    "anx",
+                                    "arvan",
+                                    "aurora",
+                                    "autodns",
+                                    "aws",
+                                    "azure",
+                                    "cf",
+                                    "clouddns",
+                                    "cloudns",
+                                    "cn",
+                                    "conoha",
+                                    "constellix",
+                                    "cx",
+                                    "cyon",
+                                    "da",
+                                    "ddnss",
+                                    "desec",
+                                    "df",
+                                    "dgon",
+                                    "dnsimple",
+                                    "do",
+                                    "doapi",
+                                    "domeneshop",
+                                    "dp",
+                                    "dpi",
+                                    "dreamhost",
+                                    "duckdns",
+                                    "durabledns",
+                                    "dyn",
+                                    "dynu",
+                                    "dynv6",
+                                    "easydns",
+                                    "edgedns",
+                                    "euserv",
+                                    "exoscale",
+                                    "freedns",
+                                    "gandi_livedns",
+                                    "gcloud",
+                                    "gd",
+                                    "gdnsdk",
+                                    "he",
+                                    "hetzner",
+                                    "hexonet",
+                                    "hostingde",
+                                    "huaweicloud",
+                                    "infoblox",
+                                    "infomaniak",
+                                    "internetbs",
+                                    "inwx",
+                                    "ionos",
+                                    "ispconfig",
+                                    "jd",
+                                    "joker",
+                                    "kappernet",
+                                    "kas",
+                                    "kinghost",
+                                    "knot",
+                                    "leaseweb",
+                                    "lexicon",
+                                    "linode",
+                                    "linode_v4",
+                                    "loopia",
+                                    "lua",
+                                    "maradns",
+                                    "me",
+                                    "miab",
+                                    "misaka",
+                                    "myapi",
+                                    "mydevil",
+                                    "mydnsjp",
+                                    "namecheap",
+                                    "namecom",
+                                    "namesilo",
+                                    "nederhost",
+                                    "neodigit",
+                                    "netcup",
+                                    "netlify",
+                                    "nic",
+                                    "njalla",
+                                    "nm",
+                                    "nsd",
+                                    "nsone",
+                                    "nsupdate",
+                                    "nw",
+                                    "one",
+                                    "online",
+                                    "openprovider",
+                                    "openstack",
+                                    "opnsense",
+                                    "ovh",
+                                    "pdns",
+                                    "pleskxml",
+                                    "pointhq",
+                                    "porkbun",
+                                    "rackcorp",
+                                    "rackspace",
+                                    "rcode0",
+                                    "regru",
+                                    "scaleway",
+                                    "schlundtech",
+                                    "selectel",
+                                    "servercow",
+                                    "simply",
+                                    "tele3",
+                                    "transip",
+                                    "ultra",
+                                    "unoeuro",
+                                    "variomedia",
+                                    "vscale",
+                                    "vultr",
+                                    "websupport",
+                                    "world4you",
+                                    "yandex",
+                                    "zilore",
+                                    "zone",
+                                    "zonomi"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "data" : {
+                                 "description" : "DNS plugin data. (base64 encoded)",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "disable" : {
+                                 "description" : "Flag to disable the config.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
+                              "id" : {
+                                 "description" : "ACME Plugin ID name",
+                                 "format" : "pve-configid",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "nodes" : {
+                                 "description" : "List of cluster node names.",
+                                 "format" : "pve-node-list",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "type" : {
+                                 "description" : "ACME challenge type.",
+                                 "enum" : [
+                                    "dns",
+                                    "standalone"
+                                 ],
+                                 "type" : "string"
+                              },
+                              "validation-delay" : {
+                                 "default" : 30,
+                                 "description" : "Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records.",
+                                 "maximum" : 172800,
+                                 "minimum" : 0,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (0 - 172800)"
+                              }
+                           },
+                           "type" : "object"
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "admin"
+                           ]
+                        },
+                        "protected" : 1,
+                        "returns" : {
+                           "type" : "null"
+                        }
+                     }
+                  },
+                  "leaf" : 0,
+                  "path" : "/config/acme/plugins",
+                  "text" : "plugins"
+               },
+               {
+                  "children" : [
                      {
-                        "children" : [
-                           {
-                              "children" : [
-                                 {
-                                    "info" : {
-                                       "DELETE" : {
-                                          "description" : "Delete one message with the named queue ID.",
-                                          "method" : "DELETE",
-                                          "name" : "delete_queued_mail",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "queue" : {
-                                                   "description" : "Postfix queue name.",
-                                                   "enum" : [
-                                                      "deferred",
-                                                      "active",
-                                                      "incoming",
-                                                      "hold"
-                                                   ],
-                                                   "type" : "string"
-                                                },
-                                                "queue_id" : {
-                                                   "description" : "The Message queue ID.",
-                                                   "maxLength" : 20,
-                                                   "minLength" : 8,
-                                                   "pattern" : "[a-zA-Z0-9]+",
-                                                   "type" : "string"
-                                                }
-                                             }
-                                          },
-                                          "permissions" : {
-                                             "check" : [
-                                                "admin"
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "type" : "null"
-                                          }
-                                       },
-                                       "GET" : {
-                                          "description" : "Get the contents of a queued mail.",
-                                          "method" : "GET",
-                                          "name" : "read_queued_mail",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "body" : {
-                                                   "default" : 0,
-                                                   "description" : "Include body content.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "header" : {
-                                                   "default" : 1,
-                                                   "description" : "Show message header content.",
-                                                   "optional" : 1,
-                                                   "type" : "boolean",
-                                                   "typetext" : "<boolean>"
-                                                },
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "queue" : {
-                                                   "description" : "Postfix queue name.",
-                                                   "enum" : [
-                                                      "deferred",
-                                                      "active",
-                                                      "incoming",
-                                                      "hold"
-                                                   ],
-                                                   "type" : "string"
-                                                },
-                                                "queue_id" : {
-                                                   "description" : "The Message queue ID.",
-                                                   "maxLength" : 20,
-                                                   "minLength" : 8,
-                                                   "pattern" : "[a-zA-Z0-9]+",
-                                                   "type" : "string"
-                                                }
-                                             }
-                                          },
-                                          "permissions" : {
-                                             "check" : [
-                                                "admin"
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "type" : "string"
-                                          }
-                                       },
-                                       "POST" : {
-                                          "description" : "Schedule immediate delivery of deferred mail with the specified queue ID.",
-                                          "method" : "POST",
-                                          "name" : "flush_queued_mail",
-                                          "parameters" : {
-                                             "additionalProperties" : 0,
-                                             "properties" : {
-                                                "node" : {
-                                                   "description" : "The cluster node name.",
-                                                   "format" : "pve-node",
-                                                   "type" : "string",
-                                                   "typetext" : "<string>"
-                                                },
-                                                "queue" : {
-                                                   "description" : "Postfix queue name.",
-                                                   "enum" : [
-                                                      "deferred",
-                                                      "active",
-                                                      "incoming",
-                                                      "hold"
-                                                   ],
-                                                   "type" : "string"
-                                                },
-                                                "queue_id" : {
-                                                   "description" : "The Message queue ID.",
-                                                   "maxLength" : 20,
-                                                   "minLength" : 8,
-                                                   "pattern" : "[a-zA-Z0-9]+",
-                                                   "type" : "string"
-                                                }
-                                             }
-                                          },
-                                          "permissions" : {
-                                             "check" : [
-                                                "admin"
-                                             ]
-                                          },
-                                          "protected" : 1,
-                                          "proxyto" : "node",
-                                          "returns" : {
-                                             "type" : "null"
-                                          }
-                                       }
-                                    },
-                                    "leaf" : 1,
-                                    "path" : "/nodes/{node}/postfix/queue/{queue}/{queue_id}",
-                                    "text" : "{queue_id}"
-                                 }
-                              ],
-                              "info" : {
-                                 "DELETE" : {
-                                    "description" : "Delete all mails in the queue.",
-                                    "method" : "DELETE",
-                                    "name" : "delete_queue",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "queue" : {
-                                             "description" : "Postfix queue name.",
-                                             "enum" : [
-                                                "deferred",
-                                                "active",
-                                                "incoming",
-                                                "hold"
-                                             ],
-                                             "type" : "string"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "admin"
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "null"
-                                    }
-                                 },
-                                 "GET" : {
-                                    "description" : "List the mail queue for a specific domain.",
-                                    "method" : "GET",
-                                    "name" : "mailq",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "filter" : {
-                                             "description" : "Filter string.",
-                                             "maxLength" : 64,
-                                             "optional" : 1,
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "limit" : {
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "queue" : {
-                                             "description" : "Postfix queue name.",
-                                             "enum" : [
-                                                "deferred",
-                                                "active",
-                                                "incoming",
-                                                "hold"
-                                             ],
-                                             "type" : "string"
-                                          },
-                                          "start" : {
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "admin",
-                                          "audit"
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "items" : {
-                                          "properties" : {},
-                                          "type" : "object"
-                                       },
-                                       "links" : [
-                                          {
-                                             "href" : "{queue_id}",
-                                             "rel" : "child"
-                                          }
-                                       ],
-                                       "type" : "array"
-                                    }
-                                 }
-                              },
-                              "leaf" : 0,
-                              "path" : "/nodes/{node}/postfix/queue/{queue}",
-                              "text" : "{queue}"
-                           }
-                        ],
                         "info" : {
                            "DELETE" : {
-                              "description" : "Delete all mails in all posfix queues.",
+                              "allowtoken" : 1,
+                              "description" : "Deactivate existing ACME account at CA.",
                               "method" : "DELETE",
-                              "name" : "delete_all_queues",
+                              "name" : "deactivate_account",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
+                                    "force" : {
+                                       "default" : 0,
+                                       "description" : "Delete account data even if the server refuses to deactivate the account.",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    },
+                                    "name" : {
+                                       "default" : "default",
+                                       "description" : "ACME account config file name.",
+                                       "format" : "pve-configid",
+                                       "format_description" : "name",
+                                       "optional" : 1,
                                        "type" : "string",
-                                       "typetext" : "<string>"
+                                       "typetext" : "<name>"
                                     }
                                  }
                               },
@@ -8224,95 +9523,81 @@ var pmgapi = [
                                  ]
                               },
                               "protected" : 1,
-                              "proxyto" : "node",
+                              "proxyto" : "master",
                               "returns" : {
-                                 "type" : "null"
+                                 "type" : "string"
                               }
                            },
                            "GET" : {
-                              "description" : "Directory index.",
+                              "allowtoken" : 1,
+                              "description" : "Return existing ACME account information.",
                               "method" : "GET",
-                              "name" : "queue_index",
+                              "name" : "get_account",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
+                                    "name" : {
+                                       "default" : "default",
+                                       "description" : "ACME account config file name.",
+                                       "format" : "pve-configid",
+                                       "format_description" : "name",
+                                       "optional" : 1,
                                        "type" : "string",
-                                       "typetext" : "<string>"
+                                       "typetext" : "<name>"
                                     }
                                  }
                               },
-                              "permissions" : {
-                                 "user" : "all"
-                              },
+                              "protected" : 1,
+                              "proxyto" : "master",
                               "returns" : {
-                                 "items" : {
-                                    "properties" : {},
-                                    "type" : "object"
-                                 },
-                                 "links" : [
-                                    {
-                                       "href" : "{name}",
-                                       "rel" : "child"
-                                    }
-                                 ],
-                                 "type" : "array"
-                              }
-                           }
-                        },
-                        "leaf" : 0,
-                        "path" : "/nodes/{node}/postfix/queue",
-                        "text" : "queue"
-                     },
-                     {
-                        "info" : {
-                           "POST" : {
-                              "description" : "Flush the queue: attempt to deliver all queued mail.",
-                              "method" : "POST",
-                              "name" : "flush_queues",
-                              "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "admin"
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "null"
+                                    "account" : {
+                                       "optional" : 1,
+                                       "renderer" : "yaml",
+                                       "type" : "object"
+                                    },
+                                    "directory" : {
+                                       "description" : "URL of ACME CA directory endpoint.",
+                                       "optional" : 1,
+                                       "pattern" : "^https?://.*",
+                                       "type" : "string"
+                                    },
+                                    "location" : {
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "tos" : {
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    }
+                                 },
+                                 "type" : "object"
                               }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/postfix/flush_queues",
-                        "text" : "flush_queues"
-                     },
-                     {
-                        "info" : {
-                           "POST" : {
-                              "description" : "Discards the address verification cache.",
-                              "method" : "POST",
-                              "name" : "discard_verify_cache",
+                           },
+                           "PUT" : {
+                              "allowtoken" : 1,
+                              "description" : "Update existing ACME account information with CA. Note: not specifying any new account information triggers a refresh.",
+                              "method" : "PUT",
+                              "name" : "update_account",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
+                                    "contact" : {
+                                       "description" : "Contact email addresses.",
+                                       "format" : "email-list",
+                                       "optional" : 1,
                                        "type" : "string",
                                        "typetext" : "<string>"
+                                    },
+                                    "name" : {
+                                       "default" : "default",
+                                       "description" : "ACME account config file name.",
+                                       "format" : "pve-configid",
+                                       "format_description" : "name",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<name>"
                                     }
                                  }
                               },
@@ -8322,36 +9607,33 @@ var pmgapi = [
                                  ]
                               },
                               "protected" : 1,
-                              "proxyto" : "node",
+                              "proxyto" : "master",
                               "returns" : {
-                                 "type" : "null"
+                                 "type" : "string"
                               }
                            }
                         },
                         "leaf" : 1,
-                        "path" : "/nodes/{node}/postfix/discard_verify_cache",
-                        "text" : "discard_verify_cache"
+                        "path" : "/config/acme/account/{name}",
+                        "text" : "{name}"
                      }
                   ],
                   "info" : {
                      "GET" : {
-                        "description" : "Directory index.",
+                        "allowtoken" : 1,
+                        "description" : "ACME account index.",
                         "method" : "GET",
-                        "name" : "index",
+                        "name" : "account_index",
                         "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
+                           "additionalProperties" : 0
                         },
                         "permissions" : {
-                           "user" : "all"
+                           "check" : [
+                              "admin",
+                              "audit"
+                           ]
                         },
+                        "protected" : 1,
                         "returns" : {
                            "items" : {
                               "properties" : {},
@@ -8365,366 +9647,2157 @@ var pmgapi = [
                            ],
                            "type" : "array"
                         }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/nodes/{node}/postfix",
-                  "text" : "postfix"
-               },
-               {
-                  "children" : [
-                     {
-                        "info" : {
-                           "GET" : {
-                              "description" : "ClamAV virus database status.",
-                              "method" : "GET",
-                              "name" : "database_status",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "admin",
-                                    "audit"
-                                 ]
+                     },
+                     "POST" : {
+                        "allowtoken" : 1,
+                        "description" : "Register a new ACME account with CA.",
+                        "method" : "POST",
+                        "name" : "register_account",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "contact" : {
+                                 "description" : "Contact email addresses.",
+                                 "format" : "email-list",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
                               },
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "build_time" : {
-                                          "type" : "string"
-                                       },
-                                       "nsigs" : {
-                                          "type" : "integer"
-                                       },
-                                       "type" : {
-                                          "type" : "string"
-                                       },
-                                       "version" : {
-                                          "optional" : 1,
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "type" : "array"
-                              }
-                           },
-                           "POST" : {
-                              "description" : "Update ClamAV virus databases.",
-                              "method" : "POST",
-                              "name" : "update_database",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
+                              "directory" : {
+                                 "default" : "https://acme-v02.api.letsencrypt.org/directory",
+                                 "description" : "URL of ACME CA directory endpoint.",
+                                 "optional" : 1,
+                                 "pattern" : "^https?://.*",
+                                 "type" : "string"
                               },
-                              "permissions" : {
-                                 "check" : [
-                                    "admin"
-                                 ]
+                              "name" : {
+                                 "default" : "default",
+                                 "description" : "ACME account config file name.",
+                                 "format" : "pve-configid",
+                                 "format_description" : "name",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<name>"
                               },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "string"
+                              "tos_url" : {
+                                 "description" : "URL of CA TermsOfService - setting this indicates agreement.",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
                               }
                            }
                         },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/clamav/database",
-                        "text" : "database"
+                        "permissions" : {
+                           "check" : [
+                              "admin"
+                           ]
+                        },
+                        "protected" : 1,
+                        "proxyto" : "master",
+                        "returns" : {
+                           "type" : "string"
+                        }
                      }
-                  ],
+                  },
+                  "leaf" : 0,
+                  "path" : "/config/acme/account",
+                  "text" : "account"
+               },
+               {
                   "info" : {
                      "GET" : {
-                        "description" : "Directory index.",
+                        "allowtoken" : 1,
+                        "description" : "Retrieve ACME TermsOfService URL from CA.",
                         "method" : "GET",
-                        "name" : "index",
+                        "name" : "get_tos",
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
+                              "directory" : {
+                                 "default" : "https://acme-v02.api.letsencrypt.org/directory",
+                                 "description" : "URL of ACME CA directory endpoint.",
+                                 "optional" : 1,
+                                 "pattern" : "^https?://.*",
+                                 "type" : "string"
                               }
                            }
                         },
                         "permissions" : {
-                           "check" : [
-                              "admin",
-                              "audit"
-                           ]
+                           "user" : "all"
+                        },
+                        "returns" : {
+                           "description" : "ACME TermsOfService URL.",
+                           "optional" : 1,
+                           "type" : "string"
+                        }
+                     }
+                  },
+                  "leaf" : 1,
+                  "path" : "/config/acme/tos",
+                  "text" : "tos"
+               },
+               {
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Get named known ACME directory endpoints.",
+                        "method" : "GET",
+                        "name" : "get_directories",
+                        "parameters" : {
+                           "additionalProperties" : 0
+                        },
+                        "permissions" : {
+                           "user" : "all"
                         },
                         "returns" : {
                            "items" : {
-                              "properties" : {},
+                              "additionalProperties" : 0,
+                              "properties" : {
+                                 "name" : {
+                                    "type" : "string"
+                                 },
+                                 "url" : {
+                                    "description" : "URL of ACME CA directory endpoint.",
+                                    "pattern" : "^https?://.*",
+                                    "type" : "string"
+                                 }
+                              },
                               "type" : "object"
                            },
-                           "links" : [
-                              {
-                                 "href" : "{subdir}",
-                                 "rel" : "child"
-                              }
-                           ],
                            "type" : "array"
                         }
                      }
                   },
-                  "leaf" : 0,
-                  "path" : "/nodes/{node}/clamav",
-                  "text" : "clamav"
+                  "leaf" : 1,
+                  "path" : "/config/acme/directories",
+                  "text" : "directories"
                },
                {
-                  "children" : [
-                     {
-                        "info" : {
-                           "GET" : {
-                              "description" : "SpamAssassin rules status.",
-                              "method" : "GET",
-                              "name" : "rules_status",
-                              "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" : {
-                                       "channel" : {
-                                          "type" : "string"
-                                       },
-                                       "last_updated" : {
-                                          "optional" : 1,
-                                          "type" : "integer"
-                                       },
-                                       "update_avail" : {
-                                          "type" : "boolean"
-                                       },
-                                       "update_version" : {
-                                          "optional" : 1,
-                                          "type" : "string"
-                                       },
-                                       "version" : {
-                                          "optional" : 1,
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "type" : "array"
-                              }
-                           },
-                           "POST" : {
-                              "description" : "Update SpamAssassin rules.",
-                              "method" : "POST",
-                              "name" : "update_rules",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "admin"
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/spamassassin/rules",
-                        "text" : "rules"
-                     }
-                  ],
                   "info" : {
                      "GET" : {
-                        "description" : "Directory index.",
+                        "allowtoken" : 1,
+                        "description" : "Get schema of ACME challenge types.",
                         "method" : "GET",
-                        "name" : "index",
+                        "name" : "challenge-schema",
                         "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
+                           "additionalProperties" : 0
                         },
                         "permissions" : {
-                           "check" : [
-                              "admin",
-                              "audit"
-                           ]
+                           "user" : "all"
                         },
                         "returns" : {
                            "items" : {
-                              "properties" : {},
+                              "additionalProperties" : 0,
+                              "properties" : {
+                                 "id" : {
+                                    "type" : "string"
+                                 },
+                                 "name" : {
+                                    "description" : "Human readable name, falls back to id",
+                                    "type" : "string"
+                                 },
+                                 "schema" : {
+                                    "type" : "object"
+                                 },
+                                 "type" : {
+                                    "type" : "string"
+                                 }
+                              },
                               "type" : "object"
                            },
-                           "links" : [
-                              {
-                                 "href" : "{subdir}",
-                                 "rel" : "child"
-                              }
-                           ],
                            "type" : "array"
                         }
                      }
                   },
-                  "leaf" : 0,
-                  "path" : "/nodes/{node}/spamassassin",
-                  "text" : "spamassassin"
+                  "leaf" : 1,
+                  "path" : "/config/acme/challenge-schema",
+                  "text" : "challenge-schema"
+               }
+            ],
+            "info" : {
+               "GET" : {
+                  "allowtoken" : 1,
+                  "description" : "ACME index.",
+                  "method" : "GET",
+                  "name" : "index",
+                  "parameters" : {
+                     "additionalProperties" : 0
+                  },
+                  "permissions" : {
+                     "user" : "all"
+                  },
+                  "returns" : {
+                     "items" : {
+                        "properties" : {},
+                        "type" : "object"
+                     },
+                     "links" : [
+                        {
+                           "href" : "{name}",
+                           "rel" : "child"
+                        }
+                     ],
+                     "type" : "array"
+                  }
+               }
+            },
+            "leaf" : 0,
+            "path" : "/config/acme",
+            "text" : "acme"
+         },
+         {
+            "info" : {
+               "GET" : {
+                  "allowtoken" : 1,
+                  "description" : "Read admin configuration properties.",
+                  "method" : "GET",
+                  "name" : "read_admin_section",
+                  "parameters" : {
+                     "additionalProperties" : 0
+                  },
+                  "permissions" : {
+                     "check" : [
+                        "admin",
+                        "audit"
+                     ]
+                  },
+                  "proxyto" : "master",
+                  "returns" : {
+                     "type" : "object"
+                  }
                },
-               {
-                  "children" : [
-                     {
-                        "info" : {
-                           "DELETE" : {
-                              "description" : "Delete network device configuration",
-                              "method" : "DELETE",
-                              "name" : "delete_network",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "iface" : {
-                                       "description" : "Network interface name.",
-                                       "format" : "pve-iface",
-                                       "maxLength" : 20,
-                                       "minLength" : 2,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "null"
-                              }
-                           },
-                           "GET" : {
-                              "description" : "Read network device configuration",
-                              "method" : "GET",
-                              "name" : "network_config",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "iface" : {
-                                       "description" : "Network interface name.",
-                                       "format" : "pve-iface",
-                                       "maxLength" : 20,
-                                       "minLength" : 2,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "admin",
-                                    "audit"
-                                 ]
-                              },
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "properties" : {
-                                    "method" : {
-                                       "type" : "string"
-                                    },
-                                    "type" : {
-                                       "type" : "string"
-                                    }
-                                 },
-                                 "type" : "object"
-                              }
-                           },
-                           "PUT" : {
-                              "description" : "Update network device configuration",
-                              "method" : "PUT",
-                              "name" : "update_network",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "address" : {
-                                       "description" : "IP address.",
-                                       "format" : "ipv4",
-                                       "optional" : 1,
-                                       "requires" : "netmask",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "address6" : {
-                                       "description" : "IP address.",
-                                       "format" : "ipv6",
-                                       "optional" : 1,
-                                       "requires" : "netmask6",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
-                                    },
-                                    "autostart" : {
-                                       "description" : "Automatically start interface on boot.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "bond_mode" : {
-                                       "description" : "Bonding mode.",
-                                       "enum" : [
+               "PUT" : {
+                  "allowtoken" : 1,
+                  "description" : "Update admin configuration properties.",
+                  "method" : "PUT",
+                  "name" : "update_admin_section",
+                  "parameters" : {
+                     "additionalProperties" : 0,
+                     "properties" : {
+                        "advfilter" : {
+                           "default" : 1,
+                           "description" : "Use advanced filters for statistic.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "avast" : {
+                           "default" : 0,
+                           "description" : "Use Avast Virus Scanner (/usr/bin/scan). You need to buy and install 'Avast Core Security' before you can enable this feature.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "clamav" : {
+                           "default" : 1,
+                           "description" : "Use ClamAV Virus Scanner. This is the default virus scanner and is enabled by default.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "custom_check" : {
+                           "default" : 0,
+                           "description" : "Use Custom Check Script. The script has to take the defined arguments and can return Virus findings or a Spamscore.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "custom_check_path" : {
+                           "default" : "/usr/local/bin/pmg-custom-check",
+                           "description" : "Absolute Path to the Custom Check Script",
+                           "optional" : 1,
+                           "pattern" : "^/([^/\\0]+\\/)+[^/\\0]+$",
+                           "type" : "string"
+                        },
+                        "dailyreport" : {
+                           "default" : 1,
+                           "description" : "Send daily reports.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "delete" : {
+                           "description" : "A list of settings you want to delete.",
+                           "format" : "pve-configid-list",
+                           "maxLength" : 4096,
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "demo" : {
+                           "default" : 0,
+                           "description" : "Demo mode - do not start SMTP filter.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "digest" : {
+                           "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                           "maxLength" : 40,
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "dkim_selector" : {
+                           "description" : "Default DKIM selector",
+                           "format" : "dns-name",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "dkim_sign" : {
+                           "default" : 0,
+                           "description" : "DKIM sign outbound mails with the configured Selector.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "dkim_sign_all_mail" : {
+                           "default" : 0,
+                           "description" : "DKIM sign all outgoing mails irrespective of the Envelope From domain.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "email" : {
+                           "default" : "admin@domain.tld",
+                           "description" : "Administrator E-Mail address.",
+                           "format" : "email",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "http_proxy" : {
+                           "description" : "Specify external http proxy which is used for downloads (example: 'http://username:password@host:port/')",
+                           "optional" : 1,
+                           "pattern" : "http://.*",
+                           "type" : "string"
+                        },
+                        "statlifetime" : {
+                           "default" : 7,
+                           "description" : "User Statistics Lifetime (days)",
+                           "minimum" : 1,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (1 - N)"
+                        }
+                     },
+                     "type" : "object"
+                  },
+                  "permissions" : {
+                     "check" : [
+                        "admin"
+                     ]
+                  },
+                  "protected" : 1,
+                  "proxyto" : "master",
+                  "returns" : {
+                     "type" : "null"
+                  }
+               }
+            },
+            "leaf" : 1,
+            "path" : "/config/admin",
+            "text" : "admin"
+         },
+         {
+            "info" : {
+               "GET" : {
+                  "allowtoken" : 1,
+                  "description" : "Read clamav configuration properties.",
+                  "method" : "GET",
+                  "name" : "read_clamav_section",
+                  "parameters" : {
+                     "additionalProperties" : 0
+                  },
+                  "permissions" : {
+                     "check" : [
+                        "admin",
+                        "audit"
+                     ]
+                  },
+                  "proxyto" : "master",
+                  "returns" : {
+                     "type" : "object"
+                  }
+               },
+               "PUT" : {
+                  "allowtoken" : 1,
+                  "description" : "Update clamav configuration properties.",
+                  "method" : "PUT",
+                  "name" : "update_clamav_section",
+                  "parameters" : {
+                     "additionalProperties" : 0,
+                     "properties" : {
+                        "archiveblockencrypted" : {
+                           "default" : 0,
+                           "description" : "Whether to mark encrypted archives and documents as heuristic virus match. A match does not necessarily result in an immediate block, it just raises the Spam Score by 'clamav_heuristic_score'.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "archivemaxfiles" : {
+                           "default" : 1000,
+                           "description" : "Number of files to be scanned within an archive, a document, or any other kind of container. Warning: disabling this limit or setting it too high may result in severe damage to the system.",
+                           "minimum" : 0,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (0 - N)"
+                        },
+                        "archivemaxrec" : {
+                           "default" : 5,
+                           "description" : "Nested archives are scanned recursively, e.g. if a ZIP archive contains a TAR  file,  all files within it will also be scanned. This options specifies how deeply the process should be continued. Warning: setting this limit too high may result in severe damage to the system.",
+                           "minimum" : 1,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (1 - N)"
+                        },
+                        "archivemaxsize" : {
+                           "default" : 25000000,
+                           "description" : "Files larger than this limit (in bytes) won't be scanned.",
+                           "minimum" : 1000000,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (1000000 - N)"
+                        },
+                        "dbmirror" : {
+                           "default" : "database.clamav.net",
+                           "description" : "ClamAV database mirror server.",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "delete" : {
+                           "description" : "A list of settings you want to delete.",
+                           "format" : "pve-configid-list",
+                           "maxLength" : 4096,
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "digest" : {
+                           "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                           "maxLength" : 40,
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "maxcccount" : {
+                           "default" : 0,
+                           "description" : "This option sets the lowest number of Credit Card or Social Security numbers found in a file to generate a detect.",
+                           "minimum" : 0,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (0 - N)"
+                        },
+                        "maxscansize" : {
+                           "default" : 100000000,
+                           "description" : "Sets the maximum amount of data (in bytes) to be scanned for each input file.",
+                           "minimum" : 1000000,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (1000000 - N)"
+                        },
+                        "safebrowsing" : {
+                           "default" : 0,
+                           "description" : "Enables support for Google Safe Browsing. (deprecated option, will be ignored)",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "scriptedupdates" : {
+                           "default" : 1,
+                           "description" : "Enables ScriptedUpdates (incremental download of signatures)",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        }
+                     },
+                     "type" : "object"
+                  },
+                  "permissions" : {
+                     "check" : [
+                        "admin"
+                     ]
+                  },
+                  "protected" : 1,
+                  "proxyto" : "master",
+                  "returns" : {
+                     "type" : "null"
+                  }
+               }
+            },
+            "leaf" : 1,
+            "path" : "/config/clamav",
+            "text" : "clamav"
+         },
+         {
+            "info" : {
+               "GET" : {
+                  "allowtoken" : 1,
+                  "description" : "Read mail configuration properties.",
+                  "method" : "GET",
+                  "name" : "read_mail_section",
+                  "parameters" : {
+                     "additionalProperties" : 0
+                  },
+                  "permissions" : {
+                     "check" : [
+                        "admin",
+                        "audit"
+                     ]
+                  },
+                  "proxyto" : "master",
+                  "returns" : {
+                     "type" : "object"
+                  }
+               },
+               "PUT" : {
+                  "allowtoken" : 1,
+                  "description" : "Update mail configuration properties.",
+                  "method" : "PUT",
+                  "name" : "update_mail_section",
+                  "parameters" : {
+                     "additionalProperties" : 0,
+                     "properties" : {
+                        "banner" : {
+                           "default" : "ESMTP Proxmox",
+                           "description" : "ESMTP banner.",
+                           "maxLength" : 1024,
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "before_queue_filtering" : {
+                           "default" : 0,
+                           "description" : "Enable before queue filtering by pmg-smtp-filter",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "conn_count_limit" : {
+                           "default" : 50,
+                           "description" : "How many simultaneous connections any client is allowed to make to this service. To disable this feature, specify a limit of 0.",
+                           "minimum" : 0,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (0 - N)"
+                        },
+                        "conn_rate_limit" : {
+                           "default" : 0,
+                           "description" : "The maximal number of connection attempts any client is allowed to make to this service per minute. To disable this feature, specify a limit of 0.",
+                           "minimum" : 0,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (0 - N)"
+                        },
+                        "delete" : {
+                           "description" : "A list of settings you want to delete.",
+                           "format" : "pve-configid-list",
+                           "maxLength" : 4096,
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "digest" : {
+                           "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                           "maxLength" : 40,
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "dnsbl_sites" : {
+                           "description" : "Optional list of DNS white/blacklist domains (see postscreen_dnsbl_sites parameter).",
+                           "format" : "dnsbl-entry-list",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "dnsbl_threshold" : {
+                           "default" : 1,
+                           "description" : "The inclusive lower bound for blocking a remote SMTP client, based on its combined DNSBL score (see postscreen_dnsbl_threshold parameter).",
+                           "minimum" : 0,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (0 - N)"
+                        },
+                        "dwarning" : {
+                           "default" : 4,
+                           "description" : "SMTP delay warning time (in hours).",
+                           "minimum" : 0,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (0 - N)"
+                        },
+                        "ext_port" : {
+                           "default" : 25,
+                           "description" : "SMTP port number for incoming mail (untrusted). This must be a different number than 'int_port'.",
+                           "maximum" : 65535,
+                           "minimum" : 1,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (1 - 65535)"
+                        },
+                        "greylist" : {
+                           "default" : 1,
+                           "description" : "Use Greylisting for IPv4.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "greylist6" : {
+                           "default" : 0,
+                           "description" : "Use Greylisting for IPv6.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "greylistmask4" : {
+                           "default" : 24,
+                           "description" : "Netmask to apply for greylisting IPv4 hosts",
+                           "maximum" : 32,
+                           "minimum" : 0,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (0 - 32)"
+                        },
+                        "greylistmask6" : {
+                           "default" : 64,
+                           "description" : "Netmask to apply for greylisting IPv6 hosts",
+                           "maximum" : 128,
+                           "minimum" : 0,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (0 - 128)"
+                        },
+                        "helotests" : {
+                           "default" : 0,
+                           "description" : "Use SMTP HELO tests.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "hide_received" : {
+                           "default" : 0,
+                           "description" : "Hide received header in outgoing mails.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "int_port" : {
+                           "default" : 26,
+                           "description" : "SMTP port number for outgoing mail (trusted).",
+                           "maximum" : 65535,
+                           "minimum" : 1,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (1 - 65535)"
+                        },
+                        "max_filters" : {
+                           "default" : 38,
+                           "description" : "Maximum number of pmg-smtp-filter processes.",
+                           "maximum" : 40,
+                           "minimum" : 3,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (3 - 40)"
+                        },
+                        "max_policy" : {
+                           "default" : 5,
+                           "description" : "Maximum number of pmgpolicy processes.",
+                           "maximum" : 10,
+                           "minimum" : 2,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (2 - 10)"
+                        },
+                        "max_smtpd_in" : {
+                           "default" : 100,
+                           "description" : "Maximum number of SMTP daemon processes (in).",
+                           "maximum" : 100,
+                           "minimum" : 3,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (3 - 100)"
+                        },
+                        "max_smtpd_out" : {
+                           "default" : 100,
+                           "description" : "Maximum number of SMTP daemon processes (out).",
+                           "maximum" : 100,
+                           "minimum" : 3,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (3 - 100)"
+                        },
+                        "maxsize" : {
+                           "default" : 10485760,
+                           "description" : "Maximum email size. Larger mails are rejected.",
+                           "minimum" : 1024,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (1024 - N)"
+                        },
+                        "message_rate_limit" : {
+                           "default" : 0,
+                           "description" : "The maximal number of message delivery requests that any client is allowed to make to this service per minute.To disable this feature, specify a limit of 0.",
+                           "minimum" : 0,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (0 - N)"
+                        },
+                        "ndr_on_block" : {
+                           "default" : 0,
+                           "description" : "Send out NDR when mail gets blocked",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "rejectunknown" : {
+                           "default" : 0,
+                           "description" : "Reject unknown clients.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "rejectunknownsender" : {
+                           "default" : 0,
+                           "description" : "Reject unknown senders.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "relay" : {
+                           "description" : "The default mail delivery transport (incoming mails).",
+                           "format" : "address",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "relaynomx" : {
+                           "default" : 0,
+                           "description" : "Disable MX lookups for default relay (SMTP only, ignored for LMTP).",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "relayport" : {
+                           "default" : 25,
+                           "description" : "SMTP/LMTP port number for relay host.",
+                           "maximum" : 65535,
+                           "minimum" : 1,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (1 - 65535)"
+                        },
+                        "relayprotocol" : {
+                           "default" : "smtp",
+                           "description" : "Transport protocol for relay host.",
+                           "enum" : [
+                              "smtp",
+                              "lmtp"
+                           ],
+                           "optional" : 1,
+                           "type" : "string"
+                        },
+                        "smarthost" : {
+                           "description" : "When set, all outgoing mails are deliverd to the specified smarthost.",
+                           "format" : "address",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "smarthostport" : {
+                           "default" : 25,
+                           "description" : "SMTP port number for smarthost.",
+                           "maximum" : 65535,
+                           "minimum" : 1,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (1 - 65535)"
+                        },
+                        "spf" : {
+                           "default" : 1,
+                           "description" : "Use Sender Policy Framework.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "tls" : {
+                           "default" : 0,
+                           "description" : "Enable TLS.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "tlsheader" : {
+                           "default" : 0,
+                           "description" : "Add TLS received header.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "tlslog" : {
+                           "default" : 0,
+                           "description" : "Enable TLS Logging.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "verifyreceivers" : {
+                           "description" : "Enable receiver verification. The value spefifies the numerical reply code when the Postfix SMTP server rejects a recipient address.",
+                           "enum" : [
+                              "450",
+                              "550"
+                           ],
+                           "optional" : 1,
+                           "type" : "string"
+                        }
+                     },
+                     "type" : "object"
+                  },
+                  "permissions" : {
+                     "check" : [
+                        "admin"
+                     ]
+                  },
+                  "protected" : 1,
+                  "proxyto" : "master",
+                  "returns" : {
+                     "type" : "null"
+                  }
+               }
+            },
+            "leaf" : 1,
+            "path" : "/config/mail",
+            "text" : "mail"
+         },
+         {
+            "info" : {
+               "GET" : {
+                  "allowtoken" : 1,
+                  "description" : "Read spam configuration properties.",
+                  "method" : "GET",
+                  "name" : "read_spam_section",
+                  "parameters" : {
+                     "additionalProperties" : 0
+                  },
+                  "permissions" : {
+                     "check" : [
+                        "admin",
+                        "audit"
+                     ]
+                  },
+                  "proxyto" : "master",
+                  "returns" : {
+                     "type" : "object"
+                  }
+               },
+               "PUT" : {
+                  "allowtoken" : 1,
+                  "description" : "Update spam configuration properties.",
+                  "method" : "PUT",
+                  "name" : "update_spam_section",
+                  "parameters" : {
+                     "additionalProperties" : 0,
+                     "properties" : {
+                        "bounce_score" : {
+                           "default" : 0,
+                           "description" : "Additional score for bounce mails.",
+                           "maximum" : 1000,
+                           "minimum" : 0,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (0 - 1000)"
+                        },
+                        "clamav_heuristic_score" : {
+                           "default" : 3,
+                           "description" : "Score for ClamAV heuristics (Encrypted Archives/Documents, PhishingScanURLs, ...).",
+                           "maximum" : 1000,
+                           "minimum" : 0,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (0 - 1000)"
+                        },
+                        "delete" : {
+                           "description" : "A list of settings you want to delete.",
+                           "format" : "pve-configid-list",
+                           "maxLength" : 4096,
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "digest" : {
+                           "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                           "maxLength" : 40,
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "languages" : {
+                           "default" : "all",
+                           "description" : "This option is used to specify which languages are considered OK for incoming mail.",
+                           "optional" : 1,
+                           "pattern" : "(all|([a-z][a-z])+( ([a-z][a-z])+)*)",
+                           "type" : "string"
+                        },
+                        "maxspamsize" : {
+                           "default" : 262144,
+                           "description" : "Maximum size of spam messages in bytes.",
+                           "minimum" : 64,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (64 - N)"
+                        },
+                        "rbl_checks" : {
+                           "default" : 1,
+                           "description" : "Enable real time blacklists (RBL) checks.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "use_awl" : {
+                           "default" : 1,
+                           "description" : "Use the Auto-Whitelist plugin.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "use_bayes" : {
+                           "default" : 1,
+                           "description" : "Whether to use the naive-Bayesian-style classifier.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "use_razor" : {
+                           "default" : 1,
+                           "description" : "Whether to use Razor2, if it is available.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "wl_bounce_relays" : {
+                           "description" : "Whitelist legitimate bounce relays.",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        }
+                     },
+                     "type" : "object"
+                  },
+                  "permissions" : {
+                     "check" : [
+                        "admin"
+                     ]
+                  },
+                  "protected" : 1,
+                  "proxyto" : "master",
+                  "returns" : {
+                     "type" : "null"
+                  }
+               }
+            },
+            "leaf" : 1,
+            "path" : "/config/spam",
+            "text" : "spam"
+         },
+         {
+            "info" : {
+               "GET" : {
+                  "allowtoken" : 1,
+                  "description" : "Read spamquar configuration properties.",
+                  "method" : "GET",
+                  "name" : "read_spamquar_section",
+                  "parameters" : {
+                     "additionalProperties" : 0
+                  },
+                  "permissions" : {
+                     "check" : [
+                        "admin",
+                        "audit"
+                     ]
+                  },
+                  "proxyto" : "master",
+                  "returns" : {
+                     "type" : "object"
+                  }
+               },
+               "PUT" : {
+                  "allowtoken" : 1,
+                  "description" : "Update spamquar configuration properties.",
+                  "method" : "PUT",
+                  "name" : "update_spamquar_section",
+                  "parameters" : {
+                     "additionalProperties" : 0,
+                     "properties" : {
+                        "allowhrefs" : {
+                           "default" : 1,
+                           "description" : "Allow to view hyperlinks.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "authmode" : {
+                           "default" : "ticket",
+                           "description" : "Authentication mode to access the quarantine interface. Mode 'ticket' allows login using tickets sent with the daily spam report. Mode 'ldap' requires to login using an LDAP account. Finally, mode 'ldapticket' allows both ways.",
+                           "enum" : [
+                              "ticket",
+                              "ldap",
+                              "ldapticket"
+                           ],
+                           "optional" : 1,
+                           "type" : "string"
+                        },
+                        "delete" : {
+                           "description" : "A list of settings you want to delete.",
+                           "format" : "pve-configid-list",
+                           "maxLength" : 4096,
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "digest" : {
+                           "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                           "maxLength" : 40,
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "hostname" : {
+                           "description" : "Quarantine Host. Useful if you run a Cluster and want users to connect to a specific host.",
+                           "format" : "address",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "lifetime" : {
+                           "default" : 7,
+                           "description" : "Quarantine life time (days)",
+                           "minimum" : 1,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (1 - N)"
+                        },
+                        "mailfrom" : {
+                           "description" : "Text for 'From' header in daily spam report mails.",
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "port" : {
+                           "default" : 8006,
+                           "description" : "Quarantine Port. Useful if you have a reverse proxy or port forwarding for the webinterface. Only used for the generated Spam report.",
+                           "maximum" : 65535,
+                           "minimum" : 1,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (1 - 65535)"
+                        },
+                        "protocol" : {
+                           "default" : "https",
+                           "description" : "Quarantine Webinterface Protocol. Useful if you have a reverse proxy for the webinterface. Only used for the generated Spam report.",
+                           "enum" : [
+                              "http",
+                              "https"
+                           ],
+                           "optional" : 1,
+                           "type" : "string"
+                        },
+                        "quarantinelink" : {
+                           "default" : 0,
+                           "description" : "Enables user self-service for Quarantine Links. Caution: this is accessible without authentication",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "reportstyle" : {
+                           "default" : "verbose",
+                           "description" : "Spam report style.",
+                           "enum" : [
+                              "none",
+                              "short",
+                              "verbose",
+                              "custom"
+                           ],
+                           "optional" : 1,
+                           "type" : "string"
+                        },
+                        "viewimages" : {
+                           "default" : 1,
+                           "description" : "Allow to view images.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        }
+                     },
+                     "type" : "object"
+                  },
+                  "permissions" : {
+                     "check" : [
+                        "admin"
+                     ]
+                  },
+                  "protected" : 1,
+                  "proxyto" : "master",
+                  "returns" : {
+                     "type" : "null"
+                  }
+               }
+            },
+            "leaf" : 1,
+            "path" : "/config/spamquar",
+            "text" : "spamquar"
+         },
+         {
+            "info" : {
+               "GET" : {
+                  "allowtoken" : 1,
+                  "description" : "Read virusquar configuration properties.",
+                  "method" : "GET",
+                  "name" : "read_virusquar_section",
+                  "parameters" : {
+                     "additionalProperties" : 0
+                  },
+                  "permissions" : {
+                     "check" : [
+                        "admin",
+                        "audit"
+                     ]
+                  },
+                  "proxyto" : "master",
+                  "returns" : {
+                     "type" : "object"
+                  }
+               },
+               "PUT" : {
+                  "allowtoken" : 1,
+                  "description" : "Update virusquar configuration properties.",
+                  "method" : "PUT",
+                  "name" : "update_virusquar_section",
+                  "parameters" : {
+                     "additionalProperties" : 0,
+                     "properties" : {
+                        "allowhrefs" : {
+                           "default" : 1,
+                           "description" : "Allow to view hyperlinks.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        },
+                        "delete" : {
+                           "description" : "A list of settings you want to delete.",
+                           "format" : "pve-configid-list",
+                           "maxLength" : 4096,
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "digest" : {
+                           "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                           "maxLength" : 40,
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "lifetime" : {
+                           "default" : 7,
+                           "description" : "Quarantine life time (days)",
+                           "minimum" : 1,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (1 - N)"
+                        },
+                        "viewimages" : {
+                           "default" : 1,
+                           "description" : "Allow to view images.",
+                           "optional" : 1,
+                           "type" : "boolean",
+                           "typetext" : "<boolean>"
+                        }
+                     },
+                     "type" : "object"
+                  },
+                  "permissions" : {
+                     "check" : [
+                        "admin"
+                     ]
+                  },
+                  "protected" : 1,
+                  "proxyto" : "master",
+                  "returns" : {
+                     "type" : "null"
+                  }
+               }
+            },
+            "leaf" : 1,
+            "path" : "/config/virusquar",
+            "text" : "virusquar"
+         },
+         {
+            "info" : {
+               "POST" : {
+                  "allowtoken" : 1,
+                  "description" : "Test Regex ignoring case",
+                  "method" : "POST",
+                  "name" : "regextest",
+                  "parameters" : {
+                     "additionalProperties" : 0,
+                     "properties" : {
+                        "regex" : {
+                           "description" : "The Regex to test",
+                           "maxLength" : 1024,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "text" : {
+                           "description" : "The String to test",
+                           "maxLength" : 1024,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        }
+                     }
+                  },
+                  "permissions" : {
+                     "check" : [
+                        "admin",
+                        "qmanager",
+                        "audit"
+                     ]
+                  },
+                  "protected" : 0,
+                  "returns" : {
+                     "type" : "number"
+                  }
+               }
+            },
+            "leaf" : 1,
+            "path" : "/config/regextest",
+            "text" : "regextest"
+         }
+      ],
+      "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",
+      "text" : "config"
+   },
+   {
+      "children" : [
+         {
+            "children" : [
+               {
+                  "children" : [
+                     {
+                        "info" : {
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "Print Postfix queue domain and age distribution.",
+                              "method" : "GET",
+                              "name" : "qshape",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "queue" : {
+                                       "default" : "deferred",
+                                       "description" : "Postfix queue name.",
+                                       "enum" : [
+                                          "deferred",
+                                          "active",
+                                          "incoming",
+                                          "hold"
+                                       ],
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin",
+                                    "audit"
+                                 ]
+                              },
+                              "protected" : 1,
+                              "proxyto" : "node",
+                              "returns" : {
+                                 "items" : {
+                                    "properties" : {},
+                                    "type" : "object"
+                                 },
+                                 "type" : "array"
+                              }
+                           }
+                        },
+                        "leaf" : 1,
+                        "path" : "/nodes/{node}/postfix/qshape",
+                        "text" : "qshape"
+                     },
+                     {
+                        "children" : [
+                           {
+                              "children" : [
+                                 {
+                                    "info" : {
+                                       "DELETE" : {
+                                          "allowtoken" : 1,
+                                          "description" : "Delete one message with the named queue ID.",
+                                          "method" : "DELETE",
+                                          "name" : "delete_queued_mail",
+                                          "parameters" : {
+                                             "additionalProperties" : 0,
+                                             "properties" : {
+                                                "node" : {
+                                                   "description" : "The cluster node name.",
+                                                   "format" : "pve-node",
+                                                   "type" : "string",
+                                                   "typetext" : "<string>"
+                                                },
+                                                "queue" : {
+                                                   "description" : "Postfix queue name.",
+                                                   "enum" : [
+                                                      "deferred",
+                                                      "active",
+                                                      "incoming",
+                                                      "hold"
+                                                   ],
+                                                   "type" : "string"
+                                                },
+                                                "queue_id" : {
+                                                   "description" : "The Message queue ID.",
+                                                   "maxLength" : 20,
+                                                   "minLength" : 8,
+                                                   "pattern" : "[a-zA-Z0-9]+",
+                                                   "type" : "string"
+                                                }
+                                             }
+                                          },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin"
+                                             ]
+                                          },
+                                          "protected" : 1,
+                                          "proxyto" : "node",
+                                          "returns" : {
+                                             "type" : "null"
+                                          }
+                                       },
+                                       "GET" : {
+                                          "allowtoken" : 1,
+                                          "description" : "Get the contents of a queued mail.",
+                                          "method" : "GET",
+                                          "name" : "read_queued_mail",
+                                          "parameters" : {
+                                             "additionalProperties" : 0,
+                                             "properties" : {
+                                                "body" : {
+                                                   "default" : 0,
+                                                   "description" : "Include body content.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean",
+                                                   "typetext" : "<boolean>"
+                                                },
+                                                "header" : {
+                                                   "default" : 1,
+                                                   "description" : "Show message header content.",
+                                                   "optional" : 1,
+                                                   "type" : "boolean",
+                                                   "typetext" : "<boolean>"
+                                                },
+                                                "node" : {
+                                                   "description" : "The cluster node name.",
+                                                   "format" : "pve-node",
+                                                   "type" : "string",
+                                                   "typetext" : "<string>"
+                                                },
+                                                "queue" : {
+                                                   "description" : "Postfix queue name.",
+                                                   "enum" : [
+                                                      "deferred",
+                                                      "active",
+                                                      "incoming",
+                                                      "hold"
+                                                   ],
+                                                   "type" : "string"
+                                                },
+                                                "queue_id" : {
+                                                   "description" : "The Message queue ID.",
+                                                   "maxLength" : 20,
+                                                   "minLength" : 8,
+                                                   "pattern" : "[a-zA-Z0-9]+",
+                                                   "type" : "string"
+                                                }
+                                             }
+                                          },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin"
+                                             ]
+                                          },
+                                          "protected" : 1,
+                                          "proxyto" : "node",
+                                          "returns" : {
+                                             "type" : "string"
+                                          }
+                                       },
+                                       "POST" : {
+                                          "allowtoken" : 1,
+                                          "description" : "Schedule immediate delivery of deferred mail with the specified queue ID.",
+                                          "method" : "POST",
+                                          "name" : "flush_queued_mail",
+                                          "parameters" : {
+                                             "additionalProperties" : 0,
+                                             "properties" : {
+                                                "node" : {
+                                                   "description" : "The cluster node name.",
+                                                   "format" : "pve-node",
+                                                   "type" : "string",
+                                                   "typetext" : "<string>"
+                                                },
+                                                "queue" : {
+                                                   "description" : "Postfix queue name.",
+                                                   "enum" : [
+                                                      "deferred",
+                                                      "active",
+                                                      "incoming",
+                                                      "hold"
+                                                   ],
+                                                   "type" : "string"
+                                                },
+                                                "queue_id" : {
+                                                   "description" : "The Message queue ID.",
+                                                   "maxLength" : 20,
+                                                   "minLength" : 8,
+                                                   "pattern" : "[a-zA-Z0-9]+",
+                                                   "type" : "string"
+                                                }
+                                             }
+                                          },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin"
+                                             ]
+                                          },
+                                          "protected" : 1,
+                                          "proxyto" : "node",
+                                          "returns" : {
+                                             "type" : "null"
+                                          }
+                                       }
+                                    },
+                                    "leaf" : 1,
+                                    "path" : "/nodes/{node}/postfix/queue/{queue}/{queue_id}",
+                                    "text" : "{queue_id}"
+                                 }
+                              ],
+                              "info" : {
+                                 "DELETE" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Delete all mails in the queue.",
+                                    "method" : "DELETE",
+                                    "name" : "delete_queue",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "queue" : {
+                                             "description" : "Postfix queue name.",
+                                             "enum" : [
+                                                "deferred",
+                                                "active",
+                                                "incoming",
+                                                "hold"
+                                             ],
+                                             "type" : "string"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin"
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "type" : "null"
+                                    }
+                                 },
+                                 "GET" : {
+                                    "allowtoken" : 1,
+                                    "description" : "List the mail queue for a specific domain.",
+                                    "method" : "GET",
+                                    "name" : "mailq",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "filter" : {
+                                             "description" : "Filter string.",
+                                             "maxLength" : 64,
+                                             "optional" : 1,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "limit" : {
+                                             "minimum" : 0,
+                                             "optional" : 1,
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (0 - N)"
+                                          },
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "queue" : {
+                                             "description" : "Postfix queue name.",
+                                             "enum" : [
+                                                "deferred",
+                                                "active",
+                                                "incoming",
+                                                "hold"
+                                             ],
+                                             "type" : "string"
+                                          },
+                                          "sortdir" : {
+                                             "description" : "Sort direction.",
+                                             "enum" : [
+                                                "ASC",
+                                                "DESC"
+                                             ],
+                                             "optional" : 1,
+                                             "requires" : "sortfield",
+                                             "type" : "string"
+                                          },
+                                          "sortfield" : {
+                                             "description" : "Sort field.",
+                                             "enum" : [
+                                                "arrival_time",
+                                                "message_size",
+                                                "sender",
+                                                "receiver",
+                                                "reason"
+                                             ],
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "start" : {
+                                             "minimum" : 0,
+                                             "optional" : 1,
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (0 - N)"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin",
+                                          "audit"
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "items" : {
+                                          "properties" : {},
+                                          "type" : "object"
+                                       },
+                                       "links" : [
+                                          {
+                                             "href" : "{queue_id}",
+                                             "rel" : "child"
+                                          }
+                                       ],
+                                       "type" : "array"
+                                    }
+                                 }
+                              },
+                              "leaf" : 0,
+                              "path" : "/nodes/{node}/postfix/queue/{queue}",
+                              "text" : "{queue}"
+                           }
+                        ],
+                        "info" : {
+                           "DELETE" : {
+                              "allowtoken" : 1,
+                              "description" : "Delete all mails in all posfix queues.",
+                              "method" : "DELETE",
+                              "name" : "delete_all_queues",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin"
+                                 ]
+                              },
+                              "protected" : 1,
+                              "proxyto" : "node",
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           },
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "Directory index.",
+                              "method" : "GET",
+                              "name" : "queue_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}/postfix/queue",
+                        "text" : "queue"
+                     },
+                     {
+                        "info" : {
+                           "POST" : {
+                              "allowtoken" : 1,
+                              "description" : "Flush the queue: attempt to deliver all queued mail.",
+                              "method" : "POST",
+                              "name" : "flush_queues",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "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}/postfix/flush_queues",
+                        "text" : "flush_queues"
+                     },
+                     {
+                        "info" : {
+                           "POST" : {
+                              "allowtoken" : 1,
+                              "description" : "Discards the address verification cache.",
+                              "method" : "POST",
+                              "name" : "discard_verify_cache",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "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}/postfix/discard_verify_cache",
+                        "text" : "discard_verify_cache"
+                     }
+                  ],
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Directory index.",
+                        "method" : "GET",
+                        "name" : "index",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "node" : {
+                                 "description" : "The cluster node name.",
+                                 "format" : "pve-node",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "user" : "all"
+                        },
+                        "returns" : {
+                           "items" : {
+                              "properties" : {},
+                              "type" : "object"
+                           },
+                           "links" : [
+                              {
+                                 "href" : "{name}",
+                                 "rel" : "child"
+                              }
+                           ],
+                           "type" : "array"
+                        }
+                     }
+                  },
+                  "leaf" : 0,
+                  "path" : "/nodes/{node}/postfix",
+                  "text" : "postfix"
+               },
+               {
+                  "children" : [
+                     {
+                        "info" : {
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "ClamAV virus database status.",
+                              "method" : "GET",
+                              "name" : "database_status",
+                              "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" : {
+                                       "build_time" : {
+                                          "type" : "string"
+                                       },
+                                       "nsigs" : {
+                                          "type" : "integer"
+                                       },
+                                       "type" : {
+                                          "type" : "string"
+                                       },
+                                       "version" : {
+                                          "optional" : 1,
+                                          "type" : "string"
+                                       }
+                                    },
+                                    "type" : "object"
+                                 },
+                                 "type" : "array"
+                              }
+                           },
+                           "POST" : {
+                              "allowtoken" : 1,
+                              "description" : "Update ClamAV virus databases.",
+                              "method" : "POST",
+                              "name" : "update_database",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin"
+                                 ]
+                              },
+                              "protected" : 1,
+                              "proxyto" : "node",
+                              "returns" : {
+                                 "type" : "string"
+                              }
+                           }
+                        },
+                        "leaf" : 1,
+                        "path" : "/nodes/{node}/clamav/database",
+                        "text" : "database"
+                     }
+                  ],
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Directory index.",
+                        "method" : "GET",
+                        "name" : "index",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "node" : {
+                                 "description" : "The cluster node name.",
+                                 "format" : "pve-node",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "admin",
+                              "audit"
+                           ]
+                        },
+                        "returns" : {
+                           "items" : {
+                              "properties" : {},
+                              "type" : "object"
+                           },
+                           "links" : [
+                              {
+                                 "href" : "{subdir}",
+                                 "rel" : "child"
+                              }
+                           ],
+                           "type" : "array"
+                        }
+                     }
+                  },
+                  "leaf" : 0,
+                  "path" : "/nodes/{node}/clamav",
+                  "text" : "clamav"
+               },
+               {
+                  "children" : [
+                     {
+                        "info" : {
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "SpamAssassin rules status.",
+                              "method" : "GET",
+                              "name" : "rules_status",
+                              "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" : {
+                                       "channel" : {
+                                          "type" : "string"
+                                       },
+                                       "last_updated" : {
+                                          "optional" : 1,
+                                          "type" : "integer"
+                                       },
+                                       "update_avail" : {
+                                          "type" : "boolean"
+                                       },
+                                       "update_version" : {
+                                          "optional" : 1,
+                                          "type" : "string"
+                                       },
+                                       "version" : {
+                                          "optional" : 1,
+                                          "type" : "string"
+                                       }
+                                    },
+                                    "type" : "object"
+                                 },
+                                 "type" : "array"
+                              }
+                           },
+                           "POST" : {
+                              "allowtoken" : 1,
+                              "description" : "Update SpamAssassin rules.",
+                              "method" : "POST",
+                              "name" : "update_rules",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin"
+                                 ]
+                              },
+                              "protected" : 1,
+                              "proxyto" : "node",
+                              "returns" : {
+                                 "type" : "string"
+                              }
+                           }
+                        },
+                        "leaf" : 1,
+                        "path" : "/nodes/{node}/spamassassin/rules",
+                        "text" : "rules"
+                     }
+                  ],
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Directory index.",
+                        "method" : "GET",
+                        "name" : "index",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "node" : {
+                                 "description" : "The cluster node name.",
+                                 "format" : "pve-node",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "admin",
+                              "audit"
+                           ]
+                        },
+                        "returns" : {
+                           "items" : {
+                              "properties" : {},
+                              "type" : "object"
+                           },
+                           "links" : [
+                              {
+                                 "href" : "{subdir}",
+                                 "rel" : "child"
+                              }
+                           ],
+                           "type" : "array"
+                        }
+                     }
+                  },
+                  "leaf" : 0,
+                  "path" : "/nodes/{node}/spamassassin",
+                  "text" : "spamassassin"
+               },
+               {
+                  "children" : [
+                     {
+                        "info" : {
+                           "DELETE" : {
+                              "allowtoken" : 1,
+                              "description" : "Delete network device configuration",
+                              "method" : "DELETE",
+                              "name" : "delete_network",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "iface" : {
+                                       "description" : "Network interface name.",
+                                       "format" : "pve-iface",
+                                       "maxLength" : 20,
+                                       "minLength" : 2,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "protected" : 1,
+                              "proxyto" : "node",
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           },
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "Read network device configuration",
+                              "method" : "GET",
+                              "name" : "network_config",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "iface" : {
+                                       "description" : "Network interface name.",
+                                       "format" : "pve-iface",
+                                       "maxLength" : 20,
+                                       "minLength" : 2,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin",
+                                    "audit"
+                                 ]
+                              },
+                              "proxyto" : "node",
+                              "returns" : {
+                                 "properties" : {
+                                    "method" : {
+                                       "type" : "string"
+                                    },
+                                    "type" : {
+                                       "type" : "string"
+                                    }
+                                 },
+                                 "type" : "object"
+                              }
+                           },
+                           "PUT" : {
+                              "allowtoken" : 1,
+                              "description" : "Update network device configuration",
+                              "method" : "PUT",
+                              "name" : "update_network",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "address" : {
+                                       "description" : "IP address.",
+                                       "format" : "ipv4",
+                                       "optional" : 1,
+                                       "requires" : "netmask",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "address6" : {
+                                       "description" : "IP address.",
+                                       "format" : "ipv6",
+                                       "optional" : 1,
+                                       "requires" : "netmask6",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "autostart" : {
+                                       "description" : "Automatically start interface on boot.",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    },
+                                    "bond-primary" : {
+                                       "description" : "Specify the primary interface for active-backup bond.",
+                                       "format" : "pve-iface",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "bond_mode" : {
+                                       "description" : "Bonding mode.",
+                                       "enum" : [
                                           "balance-rr",
                                           "active-backup",
                                           "balance-xor",
@@ -8737,192 +11810,1188 @@ var pmgapi = [
                                           "lacp-balance-tcp"
                                        ],
                                        "optional" : 1,
-                                       "type" : "string"
+                                       "type" : "string"
+                                    },
+                                    "bond_xmit_hash_policy" : {
+                                       "description" : "Selects the transmit hash policy to use for slave selection in balance-xor and 802.3ad modes.",
+                                       "enum" : [
+                                          "layer2",
+                                          "layer2+3",
+                                          "layer3+4"
+                                       ],
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "bridge_ports" : {
+                                       "description" : "Specify the interfaces you want to add to your bridge.",
+                                       "format" : "pve-iface-list",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "bridge_vlan_aware" : {
+                                       "description" : "Enable bridge vlan support.",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    },
+                                    "cidr" : {
+                                       "description" : "IPv4 CIDR.",
+                                       "format" : "CIDRv4",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "cidr6" : {
+                                       "description" : "IPv6 CIDR.",
+                                       "format" : "CIDRv6",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "comments" : {
+                                       "description" : "Comments",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "comments6" : {
+                                       "description" : "Comments",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "delete" : {
+                                       "description" : "A list of settings you want to delete.",
+                                       "format" : "pve-configid-list",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "gateway" : {
+                                       "description" : "Default gateway address.",
+                                       "format" : "ipv4",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "gateway6" : {
+                                       "description" : "Default ipv6 gateway address.",
+                                       "format" : "ipv6",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "iface" : {
+                                       "description" : "Network interface name.",
+                                       "format" : "pve-iface",
+                                       "maxLength" : 20,
+                                       "minLength" : 2,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "mtu" : {
+                                       "description" : "MTU.",
+                                       "maximum" : 65520,
+                                       "minimum" : 1280,
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (1280 - 65520)"
+                                    },
+                                    "netmask" : {
+                                       "description" : "Network mask.",
+                                       "format" : "ipv4mask",
+                                       "optional" : 1,
+                                       "requires" : "address",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
                                     },
-                                    "bond_xmit_hash_policy" : {
-                                       "description" : "Selects the transmit hash policy to use for slave selection in balance-xor and 802.3ad modes.",
+                                    "netmask6" : {
+                                       "description" : "Network mask.",
+                                       "maximum" : 128,
+                                       "minimum" : 0,
+                                       "optional" : 1,
+                                       "requires" : "address6",
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (0 - 128)"
+                                    },
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "ovs_bonds" : {
+                                       "description" : "Specify the interfaces used by the bonding device.",
+                                       "format" : "pve-iface-list",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "ovs_bridge" : {
+                                       "description" : "The OVS bridge associated with a OVS port. This is required when you create an OVS port.",
+                                       "format" : "pve-iface",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "ovs_options" : {
+                                       "description" : "OVS interface options.",
+                                       "maxLength" : 1024,
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "ovs_ports" : {
+                                       "description" : "Specify the interfaces you want to add to your bridge.",
+                                       "format" : "pve-iface-list",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "ovs_tag" : {
+                                       "description" : "Specify a VLan tag (used by OVSPort, OVSIntPort, OVSBond)",
+                                       "maximum" : 4094,
+                                       "minimum" : 1,
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (1 - 4094)"
+                                    },
+                                    "slaves" : {
+                                       "description" : "Specify the interfaces used by the bonding device.",
+                                       "format" : "pve-iface-list",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
+                                    "type" : {
+                                       "description" : "Network interface type",
                                        "enum" : [
-                                          "layer2",
-                                          "layer2+3",
-                                          "layer3+4"
+                                          "bridge",
+                                          "bond",
+                                          "eth",
+                                          "alias",
+                                          "vlan",
+                                          "OVSBridge",
+                                          "OVSBond",
+                                          "OVSPort",
+                                          "OVSIntPort",
+                                          "unknown"
                                        ],
-                                       "optional" : 1,
                                        "type" : "string"
                                     },
-                                    "bridge_ports" : {
-                                       "description" : "Specify the iterfaces you want to add to your bridge.",
-                                       "format" : "pve-iface-list",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                                    "vlan-id" : {
+                                       "description" : "vlan-id for a custom named vlan interface (ifupdown2 only).",
+                                       "maximum" : 4094,
+                                       "minimum" : 1,
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (1 - 4094)"
+                                    },
+                                    "vlan-raw-device" : {
+                                       "description" : "Specify the raw interface for the vlan interface.",
+                                       "format" : "pve-iface",
+                                       "optional" : 1,
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "protected" : 1,
+                              "proxyto" : "node",
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           }
+                        },
+                        "leaf" : 1,
+                        "path" : "/nodes/{node}/network/{iface}",
+                        "text" : "{iface}"
+                     }
+                  ],
+                  "info" : {
+                     "DELETE" : {
+                        "allowtoken" : 1,
+                        "description" : "Revert network configuration changes.",
+                        "method" : "DELETE",
+                        "name" : "revert_network_changes",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "node" : {
+                                 "description" : "The cluster node name.",
+                                 "format" : "pve-node",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
+                        },
+                        "protected" : 1,
+                        "proxyto" : "node",
+                        "returns" : {
+                           "type" : "null"
+                        }
+                     },
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "List available networks",
+                        "method" : "GET",
+                        "name" : "index",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "node" : {
+                                 "description" : "The cluster node name.",
+                                 "format" : "pve-node",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "type" : {
+                                 "description" : "Only list specific interface types.",
+                                 "enum" : [
+                                    "bridge",
+                                    "bond",
+                                    "eth",
+                                    "alias",
+                                    "vlan",
+                                    "OVSBridge",
+                                    "OVSBond",
+                                    "OVSPort",
+                                    "OVSIntPort",
+                                    "any_bridge"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "admin",
+                              "audit"
+                           ]
+                        },
+                        "proxyto" : "node",
+                        "returns" : {
+                           "items" : {
+                              "properties" : {},
+                              "type" : "object"
+                           },
+                           "links" : [
+                              {
+                                 "href" : "{iface}",
+                                 "rel" : "child"
+                              }
+                           ],
+                           "type" : "array"
+                        }
+                     },
+                     "POST" : {
+                        "allowtoken" : 1,
+                        "description" : "Create network device configuration",
+                        "method" : "POST",
+                        "name" : "create_network",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "address" : {
+                                 "description" : "IP address.",
+                                 "format" : "ipv4",
+                                 "optional" : 1,
+                                 "requires" : "netmask",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "address6" : {
+                                 "description" : "IP address.",
+                                 "format" : "ipv6",
+                                 "optional" : 1,
+                                 "requires" : "netmask6",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "autostart" : {
+                                 "description" : "Automatically start interface on boot.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
+                              "bond-primary" : {
+                                 "description" : "Specify the primary interface for active-backup bond.",
+                                 "format" : "pve-iface",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "bond_mode" : {
+                                 "description" : "Bonding mode.",
+                                 "enum" : [
+                                    "balance-rr",
+                                    "active-backup",
+                                    "balance-xor",
+                                    "broadcast",
+                                    "802.3ad",
+                                    "balance-tlb",
+                                    "balance-alb",
+                                    "balance-slb",
+                                    "lacp-balance-slb",
+                                    "lacp-balance-tcp"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "bond_xmit_hash_policy" : {
+                                 "description" : "Selects the transmit hash policy to use for slave selection in balance-xor and 802.3ad modes.",
+                                 "enum" : [
+                                    "layer2",
+                                    "layer2+3",
+                                    "layer3+4"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "bridge_ports" : {
+                                 "description" : "Specify the interfaces you want to add to your bridge.",
+                                 "format" : "pve-iface-list",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "bridge_vlan_aware" : {
+                                 "description" : "Enable bridge vlan support.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
+                              "cidr" : {
+                                 "description" : "IPv4 CIDR.",
+                                 "format" : "CIDRv4",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "cidr6" : {
+                                 "description" : "IPv6 CIDR.",
+                                 "format" : "CIDRv6",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "comments" : {
+                                 "description" : "Comments",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "comments6" : {
+                                 "description" : "Comments",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "gateway" : {
+                                 "description" : "Default gateway address.",
+                                 "format" : "ipv4",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "gateway6" : {
+                                 "description" : "Default ipv6 gateway address.",
+                                 "format" : "ipv6",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "iface" : {
+                                 "description" : "Network interface name.",
+                                 "format" : "pve-iface",
+                                 "maxLength" : 20,
+                                 "minLength" : 2,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "mtu" : {
+                                 "description" : "MTU.",
+                                 "maximum" : 65520,
+                                 "minimum" : 1280,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (1280 - 65520)"
+                              },
+                              "netmask" : {
+                                 "description" : "Network mask.",
+                                 "format" : "ipv4mask",
+                                 "optional" : 1,
+                                 "requires" : "address",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "netmask6" : {
+                                 "description" : "Network mask.",
+                                 "maximum" : 128,
+                                 "minimum" : 0,
+                                 "optional" : 1,
+                                 "requires" : "address6",
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (0 - 128)"
+                              },
+                              "node" : {
+                                 "description" : "The cluster node name.",
+                                 "format" : "pve-node",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "ovs_bonds" : {
+                                 "description" : "Specify the interfaces used by the bonding device.",
+                                 "format" : "pve-iface-list",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "ovs_bridge" : {
+                                 "description" : "The OVS bridge associated with a OVS port. This is required when you create an OVS port.",
+                                 "format" : "pve-iface",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "ovs_options" : {
+                                 "description" : "OVS interface options.",
+                                 "maxLength" : 1024,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "ovs_ports" : {
+                                 "description" : "Specify the interfaces you want to add to your bridge.",
+                                 "format" : "pve-iface-list",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "ovs_tag" : {
+                                 "description" : "Specify a VLan tag (used by OVSPort, OVSIntPort, OVSBond)",
+                                 "maximum" : 4094,
+                                 "minimum" : 1,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (1 - 4094)"
+                              },
+                              "slaves" : {
+                                 "description" : "Specify the interfaces used by the bonding device.",
+                                 "format" : "pve-iface-list",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "type" : {
+                                 "description" : "Network interface type",
+                                 "enum" : [
+                                    "bridge",
+                                    "bond",
+                                    "eth",
+                                    "alias",
+                                    "vlan",
+                                    "OVSBridge",
+                                    "OVSBond",
+                                    "OVSPort",
+                                    "OVSIntPort",
+                                    "unknown"
+                                 ],
+                                 "type" : "string"
+                              },
+                              "vlan-id" : {
+                                 "description" : "vlan-id for a custom named vlan interface (ifupdown2 only).",
+                                 "maximum" : 4094,
+                                 "minimum" : 1,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (1 - 4094)"
+                              },
+                              "vlan-raw-device" : {
+                                 "description" : "Specify the raw interface for the vlan interface.",
+                                 "format" : "pve-iface",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
+                        },
+                        "protected" : 1,
+                        "proxyto" : "node",
+                        "returns" : {
+                           "type" : "null"
+                        }
+                     }
+                  },
+                  "leaf" : 0,
+                  "path" : "/nodes/{node}/network",
+                  "text" : "network"
+               },
+               {
+                  "children" : [
+                     {
+                        "children" : [
+                           {
+                              "info" : {
+                                 "GET" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Read task log.",
+                                    "method" : "GET",
+                                    "name" : "read_task_log",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "limit" : {
+                                             "minimum" : 0,
+                                             "optional" : 1,
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (0 - N)"
+                                          },
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "start" : {
+                                             "minimum" : 0,
+                                             "optional" : 1,
+                                             "type" : "integer",
+                                             "typetext" : "<integer> (0 - N)"
+                                          },
+                                          "upid" : {
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin",
+                                          "audit"
+                                       ]
                                     },
-                                    "bridge_vlan_aware" : {
-                                       "description" : "Enable bridge vlan support.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "items" : {
+                                          "properties" : {
+                                             "n" : {
+                                                "description" : "Line number",
+                                                "type" : "integer"
+                                             },
+                                             "t" : {
+                                                "description" : "Line text",
+                                                "type" : "string"
+                                             }
+                                          },
+                                          "type" : "object"
+                                       },
+                                       "type" : "array"
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/tasks/{upid}/log",
+                              "text" : "log"
+                           },
+                           {
+                              "info" : {
+                                 "GET" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Read task status.",
+                                    "method" : "GET",
+                                    "name" : "read_task_status",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "upid" : {
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          }
+                                       }
                                     },
-                                    "comments" : {
-                                       "description" : "Comments",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin",
+                                          "audit"
+                                       ]
                                     },
-                                    "comments6" : {
-                                       "description" : "Comments",
-                                       "optional" : 1,
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "properties" : {
+                                          "pid" : {
+                                             "type" : "integer"
+                                          },
+                                          "status" : {
+                                             "enum" : [
+                                                "running",
+                                                "stopped"
+                                             ],
+                                             "type" : "string"
+                                          }
+                                       },
+                                       "type" : "object"
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/tasks/{upid}/status",
+                              "text" : "status"
+                           }
+                        ],
+                        "info" : {
+                           "DELETE" : {
+                              "allowtoken" : 1,
+                              "description" : "Stop a task.",
+                              "method" : "DELETE",
+                              "name" : "stop_task",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
-                                    "delete" : {
-                                       "description" : "A list of settings you want to delete.",
-                                       "format" : "pve-configid-list",
-                                       "optional" : 1,
+                                    "upid" : {
                                        "type" : "string",
                                        "typetext" : "<string>"
-                                    },
-                                    "gateway" : {
-                                       "description" : "Default gateway address.",
-                                       "format" : "ipv4",
-                                       "optional" : 1,
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin"
+                                 ]
+                              },
+                              "protected" : 1,
+                              "proxyto" : "node",
+                              "returns" : {
+                                 "type" : "null"
+                              }
+                           },
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "",
+                              "method" : "GET",
+                              "name" : "upid_index",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
-                                    "gateway6" : {
-                                       "description" : "Default ipv6 gateway address.",
-                                       "format" : "ipv6",
-                                       "optional" : 1,
+                                    "upid" : {
                                        "type" : "string",
                                        "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin",
+                                    "audit"
+                                 ]
+                              },
+                              "returns" : {
+                                 "items" : {
+                                    "properties" : {},
+                                    "type" : "object"
+                                 },
+                                 "links" : [
+                                    {
+                                       "href" : "{name}",
+                                       "rel" : "child"
+                                    }
+                                 ],
+                                 "type" : "array"
+                              }
+                           }
+                        },
+                        "leaf" : 0,
+                        "path" : "/nodes/{node}/tasks/{upid}",
+                        "text" : "{upid}"
+                     }
+                  ],
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Read task list for one node (finished tasks).",
+                        "method" : "GET",
+                        "name" : "node_tasks",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "errors" : {
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
+                              },
+                              "limit" : {
+                                 "minimum" : 0,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (0 - N)"
+                              },
+                              "node" : {
+                                 "description" : "The cluster node name.",
+                                 "format" : "pve-node",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "since" : {
+                                 "description" : "Only list tasks since this UNIX epoch.",
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer>"
+                              },
+                              "start" : {
+                                 "minimum" : 0,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (0 - N)"
+                              },
+                              "statusfilter" : {
+                                 "description" : "List of Task States that should be returned.",
+                                 "format" : "pve-task-status-type-list",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "typefilter" : {
+                                 "description" : "Only list tasks of this type (e.g., aptupdate, saupdate).",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "until" : {
+                                 "description" : "Only list tasks until this UNIX epoch.",
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer>"
+                              },
+                              "userfilter" : {
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "admin",
+                              "audit"
+                           ]
+                        },
+                        "proxyto" : "node",
+                        "returns" : {
+                           "items" : {
+                              "properties" : {
+                                 "upid" : {
+                                    "type" : "string"
+                                 }
+                              },
+                              "type" : "object"
+                           },
+                           "links" : [
+                              {
+                                 "href" : "{upid}",
+                                 "rel" : "child"
+                              }
+                           ],
+                           "type" : "array"
+                        }
+                     }
+                  },
+                  "leaf" : 0,
+                  "path" : "/nodes/{node}/tasks",
+                  "text" : "tasks"
+               },
+               {
+                  "children" : [
+                     {
+                        "children" : [
+                           {
+                              "info" : {
+                                 "GET" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Read service properties",
+                                    "method" : "GET",
+                                    "name" : "service_state",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "service" : {
+                                             "description" : "Service ID",
+                                             "enum" : [
+                                                "clamav-daemon",
+                                                "clamav-freshclam",
+                                                "fetchmail",
+                                                "pmgproxy",
+                                                "pmgdaemon",
+                                                "pmgpolicy",
+                                                "pmg-smtp-filter",
+                                                "pmgtunnel",
+                                                "pmgmirror",
+                                                "ssh",
+                                                "rsyslog",
+                                                "postfix",
+                                                "postgres",
+                                                "systemd-timesyncd",
+                                                "pmg-hourly",
+                                                "pmg-daily",
+                                                "pmgreport",
+                                                "pmgspamreport"
+                                             ],
+                                             "type" : "string"
+                                          }
+                                       }
                                     },
-                                    "iface" : {
-                                       "description" : "Network interface name.",
-                                       "format" : "pve-iface",
-                                       "maxLength" : 20,
-                                       "minLength" : 2,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin",
+                                          "audit"
+                                       ]
                                     },
-                                    "netmask" : {
-                                       "description" : "Network mask.",
-                                       "format" : "ipv4mask",
-                                       "optional" : 1,
-                                       "requires" : "address",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "type" : "object"
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/services/{service}/state",
+                              "text" : "state"
+                           },
+                           {
+                              "info" : {
+                                 "POST" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Start service.",
+                                    "method" : "POST",
+                                    "name" : "service_start",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "service" : {
+                                             "description" : "Service ID",
+                                             "enum" : [
+                                                "clamav-daemon",
+                                                "clamav-freshclam",
+                                                "fetchmail",
+                                                "pmgproxy",
+                                                "pmgdaemon",
+                                                "pmgpolicy",
+                                                "pmg-smtp-filter",
+                                                "pmgtunnel",
+                                                "pmgmirror",
+                                                "ssh",
+                                                "rsyslog",
+                                                "postfix",
+                                                "postgres",
+                                                "systemd-timesyncd",
+                                                "pmg-hourly",
+                                                "pmg-daily",
+                                                "pmgreport",
+                                                "pmgspamreport"
+                                             ],
+                                             "type" : "string"
+                                          }
+                                       }
                                     },
-                                    "netmask6" : {
-                                       "description" : "Network mask.",
-                                       "maximum" : 128,
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "requires" : "address6",
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - 128)"
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin"
+                                       ]
                                     },
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "type" : "string"
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/services/{service}/start",
+                              "text" : "start"
+                           },
+                           {
+                              "info" : {
+                                 "POST" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Stop service.",
+                                    "method" : "POST",
+                                    "name" : "service_stop",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "service" : {
+                                             "description" : "Service ID",
+                                             "enum" : [
+                                                "clamav-daemon",
+                                                "clamav-freshclam",
+                                                "fetchmail",
+                                                "pmgproxy",
+                                                "pmgdaemon",
+                                                "pmgpolicy",
+                                                "pmg-smtp-filter",
+                                                "pmgtunnel",
+                                                "pmgmirror",
+                                                "ssh",
+                                                "rsyslog",
+                                                "postfix",
+                                                "postgres",
+                                                "systemd-timesyncd",
+                                                "pmg-hourly",
+                                                "pmg-daily",
+                                                "pmgreport",
+                                                "pmgspamreport"
+                                             ],
+                                             "type" : "string"
+                                          }
+                                       }
                                     },
-                                    "ovs_bonds" : {
-                                       "description" : "Specify the interfaces used by the bonding device.",
-                                       "format" : "pve-iface-list",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin"
+                                       ]
                                     },
-                                    "ovs_bridge" : {
-                                       "description" : "The OVS bridge associated with a OVS port. This is required when you create an OVS port.",
-                                       "format" : "pve-iface",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "type" : "string"
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/services/{service}/stop",
+                              "text" : "stop"
+                           },
+                           {
+                              "info" : {
+                                 "POST" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Restart service.",
+                                    "method" : "POST",
+                                    "name" : "service_restart",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "service" : {
+                                             "description" : "Service ID",
+                                             "enum" : [
+                                                "clamav-daemon",
+                                                "clamav-freshclam",
+                                                "fetchmail",
+                                                "pmgproxy",
+                                                "pmgdaemon",
+                                                "pmgpolicy",
+                                                "pmg-smtp-filter",
+                                                "pmgtunnel",
+                                                "pmgmirror",
+                                                "ssh",
+                                                "rsyslog",
+                                                "postfix",
+                                                "postgres",
+                                                "systemd-timesyncd",
+                                                "pmg-hourly",
+                                                "pmg-daily",
+                                                "pmgreport",
+                                                "pmgspamreport"
+                                             ],
+                                             "type" : "string"
+                                          }
+                                       }
                                     },
-                                    "ovs_options" : {
-                                       "description" : "OVS interface options.",
-                                       "maxLength" : 1024,
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin"
+                                       ]
                                     },
-                                    "ovs_ports" : {
-                                       "description" : "Specify the iterfaces you want to add to your bridge.",
-                                       "format" : "pve-iface-list",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "type" : "string"
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/services/{service}/restart",
+                              "text" : "restart"
+                           },
+                           {
+                              "info" : {
+                                 "POST" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Reload service.",
+                                    "method" : "POST",
+                                    "name" : "service_reload",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "service" : {
+                                             "description" : "Service ID",
+                                             "enum" : [
+                                                "clamav-daemon",
+                                                "clamav-freshclam",
+                                                "fetchmail",
+                                                "pmgproxy",
+                                                "pmgdaemon",
+                                                "pmgpolicy",
+                                                "pmg-smtp-filter",
+                                                "pmgtunnel",
+                                                "pmgmirror",
+                                                "ssh",
+                                                "rsyslog",
+                                                "postfix",
+                                                "postgres",
+                                                "systemd-timesyncd",
+                                                "pmg-hourly",
+                                                "pmg-daily",
+                                                "pmgreport",
+                                                "pmgspamreport"
+                                             ],
+                                             "type" : "string"
+                                          }
+                                       }
                                     },
-                                    "ovs_tag" : {
-                                       "description" : "Specify a VLan tag (used by OVSPort, OVSIntPort, OVSBond)",
-                                       "maximum" : 4094,
-                                       "minimum" : 1,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (1 - 4094)"
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin"
+                                       ]
                                     },
-                                    "slaves" : {
-                                       "description" : "Specify the interfaces used by the bonding device.",
-                                       "format" : "pve-iface-list",
-                                       "optional" : 1,
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "type" : "string"
+                                    }
+                                 }
+                              },
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/services/{service}/reload",
+                              "text" : "reload"
+                           }
+                        ],
+                        "info" : {
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "Directory index",
+                              "method" : "GET",
+                              "name" : "srvcmdidx",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
-                                    "type" : {
-                                       "description" : "Network interface type",
+                                    "service" : {
+                                       "description" : "Service ID",
                                        "enum" : [
-                                          "bridge",
-                                          "bond",
-                                          "eth",
-                                          "alias",
-                                          "vlan",
-                                          "OVSBridge",
-                                          "OVSBond",
-                                          "OVSPort",
-                                          "OVSIntPort",
-                                          "unknown"
+                                          "clamav-daemon",
+                                          "clamav-freshclam",
+                                          "fetchmail",
+                                          "pmgproxy",
+                                          "pmgdaemon",
+                                          "pmgpolicy",
+                                          "pmg-smtp-filter",
+                                          "pmgtunnel",
+                                          "pmgmirror",
+                                          "ssh",
+                                          "rsyslog",
+                                          "postfix",
+                                          "postgres",
+                                          "systemd-timesyncd",
+                                          "pmg-hourly",
+                                          "pmg-daily",
+                                          "pmgreport",
+                                          "pmgspamreport"
                                        ],
                                        "type" : "string"
                                     }
                                  }
                               },
-                              "protected" : 1,
-                              "proxyto" : "node",
+                              "permissions" : {
+                                 "check" : [
+                                    "admin",
+                                    "audit"
+                                 ]
+                              },
                               "returns" : {
-                                 "type" : "null"
+                                 "items" : {
+                                    "properties" : {
+                                       "subdir" : {
+                                          "type" : "string"
+                                       }
+                                    },
+                                    "type" : "object"
+                                 },
+                                 "links" : [
+                                    {
+                                       "href" : "{subdir}",
+                                       "rel" : "child"
+                                    }
+                                 ],
+                                 "type" : "array"
                               }
                            }
                         },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/network/{iface}",
-                        "text" : "{iface}"
+                        "leaf" : 0,
+                        "path" : "/nodes/{node}/services/{service}",
+                        "text" : "{service}"
                      }
                   ],
                   "info" : {
-                     "DELETE" : {
-                        "description" : "Revert network configuration changes.",
-                        "method" : "DELETE",
-                        "name" : "revert_network_changes",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "protected" : 1,
-                        "proxyto" : "node",
-                        "returns" : {
-                           "type" : "null"
-                        }
-                     },
                      "GET" : {
-                        "description" : "List available networks",
+                        "allowtoken" : 1,
+                        "description" : "Service list.",
                         "method" : "GET",
                         "name" : "index",
                         "parameters" : {
@@ -8933,23 +13002,6 @@ var pmgapi = [
                                  "format" : "pve-node",
                                  "type" : "string",
                                  "typetext" : "<string>"
-                              },
-                              "type" : {
-                                 "description" : "Only list specific interface types.",
-                                 "enum" : [
-                                    "bridge",
-                                    "bond",
-                                    "eth",
-                                    "alias",
-                                    "vlan",
-                                    "OVSBridge",
-                                    "OVSBond",
-                                    "OVSPort",
-                                    "OVSIntPort",
-                                    "any_bridge"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
                               }
                            }
                         },
@@ -8959,6 +13011,7 @@ var pmgapi = [
                               "audit"
                            ]
                         },
+                        "protected" : 1,
                         "proxyto" : "node",
                         "returns" : {
                            "items" : {
@@ -8967,197 +13020,124 @@ var pmgapi = [
                            },
                            "links" : [
                               {
-                                 "href" : "{iface}",
+                                 "href" : "{service}",
                                  "rel" : "child"
                               }
                            ],
                            "type" : "array"
                         }
-                     },
-                     "POST" : {
-                        "description" : "Create network device configuration",
-                        "method" : "POST",
-                        "name" : "create_network",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "address" : {
-                                 "description" : "IP address.",
-                                 "format" : "ipv4",
-                                 "optional" : 1,
-                                 "requires" : "netmask",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "address6" : {
-                                 "description" : "IP address.",
-                                 "format" : "ipv6",
-                                 "optional" : 1,
-                                 "requires" : "netmask6",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "autostart" : {
-                                 "description" : "Automatically start interface on boot.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "bond_mode" : {
-                                 "description" : "Bonding mode.",
-                                 "enum" : [
-                                    "balance-rr",
-                                    "active-backup",
-                                    "balance-xor",
-                                    "broadcast",
-                                    "802.3ad",
-                                    "balance-tlb",
-                                    "balance-alb",
-                                    "balance-slb",
-                                    "lacp-balance-slb",
-                                    "lacp-balance-tcp"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "bond_xmit_hash_policy" : {
-                                 "description" : "Selects the transmit hash policy to use for slave selection in balance-xor and 802.3ad modes.",
-                                 "enum" : [
-                                    "layer2",
-                                    "layer2+3",
-                                    "layer3+4"
-                                 ],
-                                 "optional" : 1,
-                                 "type" : "string"
-                              },
-                              "bridge_ports" : {
-                                 "description" : "Specify the iterfaces you want to add to your bridge.",
-                                 "format" : "pve-iface-list",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "bridge_vlan_aware" : {
-                                 "description" : "Enable bridge vlan support.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "comments" : {
-                                 "description" : "Comments",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "comments6" : {
-                                 "description" : "Comments",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "gateway" : {
-                                 "description" : "Default gateway address.",
-                                 "format" : "ipv4",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "gateway6" : {
-                                 "description" : "Default ipv6 gateway address.",
-                                 "format" : "ipv6",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "iface" : {
-                                 "description" : "Network interface name.",
-                                 "format" : "pve-iface",
-                                 "maxLength" : 20,
-                                 "minLength" : 2,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "netmask" : {
-                                 "description" : "Network mask.",
-                                 "format" : "ipv4mask",
-                                 "optional" : 1,
-                                 "requires" : "address",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "netmask6" : {
-                                 "description" : "Network mask.",
-                                 "maximum" : 128,
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "requires" : "address6",
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - 128)"
-                              },
+                     }
+                  },
+                  "leaf" : 0,
+                  "path" : "/nodes/{node}/services",
+                  "text" : "services"
+               },
+               {
+                  "info" : {
+                     "DELETE" : {
+                        "allowtoken" : 1,
+                        "description" : "Delete subscription key.",
+                        "method" : "DELETE",
+                        "name" : "delete",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
                               "node" : {
                                  "description" : "The cluster node name.",
                                  "format" : "pve-node",
                                  "type" : "string",
                                  "typetext" : "<string>"
-                              },
-                              "ovs_bonds" : {
-                                 "description" : "Specify the interfaces used by the bonding device.",
-                                 "format" : "pve-iface-list",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "ovs_bridge" : {
-                                 "description" : "The OVS bridge associated with a OVS port. This is required when you create an OVS port.",
-                                 "format" : "pve-iface",
-                                 "optional" : 1,
+                              }
+                           }
+                        },
+                        "protected" : 1,
+                        "proxyto" : "node",
+                        "returns" : {
+                           "type" : "null"
+                        }
+                     },
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Read subscription info.",
+                        "method" : "GET",
+                        "name" : "get",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "node" : {
+                                 "description" : "The cluster node name.",
+                                 "format" : "pve-node",
                                  "type" : "string",
                                  "typetext" : "<string>"
-                              },
-                              "ovs_options" : {
-                                 "description" : "OVS interface options.",
-                                 "maxLength" : 1024,
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "admin",
+                              "qmanager",
+                              "audit",
+                              "quser"
+                           ]
+                        },
+                        "proxyto" : "node",
+                        "returns" : {
+                           "type" : "object"
+                        }
+                     },
+                     "POST" : {
+                        "allowtoken" : 1,
+                        "description" : "Update subscription info.",
+                        "method" : "POST",
+                        "name" : "update",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "force" : {
+                                 "default" : 0,
+                                 "description" : "Always connect to server, even if we have up to date info inside local cache.",
                                  "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
                               },
-                              "ovs_ports" : {
-                                 "description" : "Specify the iterfaces you want to add to your bridge.",
-                                 "format" : "pve-iface-list",
-                                 "optional" : 1,
+                              "node" : {
+                                 "description" : "The cluster node name.",
+                                 "format" : "pve-node",
                                  "type" : "string",
                                  "typetext" : "<string>"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "admin"
+                           ]
+                        },
+                        "protected" : 1,
+                        "proxyto" : "node",
+                        "returns" : {
+                           "type" : "null"
+                        }
+                     },
+                     "PUT" : {
+                        "allowtoken" : 1,
+                        "description" : "Set subscription key.",
+                        "method" : "PUT",
+                        "name" : "set",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "key" : {
+                                 "description" : "Proxmox Mail Gateway subscription key",
+                                 "maxLength" : 32,
+                                 "pattern" : "pmg([cbsp])-[0-9a-f]{10}",
+                                 "type" : "string"
                               },
-                              "ovs_tag" : {
-                                 "description" : "Specify a VLan tag (used by OVSPort, OVSIntPort, OVSBond)",
-                                 "maximum" : 4094,
-                                 "minimum" : 1,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1 - 4094)"
-                              },
-                              "slaves" : {
-                                 "description" : "Specify the interfaces used by the bonding device.",
-                                 "format" : "pve-iface-list",
-                                 "optional" : 1,
+                              "node" : {
+                                 "description" : "The cluster node name.",
+                                 "format" : "pve-node",
                                  "type" : "string",
                                  "typetext" : "<string>"
-                              },
-                              "type" : {
-                                 "description" : "Network interface type",
-                                 "enum" : [
-                                    "bridge",
-                                    "bond",
-                                    "eth",
-                                    "alias",
-                                    "vlan",
-                                    "OVSBridge",
-                                    "OVSBond",
-                                    "OVSPort",
-                                    "OVSIntPort",
-                                    "unknown"
-                                 ],
-                                 "type" : "string"
                               }
                            }
                         },
@@ -9168,143 +13148,116 @@ var pmgapi = [
                         }
                      }
                   },
-                  "leaf" : 0,
-                  "path" : "/nodes/{node}/network",
-                  "text" : "network"
+                  "leaf" : 1,
+                  "path" : "/nodes/{node}/subscription",
+                  "text" : "subscription"
                },
                {
                   "children" : [
                      {
-                        "children" : [
-                           {
-                              "info" : {
-                                 "GET" : {
-                                    "description" : "Read task log.",
-                                    "method" : "GET",
-                                    "name" : "read_task_log",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "limit" : {
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
-                                          },
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "start" : {
-                                             "minimum" : 0,
-                                             "optional" : 1,
-                                             "type" : "integer",
-                                             "typetext" : "<integer> (0 - N)"
-                                          },
-                                          "upid" : {
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "admin",
-                                          "audit"
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "items" : {
-                                          "properties" : {
-                                             "n" : {
-                                                "description" : "Line number",
-                                                "type" : "integer"
-                                             },
-                                             "t" : {
-                                                "description" : "Line text",
-                                                "type" : "string"
-                                             }
-                                          },
-                                          "type" : "object"
-                                       },
-                                       "type" : "array"
+                        "info" : {
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "List available updates.",
+                              "method" : "GET",
+                              "name" : "list_updates",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
                                     }
                                  }
                               },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/tasks/{upid}/log",
-                              "text" : "log"
+                              "permissions" : {
+                                 "check" : [
+                                    "admin",
+                                    "audit"
+                                 ]
+                              },
+                              "protected" : 1,
+                              "proxyto" : "node",
+                              "returns" : {
+                                 "items" : {
+                                    "properties" : {},
+                                    "type" : "object"
+                                 },
+                                 "type" : "array"
+                              }
                            },
-                           {
-                              "info" : {
-                                 "GET" : {
-                                    "description" : "Read task status.",
-                                    "method" : "GET",
-                                    "name" : "read_task_status",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "upid" : {
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          }
-                                       }
+                           "POST" : {
+                              "allowtoken" : 1,
+                              "description" : "This is used to resynchronize the package index files from their sources (apt-get update).",
+                              "method" : "POST",
+                              "name" : "update_database",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
                                     },
-                                    "permissions" : {
-                                       "check" : [
-                                          "admin",
-                                          "audit"
-                                       ]
+                                    "notify" : {
+                                       "default" : 0,
+                                       "description" : "Send notification mail about new packages (to email address specified for user 'root@pam').",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
                                     },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "properties" : {
-                                          "pid" : {
-                                             "type" : "integer"
-                                          },
-                                          "status" : {
-                                             "enum" : [
-                                                "running",
-                                                "stopped"
-                                             ],
-                                             "type" : "string"
-                                          }
-                                       },
-                                       "type" : "object"
+                                    "quiet" : {
+                                       "default" : 0,
+                                       "description" : "Only produces output suitable for logging, omitting progress indicators.",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
                                     }
                                  }
                               },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/tasks/{upid}/status",
-                              "text" : "status"
+                              "permissions" : {
+                                 "check" : [
+                                    "admin"
+                                 ]
+                              },
+                              "protected" : 1,
+                              "proxyto" : "node",
+                              "returns" : {
+                                 "type" : "string"
+                              }
                            }
-                        ],
+                        },
+                        "leaf" : 1,
+                        "path" : "/nodes/{node}/apt/update",
+                        "text" : "update"
+                     },
+                     {
                         "info" : {
-                           "DELETE" : {
-                              "description" : "Stop a task.",
-                              "method" : "DELETE",
-                              "name" : "stop_task",
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "Get package changelogs.",
+                              "method" : "GET",
+                              "name" : "changelog",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
+                                    "name" : {
+                                       "description" : "Package name.",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    },
                                     "node" : {
                                        "description" : "The cluster node name.",
                                        "format" : "pve-node",
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
-                                    "upid" : {
+                                    "version" : {
+                                       "description" : "Package version.",
+                                       "optional" : 1,
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     }
@@ -9312,19 +13265,27 @@ var pmgapi = [
                               },
                               "permissions" : {
                                  "check" : [
-                                    "admin"
+                                    "admin",
+                                    "audit"
                                  ]
                               },
-                              "protected" : 1,
                               "proxyto" : "node",
                               "returns" : {
-                                 "type" : "null"
+                                 "type" : "string"
                               }
-                           },
+                           }
+                        },
+                        "leaf" : 1,
+                        "path" : "/nodes/{node}/apt/changelog",
+                        "text" : "changelog"
+                     },
+                     {
+                        "info" : {
                            "GET" : {
-                              "description" : "",
+                              "allowtoken" : 1,
+                              "description" : "Get package information for important Proxmox packages.",
                               "method" : "GET",
-                              "name" : "upid_index",
+                              "name" : "versions",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
@@ -9333,10 +13294,6 @@ var pmgapi = [
                                        "format" : "pve-node",
                                        "type" : "string",
                                        "typetext" : "<string>"
-                                    },
-                                    "upid" : {
-                                       "type" : "string",
-                                       "typetext" : "<string>"
                                     }
                                  }
                               },
@@ -9346,44 +13303,222 @@ var pmgapi = [
                                     "audit"
                                  ]
                               },
+                              "proxyto" : "node",
                               "returns" : {
                                  "items" : {
                                     "properties" : {},
                                     "type" : "object"
                                  },
-                                 "links" : [
-                                    {
-                                       "href" : "{name}",
-                                       "rel" : "child"
+                                 "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>"
+                                    },
+                                    "starttime" : {
+                                       "description" : "Only consider entries newer than 'starttime' (unix epoch). Default is 'now - 1day'.",
+                                       "minimum" : 0,
+                                       "optional" : 1,
+                                       "type" : "integer",
+                                       "typetext" : "<integer> (0 - N)"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "check" : [
+                                    "admin",
+                                    "audit"
+                                 ]
+                              },
+                              "protected" : 1,
+                              "proxyto" : "node",
+                              "returns" : {
+                                 "properties" : {
+                                    "client" : {
+                                       "description" : "Client address",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "dstatus" : {
+                                       "description" : "Delivery status.",
+                                       "maxLength" : 1,
+                                       "minLength" : 1,
+                                       "type" : "string"
+                                    },
+                                    "from" : {
+                                       "description" : "Sender email address.",
+                                       "type" : "string"
+                                    },
+                                    "id" : {
+                                       "description" : "Unique ID.",
+                                       "type" : "string"
+                                    },
+                                    "logs" : {
+                                       "items" : {
+                                          "type" : "string"
+                                       },
+                                       "type" : "array"
+                                    },
+                                    "msgid" : {
+                                       "description" : "SMTP message ID.",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "qid" : {
+                                       "description" : "Postfix qmgr ID.",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "relay" : {
+                                       "description" : "ID of relayed mail.",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "rstatus" : {
+                                       "description" : "Delivery status of relayed mail.",
+                                       "maxLength" : 1,
+                                       "minLength" : 1,
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "size" : {
+                                       "description" : "The size of the raw email.",
+                                       "optional" : 1,
+                                       "type" : "number"
+                                    },
+                                    "time" : {
+                                       "description" : "Delivery timestamp.",
+                                       "type" : "integer"
+                                    },
+                                    "to" : {
+                                       "description" : "Receiver email address.",
+                                       "type" : "string"
                                     }
-                                 ],
-                                 "type" : "array"
+                                 },
+                                 "type" : "object"
                               }
                            }
                         },
-                        "leaf" : 0,
-                        "path" : "/nodes/{node}/tasks/{upid}",
-                        "text" : "{upid}"
+                        "leaf" : 1,
+                        "path" : "/nodes/{node}/tracker/{id}",
+                        "text" : "{id}"
                      }
                   ],
                   "info" : {
                      "GET" : {
-                        "description" : "Read task list for one node (finished tasks).",
+                        "allowtoken" : 1,
+                        "description" : "Read mail list.",
                         "method" : "GET",
-                        "name" : "node_tasks",
+                        "name" : "list_mails",
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
-                              "errors" : {
+                              "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)"
+                              },
+                              "from" : {
+                                 "description" : "Sender email address filter.",
+                                 "maxLength" : 256,
+                                 "minLength" : 1,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "greylist" : {
+                                 "default" : 0,
+                                 "description" : "Include Greylisted entries.",
                                  "optional" : 1,
                                  "type" : "boolean",
                                  "typetext" : "<boolean>"
                               },
-                              "limit" : {
-                                 "minimum" : 0,
+                              "ndr" : {
+                                 "default" : 0,
+                                 "description" : "Include NDRs (non delivery reports).",
                                  "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
                               },
                               "node" : {
                                  "description" : "The cluster node name.",
@@ -9391,13 +13526,25 @@ var pmgapi = [
                                  "type" : "string",
                                  "typetext" : "<string>"
                               },
-                              "start" : {
+                              "starttime" : {
+                                 "description" : "Only consider entries newer than 'starttime' (unix epoch). Default is 'now - 1day'.",
                                  "minimum" : 0,
                                  "optional" : 1,
                                  "type" : "integer",
                                  "typetext" : "<integer> (0 - N)"
                               },
-                              "userfilter" : {
+                              "target" : {
+                                 "description" : "Receiver email address filter.",
+                                 "maxLength" : 256,
+                                 "minLength" : 1,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "xfilter" : {
+                                 "description" : "Only include mails containing this filter string.",
+                                 "maxLength" : 256,
+                                 "minLength" : 1,
                                  "optional" : 1,
                                  "type" : "string",
                                  "typetext" : "<string>"
@@ -9410,397 +13557,222 @@ var pmgapi = [
                               "audit"
                            ]
                         },
+                        "protected" : 1,
                         "proxyto" : "node",
                         "returns" : {
                            "items" : {
                               "properties" : {
-                                 "upid" : {
+                                 "client" : {
+                                    "description" : "Client address",
+                                    "optional" : 1,
+                                    "type" : "string"
+                                 },
+                                 "dstatus" : {
+                                    "description" : "Delivery status.",
+                                    "maxLength" : 1,
+                                    "minLength" : 1,
+                                    "type" : "string"
+                                 },
+                                 "from" : {
+                                    "description" : "Sender email address.",
+                                    "type" : "string"
+                                 },
+                                 "id" : {
+                                    "description" : "Unique ID.",
+                                    "type" : "string"
+                                 },
+                                 "msgid" : {
+                                    "description" : "SMTP message ID.",
+                                    "optional" : 1,
+                                    "type" : "string"
+                                 },
+                                 "qid" : {
+                                    "description" : "Postfix qmgr ID.",
+                                    "optional" : 1,
+                                    "type" : "string"
+                                 },
+                                 "relay" : {
+                                    "description" : "ID of relayed mail.",
+                                    "optional" : 1,
+                                    "type" : "string"
+                                 },
+                                 "rstatus" : {
+                                    "description" : "Delivery status of relayed mail.",
+                                    "maxLength" : 1,
+                                    "minLength" : 1,
+                                    "optional" : 1,
+                                    "type" : "string"
+                                 },
+                                 "size" : {
+                                    "description" : "The size of the raw email.",
+                                    "optional" : 1,
+                                    "type" : "number"
+                                 },
+                                 "time" : {
+                                    "description" : "Delivery timestamp.",
+                                    "type" : "integer"
+                                 },
+                                 "to" : {
+                                    "description" : "Receiver email address.",
                                     "type" : "string"
                                  }
                               },
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{upid}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/nodes/{node}/tasks",
-                  "text" : "tasks"
-               },
-               {
-                  "children" : [
-                     {
-                        "children" : [
-                           {
-                              "info" : {
-                                 "GET" : {
-                                    "description" : "Read service properties",
-                                    "method" : "GET",
-                                    "name" : "service_state",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "service" : {
-                                             "description" : "Service ID",
-                                             "enum" : [
-                                                "clamav-daemon",
-                                                "clamav-freshclam",
-                                                "fetchmail",
-                                                "pmgproxy",
-                                                "pmgdaemon",
-                                                "pmgpolicy",
-                                                "pmg-smtp-filter",
-                                                "pmgtunnel",
-                                                "pmgmirror",
-                                                "ssh",
-                                                "rsyslog",
-                                                "postfix",
-                                                "postgres",
-                                                "systemd-timesyncd",
-                                                "pmg-hourly",
-                                                "pmg-daily",
-                                                "pmgreport",
-                                                "pmgspamreport"
-                                             ],
-                                             "type" : "string"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "admin",
-                                          "audit"
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "properties" : {},
-                                       "type" : "object"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/services/{service}/state",
-                              "text" : "state"
-                           },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "description" : "Start service.",
-                                    "method" : "POST",
-                                    "name" : "service_start",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "service" : {
-                                             "description" : "Service ID",
-                                             "enum" : [
-                                                "clamav-daemon",
-                                                "clamav-freshclam",
-                                                "fetchmail",
-                                                "pmgproxy",
-                                                "pmgdaemon",
-                                                "pmgpolicy",
-                                                "pmg-smtp-filter",
-                                                "pmgtunnel",
-                                                "pmgmirror",
-                                                "ssh",
-                                                "rsyslog",
-                                                "postfix",
-                                                "postgres",
-                                                "systemd-timesyncd",
-                                                "pmg-hourly",
-                                                "pmg-daily",
-                                                "pmgreport",
-                                                "pmgspamreport"
-                                             ],
-                                             "type" : "string"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "admin"
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/services/{service}/start",
-                              "text" : "start"
+                              "type" : "object"
                            },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "description" : "Stop service.",
-                                    "method" : "POST",
-                                    "name" : "service_stop",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "service" : {
-                                             "description" : "Service ID",
-                                             "enum" : [
-                                                "clamav-daemon",
-                                                "clamav-freshclam",
-                                                "fetchmail",
-                                                "pmgproxy",
-                                                "pmgdaemon",
-                                                "pmgpolicy",
-                                                "pmg-smtp-filter",
-                                                "pmgtunnel",
-                                                "pmgmirror",
-                                                "ssh",
-                                                "rsyslog",
-                                                "postfix",
-                                                "postgres",
-                                                "systemd-timesyncd",
-                                                "pmg-hourly",
-                                                "pmg-daily",
-                                                "pmgreport",
-                                                "pmgspamreport"
-                                             ],
-                                             "type" : "string"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "admin"
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
+                           "links" : [
+                              {
+                                 "href" : "{id}",
+                                 "rel" : "child"
+                              }
+                           ],
+                           "type" : "array"
+                        }
+                     }
+                  },
+                  "leaf" : 0,
+                  "path" : "/nodes/{node}/tracker",
+                  "text" : "tracker"
+               },
+               {
+                  "children" : [
+                     {
+                        "info" : {
+                           "DELETE" : {
+                              "allowtoken" : 1,
+                              "description" : "Delete a backup file.",
+                              "method" : "DELETE",
+                              "name" : "delete",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "filename" : {
+                                       "description" : "The backup file name.",
+                                       "maxLength" : 256,
+                                       "minLength" : 4,
+                                       "pattern" : "pmg-backup_[0-9A-Za-z_-]+\\.tgz",
                                        "type" : "string"
-                                    }
-                                 }
-                              },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/services/{service}/stop",
-                              "text" : "stop"
-                           },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "description" : "Restart service.",
-                                    "method" : "POST",
-                                    "name" : "service_restart",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "service" : {
-                                             "description" : "Service ID",
-                                             "enum" : [
-                                                "clamav-daemon",
-                                                "clamav-freshclam",
-                                                "fetchmail",
-                                                "pmgproxy",
-                                                "pmgdaemon",
-                                                "pmgpolicy",
-                                                "pmg-smtp-filter",
-                                                "pmgtunnel",
-                                                "pmgmirror",
-                                                "ssh",
-                                                "rsyslog",
-                                                "postfix",
-                                                "postgres",
-                                                "systemd-timesyncd",
-                                                "pmg-hourly",
-                                                "pmg-daily",
-                                                "pmgreport",
-                                                "pmgspamreport"
-                                             ],
-                                             "type" : "string"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "admin"
-                                       ]
                                     },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
-                                       "type" : "string"
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
                                     }
                                  }
                               },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/services/{service}/restart",
-                              "text" : "restart"
+                              "permissions" : {
+                                 "check" : [
+                                    "admin"
+                                 ]
+                              },
+                              "protected" : 1,
+                              "proxyto" : "node",
+                              "returns" : {
+                                 "type" : "null"
+                              }
                            },
-                           {
-                              "info" : {
-                                 "POST" : {
-                                    "description" : "Reload service.",
-                                    "method" : "POST",
-                                    "name" : "service_reload",
-                                    "parameters" : {
-                                       "additionalProperties" : 0,
-                                       "properties" : {
-                                          "node" : {
-                                             "description" : "The cluster node name.",
-                                             "format" : "pve-node",
-                                             "type" : "string",
-                                             "typetext" : "<string>"
-                                          },
-                                          "service" : {
-                                             "description" : "Service ID",
-                                             "enum" : [
-                                                "clamav-daemon",
-                                                "clamav-freshclam",
-                                                "fetchmail",
-                                                "pmgproxy",
-                                                "pmgdaemon",
-                                                "pmgpolicy",
-                                                "pmg-smtp-filter",
-                                                "pmgtunnel",
-                                                "pmgmirror",
-                                                "ssh",
-                                                "rsyslog",
-                                                "postfix",
-                                                "postgres",
-                                                "systemd-timesyncd",
-                                                "pmg-hourly",
-                                                "pmg-daily",
-                                                "pmgreport",
-                                                "pmgspamreport"
-                                             ],
-                                             "type" : "string"
-                                          }
-                                       }
-                                    },
-                                    "permissions" : {
-                                       "check" : [
-                                          "admin"
-                                       ]
-                                    },
-                                    "protected" : 1,
-                                    "proxyto" : "node",
-                                    "returns" : {
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "Download a backup file.",
+                              "download" : 1,
+                              "method" : "GET",
+                              "name" : "download",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "filename" : {
+                                       "description" : "The backup file name.",
+                                       "maxLength" : 256,
+                                       "minLength" : 4,
+                                       "pattern" : "pmg-backup_[0-9A-Za-z_-]+\\.tgz",
                                        "type" : "string"
+                                    },
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
                                     }
                                  }
                               },
-                              "leaf" : 1,
-                              "path" : "/nodes/{node}/services/{service}/reload",
-                              "text" : "reload"
-                           }
-                        ],
-                        "info" : {
-                           "GET" : {
-                              "description" : "Directory index",
-                              "method" : "GET",
-                              "name" : "srvcmdidx",
+                              "permissions" : {
+                                 "check" : [
+                                    "admin"
+                                 ]
+                              },
+                              "protected" : 1,
+                              "proxyto" : "node",
+                              "returns" : {
+                                 "type" : "string"
+                              }
+                           },
+                           "POST" : {
+                              "allowtoken" : 1,
+                              "description" : "Restore the system configuration.",
+                              "method" : "POST",
+                              "name" : "restore",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
+                                    "config" : {
+                                       "default" : 0,
+                                       "description" : "Restore system configuration.",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    },
+                                    "database" : {
+                                       "default" : 1,
+                                       "description" : "Restore the rule database. This is the default.",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
+                                    },
+                                    "filename" : {
+                                       "description" : "The backup file name.",
+                                       "maxLength" : 256,
+                                       "minLength" : 4,
+                                       "pattern" : "pmg-backup_[0-9A-Za-z_-]+\\.tgz",
+                                       "type" : "string"
+                                    },
                                     "node" : {
                                        "description" : "The cluster node name.",
                                        "format" : "pve-node",
                                        "type" : "string",
                                        "typetext" : "<string>"
                                     },
-                                    "service" : {
-                                       "description" : "Service ID",
-                                       "enum" : [
-                                          "clamav-daemon",
-                                          "clamav-freshclam",
-                                          "fetchmail",
-                                          "pmgproxy",
-                                          "pmgdaemon",
-                                          "pmgpolicy",
-                                          "pmg-smtp-filter",
-                                          "pmgtunnel",
-                                          "pmgmirror",
-                                          "ssh",
-                                          "rsyslog",
-                                          "postfix",
-                                          "postgres",
-                                          "systemd-timesyncd",
-                                          "pmg-hourly",
-                                          "pmg-daily",
-                                          "pmgreport",
-                                          "pmgspamreport"
-                                       ],
-                                       "type" : "string"
+                                    "statistic" : {
+                                       "default" : 0,
+                                       "description" : "Restore statistic databases. Only considered when you restore the 'database'.",
+                                       "optional" : 1,
+                                       "type" : "boolean",
+                                       "typetext" : "<boolean>"
                                     }
                                  }
                               },
                               "permissions" : {
                                  "check" : [
-                                    "admin",
-                                    "audit"
+                                    "admin"
                                  ]
                               },
+                              "protected" : 1,
+                              "proxyto" : "node",
                               "returns" : {
-                                 "items" : {
-                                    "properties" : {
-                                       "subdir" : {
-                                          "type" : "string"
-                                       }
-                                    },
-                                    "type" : "object"
-                                 },
-                                 "links" : [
-                                    {
-                                       "href" : "{subdir}",
-                                       "rel" : "child"
-                                    }
-                                 ],
-                                 "type" : "array"
+                                 "type" : "string"
                               }
                            }
                         },
-                        "leaf" : 0,
-                        "path" : "/nodes/{node}/services/{service}",
-                        "text" : "{service}"
+                        "leaf" : 1,
+                        "path" : "/nodes/{node}/backup/{filename}",
+                        "text" : "{filename}"
                      }
                   ],
                   "info" : {
                      "GET" : {
-                        "description" : "Service list.",
+                        "allowtoken" : 1,
+                        "description" : "List all stored backups (files named proxmox-backup_{DATE}.tgz).",
                         "method" : "GET",
-                        "name" : "index",
+                        "name" : "list",
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
@@ -9822,72 +13794,65 @@ var pmgapi = [
                         "proxyto" : "node",
                         "returns" : {
                            "items" : {
-                              "properties" : {},
+                              "properties" : {
+                                 "filename" : {
+                                    "description" : "The backup file name.",
+                                    "maxLength" : 256,
+                                    "minLength" : 4,
+                                    "pattern" : "pmg-backup_[0-9A-Za-z_-]+\\.tgz",
+                                    "type" : "string"
+                                 },
+                                 "size" : {
+                                    "description" : "Size of backup file in bytes.",
+                                    "type" : "integer"
+                                 },
+                                 "timestamp" : {
+                                    "description" : "Backup timestamp (Unix epoch).",
+                                    "type" : "integer"
+                                 }
+                              },
                               "type" : "object"
                            },
                            "links" : [
                               {
-                                 "href" : "{service}",
+                                 "href" : "{filename}",
                                  "rel" : "child"
                               }
                            ],
                            "type" : "array"
                         }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/nodes/{node}/services",
-                  "text" : "services"
-               },
-               {
-                  "info" : {
-                     "GET" : {
-                        "description" : "Read subscription info.",
-                        "method" : "GET",
-                        "name" : "get",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "admin",
-                              "qmanager",
-                              "audit",
-                              "quser"
-                           ]
-                        },
-                        "proxyto" : "node",
-                        "returns" : {
-                           "type" : "object"
-                        }
                      },
                      "POST" : {
-                        "description" : "Update subscription info.",
+                        "allowtoken" : 1,
+                        "description" : "Backup the system configuration.",
                         "method" : "POST",
-                        "name" : "update",
+                        "name" : "backup",
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
-                              "force" : {
-                                 "default" : 0,
-                                 "description" : "Always connect to server, even if we have up to date info inside local cache.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
                               "node" : {
                                  "description" : "The cluster node name.",
                                  "format" : "pve-node",
                                  "type" : "string",
                                  "typetext" : "<string>"
+                              },
+                              "notify" : {
+                                 "default" : "never",
+                                 "description" : "Specify when to notify via e-mail",
+                                 "enum" : [
+                                    "always",
+                                    "error",
+                                    "never"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "statistic" : {
+                                 "default" : 1,
+                                 "description" : "Backup statistic databases.",
+                                 "optional" : 1,
+                                 "type" : "boolean",
+                                 "typetext" : "<boolean>"
                               }
                            }
                         },
@@ -9899,171 +13864,484 @@ var pmgapi = [
                         "protected" : 1,
                         "proxyto" : "node",
                         "returns" : {
-                           "type" : "null"
-                        }
-                     },
-                     "PUT" : {
-                        "description" : "Set subscription key.",
-                        "method" : "PUT",
-                        "name" : "set",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "key" : {
-                                 "description" : "Proxmox Mail Gateway subscription key",
-                                 "maxLength" : 32,
-                                 "pattern" : "pmg([cbsp])-[0-9a-f]{10}",
-                                 "type" : "string"
-                              },
-                              "node" : {
-                                 "description" : "The cluster node name.",
-                                 "format" : "pve-node",
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "protected" : 1,
-                        "proxyto" : "node",
-                        "returns" : {
-                           "type" : "null"
+                           "type" : "string"
                         }
                      }
                   },
-                  "leaf" : 1,
-                  "path" : "/nodes/{node}/subscription",
-                  "text" : "subscription"
+                  "leaf" : 0,
+                  "path" : "/nodes/{node}/backup",
+                  "text" : "backup"
                },
                {
                   "children" : [
                      {
-                        "info" : {
-                           "GET" : {
-                              "description" : "List available updates.",
-                              "method" : "GET",
-                              "name" : "list_updates",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                        "children" : [
+                           {
+                              "children" : [
+                                 {
+                                    "children" : [
+                                       {
+                                          "info" : {
+                                             "DELETE" : {
+                                                "allowtoken" : 1,
+                                                "description" : "Forget a snapshot",
+                                                "method" : "DELETE",
+                                                "name" : "forget_snapshot",
+                                                "parameters" : {
+                                                   "additionalProperties" : 0,
+                                                   "properties" : {
+                                                      "backup-id" : {
+                                                         "description" : "ID (hostname) of backup snapshot",
+                                                         "type" : "string",
+                                                         "typetext" : "<string>"
+                                                      },
+                                                      "backup-time" : {
+                                                         "description" : "Backup time in RFC 3339 format",
+                                                         "type" : "string",
+                                                         "typetext" : "<string>"
+                                                      },
+                                                      "node" : {
+                                                         "description" : "The cluster node name.",
+                                                         "format" : "pve-node",
+                                                         "type" : "string",
+                                                         "typetext" : "<string>"
+                                                      },
+                                                      "remote" : {
+                                                         "description" : "Proxmox Backup Server ID.",
+                                                         "format" : "pve-configid",
+                                                         "type" : "string",
+                                                         "typetext" : "<string>"
+                                                      }
+                                                   }
+                                                },
+                                                "permissions" : {
+                                                   "check" : [
+                                                      "admin",
+                                                      "audit"
+                                                   ]
+                                                },
+                                                "protected" : 1,
+                                                "proxyto" : "node",
+                                                "returns" : {
+                                                   "type" : "null"
+                                                }
+                                             },
+                                             "POST" : {
+                                                "allowtoken" : 1,
+                                                "description" : "Restore the system configuration.",
+                                                "method" : "POST",
+                                                "name" : "restore",
+                                                "parameters" : {
+                                                   "additionalProperties" : 0,
+                                                   "properties" : {
+                                                      "backup-id" : {
+                                                         "description" : "backup-id (hostname) of backup snapshot",
+                                                         "type" : "string",
+                                                         "typetext" : "<string>"
+                                                      },
+                                                      "backup-time" : {
+                                                         "description" : "backup-time to restore",
+                                                         "type" : "string",
+                                                         "typetext" : "<string>"
+                                                      },
+                                                      "config" : {
+                                                         "default" : 0,
+                                                         "description" : "Restore system configuration.",
+                                                         "optional" : 1,
+                                                         "type" : "boolean",
+                                                         "typetext" : "<boolean>"
+                                                      },
+                                                      "database" : {
+                                                         "default" : 1,
+                                                         "description" : "Restore the rule database. This is the default.",
+                                                         "optional" : 1,
+                                                         "type" : "boolean",
+                                                         "typetext" : "<boolean>"
+                                                      },
+                                                      "node" : {
+                                                         "description" : "The cluster node name.",
+                                                         "format" : "pve-node",
+                                                         "type" : "string",
+                                                         "typetext" : "<string>"
+                                                      },
+                                                      "remote" : {
+                                                         "description" : "Proxmox Backup Server ID.",
+                                                         "format" : "pve-configid",
+                                                         "type" : "string",
+                                                         "typetext" : "<string>"
+                                                      },
+                                                      "statistic" : {
+                                                         "default" : 0,
+                                                         "description" : "Restore statistic databases. Only considered when you restore the 'database'.",
+                                                         "optional" : 1,
+                                                         "type" : "boolean",
+                                                         "typetext" : "<boolean>"
+                                                      }
+                                                   }
+                                                },
+                                                "permissions" : {
+                                                   "check" : [
+                                                      "admin"
+                                                   ]
+                                                },
+                                                "protected" : 1,
+                                                "proxyto" : "node",
+                                                "returns" : {
+                                                   "type" : "string"
+                                                }
+                                             }
+                                          },
+                                          "leaf" : 1,
+                                          "path" : "/nodes/{node}/pbs/{remote}/snapshot/{backup-id}/{backup-time}",
+                                          "text" : "{backup-time}"
+                                       }
+                                    ],
+                                    "info" : {
+                                       "GET" : {
+                                          "allowtoken" : 1,
+                                          "description" : "Get snapshots from a specific ID stored on remote.",
+                                          "method" : "GET",
+                                          "name" : "get_group_snapshots",
+                                          "parameters" : {
+                                             "additionalProperties" : 0,
+                                             "properties" : {
+                                                "backup-id" : {
+                                                   "description" : "ID (hostname) of backup snapshot",
+                                                   "type" : "string",
+                                                   "typetext" : "<string>"
+                                                },
+                                                "node" : {
+                                                   "description" : "The cluster node name.",
+                                                   "format" : "pve-node",
+                                                   "type" : "string",
+                                                   "typetext" : "<string>"
+                                                },
+                                                "remote" : {
+                                                   "description" : "Proxmox Backup Server ID.",
+                                                   "format" : "pve-configid",
+                                                   "type" : "string",
+                                                   "typetext" : "<string>"
+                                                }
+                                             }
+                                          },
+                                          "permissions" : {
+                                             "check" : [
+                                                "admin",
+                                                "audit"
+                                             ]
+                                          },
+                                          "protected" : 1,
+                                          "proxyto" : "node",
+                                          "returns" : {
+                                             "items" : {
+                                                "properties" : {
+                                                   "backup-id" : {
+                                                      "type" : "string"
+                                                   },
+                                                   "backup-time" : {
+                                                      "type" : "string"
+                                                   },
+                                                   "ctime" : {
+                                                      "type" : "string"
+                                                   },
+                                                   "size" : {
+                                                      "type" : "integer"
+                                                   }
+                                                },
+                                                "type" : "object"
+                                             },
+                                             "links" : [
+                                                {
+                                                   "href" : "{backup-time}",
+                                                   "rel" : "child"
+                                                }
+                                             ],
+                                             "type" : "array"
+                                          }
+                                       }
+                                    },
+                                    "leaf" : 0,
+                                    "path" : "/nodes/{node}/pbs/{remote}/snapshot/{backup-id}",
+                                    "text" : "{backup-id}"
+                                 }
+                              ],
+                              "info" : {
+                                 "GET" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Get snapshots stored on remote.",
+                                    "method" : "GET",
+                                    "name" : "get_snapshots",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "remote" : {
+                                             "description" : "Proxmox Backup Server ID.",
+                                             "format" : "pve-configid",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin",
+                                          "audit"
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "items" : {
+                                          "properties" : {
+                                             "backup-id" : {
+                                                "type" : "string"
+                                             },
+                                             "backup-time" : {
+                                                "type" : "string"
+                                             },
+                                             "ctime" : {
+                                                "type" : "string"
+                                             },
+                                             "size" : {
+                                                "type" : "integer"
+                                             }
+                                          },
+                                          "type" : "object"
+                                       },
+                                       "links" : [
+                                          {
+                                             "href" : "{backup-id}",
+                                             "rel" : "child"
+                                          }
+                                       ],
+                                       "type" : "array"
                                     }
-                                 }
-                              },
-                              "permissions" : {
-                                 "check" : [
-                                    "admin",
-                                    "audit"
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "items" : {
-                                    "properties" : {},
-                                    "type" : "object"
                                  },
-                                 "type" : "array"
-                              }
-                           },
-                           "POST" : {
-                              "description" : "This is used to resynchronize the package index files from their sources (apt-get update).",
-                              "method" : "POST",
-                              "name" : "update_database",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                                 "POST" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Create a new backup and prune the backup group afterwards, if configured.",
+                                    "method" : "POST",
+                                    "name" : "run_backup",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "notify" : {
+                                             "default" : "never",
+                                             "description" : "Specify when to notify via e-mail",
+                                             "enum" : [
+                                                "always",
+                                                "error",
+                                                "never"
+                                             ],
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "remote" : {
+                                             "description" : "Proxmox Backup Server ID.",
+                                             "format" : "pve-configid",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "statistic" : {
+                                             "default" : 1,
+                                             "description" : "Backup statistic databases.",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          }
+                                       }
                                     },
-                                    "notify" : {
-                                       "default" : 0,
-                                       "description" : "Send notification mail about new packages (to email address specified for user 'root@pam').",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin",
+                                          "audit"
+                                       ]
                                     },
-                                    "quiet" : {
-                                       "default" : 0,
-                                       "description" : "Only produces output suitable for logging, omitting progress indicators.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "type" : "string"
                                     }
                                  }
                               },
-                              "permissions" : {
-                                 "check" : [
-                                    "admin"
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "string"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/apt/update",
-                        "text" : "update"
-                     },
-                     {
-                        "info" : {
-                           "GET" : {
-                              "description" : "Get package changelogs.",
-                              "method" : "GET",
-                              "name" : "changelog",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "name" : {
-                                       "description" : "Package name.",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                              "leaf" : 0,
+                              "path" : "/nodes/{node}/pbs/{remote}/snapshot",
+                              "text" : "snapshot"
+                           },
+                           {
+                              "info" : {
+                                 "DELETE" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Delete backup schedule",
+                                    "method" : "DELETE",
+                                    "name" : "delete_timer",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "remote" : {
+                                             "description" : "Proxmox Backup Server ID.",
+                                             "format" : "pve-configid",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          }
+                                       }
                                     },
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin",
+                                          "audit"
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "type" : "null"
+                                    }
+                                 },
+                                 "GET" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Get timer specification",
+                                    "method" : "GET",
+                                    "name" : "list_timer",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "remote" : {
+                                             "description" : "Proxmox Backup Server ID.",
+                                             "format" : "pve-configid",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin",
+                                          "audit"
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "properties" : {
+                                          "delay" : {
+                                             "default" : "5min",
+                                             "description" : "Randomized delay to add to the starttime (RandomizedDelaySec setting of the systemd.timer)",
+                                             "optional" : 1,
+                                             "pattern" : "[0-9a-zA-Z. ]+",
+                                             "type" : "string"
+                                          },
+                                          "next-run" : {
+                                             "description" : "The date time of the next run, in server locale.",
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "remote" : {
+                                             "description" : "Proxmox Backup Server remote ID.",
+                                             "format" : "pve-configid",
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "schedule" : {
+                                             "default" : "daily",
+                                             "description" : "Schedule for the backup (OnCalendar setting of the systemd.timer)",
+                                             "optional" : 1,
+                                             "pattern" : "[0-9a-zA-Z*.:,\\-/ ]+",
+                                             "type" : "string"
+                                          },
+                                          "unitfile" : {
+                                             "description" : "unit file for the systemd.timer unit",
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          }
+                                       },
+                                       "type" : "object"
+                                    }
+                                 },
+                                 "POST" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Create backup schedule",
+                                    "method" : "POST",
+                                    "name" : "create_timer",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "delay" : {
+                                             "default" : "5min",
+                                             "description" : "Randomized delay to add to the starttime (RandomizedDelaySec setting of the systemd.timer)",
+                                             "optional" : 1,
+                                             "pattern" : "[0-9a-zA-Z. ]+",
+                                             "type" : "string"
+                                          },
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "remote" : {
+                                             "description" : "Proxmox Backup Server ID.",
+                                             "format" : "pve-configid",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "schedule" : {
+                                             "default" : "daily",
+                                             "description" : "Schedule for the backup (OnCalendar setting of the systemd.timer)",
+                                             "optional" : 1,
+                                             "pattern" : "[0-9a-zA-Z*.:,\\-/ ]+",
+                                             "type" : "string"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin",
+                                          "audit"
+                                       ]
                                     },
-                                    "version" : {
-                                       "description" : "Package version.",
-                                       "optional" : 1,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "type" : "null"
                                     }
                                  }
                               },
-                              "permissions" : {
-                                 "check" : [
-                                    "admin",
-                                    "audit"
-                                 ]
-                              },
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "string"
-                              }
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/pbs/{remote}/timer",
+                              "text" : "timer"
                            }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/apt/changelog",
-                        "text" : "changelog"
-                     },
-                     {
+                        ],
                         "info" : {
                            "GET" : {
-                              "description" : "Get package information for important Proxmox packages.",
+                              "allowtoken" : 1,
+                              "description" : "Backup Job index.",
                               "method" : "GET",
-                              "name" : "versions",
+                              "name" : "remote_index",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
@@ -10072,257 +14350,53 @@ var pmgapi = [
                                        "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" : {
-                        "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" : {
-                              "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 returend by the list API).",
-                                       "maxLength" : 64,
-                                       "minLength" : 3,
-                                       "type" : "string",
-                                       "typetext" : "<string>"
                                     },
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
+                                    "remote" : {
+                                       "description" : "Proxmox Backup Server ID.",
+                                       "format" : "pve-configid",
                                        "type" : "string",
                                        "typetext" : "<string>"
-                                    },
-                                    "starttime" : {
-                                       "description" : "Only consider entries newer than 'starttime' (unix epoch). Default is 'now - 1day'.",
-                                       "minimum" : 0,
-                                       "optional" : 1,
-                                       "type" : "integer",
-                                       "typetext" : "<integer> (0 - N)"
                                     }
                                  }
                               },
-                              "permissions" : {
-                                 "check" : [
-                                    "admin",
-                                    "audit"
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
                               "returns" : {
-                                 "properties" : {
-                                    "client" : {
-                                       "description" : "Client address",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "dstatus" : {
-                                       "description" : "Delivery status.",
-                                       "maxLength" : 1,
-                                       "minLength" : 1,
-                                       "type" : "string"
-                                    },
-                                    "from" : {
-                                       "description" : "Sender email address.",
-                                       "type" : "string"
-                                    },
-                                    "id" : {
-                                       "description" : "Unique ID.",
-                                       "type" : "string"
-                                    },
-                                    "logs" : {
-                                       "items" : {
+                                 "items" : {
+                                    "properties" : {
+                                       "section" : {
                                           "type" : "string"
-                                       },
-                                       "type" : "array"
-                                    },
-                                    "msgid" : {
-                                       "description" : "SMTP message ID.",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "qid" : {
-                                       "description" : "Postfix qmgr ID.",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "relay" : {
-                                       "description" : "ID of relayed mail.",
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "rstatus" : {
-                                       "description" : "Delivery status of relayed mail.",
-                                       "maxLength" : 1,
-                                       "minLength" : 1,
-                                       "optional" : 1,
-                                       "type" : "string"
-                                    },
-                                    "size" : {
-                                       "description" : "The size of the raw email.",
-                                       "optional" : 1,
-                                       "type" : "number"
-                                    },
-                                    "time" : {
-                                       "description" : "Delivery timestamp.",
-                                       "type" : "integer"
+                                       }
                                     },
-                                    "to" : {
-                                       "description" : "Receiver email address.",
-                                       "type" : "string"
-                                    }
+                                    "type" : "object"
                                  },
-                                 "type" : "object"
-                              }
-                           }
-                        },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/tracker/{id}",
-                        "text" : "{id}"
-                     }
-                  ],
-                  "info" : {
-                     "GET" : {
-                        "description" : "Read mail list.",
-                        "method" : "GET",
-                        "name" : "list_mails",
-                        "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)"
-                              },
-                              "from" : {
-                                 "description" : "Sender email address filter.",
-                                 "maxLength" : 256,
-                                 "minLength" : 1,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "greylist" : {
-                                 "default" : 0,
-                                 "description" : "Include Greylisted entries.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
-                              "ndr" : {
-                                 "default" : 0,
-                                 "description" : "Include NDRs (non delivery reports).",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
-                              },
+                                 "links" : [
+                                    {
+                                       "href" : "{section}",
+                                       "rel" : "child"
+                                    }
+                                 ],
+                                 "type" : "array"
+                              }
+                           }
+                        },
+                        "leaf" : 0,
+                        "path" : "/nodes/{node}/pbs/{remote}",
+                        "text" : "{remote}"
+                     }
+                  ],
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "List all configured Proxmox Backup Server jobs.",
+                        "method" : "GET",
+                        "name" : "list",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
                               "node" : {
                                  "description" : "The cluster node name.",
                                  "format" : "pve-node",
                                  "type" : "string",
                                  "typetext" : "<string>"
-                              },
-                              "starttime" : {
-                                 "description" : "Only consider entries newer than 'starttime' (unix epoch). Default is 'now - 1day'.",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
-                              },
-                              "target" : {
-                                 "description" : "Receiver email address filter.",
-                                 "maxLength" : 256,
-                                 "minLength" : 1,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "xfilter" : {
-                                 "description" : "Only include mails containing this filter string.",
-                                 "maxLength" : 256,
-                                 "minLength" : 1,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
                               }
                            }
                         },
@@ -10336,96 +14410,401 @@ var pmgapi = [
                         "proxyto" : "node",
                         "returns" : {
                            "items" : {
+                              "additionalProperties" : 0,
                               "properties" : {
-                                 "client" : {
-                                    "description" : "Client address",
-                                    "optional" : 1,
+                                 "datastore" : {
+                                    "description" : "Proxmox Backup Server datastore name.",
+                                    "optional" : 0,
                                     "type" : "string"
                                  },
-                                 "dstatus" : {
-                                    "description" : "Delivery status.",
-                                    "maxLength" : 1,
-                                    "minLength" : 1,
-                                    "type" : "string"
+                                 "disable" : {
+                                    "description" : "Flag to disable (deactivate) the entry.",
+                                    "optional" : 1,
+                                    "type" : "boolean"
                                  },
-                                 "from" : {
-                                    "description" : "Sender email address.",
+                                 "fingerprint" : {
+                                    "description" : "Certificate SHA 256 fingerprint.",
+                                    "optional" : 1,
+                                    "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}",
                                     "type" : "string"
                                  },
-                                 "id" : {
-                                    "description" : "Unique ID.",
-                                    "type" : "string"
+                                 "include-statistics" : {
+                                    "description" : "Include statistics in scheduled backups",
+                                    "optional" : 1,
+                                    "type" : "boolean"
                                  },
-                                 "msgid" : {
-                                    "description" : "SMTP message ID.",
+                                 "keep-daily" : {
+                                    "description" : "Keep backups for the last <N> different days. If there is more than one backup for a single day, only the latest one is kept.",
+                                    "format_description" : "N",
+                                    "minimum" : "0",
                                     "optional" : 1,
-                                    "type" : "string"
+                                    "type" : "integer"
                                  },
-                                 "qid" : {
-                                    "description" : "Postfix qmgr ID.",
+                                 "keep-hourly" : {
+                                    "description" : "Keep backups for the last <N> different hours. If there is more than one backup for a single hour, only the latest one is kept.",
+                                    "format_description" : "N",
+                                    "minimum" : "0",
                                     "optional" : 1,
-                                    "type" : "string"
+                                    "type" : "integer"
                                  },
-                                 "relay" : {
-                                    "description" : "ID of relayed mail.",
+                                 "keep-last" : {
+                                    "description" : "Keep the last <N> backups.",
+                                    "format_description" : "N",
+                                    "minimum" : "0",
                                     "optional" : 1,
-                                    "type" : "string"
+                                    "type" : "integer"
                                  },
-                                 "rstatus" : {
-                                    "description" : "Delivery status of relayed mail.",
-                                    "maxLength" : 1,
-                                    "minLength" : 1,
+                                 "keep-monthly" : {
+                                    "description" : "Keep backups for the last <N> different months. If there is more than one backup for a single month, only the latest one is kept.",
+                                    "format_description" : "N",
+                                    "minimum" : "0",
                                     "optional" : 1,
-                                    "type" : "string"
+                                    "type" : "integer"
                                  },
-                                 "size" : {
-                                    "description" : "The size of the raw email.",
+                                 "keep-weekly" : {
+                                    "description" : "Keep backups for the last <N> different weeks. If there ismore than one backup for a single week, only the latest one is kept.",
+                                    "format_description" : "N",
+                                    "minimum" : "0",
                                     "optional" : 1,
-                                    "type" : "number"
+                                    "type" : "integer"
                                  },
-                                 "time" : {
-                                    "description" : "Delivery timestamp.",
+                                 "keep-yearly" : {
+                                    "description" : "Keep backups for the last <N> different years. If there is more than one backup for a single year, only the latest one is kept.",
+                                    "format_description" : "N",
+                                    "minimum" : "0",
+                                    "optional" : 1,
                                     "type" : "integer"
                                  },
-                                 "to" : {
-                                    "description" : "Receiver email address.",
+                                 "notify" : {
+                                    "description" : "Specify when to notify via e-mail",
+                                    "enum" : [
+                                       "always",
+                                       "error",
+                                       "never"
+                                    ],
+                                    "optional" : 1,
+                                    "type" : "string"
+                                 },
+                                 "password" : {
+                                    "description" : "Password or API token secret for the user on the Proxmox Backup Server.",
+                                    "optional" : 1,
+                                    "type" : "string"
+                                 },
+                                 "remote" : {
+                                    "description" : "Proxmox Backup Server ID.",
+                                    "format" : "pve-configid",
+                                    "type" : "string"
+                                 },
+                                 "server" : {
+                                    "description" : "Proxmox Backup Server address.",
+                                    "format" : "address",
+                                    "maxLength" : 256,
+                                    "optional" : 0,
                                     "type" : "string"
+                                 },
+                                 "username" : {
+                                    "description" : "Username or API token ID on the Proxmox Backup Server",
+                                    "maxLength" : 512,
+                                    "minLength" : 3,
+                                    "optional" : 1,
+                                    "pattern" : "(?:[^\\s\\\\@]+\\@[^\\s\\/\\\\@]+)",
+                                    "type" : "string"
+                                 }
+                              },
+                              "type" : "object"
+                           },
+                           "links" : [
+                              {
+                                 "href" : "{remote}",
+                                 "rel" : "child"
+                              }
+                           ],
+                           "type" : "array"
+                        }
+                     }
+                  },
+                  "leaf" : 0,
+                  "path" : "/nodes/{node}/pbs",
+                  "text" : "pbs"
+               },
+               {
+                  "children" : [
+                     {
+                        "info" : {
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "Get information about the node's certificates.",
+                              "method" : "GET",
+                              "name" : "info",
+                              "parameters" : {
+                                 "additionalProperties" : 0,
+                                 "properties" : {
+                                    "node" : {
+                                       "description" : "The cluster node name.",
+                                       "format" : "pve-node",
+                                       "type" : "string",
+                                       "typetext" : "<string>"
+                                    }
+                                 }
+                              },
+                              "permissions" : {
+                                 "user" : "all"
+                              },
+                              "protected" : 1,
+                              "proxyto" : "node",
+                              "returns" : {
+                                 "items" : {
+                                    "properties" : {
+                                       "filename" : {
+                                          "optional" : 1,
+                                          "type" : "string"
+                                       },
+                                       "fingerprint" : {
+                                          "description" : "Certificate SHA 256 fingerprint.",
+                                          "optional" : 1,
+                                          "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}",
+                                          "type" : "string"
+                                       },
+                                       "issuer" : {
+                                          "description" : "Certificate issuer name.",
+                                          "optional" : 1,
+                                          "type" : "string"
+                                       },
+                                       "notafter" : {
+                                          "description" : "Certificate's notAfter timestamp (UNIX epoch).",
+                                          "optional" : 1,
+                                          "renderer" : "timestamp",
+                                          "type" : "integer"
+                                       },
+                                       "notbefore" : {
+                                          "description" : "Certificate's notBefore timestamp (UNIX epoch).",
+                                          "optional" : 1,
+                                          "renderer" : "timestamp",
+                                          "type" : "integer"
+                                       },
+                                       "pem" : {
+                                          "description" : "Certificate in PEM format",
+                                          "format" : "pem-certificate",
+                                          "optional" : 1,
+                                          "type" : "string"
+                                       },
+                                       "public-key-bits" : {
+                                          "description" : "Certificate's public key size",
+                                          "optional" : 1,
+                                          "type" : "integer"
+                                       },
+                                       "public-key-type" : {
+                                          "description" : "Certificate's public key algorithm",
+                                          "optional" : 1,
+                                          "type" : "string"
+                                       },
+                                       "san" : {
+                                          "description" : "List of Certificate's SubjectAlternativeName entries.",
+                                          "items" : {
+                                             "type" : "string"
+                                          },
+                                          "optional" : 1,
+                                          "renderer" : "yaml",
+                                          "type" : "array"
+                                       },
+                                       "subject" : {
+                                          "description" : "Certificate subject name.",
+                                          "optional" : 1,
+                                          "type" : "string"
+                                       }
+                                    },
+                                    "type" : "object"
+                                 },
+                                 "type" : "array"
+                              }
+                           }
+                        },
+                        "leaf" : 1,
+                        "path" : "/nodes/{node}/certificates/info",
+                        "text" : "info"
+                     },
+                     {
+                        "children" : [
+                           {
+                              "info" : {
+                                 "DELETE" : {
+                                    "allowtoken" : 1,
+                                    "description" : "DELETE custom certificate chain and key.",
+                                    "method" : "DELETE",
+                                    "name" : "remove_custom_cert",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "restart" : {
+                                             "default" : 0,
+                                             "description" : "Restart pmgproxy.",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
+                                          "type" : {
+                                             "description" : "The TLS certificate type (API or SMTP certificate).",
+                                             "enum" : [
+                                                "api",
+                                                "smtp"
+                                             ],
+                                             "type" : "string"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin"
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "type" : "null"
+                                    }
+                                 },
+                                 "POST" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Upload or update custom certificate chain and key.",
+                                    "method" : "POST",
+                                    "name" : "upload_custom_cert",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "certificates" : {
+                                             "description" : "PEM encoded certificate (chain).",
+                                             "format" : "pem-certificate-chain",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "force" : {
+                                             "default" : 0,
+                                             "description" : "Overwrite existing custom or ACME certificate files.",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
+                                          "key" : {
+                                             "description" : "PEM encoded private key.",
+                                             "format" : "pem-string",
+                                             "optional" : 0,
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "restart" : {
+                                             "default" : 0,
+                                             "description" : "Restart services.",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
+                                          "type" : {
+                                             "description" : "The TLS certificate type (API or SMTP certificate).",
+                                             "enum" : [
+                                                "api",
+                                                "smtp"
+                                             ],
+                                             "type" : "string"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin"
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "properties" : {
+                                          "filename" : {
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "fingerprint" : {
+                                             "description" : "Certificate SHA 256 fingerprint.",
+                                             "optional" : 1,
+                                             "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}",
+                                             "type" : "string"
+                                          },
+                                          "issuer" : {
+                                             "description" : "Certificate issuer name.",
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "notafter" : {
+                                             "description" : "Certificate's notAfter timestamp (UNIX epoch).",
+                                             "optional" : 1,
+                                             "renderer" : "timestamp",
+                                             "type" : "integer"
+                                          },
+                                          "notbefore" : {
+                                             "description" : "Certificate's notBefore timestamp (UNIX epoch).",
+                                             "optional" : 1,
+                                             "renderer" : "timestamp",
+                                             "type" : "integer"
+                                          },
+                                          "pem" : {
+                                             "description" : "Certificate in PEM format",
+                                             "format" : "pem-certificate",
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "public-key-bits" : {
+                                             "description" : "Certificate's public key size",
+                                             "optional" : 1,
+                                             "type" : "integer"
+                                          },
+                                          "public-key-type" : {
+                                             "description" : "Certificate's public key algorithm",
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          },
+                                          "san" : {
+                                             "description" : "List of Certificate's SubjectAlternativeName entries.",
+                                             "items" : {
+                                                "type" : "string"
+                                             },
+                                             "optional" : 1,
+                                             "renderer" : "yaml",
+                                             "type" : "array"
+                                          },
+                                          "subject" : {
+                                             "description" : "Certificate subject name.",
+                                             "optional" : 1,
+                                             "type" : "string"
+                                          }
+                                       },
+                                       "type" : "object"
+                                    }
                                  }
                               },
-                              "type" : "object"
-                           },
-                           "links" : [
-                              {
-                                 "href" : "{id}",
-                                 "rel" : "child"
-                              }
-                           ],
-                           "type" : "array"
-                        }
-                     }
-                  },
-                  "leaf" : 0,
-                  "path" : "/nodes/{node}/tracker",
-                  "text" : "tracker"
-               },
-               {
-                  "children" : [
-                     {
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/certificates/custom/{type}",
+                              "text" : "{type}"
+                           }
+                        ],
                         "info" : {
-                           "DELETE" : {
-                              "description" : "Delete a backup file.",
-                              "method" : "DELETE",
-                              "name" : "delete",
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "Certificate index.",
+                              "method" : "GET",
+                              "name" : "custom_cert_index",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "filename" : {
-                                       "description" : "The backup file name.",
-                                       "maxLength" : 256,
-                                       "minLength" : 4,
-                                       "pattern" : "pmg-backup_[0-9A-Za-z_-]+\\.tgz",
-                                       "type" : "string"
-                                    },
                                     "node" : {
                                        "description" : "The cluster node name.",
                                        "format" : "pve-node",
@@ -10435,115 +14814,202 @@ var pmgapi = [
                                  }
                               },
                               "permissions" : {
-                                 "check" : [
-                                    "admin"
-                                 ]
+                                 "user" : "all"
                               },
-                              "protected" : 1,
-                              "proxyto" : "node",
                               "returns" : {
-                                 "type" : "null"
+                                 "items" : {
+                                    "properties" : {},
+                                    "type" : "object"
+                                 },
+                                 "links" : [
+                                    {
+                                       "href" : "{type}",
+                                       "rel" : "child"
+                                    }
+                                 ],
+                                 "type" : "array"
                               }
-                           },
-                           "GET" : {
-                              "description" : "Download a backup file.",
-                              "download" : 1,
-                              "method" : "GET",
-                              "name" : "download",
-                              "parameters" : {
-                                 "additionalProperties" : 0,
-                                 "properties" : {
-                                    "filename" : {
-                                       "description" : "The backup file name.",
-                                       "maxLength" : 256,
-                                       "minLength" : 4,
-                                       "pattern" : "pmg-backup_[0-9A-Za-z_-]+\\.tgz",
+                           }
+                        },
+                        "leaf" : 0,
+                        "path" : "/nodes/{node}/certificates/custom",
+                        "text" : "custom"
+                     },
+                     {
+                        "children" : [
+                           {
+                              "info" : {
+                                 "DELETE" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Revoke existing certificate from CA.",
+                                    "method" : "DELETE",
+                                    "name" : "revoke_acme_cert",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "type" : {
+                                             "description" : "The TLS certificate type (API or SMTP certificate).",
+                                             "enum" : [
+                                                "api",
+                                                "smtp"
+                                             ],
+                                             "type" : "string"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin"
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
                                        "type" : "string"
+                                    }
+                                 },
+                                 "POST" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Order a new certificate from ACME-compatible CA.",
+                                    "method" : "POST",
+                                    "name" : "new_acme_cert",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "force" : {
+                                             "default" : 0,
+                                             "description" : "Overwrite existing custom certificate.",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "type" : {
+                                             "description" : "The TLS certificate type (API or SMTP certificate).",
+                                             "enum" : [
+                                                "api",
+                                                "smtp"
+                                             ],
+                                             "type" : "string"
+                                          }
+                                       }
                                     },
-                                    "node" : {
-                                       "description" : "The cluster node name.",
-                                       "format" : "pve-node",
-                                       "type" : "string",
-                                       "typetext" : "<string>"
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin"
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "type" : "string"
+                                    }
+                                 },
+                                 "PUT" : {
+                                    "allowtoken" : 1,
+                                    "description" : "Renew existing certificate from CA.",
+                                    "method" : "PUT",
+                                    "name" : "renew_acme_cert",
+                                    "parameters" : {
+                                       "additionalProperties" : 0,
+                                       "properties" : {
+                                          "force" : {
+                                             "default" : 0,
+                                             "description" : "Force renewal even if expiry is more than 30 days away.",
+                                             "optional" : 1,
+                                             "type" : "boolean",
+                                             "typetext" : "<boolean>"
+                                          },
+                                          "node" : {
+                                             "description" : "The cluster node name.",
+                                             "format" : "pve-node",
+                                             "type" : "string",
+                                             "typetext" : "<string>"
+                                          },
+                                          "type" : {
+                                             "description" : "The TLS certificate type (API or SMTP certificate).",
+                                             "enum" : [
+                                                "api",
+                                                "smtp"
+                                             ],
+                                             "type" : "string"
+                                          }
+                                       }
+                                    },
+                                    "permissions" : {
+                                       "check" : [
+                                          "admin"
+                                       ]
+                                    },
+                                    "protected" : 1,
+                                    "proxyto" : "node",
+                                    "returns" : {
+                                       "type" : "string"
                                     }
                                  }
                               },
-                              "permissions" : {
-                                 "check" : [
-                                    "admin"
-                                 ]
-                              },
-                              "protected" : 1,
-                              "proxyto" : "node",
-                              "returns" : {
-                                 "type" : "string"
-                              }
-                           },
-                           "POST" : {
-                              "description" : "Restore the system configuration.",
-                              "method" : "POST",
-                              "name" : "restore",
+                              "leaf" : 1,
+                              "path" : "/nodes/{node}/certificates/acme/{type}",
+                              "text" : "{type}"
+                           }
+                        ],
+                        "info" : {
+                           "GET" : {
+                              "allowtoken" : 1,
+                              "description" : "ACME Certificate index.",
+                              "method" : "GET",
+                              "name" : "acme_cert_index",
                               "parameters" : {
                                  "additionalProperties" : 0,
                                  "properties" : {
-                                    "config" : {
-                                       "default" : 0,
-                                       "description" : "Restore system configuration.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "database" : {
-                                       "default" : 1,
-                                       "description" : "Restore the rule database. This is the default.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
-                                    },
-                                    "filename" : {
-                                       "description" : "The backup file name.",
-                                       "maxLength" : 256,
-                                       "minLength" : 4,
-                                       "pattern" : "pmg-backup_[0-9A-Za-z_-]+\\.tgz",
-                                       "type" : "string"
-                                    },
                                     "node" : {
                                        "description" : "The cluster node name.",
                                        "format" : "pve-node",
                                        "type" : "string",
                                        "typetext" : "<string>"
-                                    },
-                                    "statistic" : {
-                                       "default" : 0,
-                                       "description" : "Restore statistic databases. Only considered when you restore the 'database'.",
-                                       "optional" : 1,
-                                       "type" : "boolean",
-                                       "typetext" : "<boolean>"
                                     }
                                  }
                               },
                               "permissions" : {
-                                 "check" : [
-                                    "admin"
-                                 ]
+                                 "user" : "all"
                               },
-                              "protected" : 1,
-                              "proxyto" : "node",
                               "returns" : {
-                                 "type" : "string"
+                                 "items" : {
+                                    "properties" : {},
+                                    "type" : "object"
+                                 },
+                                 "links" : [
+                                    {
+                                       "href" : "{type}",
+                                       "rel" : "child"
+                                    }
+                                 ],
+                                 "type" : "array"
                               }
                            }
                         },
-                        "leaf" : 1,
-                        "path" : "/nodes/{node}/backup/{filename}",
-                        "text" : "{filename}"
+                        "leaf" : 0,
+                        "path" : "/nodes/{node}/certificates/acme",
+                        "text" : "acme"
                      }
                   ],
                   "info" : {
                      "GET" : {
-                        "description" : "List all stored backups (files named proxmox-backup_{DATE}.tgz).",
+                        "allowtoken" : 1,
+                        "description" : "Node index.",
                         "method" : "GET",
-                        "name" : "list",
+                        "name" : "index",
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
@@ -10556,47 +15022,34 @@ var pmgapi = [
                            }
                         },
                         "permissions" : {
-                           "check" : [
-                              "admin",
-                              "audit"
-                           ]
+                           "user" : "all"
                         },
-                        "protected" : 1,
-                        "proxyto" : "node",
                         "returns" : {
                            "items" : {
-                              "properties" : {
-                                 "filename" : {
-                                    "description" : "The backup file name.",
-                                    "maxLength" : 256,
-                                    "minLength" : 4,
-                                    "pattern" : "pmg-backup_[0-9A-Za-z_-]+\\.tgz",
-                                    "type" : "string"
-                                 },
-                                 "size" : {
-                                    "description" : "Size of backup file in bytes.",
-                                    "type" : "integer"
-                                 },
-                                 "timestamp" : {
-                                    "description" : "Backup timestamp (Unix epoch).",
-                                    "type" : "integer"
-                                 }
-                              },
+                              "properties" : {},
                               "type" : "object"
                            },
                            "links" : [
                               {
-                                 "href" : "{filename}",
+                                 "href" : "{name}",
                                  "rel" : "child"
                               }
                            ],
                            "type" : "array"
                         }
-                     },
-                     "POST" : {
-                        "description" : "Backup the system configuration.",
-                        "method" : "POST",
-                        "name" : "backup",
+                     }
+                  },
+                  "leaf" : 0,
+                  "path" : "/nodes/{node}/certificates",
+                  "text" : "certificates"
+               },
+               {
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Get node configuration options.",
+                        "method" : "GET",
+                        "name" : "get_config",
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
@@ -10605,19 +15058,202 @@ var pmgapi = [
                                  "format" : "pve-node",
                                  "type" : "string",
                                  "typetext" : "<string>"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "admin",
+                              "audit"
+                           ]
+                        },
+                        "protected" : 1,
+                        "proxyto" : "node",
+                        "returns" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "acme" : {
+                                 "description" : "Node specific ACME settings.",
+                                 "format" : {
+                                    "account" : {
+                                       "default" : "default",
+                                       "description" : "ACME account config file name.",
+                                       "format" : "pve-configid",
+                                       "format_description" : "name",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    }
+                                 },
+                                 "optional" : 1,
+                                 "type" : "string"
                               },
-                              "statistic" : {
-                                 "default" : 1,
-                                 "description" : "Backup statistic databases.",
+                              "acmedomain[n]" : {
+                                 "description" : "ACME domain and validation plugin",
+                                 "format" : {
+                                    "alias" : {
+                                       "description" : "Alias for the Domain to verify ACME Challenge over DNS",
+                                       "format" : "pmg-acme-alias",
+                                       "format_description" : "domain",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "domain" : {
+                                       "default_key" : 1,
+                                       "description" : "domain for this node's ACME certificate",
+                                       "format" : "pmg-acme-domain",
+                                       "format_description" : "domain",
+                                       "type" : "string"
+                                    },
+                                    "plugin" : {
+                                       "default" : "standalone",
+                                       "description" : "The ACME plugin ID",
+                                       "format" : "pve-configid",
+                                       "format_description" : "name of the plugin configuration",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "usage" : {
+                                       "description" : "Whether this domain is used for the API, SMTP or both",
+                                       "format" : "pmg-certificate-type-list",
+                                       "format_description" : "usage list",
+                                       "type" : "string"
+                                    }
+                                 },
                                  "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
+                                 "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"
+                              }
+                           },
+                           "type" : "object"
+                        }
+                     },
+                     "PUT" : {
+                        "allowtoken" : 1,
+                        "description" : "Set node configuration options.",
+                        "method" : "PUT",
+                        "name" : "set_config",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "acme" : {
+                                 "description" : "Node specific ACME settings.",
+                                 "format" : {
+                                    "account" : {
+                                       "default" : "default",
+                                       "description" : "ACME account config file name.",
+                                       "format" : "pve-configid",
+                                       "format_description" : "name",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    }
+                                 },
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "[account=<name>]"
+                              },
+                              "acmedomain[n]" : {
+                                 "description" : "ACME domain and validation plugin",
+                                 "format" : {
+                                    "alias" : {
+                                       "description" : "Alias for the Domain to verify ACME Challenge over DNS",
+                                       "format" : "pmg-acme-alias",
+                                       "format_description" : "domain",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "domain" : {
+                                       "default_key" : 1,
+                                       "description" : "domain for this node's ACME certificate",
+                                       "format" : "pmg-acme-domain",
+                                       "format_description" : "domain",
+                                       "type" : "string"
+                                    },
+                                    "plugin" : {
+                                       "default" : "standalone",
+                                       "description" : "The ACME plugin ID",
+                                       "format" : "pve-configid",
+                                       "format_description" : "name of the plugin configuration",
+                                       "optional" : 1,
+                                       "type" : "string"
+                                    },
+                                    "usage" : {
+                                       "description" : "Whether this domain is used for the API, SMTP or both",
+                                       "format" : "pmg-certificate-type-list",
+                                       "format_description" : "usage list",
+                                       "type" : "string"
+                                    }
+                                 },
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "[domain=]<domain> ,usage=<usage list> [,alias=<domain>] [,plugin=<name of the plugin configuration>]"
+                              },
+                              "delete" : {
+                                 "description" : "A list of settings you want to delete.",
+                                 "format" : "pve-configid-list",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "digest" : {
+                                 "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.",
+                                 "maxLength" : 40,
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "node" : {
+                                 "description" : "The cluster node name.",
+                                 "format" : "pve-node",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              }
+                           },
+                           "type" : "object"
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "admin",
+                              "audit"
+                           ]
+                        },
+                        "protected" : 1,
+                        "proxyto" : "node",
+                        "returns" : {
+                           "type" : "null"
+                        }
+                     }
+                  },
+                  "leaf" : 1,
+                  "path" : "/nodes/{node}/config",
+                  "text" : "config"
+               },
+               {
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Gather various system information about a node",
+                        "method" : "GET",
+                        "name" : "report",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "node" : {
+                                 "description" : "The cluster node name.",
+                                 "format" : "pve-node",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
                               }
                            }
                         },
                         "permissions" : {
                            "check" : [
-                              "admin"
+                              "admin",
+                              "audit"
                            ]
                         },
                         "protected" : 1,
@@ -10627,13 +15263,14 @@ var pmgapi = [
                         }
                      }
                   },
-                  "leaf" : 0,
-                  "path" : "/nodes/{node}/backup",
-                  "text" : "backup"
+                  "leaf" : 1,
+                  "path" : "/nodes/{node}/report",
+                  "text" : "report"
                },
                {
                   "info" : {
                      "GET" : {
+                        "allowtoken" : 1,
                         "description" : "Read node RRD statistics",
                         "method" : "GET",
                         "name" : "rrddata",
@@ -10692,6 +15329,7 @@ var pmgapi = [
                {
                   "info" : {
                      "GET" : {
+                        "allowtoken" : 1,
                         "description" : "Read system log",
                         "method" : "GET",
                         "name" : "syslog",
@@ -10767,27 +15405,110 @@ var pmgapi = [
                   "path" : "/nodes/{node}/syslog",
                   "text" : "syslog"
                },
+               {
+                  "info" : {
+                     "GET" : {
+                        "allowtoken" : 1,
+                        "description" : "Read Journal",
+                        "method" : "GET",
+                        "name" : "journal",
+                        "parameters" : {
+                           "additionalProperties" : 0,
+                           "properties" : {
+                              "endcursor" : {
+                                 "description" : "End before the given Cursor. Conflicts with 'until'.",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "lastentries" : {
+                                 "description" : "Limit to the last X lines. Conflicts with a range.",
+                                 "minimum" : 0,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (0 - N)"
+                              },
+                              "node" : {
+                                 "description" : "The cluster node name.",
+                                 "format" : "pve-node",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "since" : {
+                                 "description" : "Display all log since this UNIX epoch. Conflicts with 'startcursor'.",
+                                 "minimum" : 0,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (0 - N)"
+                              },
+                              "startcursor" : {
+                                 "description" : "Start after the given Cursor. Conflicts with 'since'.",
+                                 "optional" : 1,
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
+                              "until" : {
+                                 "description" : "Display all log until this UNIX epoch. Conflicts with 'endcursor'.",
+                                 "minimum" : 0,
+                                 "optional" : 1,
+                                 "type" : "integer",
+                                 "typetext" : "<integer> (0 - N)"
+                              }
+                           }
+                        },
+                        "permissions" : {
+                           "check" : [
+                              "admin",
+                              "audit"
+                           ]
+                        },
+                        "protected" : 1,
+                        "proxyto" : "node",
+                        "returns" : {
+                           "items" : {
+                              "type" : "string"
+                           },
+                           "type" : "array"
+                        }
+                     }
+                  },
+                  "leaf" : 1,
+                  "path" : "/nodes/{node}/journal",
+                  "text" : "journal"
+               },
                {
                   "info" : {
                      "POST" : {
+                        "allowtoken" : 1,
                         "description" : "Creates a Terminal proxy.",
                         "method" : "POST",
                         "name" : "termproxy",
                         "parameters" : {
                            "additionalProperties" : 0,
                            "properties" : {
+                              "cmd" : {
+                                 "default" : "login",
+                                 "description" : "Run specific command or default to login.",
+                                 "enum" : [
+                                    "login",
+                                    "upgrade"
+                                 ],
+                                 "optional" : 1,
+                                 "type" : "string"
+                              },
+                              "cmd-opts" : {
+                                 "default" : "",
+                                 "description" : "Add parameters to a command. Encoded as null terminated strings.",
+                                 "optional" : 1,
+                                 "requires" : "cmd",
+                                 "type" : "string",
+                                 "typetext" : "<string>"
+                              },
                               "node" : {
                                  "description" : "The cluster node name.",
                                  "format" : "pve-node",
                                  "type" : "string",
                                  "typetext" : "<string>"
-                              },
-                              "upgrade" : {
-                                 "default" : 0,
-                                 "description" : "Run 'apt-get dist-upgrade' instead of normal shell.",
-                                 "optional" : 1,
-                                 "type" : "boolean",
-                                 "typetext" : "<boolean>"
                               }
                            }
                         },
@@ -10823,6 +15544,7 @@ var pmgapi = [
                {
                   "info" : {
                      "GET" : {
+                        "allowtoken" : 1,
                         "description" : "Opens a weksocket for VNC traffic.",
                         "method" : "GET",
                         "name" : "vncwebsocket",
@@ -10872,6 +15594,7 @@ var pmgapi = [
                {
                   "info" : {
                      "GET" : {
+                        "allowtoken" : 1,
                         "description" : "Read DNS settings.",
                         "method" : "GET",
                         "name" : "dns",
@@ -10921,6 +15644,7 @@ var pmgapi = [
                         }
                      },
                      "PUT" : {
+                        "allowtoken" : 1,
                         "description" : "Write DNS settings.",
                         "method" : "PUT",
                         "name" : "update_dns",
@@ -10975,6 +15699,7 @@ var pmgapi = [
                {
                   "info" : {
                      "GET" : {
+                        "allowtoken" : 1,
                         "description" : "Read server time and time zone settings.",
                         "method" : "GET",
                         "name" : "time",
@@ -11018,6 +15743,7 @@ var pmgapi = [
                         }
                      },
                      "PUT" : {
+                        "allowtoken" : 1,
                         "description" : "Set time zone.",
                         "method" : "PUT",
                         "name" : "set_timezone",
@@ -11051,6 +15777,7 @@ var pmgapi = [
                {
                   "info" : {
                      "GET" : {
+                        "allowtoken" : 1,
                         "description" : "Read server status. This is used by the cluster manager to test the node health.",
                         "method" : "GET",
                         "name" : "status",
@@ -11065,6 +15792,13 @@ var pmgapi = [
                               }
                            }
                         },
+                        "permissions" : {
+                           "check" : [
+                              "admin",
+                              "qmanager",
+                              "audit"
+                           ]
+                        },
                         "protected" : 1,
                         "proxyto" : "node",
                         "returns" : {
@@ -11089,6 +15823,7 @@ var pmgapi = [
                         }
                      },
                      "POST" : {
+                        "allowtoken" : 1,
                         "description" : "Reboot or shutdown a node.",
                         "method" : "POST",
                         "name" : "node_cmd",
@@ -11130,6 +15865,7 @@ var pmgapi = [
             ],
             "info" : {
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "Node index.",
                   "method" : "GET",
                   "name" : "index",
@@ -11169,6 +15905,7 @@ var pmgapi = [
       ],
       "info" : {
          "GET" : {
+            "allowtoken" : 1,
             "description" : "Cluster node index.",
             "method" : "GET",
             "name" : "index",
@@ -11204,6 +15941,7 @@ var pmgapi = [
                {
                   "info" : {
                      "DELETE" : {
+                        "allowtoken" : 1,
                         "description" : "Delete a user.",
                         "method" : "DELETE",
                         "name" : "delete",
@@ -11227,6 +15965,7 @@ var pmgapi = [
                         }
                      },
                      "GET" : {
+                        "allowtoken" : 1,
                         "description" : "Read User data.",
                         "method" : "GET",
                         "name" : "read",
@@ -11253,11 +15992,11 @@ var pmgapi = [
                         "protected" : 1,
                         "proxyto" : "master",
                         "returns" : {
-                           "properties" : {},
                            "type" : "object"
                         }
                      },
                      "PUT" : {
+                        "allowtoken" : 1,
                         "description" : "Update user data.",
                         "method" : "PUT",
                         "name" : "write",
@@ -11336,10 +16075,11 @@ var pmgapi = [
                                  "typetext" : "<string>"
                               },
                               "role" : {
-                                 "description" : "User role. Role 'root' is reseved for the Unix Superuser.",
+                                 "description" : "User role. Role 'root' is reserved for the Unix Superuser.",
                                  "enum" : [
                                     "root",
                                     "admin",
+                                    "helpdesk",
                                     "qmanager",
                                     "audit"
                                  ],
@@ -11370,6 +16110,7 @@ var pmgapi = [
             ],
             "info" : {
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "List users.",
                   "method" : "GET",
                   "name" : "index",
@@ -11414,6 +16155,7 @@ var pmgapi = [
                   }
                },
                "POST" : {
+                  "allowtoken" : 1,
                   "description" : "Create new user",
                   "method" : "POST",
                   "name" : "create",
@@ -11484,10 +16226,11 @@ var pmgapi = [
                            "typetext" : "<string>"
                         },
                         "role" : {
-                           "description" : "User role. Role 'root' is reseved for the Unix Superuser.",
+                           "description" : "User role. Role 'root' is reserved for the Unix Superuser.",
                            "enum" : [
                               "root",
                               "admin",
+                              "helpdesk",
                               "qmanager",
                               "audit"
                            ],
@@ -11517,6 +16260,7 @@ var pmgapi = [
          {
             "info" : {
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "Dummy. Useful for formaters which want to priovde a login page.",
                   "method" : "GET",
                   "name" : "get_ticket",
@@ -11531,6 +16275,7 @@ var pmgapi = [
                   }
                },
                "POST" : {
+                  "allowtoken" : 1,
                   "description" : "Create or verify authentication ticket.",
                   "method" : "POST",
                   "name" : "create_ticket",
@@ -11608,6 +16353,7 @@ var pmgapi = [
          {
             "info" : {
                "PUT" : {
+                  "allowtoken" : 1,
                   "description" : "Change user password.",
                   "method" : "PUT",
                   "name" : "change_passsword",
@@ -11648,6 +16394,7 @@ var pmgapi = [
       ],
       "info" : {
          "GET" : {
+            "allowtoken" : 1,
             "description" : "Directory index.",
             "method" : "GET",
             "name" : "index",
@@ -11683,53 +16430,46 @@ var pmgapi = [
    {
       "children" : [
          {
-            "children" : [
-               {
-                  "info" : {
-                     "DELETE" : {
-                        "description" : "Delete user whitelist entries.",
-                        "method" : "DELETE",
-                        "name" : "whitelist_delete",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "address" : {
-                                 "description" : "The address you want to remove.",
-                                 "maxLength" : 512,
-                                 "minLength" : 3,
-                                 "pattern" : "(?:|[^\\s\\/\\@]+\\@[^\\s\\/\\@]+)",
-                                 "type" : "string"
-                              },
-                              "pmail" : {
-                                 "description" : "List entries for the user with this primary email address. Quarantine users cannot speficy this parameter, but it is required for all other roles.",
-                                 "format" : "email",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "admin",
-                              "qmanager",
-                              "audit",
-                              "quser"
-                           ]
+            "info" : {
+               "DELETE" : {
+                  "allowtoken" : 1,
+                  "description" : "Delete user whitelist entries.",
+                  "method" : "DELETE",
+                  "name" : "whitelist_delete_base",
+                  "parameters" : {
+                     "additionalProperties" : 0,
+                     "properties" : {
+                        "address" : {
+                           "description" : "The address, or comma-separated list of addresses, you want to remove.",
+                           "minLength" : 3,
+                           "pattern" : "",
+                           "type" : "string"
                         },
-                        "protected" : 1,
-                        "returns" : {
-                           "type" : "null"
+                        "pmail" : {
+                           "description" : "List entries for the user with this primary email address. Quarantine users cannot specify this parameter, but it is required for all other roles.",
+                           "maxLength" : 512,
+                           "minLength" : 3,
+                           "optional" : 1,
+                           "pattern" : "(?:[^\\s\\\\@]+\\@[^\\s\\/\\\\@]+)",
+                           "type" : "string"
                         }
                      }
                   },
-                  "leaf" : 1,
-                  "path" : "/quarantine/whitelist/{address}",
-                  "text" : "{address}"
-               }
-            ],
-            "info" : {
+                  "permissions" : {
+                     "check" : [
+                        "admin",
+                        "qmanager",
+                        "audit",
+                        "quser"
+                     ]
+                  },
+                  "protected" : 1,
+                  "returns" : {
+                     "type" : "null"
+                  }
+               },
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "Show user whitelist.",
                   "method" : "GET",
                   "name" : "whitelist",
@@ -11737,11 +16477,12 @@ var pmgapi = [
                      "additionalProperties" : 0,
                      "properties" : {
                         "pmail" : {
-                           "description" : "List entries for the user with this primary email address. Quarantine users cannot speficy this parameter, but it is required for all other roles.",
-                           "format" : "email",
+                           "description" : "List entries for the user with this primary email address. Quarantine users cannot specify this parameter, but it is required for all other roles.",
+                           "maxLength" : 512,
+                           "minLength" : 3,
                            "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
+                           "pattern" : "(?:[^\\s\\\\@]+\\@[^\\s\\/\\\\@]+)",
+                           "type" : "string"
                         }
                      }
                   },
@@ -11766,6 +16507,7 @@ var pmgapi = [
                   }
                },
                "POST" : {
+                  "allowtoken" : 1,
                   "description" : "Add user whitelist entries.",
                   "method" : "POST",
                   "name" : "whitelist_add",
@@ -11774,17 +16516,17 @@ var pmgapi = [
                      "properties" : {
                         "address" : {
                            "description" : "The address you want to add.",
-                           "maxLength" : 512,
                            "minLength" : 3,
-                           "pattern" : "(?:|[^\\s\\/\\@]+\\@[^\\s\\/\\@]+)",
+                           "pattern" : "(?:[^\\s\\/\\\\;\\,]+)(?:\\,[^\\s\\/\\\\;\\,]+)*",
                            "type" : "string"
                         },
                         "pmail" : {
-                           "description" : "List entries for the user with this primary email address. Quarantine users cannot speficy this parameter, but it is required for all other roles.",
-                           "format" : "email",
+                           "description" : "List entries for the user with this primary email address. Quarantine users cannot specify this parameter, but it is required for all other roles.",
+                           "maxLength" : 512,
+                           "minLength" : 3,
                            "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
+                           "pattern" : "(?:[^\\s\\\\@]+\\@[^\\s\\/\\\\@]+)",
+                           "type" : "string"
                         }
                      }
                   },
@@ -11802,58 +16544,51 @@ var pmgapi = [
                   }
                }
             },
-            "leaf" : 0,
+            "leaf" : 1,
             "path" : "/quarantine/whitelist",
             "text" : "whitelist"
          },
          {
-            "children" : [
-               {
-                  "info" : {
-                     "DELETE" : {
-                        "description" : "Delete user blacklist entries.",
-                        "method" : "DELETE",
-                        "name" : "blacklist_delete",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "address" : {
-                                 "description" : "The address you want to remove.",
-                                 "maxLength" : 512,
-                                 "minLength" : 3,
-                                 "pattern" : "(?:|[^\\s\\/\\@]+\\@[^\\s\\/\\@]+)",
-                                 "type" : "string"
-                              },
-                              "pmail" : {
-                                 "description" : "List entries for the user with this primary email address. Quarantine users cannot speficy this parameter, but it is required for all other roles.",
-                                 "format" : "email",
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "admin",
-                              "qmanager",
-                              "audit",
-                              "quser"
-                           ]
+            "info" : {
+               "DELETE" : {
+                  "allowtoken" : 1,
+                  "description" : "Delete user blacklist entries.",
+                  "method" : "DELETE",
+                  "name" : "blacklist_delete_base",
+                  "parameters" : {
+                     "additionalProperties" : 0,
+                     "properties" : {
+                        "address" : {
+                           "description" : "The address, or comma-separated list of addresses, you want to remove.",
+                           "minLength" : 3,
+                           "pattern" : "",
+                           "type" : "string"
                         },
-                        "protected" : 1,
-                        "returns" : {
-                           "type" : "null"
+                        "pmail" : {
+                           "description" : "List entries for the user with this primary email address. Quarantine users cannot specify this parameter, but it is required for all other roles.",
+                           "maxLength" : 512,
+                           "minLength" : 3,
+                           "optional" : 1,
+                           "pattern" : "(?:[^\\s\\\\@]+\\@[^\\s\\/\\\\@]+)",
+                           "type" : "string"
                         }
                      }
                   },
-                  "leaf" : 1,
-                  "path" : "/quarantine/blacklist/{address}",
-                  "text" : "{address}"
-               }
-            ],
-            "info" : {
+                  "permissions" : {
+                     "check" : [
+                        "admin",
+                        "qmanager",
+                        "audit",
+                        "quser"
+                     ]
+                  },
+                  "protected" : 1,
+                  "returns" : {
+                     "type" : "null"
+                  }
+               },
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "Show user blacklist.",
                   "method" : "GET",
                   "name" : "blacklist",
@@ -11861,11 +16596,12 @@ var pmgapi = [
                      "additionalProperties" : 0,
                      "properties" : {
                         "pmail" : {
-                           "description" : "List entries for the user with this primary email address. Quarantine users cannot speficy this parameter, but it is required for all other roles.",
-                           "format" : "email",
+                           "description" : "List entries for the user with this primary email address. Quarantine users cannot specify this parameter, but it is required for all other roles.",
+                           "maxLength" : 512,
+                           "minLength" : 3,
                            "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
+                           "pattern" : "(?:[^\\s\\\\@]+\\@[^\\s\\/\\\\@]+)",
+                           "type" : "string"
                         }
                      }
                   },
@@ -11890,6 +16626,7 @@ var pmgapi = [
                   }
                },
                "POST" : {
+                  "allowtoken" : 1,
                   "description" : "Add user blacklist entries.",
                   "method" : "POST",
                   "name" : "blacklist_add",
@@ -11898,17 +16635,17 @@ var pmgapi = [
                      "properties" : {
                         "address" : {
                            "description" : "The address you want to add.",
-                           "maxLength" : 512,
                            "minLength" : 3,
-                           "pattern" : "(?:|[^\\s\\/\\@]+\\@[^\\s\\/\\@]+)",
+                           "pattern" : "(?:[^\\s\\/\\\\;\\,]+)(?:\\,[^\\s\\/\\\\;\\,]+)*",
                            "type" : "string"
                         },
                         "pmail" : {
-                           "description" : "List entries for the user with this primary email address. Quarantine users cannot speficy this parameter, but it is required for all other roles.",
-                           "format" : "email",
+                           "description" : "List entries for the user with this primary email address. Quarantine users cannot specify this parameter, but it is required for all other roles.",
+                           "maxLength" : 512,
+                           "minLength" : 3,
                            "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
+                           "pattern" : "(?:[^\\s\\\\@]+\\@[^\\s\\/\\\\@]+)",
+                           "type" : "string"
                         }
                      }
                   },
@@ -11926,13 +16663,14 @@ var pmgapi = [
                   }
                }
             },
-            "leaf" : 0,
+            "leaf" : 1,
             "path" : "/quarantine/blacklist",
             "text" : "blacklist"
          },
          {
             "info" : {
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "Get a list of receivers of spam in the given timespan (Default the last 24 hours).",
                   "method" : "GET",
                   "name" : "spamusers",
@@ -11983,6 +16721,7 @@ var pmgapi = [
          {
             "info" : {
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "Get Spam Quarantine Status",
                   "method" : "GET",
                   "name" : "spamstatus",
@@ -12026,11 +16765,23 @@ var pmgapi = [
          {
             "info" : {
                "GET" : {
-                  "description" : "Get a list of users with whitelist/blacklist setttings.",
+                  "allowtoken" : 1,
+                  "description" : "Get a list of users with whitelist/blacklist settings.",
                   "method" : "GET",
                   "name" : "quarusers",
                   "parameters" : {
-                     "additionalProperties" : 0
+                     "additionalProperties" : 0,
+                     "properties" : {
+                        "list" : {
+                           "description" : "If set, limits the result to the given list.",
+                           "enum" : [
+                              "BL",
+                              "WL"
+                           ],
+                           "optional" : 1,
+                           "type" : "string"
+                        }
+                     }
                   },
                   "permissions" : {
                      "check" : [
@@ -12060,6 +16811,7 @@ var pmgapi = [
          {
             "info" : {
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "Get a list of quarantined spam mails in the given timeframe (default the last 24 hours) for the given user.",
                   "method" : "GET",
                   "name" : "spam",
@@ -12074,11 +16826,12 @@ var pmgapi = [
                            "typetext" : "<integer> (1 - N)"
                         },
                         "pmail" : {
-                           "description" : "List entries for the user with this primary email address. Quarantine users cannot speficy this parameter, but it is required for all other roles.",
-                           "format" : "email",
+                           "description" : "List entries for the user with this primary email address. Quarantine users cannot specify this parameter, but it is required for all other roles.",
+                           "maxLength" : 512,
+                           "minLength" : 3,
                            "optional" : 1,
-                           "type" : "string",
-                           "typetext" : "<string>"
+                           "pattern" : "(?:[^\\s\\\\@]+\\@[^\\s\\/\\\\@]+)",
+                           "type" : "string"
                         },
                         "starttime" : {
                            "description" : "Only consider entries newer than 'starttime' (unix epoch). Default is 'now - 1day'.",
@@ -12145,15 +16898,100 @@ var pmgapi = [
                }
             },
             "leaf" : 1,
-            "path" : "/quarantine/spam",
-            "text" : "spam"
+            "path" : "/quarantine/spam",
+            "text" : "spam"
+         },
+         {
+            "info" : {
+               "GET" : {
+                  "allowtoken" : 1,
+                  "description" : "Get a list of quarantined virus mails in the given timeframe (default the last 24 hours).",
+                  "method" : "GET",
+                  "name" : "virus",
+                  "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)"
+                        },
+                        "starttime" : {
+                           "description" : "Only consider entries newer than 'starttime' (unix epoch). Default is 'now - 1day'.",
+                           "minimum" : 0,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (0 - N)"
+                        }
+                     }
+                  },
+                  "permissions" : {
+                     "check" : [
+                        "admin",
+                        "qmanager",
+                        "audit"
+                     ]
+                  },
+                  "returns" : {
+                     "items" : {
+                        "properties" : {
+                           "bytes" : {
+                              "description" : "Size of raw email.",
+                              "type" : "integer"
+                           },
+                           "envelope_sender" : {
+                              "description" : "SMTP envelope sender.",
+                              "type" : "string"
+                           },
+                           "from" : {
+                              "description" : "Header 'From' field.",
+                              "type" : "string"
+                           },
+                           "id" : {
+                              "description" : "Unique ID",
+                              "type" : "string"
+                           },
+                           "receiver" : {
+                              "description" : "Receiver email address",
+                              "type" : "string"
+                           },
+                           "sender" : {
+                              "description" : "Header 'Sender' field.",
+                              "optional" : 1,
+                              "type" : "string"
+                           },
+                           "subject" : {
+                              "description" : "Header 'Subject' field.",
+                              "type" : "string"
+                           },
+                           "time" : {
+                              "description" : "Receive time stamp",
+                              "type" : "integer"
+                           },
+                           "virusname" : {
+                              "description" : "Virus name.",
+                              "type" : "string"
+                           }
+                        },
+                        "type" : "object"
+                     },
+                     "type" : "array"
+                  }
+               }
+            },
+            "leaf" : 1,
+            "path" : "/quarantine/virus",
+            "text" : "virus"
          },
          {
             "info" : {
                "GET" : {
-                  "description" : "Get a list of quarantined virus mails in the given timeframe (default the last 24 hours).",
+                  "allowtoken" : 1,
+                  "description" : "Get a list of quarantined attachment mails in the given timeframe (default the last 24 hours).",
                   "method" : "GET",
-                  "name" : "virus",
+                  "name" : "attachment",
                   "parameters" : {
                      "additionalProperties" : 0,
                      "properties" : {
@@ -12215,10 +17053,6 @@ var pmgapi = [
                            "time" : {
                               "description" : "Receive time stamp",
                               "type" : "integer"
-                           },
-                           "virusname" : {
-                              "description" : "Virus name.",
-                              "type" : "string"
                            }
                         },
                         "type" : "object"
@@ -12228,12 +17062,13 @@ var pmgapi = [
                }
             },
             "leaf" : 1,
-            "path" : "/quarantine/virus",
-            "text" : "virus"
+            "path" : "/quarantine/attachment",
+            "text" : "attachment"
          },
          {
             "info" : {
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "Get Virus Quarantine Status",
                   "method" : "GET",
                   "name" : "virusstatus",
@@ -12273,6 +17108,7 @@ var pmgapi = [
          {
             "info" : {
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "Get email data. There is a special formatter called 'htmlmail' to get sanitized html view of the mail content (use the '/api2/htmlmail/quarantine/content' url).",
                   "method" : "GET",
                   "name" : "content",
@@ -12287,7 +17123,7 @@ var pmgapi = [
                         },
                         "raw" : {
                            "default" : 0,
-                           "description" : "Display 'raw' eml data. This is only used with the 'htmlmail' formatter.",
+                           "description" : "Display 'raw' eml data. Deactivates size limit.",
                            "optional" : 1,
                            "type" : "boolean",
                            "typetext" : "<boolean>"
@@ -12358,6 +17194,7 @@ var pmgapi = [
                   }
                },
                "POST" : {
+                  "allowtoken" : 1,
                   "description" : "Execute quarantine actions.",
                   "method" : "POST",
                   "name" : "action",
@@ -12375,6 +17212,102 @@ var pmgapi = [
                            "type" : "string"
                         },
                         "id" : {
+                           "description" : "Unique IDs, separate with ;",
+                           "pattern" : "C\\d+R\\d+T\\d+(;C\\d+R\\d+T\\d+)*",
+                           "type" : "string"
+                        }
+                     }
+                  },
+                  "permissions" : {
+                     "check" : [
+                        "admin",
+                        "qmanager",
+                        "quser"
+                     ]
+                  },
+                  "protected" : 1,
+                  "returns" : {
+                     "type" : "null"
+                  }
+               }
+            },
+            "leaf" : 1,
+            "path" : "/quarantine/content",
+            "text" : "content"
+         },
+         {
+            "info" : {
+               "GET" : {
+                  "allowtoken" : 1,
+                  "description" : "Get Attachments for E-Mail in Quarantine.",
+                  "method" : "GET",
+                  "name" : "listattachments",
+                  "parameters" : {
+                     "additionalProperties" : 0,
+                     "properties" : {
+                        "id" : {
+                           "description" : "Unique ID",
+                           "maxLength" : 60,
+                           "pattern" : "C\\d+R\\d+T\\d+",
+                           "type" : "string"
+                        }
+                     }
+                  },
+                  "permissions" : {
+                     "check" : [
+                        "admin",
+                        "qmanager",
+                        "audit"
+                     ]
+                  },
+                  "returns" : {
+                     "items" : {
+                        "properties" : {
+                           "content-type" : {
+                              "description" : "Raw email header data.",
+                              "type" : "string"
+                           },
+                           "id" : {
+                              "description" : "Attachment ID",
+                              "type" : "integer"
+                           },
+                           "name" : {
+                              "description" : "Raw email header data.",
+                              "type" : "string"
+                           },
+                           "size" : {
+                              "description" : "Size of raw attachment in bytes.",
+                              "type" : "integer"
+                           }
+                        },
+                        "type" : "object"
+                     },
+                     "type" : "array"
+                  }
+               }
+            },
+            "leaf" : 1,
+            "path" : "/quarantine/listattachments",
+            "text" : "listattachments"
+         },
+         {
+            "info" : {
+               "GET" : {
+                  "allowtoken" : 1,
+                  "description" : "Download E-Mail or Attachment from Quarantine.",
+                  "download" : 1,
+                  "method" : "GET",
+                  "name" : "download",
+                  "parameters" : {
+                     "additionalProperties" : 0,
+                     "properties" : {
+                        "attachmentid" : {
+                           "description" : "The Attachment ID for the mail.",
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer>"
+                        },
+                        "mailid" : {
                            "description" : "Unique ID",
                            "maxLength" : 60,
                            "pattern" : "C\\d+R\\d+T\\d+",
@@ -12386,9 +17319,41 @@ var pmgapi = [
                      "check" : [
                         "admin",
                         "qmanager",
+                        "audit",
                         "quser"
                      ]
                   },
+                  "returns" : {
+                     "type" : "object"
+                  }
+               }
+            },
+            "leaf" : 1,
+            "path" : "/quarantine/download",
+            "text" : "download"
+         },
+         {
+            "info" : {
+               "POST" : {
+                  "allowtoken" : 1,
+                  "description" : "Send Quarantine link to given e-mail.",
+                  "method" : "POST",
+                  "name" : "sendlink",
+                  "parameters" : {
+                     "additionalProperties" : 0,
+                     "properties" : {
+                        "mail" : {
+                           "description" : "Email Address (allow most characters).",
+                           "maxLength" : 512,
+                           "minLength" : 3,
+                           "pattern" : "(?:[^\\s\\\\@]+\\@[^\\s\\/\\\\@]+)",
+                           "type" : "string"
+                        }
+                     }
+                  },
+                  "permissions" : {
+                     "user" : "world"
+                  },
                   "protected" : 1,
                   "returns" : {
                      "type" : "null"
@@ -12396,12 +17361,13 @@ var pmgapi = [
                }
             },
             "leaf" : 1,
-            "path" : "/quarantine/content",
-            "text" : "content"
+            "path" : "/quarantine/sendlink",
+            "text" : "sendlink"
          }
       ],
       "info" : {
          "GET" : {
+            "allowtoken" : 1,
             "description" : "Directory index.",
             "method" : "GET",
             "name" : "index",
@@ -12433,132 +17399,131 @@ var pmgapi = [
    {
       "children" : [
          {
-            "children" : [
-               {
-                  "info" : {
-                     "GET" : {
-                        "description" : "Detailed Contact Statistics.",
-                        "method" : "GET",
-                        "name" : "contactdetails",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "contact" : {
-                                 "description" : "Contact email address.",
-                                 "maxLength" : 512,
-                                 "minLength" : 3,
-                                 "pattern" : "(?:|[^\\s\\/\\@]+\\@[^\\s\\/\\@]+)",
-                                 "type" : "string"
-                              },
-                              "day" : {
-                                 "description" : "Day of month. Get statistics for a single day.",
-                                 "maximum" : 31,
-                                 "minimum" : 1,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1 - 31)"
-                              },
-                              "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)"
-                              },
-                              "filter" : {
-                                 "description" : "Sender address filter.",
-                                 "maxLength" : 512,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "month" : {
-                                 "description" : "Month. You will get statistics for the whole month if you do not specify a day.",
-                                 "maximum" : 12,
-                                 "minimum" : 1,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1 - 12)"
-                              },
-                              "orderby" : {
-                                 "description" : "Remote sorting configuration(JSON, ExtJS compatible).",
-                                 "maxLength" : 4096,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "starttime" : {
-                                 "description" : "Only consider entries newer than 'starttime' (unix epoch). Default is 'now - 1day'.",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
-                              },
-                              "year" : {
-                                 "description" : "Year. Defaults to current year. You will get statistics for the whole year if you do not specify a month or day.",
-                                 "maximum" : 3000,
-                                 "minimum" : 1900,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1900 - 3000)"
-                              }
-                           }
+            "info" : {
+               "GET" : {
+                  "allowtoken" : 1,
+                  "description" : "Contact Address Statistics.",
+                  "method" : "GET",
+                  "name" : "contact",
+                  "parameters" : {
+                     "additionalProperties" : 0,
+                     "properties" : {
+                        "day" : {
+                           "description" : "Day of month. Get statistics for a single day.",
+                           "maximum" : 31,
+                           "minimum" : 1,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (1 - 31)"
                         },
-                        "permissions" : {
-                           "check" : [
-                              "admin",
-                              "qmanager",
-                              "audit"
-                           ]
+                        "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)"
                         },
-                        "returns" : {
-                           "items" : {
-                              "properties" : {
-                                 "blocked" : {
-                                    "description" : "Mail was blocked.",
-                                    "type" : "boolean"
-                                 },
-                                 "bytes" : {
-                                    "description" : "Mail traffic (Bytes).",
-                                    "type" : "number"
-                                 },
-                                 "sender" : {
-                                    "description" : "Sender email.",
-                                    "type" : "string"
-                                 },
-                                 "spamlevel" : {
-                                    "description" : "Spam score.",
-                                    "type" : "number"
-                                 },
-                                 "time" : {
-                                    "description" : "Receive time stamp",
-                                    "type" : "integer"
-                                 },
-                                 "virusinfo" : {
-                                    "description" : "Virus name.",
-                                    "optional" : 1,
-                                    "type" : "string"
-                                 }
-                              },
-                              "type" : "object"
+                        "filter" : {
+                           "description" : "Contact address filter.",
+                           "maxLength" : 512,
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "month" : {
+                           "description" : "Month. You will get statistics for the whole month if you do not specify a day.",
+                           "maximum" : 12,
+                           "minimum" : 1,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (1 - 12)"
+                        },
+                        "orderby" : {
+                           "description" : "Remote sorting configuration(JSON, ExtJS compatible).",
+                           "maxLength" : 4096,
+                           "optional" : 1,
+                           "type" : "string",
+                           "typetext" : "<string>"
+                        },
+                        "starttime" : {
+                           "description" : "Only consider entries newer than 'starttime' (unix epoch). Default is 'now - 1day'.",
+                           "minimum" : 0,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (0 - N)"
+                        },
+                        "year" : {
+                           "description" : "Year. Defaults to current year. You will get statistics for the whole year if you do not specify a month or day.",
+                           "maximum" : 3000,
+                           "minimum" : 1900,
+                           "optional" : 1,
+                           "type" : "integer",
+                           "typetext" : "<integer> (1900 - 3000)"
+                        }
+                     }
+                  },
+                  "permissions" : {
+                     "check" : [
+                        "admin",
+                        "qmanager",
+                        "audit"
+                     ]
+                  },
+                  "returns" : {
+                     "items" : {
+                        "properties" : {
+                           "bytes" : {
+                              "description" : "Mail traffic (Bytes).",
+                              "type" : "number"
                            },
-                           "type" : "array"
+                           "contact" : {
+                              "description" : "Contact email.",
+                              "type" : "string"
+                           },
+                           "count" : {
+                              "description" : "Mail count.",
+                              "optional" : 1,
+                              "type" : "number"
+                           },
+                           "viruscount" : {
+                              "description" : "Number of sent virus mails.",
+                              "optional" : 1,
+                              "type" : "number"
+                           }
+                        },
+                        "type" : "object"
+                     },
+                     "links" : [
+                        {
+                           "href" : "{contact}",
+                           "rel" : "child"
                         }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/statistics/contact/{contact}",
-                  "text" : "{contact}"
+                     ],
+                     "type" : "array"
+                  }
                }
-            ],
+            },
+            "leaf" : 1,
+            "path" : "/statistics/contact",
+            "text" : "contact"
+         },
+         {
             "info" : {
                "GET" : {
-                  "description" : "Contact Address Statistics.",
+                  "allowtoken" : 1,
+                  "description" : "Detailed Statistics.",
                   "method" : "GET",
-                  "name" : "contact",
+                  "name" : "detailstats",
                   "parameters" : {
                      "additionalProperties" : 0,
                      "properties" : {
+                        "address" : {
+                           "description" : "Email address.",
+                           "maxLength" : 512,
+                           "minLength" : 3,
+                           "pattern" : "(?:[^\\s\\\\@]+\\@[^\\s\\/\\\\@]+)",
+                           "type" : "string"
+                        },
                         "day" : {
                            "description" : "Day of month. Get statistics for a single day.",
                            "maximum" : 31,
@@ -12575,7 +17540,7 @@ var pmgapi = [
                            "typetext" : "<integer> (1 - N)"
                         },
                         "filter" : {
-                           "description" : "Contact address filter.",
+                           "description" : "Address filter.",
                            "maxLength" : 512,
                            "optional" : 1,
                            "type" : "string",
@@ -12603,6 +17568,15 @@ var pmgapi = [
                            "type" : "integer",
                            "typetext" : "<integer> (0 - N)"
                         },
+                        "type" : {
+                           "description" : "Type of statistics",
+                           "enum" : [
+                              "contact",
+                              "sender",
+                              "receiver"
+                           ],
+                           "type" : "string"
+                        },
                         "year" : {
                            "description" : "Year. Defaults to current year. You will get statistics for the whole year if you do not specify a month or day.",
                            "maximum" : 3000,
@@ -12623,162 +17597,52 @@ var pmgapi = [
                   "returns" : {
                      "items" : {
                         "properties" : {
+                           "blocked" : {
+                              "description" : "Mail was blocked.",
+                              "type" : "boolean"
+                           },
                            "bytes" : {
                               "description" : "Mail traffic (Bytes).",
                               "type" : "number"
                            },
-                           "contact" : {
-                              "description" : "Contact email.",
+                           "receiver" : {
+                              "description" : "Receiver email. (for sender statistics)",
+                              "optional" : 1,
                               "type" : "string"
                            },
-                           "count" : {
-                              "description" : "Mail count.",
+                           "sender" : {
+                              "description" : "Sender email. (for contact and receiver statistics)",
                               "optional" : 1,
+                              "type" : "string"
+                           },
+                           "spamlevel" : {
+                              "description" : "Spam score.",
                               "type" : "number"
                            },
-                           "viruscount" : {
-                              "description" : "Number of sent virus mails.",
+                           "time" : {
+                              "description" : "Receive time stamp",
+                              "type" : "integer"
+                           },
+                           "virusinfo" : {
+                              "description" : "Virus name.",
                               "optional" : 1,
-                              "type" : "number"
+                              "type" : "string"
                            }
                         },
                         "type" : "object"
                      },
-                     "links" : [
-                        {
-                           "href" : "{contact}",
-                           "rel" : "child"
-                        }
-                     ],
                      "type" : "array"
                   }
                }
             },
-            "leaf" : 0,
-            "path" : "/statistics/contact",
-            "text" : "contact"
+            "leaf" : 1,
+            "path" : "/statistics/detail",
+            "text" : "detail"
          },
          {
-            "children" : [
-               {
-                  "info" : {
-                     "GET" : {
-                        "description" : "Detailed Sender Statistics.",
-                        "method" : "GET",
-                        "name" : "senderdetails",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "day" : {
-                                 "description" : "Day of month. Get statistics for a single day.",
-                                 "maximum" : 31,
-                                 "minimum" : 1,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1 - 31)"
-                              },
-                              "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)"
-                              },
-                              "filter" : {
-                                 "description" : "Receiver address filter.",
-                                 "maxLength" : 512,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "month" : {
-                                 "description" : "Month. You will get statistics for the whole month if you do not specify a day.",
-                                 "maximum" : 12,
-                                 "minimum" : 1,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1 - 12)"
-                              },
-                              "orderby" : {
-                                 "description" : "Remote sorting configuration(JSON, ExtJS compatible).",
-                                 "maxLength" : 4096,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "sender" : {
-                                 "description" : "Sender email address.",
-                                 "maxLength" : 512,
-                                 "minLength" : 3,
-                                 "pattern" : "(?:|[^\\s\\/\\@]+\\@[^\\s\\/\\@]+)",
-                                 "type" : "string"
-                              },
-                              "starttime" : {
-                                 "description" : "Only consider entries newer than 'starttime' (unix epoch). Default is 'now - 1day'.",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
-                              },
-                              "year" : {
-                                 "description" : "Year. Defaults to current year. You will get statistics for the whole year if you do not specify a month or day.",
-                                 "maximum" : 3000,
-                                 "minimum" : 1900,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1900 - 3000)"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "admin",
-                              "qmanager",
-                              "audit"
-                           ]
-                        },
-                        "returns" : {
-                           "items" : {
-                              "properties" : {
-                                 "blocked" : {
-                                    "description" : "Mail was blocked.",
-                                    "type" : "boolean"
-                                 },
-                                 "bytes" : {
-                                    "description" : "Mail traffic (Bytes).",
-                                    "type" : "number"
-                                 },
-                                 "receiver" : {
-                                    "description" : "Receiver email.",
-                                    "type" : "string"
-                                 },
-                                 "spamlevel" : {
-                                    "description" : "Spam score.",
-                                    "type" : "number"
-                                 },
-                                 "time" : {
-                                    "description" : "Receive time stamp",
-                                    "type" : "integer"
-                                 },
-                                 "virusinfo" : {
-                                    "description" : "Virus name.",
-                                    "optional" : 1,
-                                    "type" : "string"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "type" : "array"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/statistics/sender/{sender}",
-                  "text" : "{sender}"
-               }
-            ],
             "info" : {
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "Sender Address Statistics.",
                   "method" : "GET",
                   "name" : "sender",
@@ -12880,131 +17744,14 @@ var pmgapi = [
                   }
                }
             },
-            "leaf" : 0,
+            "leaf" : 1,
             "path" : "/statistics/sender",
             "text" : "sender"
          },
          {
-            "children" : [
-               {
-                  "info" : {
-                     "GET" : {
-                        "description" : "Detailed Receiver Statistics.",
-                        "method" : "GET",
-                        "name" : "receiverdetails",
-                        "parameters" : {
-                           "additionalProperties" : 0,
-                           "properties" : {
-                              "day" : {
-                                 "description" : "Day of month. Get statistics for a single day.",
-                                 "maximum" : 31,
-                                 "minimum" : 1,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1 - 31)"
-                              },
-                              "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)"
-                              },
-                              "filter" : {
-                                 "description" : "Sender address filter.",
-                                 "maxLength" : 512,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "month" : {
-                                 "description" : "Month. You will get statistics for the whole month if you do not specify a day.",
-                                 "maximum" : 12,
-                                 "minimum" : 1,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1 - 12)"
-                              },
-                              "orderby" : {
-                                 "description" : "Remote sorting configuration(JSON, ExtJS compatible).",
-                                 "maxLength" : 4096,
-                                 "optional" : 1,
-                                 "type" : "string",
-                                 "typetext" : "<string>"
-                              },
-                              "receiver" : {
-                                 "description" : "Receiver email address.",
-                                 "maxLength" : 512,
-                                 "minLength" : 3,
-                                 "pattern" : "(?:|[^\\s\\/\\@]+\\@[^\\s\\/\\@]+)",
-                                 "type" : "string"
-                              },
-                              "starttime" : {
-                                 "description" : "Only consider entries newer than 'starttime' (unix epoch). Default is 'now - 1day'.",
-                                 "minimum" : 0,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (0 - N)"
-                              },
-                              "year" : {
-                                 "description" : "Year. Defaults to current year. You will get statistics for the whole year if you do not specify a month or day.",
-                                 "maximum" : 3000,
-                                 "minimum" : 1900,
-                                 "optional" : 1,
-                                 "type" : "integer",
-                                 "typetext" : "<integer> (1900 - 3000)"
-                              }
-                           }
-                        },
-                        "permissions" : {
-                           "check" : [
-                              "admin",
-                              "qmanager",
-                              "audit"
-                           ]
-                        },
-                        "returns" : {
-                           "items" : {
-                              "properties" : {
-                                 "blocked" : {
-                                    "description" : "Mail was blocked.",
-                                    "type" : "boolean"
-                                 },
-                                 "bytes" : {
-                                    "description" : "Mail traffic (Bytes).",
-                                    "type" : "number"
-                                 },
-                                 "sender" : {
-                                    "description" : "Sender email.",
-                                    "type" : "string"
-                                 },
-                                 "spamlevel" : {
-                                    "description" : "Spam score.",
-                                    "type" : "number"
-                                 },
-                                 "time" : {
-                                    "description" : "Receive time stamp",
-                                    "type" : "integer"
-                                 },
-                                 "virusinfo" : {
-                                    "description" : "Virus name.",
-                                    "optional" : 1,
-                                    "type" : "string"
-                                 }
-                              },
-                              "type" : "object"
-                           },
-                           "type" : "array"
-                        }
-                     }
-                  },
-                  "leaf" : 1,
-                  "path" : "/statistics/receiver/{receiver}",
-                  "text" : "{receiver}"
-               }
-            ],
             "info" : {
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "Receiver Address Statistics.",
                   "method" : "GET",
                   "name" : "receiver",
@@ -13111,13 +17858,14 @@ var pmgapi = [
                   }
                }
             },
-            "leaf" : 0,
+            "leaf" : 1,
             "path" : "/statistics/receiver",
             "text" : "receiver"
          },
          {
             "info" : {
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "Mail Domains Statistics.",
                   "method" : "GET",
                   "name" : "domains",
@@ -13224,6 +17972,7 @@ var pmgapi = [
          {
             "info" : {
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "General Mail Statistics.",
                   "method" : "GET",
                   "name" : "mail",
@@ -13363,6 +18112,7 @@ var pmgapi = [
          {
             "info" : {
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "Mail Count Statistics.",
                   "method" : "GET",
                   "name" : "recent",
@@ -13465,6 +18215,7 @@ var pmgapi = [
          {
             "info" : {
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "Top recent Mail Receivers (including spam)",
                   "method" : "GET",
                   "name" : "recentreceivers",
@@ -13523,6 +18274,7 @@ var pmgapi = [
          {
             "info" : {
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "Mail Count Statistics.",
                   "method" : "GET",
                   "name" : "mailcount",
@@ -13654,6 +18406,7 @@ var pmgapi = [
          {
             "info" : {
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "Get Statistics about detected Viruses.",
                   "method" : "GET",
                   "name" : "virus",
@@ -13732,6 +18485,7 @@ var pmgapi = [
          {
             "info" : {
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "Get the count of spam mails grouped by spam score. Count for score 10 includes mails with spam score > 10.",
                   "method" : "GET",
                   "name" : "spamscores",
@@ -13814,6 +18568,7 @@ var pmgapi = [
          {
             "info" : {
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "Get the count of spam mails grouped by spam score. Count for score 10 includes mails with spam score > 10.",
                   "method" : "GET",
                   "name" : "maildistribution",
@@ -13924,6 +18679,7 @@ var pmgapi = [
          {
             "info" : {
                "GET" : {
+                  "allowtoken" : 1,
                   "description" : "Early SMTP reject count statistic (RBL, PREGREET rejects with postscreen)",
                   "method" : "GET",
                   "name" : "rejectcount",
@@ -14019,6 +18775,7 @@ var pmgapi = [
       ],
       "info" : {
          "GET" : {
+            "allowtoken" : 1,
             "description" : "Directory index.",
             "method" : "GET",
             "name" : "index",
@@ -14054,6 +18811,7 @@ var pmgapi = [
    {
       "info" : {
          "GET" : {
+            "allowtoken" : 1,
             "description" : "API version details.",
             "method" : "GET",
             "name" : "version",
@@ -14066,12 +18824,15 @@ var pmgapi = [
             "returns" : {
                "properties" : {
                   "release" : {
+                     "description" : "The current installed Proxmox Mailgateway Release",
                      "type" : "string"
                   },
                   "repoid" : {
+                     "description" : "The short git commit hash ID from which this version was build",
                      "type" : "string"
                   },
                   "version" : {
+                     "description" : "The current installed pmg-api package version",
                      "type" : "string"
                   }
                },