diff --git a/src/PSProxmoxVE/Cmdlets/Backup/NewPveBackupCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Backup/NewPveBackupCmdlet.cs
index e48b4eb..50c98b3 100644
--- a/src/PSProxmoxVE/Cmdlets/Backup/NewPveBackupCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Backup/NewPveBackupCmdlet.cs
@@ -48,7 +48,7 @@ namespace PSProxmoxVE.Cmdlets.Backup
/// The compression algorithm to use.
///
[Parameter(Mandatory = false, HelpMessage = "The compression algorithm.")]
- [ValidateSet("zstd", "lzo", "gzip", "none")]
+ [ValidateSet("zstd", "lzo", "gzip", "0")]
public string? Compress { get; set; }
///
diff --git a/src/PSProxmoxVE/Cmdlets/Backup/NewPveBackupJobCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Backup/NewPveBackupJobCmdlet.cs
index 696809f..5daf7c5 100644
--- a/src/PSProxmoxVE/Cmdlets/Backup/NewPveBackupJobCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Backup/NewPveBackupJobCmdlet.cs
@@ -51,7 +51,7 @@ namespace PSProxmoxVE.Cmdlets.Backup
/// The compression algorithm to use.
///
[Parameter(Mandatory = false, HelpMessage = "The compression algorithm.")]
- [ValidateSet("zstd", "lzo", "gzip", "none")]
+ [ValidateSet("zstd", "lzo", "gzip", "0")]
public string? Compress { get; set; }
///
diff --git a/src/PSProxmoxVE/Cmdlets/Backup/SetPveBackupJobCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Backup/SetPveBackupJobCmdlet.cs
index 4b713f6..0d710d1 100644
--- a/src/PSProxmoxVE/Cmdlets/Backup/SetPveBackupJobCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Backup/SetPveBackupJobCmdlet.cs
@@ -56,7 +56,7 @@ namespace PSProxmoxVE.Cmdlets.Backup
/// Updated compression algorithm.
///
[Parameter(Mandatory = false, HelpMessage = "The compression algorithm.")]
- [ValidateSet("zstd", "lzo", "gzip", "none")]
+ [ValidateSet("zstd", "lzo", "gzip", "0")]
public string? Compress { get; set; }
///
diff --git a/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterResourceCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterResourceCmdlet.cs
index b897d20..f2ef8ff 100644
--- a/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterResourceCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterResourceCmdlet.cs
@@ -19,8 +19,8 @@ namespace PSProxmoxVE.Cmdlets.Cluster
///
/// Filter by resource type.
///
- [Parameter(Mandatory = false, Position = 0, HelpMessage = "Filter by resource type (vm, lxc, node, storage, sdn).")]
- [ValidateSet("vm", "lxc", "node", "storage", "sdn")]
+ [Parameter(Mandatory = false, Position = 0, HelpMessage = "Filter by resource type (vm, node, storage, sdn).")]
+ [ValidateSet("vm", "node", "storage", "sdn")]
public string? Type { get; set; }
///
diff --git a/src/PSProxmoxVE/Cmdlets/Storage/NewPveStorageCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Storage/NewPveStorageCmdlet.cs
index f8d643a..40f1fe4 100644
--- a/src/PSProxmoxVE/Cmdlets/Storage/NewPveStorageCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Storage/NewPveStorageCmdlet.cs
@@ -25,7 +25,7 @@ namespace PSProxmoxVE.Cmdlets.Storage
/// The storage type (e.g., "dir", "nfs", "lvm", "zfspool", "cephfs", "rbd").
[Parameter(Mandatory = true, Position = 1, HelpMessage = "The storage type (e.g. dir, nfs, lvm, zfspool).")]
[ValidateSet("dir", "nfs", "lvm", "lvmthin", "zfspool", "zfs", "cephfs", "rbd",
- "iscsi", "iscsidirect", "glusterfs", "cifs", "pbs", IgnoreCase = true)]
+ "iscsi", "iscsidirect", "cifs", "pbs", "btrfs", "esxi", IgnoreCase = true)]
public string Type { get; set; } = string.Empty;
/// Comma-separated list of content types to support (e.g., "iso,vztmpl,backup").
diff --git a/tests/PSProxmoxVE.Core.Tests/Fixtures/pve-api-enums.json b/tests/PSProxmoxVE.Core.Tests/Fixtures/pve-api-enums.json
new file mode 100644
index 0000000..ab44aaa
--- /dev/null
+++ b/tests/PSProxmoxVE.Core.Tests/Fixtures/pve-api-enums.json
@@ -0,0 +1,9216 @@
+{
+ "paths": {
+ "/cluster": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/cluster/replication": {
+ "get": {
+ "responseFields": [
+ "comment",
+ "disable",
+ "guest",
+ "id",
+ "jobnum",
+ "rate",
+ "remove_job",
+ "schedule",
+ "source",
+ "target",
+ "type"
+ ]
+ },
+ "post": {
+ "params": {
+ "remove_job": {
+ "enum": [
+ "local",
+ "full"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "local"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/replication/{id}": {
+ "get": {
+ "responseFields": [
+ "comment",
+ "digest",
+ "disable",
+ "guest",
+ "id",
+ "jobnum",
+ "rate",
+ "remove_job",
+ "schedule",
+ "source",
+ "target",
+ "type"
+ ]
+ },
+ "put": {
+ "params": {
+ "remove_job": {
+ "enum": [
+ "local",
+ "full"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/metrics": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/cluster/metrics/server": {
+ "get": {
+ "responseFields": [
+ "disable",
+ "id",
+ "port",
+ "server",
+ "type"
+ ]
+ }
+ },
+ "/cluster/metrics/server/{id}": {
+ "post": {
+ "params": {
+ "influxdbproto": {
+ "enum": [
+ "udp",
+ "http",
+ "https"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "otel-compression": {
+ "enum": [
+ "none",
+ "gzip"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "otel-protocol": {
+ "enum": [
+ "http",
+ "https"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "proto": {
+ "enum": [
+ "udp",
+ "tcp"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "graphite",
+ "influxdb",
+ "opentelemetry"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ },
+ "put": {
+ "params": {
+ "influxdbproto": {
+ "enum": [
+ "udp",
+ "http",
+ "https"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "otel-compression": {
+ "enum": [
+ "none",
+ "gzip"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "otel-protocol": {
+ "enum": [
+ "http",
+ "https"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "proto": {
+ "enum": [
+ "udp",
+ "tcp"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/metrics/export": {
+ "get": {
+ "responseFields": [
+ "data"
+ ]
+ }
+ },
+ "/cluster/notifications": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/cluster/notifications/matcher-fields": {
+ "get": {
+ "responseFields": [
+ "name"
+ ]
+ }
+ },
+ "/cluster/notifications/matcher-field-values": {
+ "get": {
+ "responseFields": [
+ "comment",
+ "field",
+ "value"
+ ]
+ }
+ },
+ "/cluster/notifications/endpoints": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/cluster/notifications/endpoints/sendmail": {
+ "get": {
+ "responseFields": [
+ "author",
+ "comment",
+ "disable",
+ "from-address",
+ "mailto",
+ "mailto-user",
+ "name",
+ "origin"
+ ]
+ }
+ },
+ "/cluster/notifications/endpoints/sendmail/{name}": {
+ "get": {
+ "responseFields": [
+ "author",
+ "comment",
+ "digest",
+ "disable",
+ "from-address",
+ "mailto",
+ "mailto-user",
+ "name"
+ ]
+ }
+ },
+ "/cluster/notifications/endpoints/gotify": {
+ "get": {
+ "responseFields": [
+ "comment",
+ "disable",
+ "name",
+ "origin",
+ "server"
+ ]
+ }
+ },
+ "/cluster/notifications/endpoints/gotify/{name}": {
+ "get": {
+ "responseFields": [
+ "comment",
+ "digest",
+ "disable",
+ "name",
+ "server"
+ ]
+ }
+ },
+ "/cluster/notifications/endpoints/smtp": {
+ "get": {
+ "responseFields": [
+ "author",
+ "comment",
+ "disable",
+ "from-address",
+ "mailto",
+ "mailto-user",
+ "mode",
+ "name",
+ "origin",
+ "port",
+ "server",
+ "username"
+ ]
+ },
+ "post": {
+ "params": {
+ "mode": {
+ "enum": [
+ "insecure",
+ "starttls",
+ "tls"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/notifications/endpoints/smtp/{name}": {
+ "get": {
+ "responseFields": [
+ "author",
+ "comment",
+ "digest",
+ "disable",
+ "from-address",
+ "mailto",
+ "mailto-user",
+ "mode",
+ "name",
+ "port",
+ "server",
+ "username"
+ ]
+ },
+ "put": {
+ "params": {
+ "mode": {
+ "enum": [
+ "insecure",
+ "starttls",
+ "tls"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/notifications/endpoints/webhook": {
+ "get": {
+ "responseFields": [
+ "body",
+ "comment",
+ "disable",
+ "header",
+ "method",
+ "name",
+ "origin",
+ "secret",
+ "url"
+ ]
+ },
+ "post": {
+ "params": {
+ "method": {
+ "enum": [
+ "post",
+ "put",
+ "get"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/notifications/endpoints/webhook/{name}": {
+ "get": {
+ "responseFields": [
+ "body",
+ "comment",
+ "digest",
+ "disable",
+ "header",
+ "method",
+ "name",
+ "secret",
+ "url"
+ ]
+ },
+ "put": {
+ "params": {
+ "method": {
+ "enum": [
+ "post",
+ "put",
+ "get"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/notifications/targets": {
+ "get": {
+ "responseFields": [
+ "comment",
+ "disable",
+ "name",
+ "origin",
+ "type"
+ ]
+ }
+ },
+ "/cluster/notifications/matchers": {
+ "get": {
+ "responseFields": [
+ "comment",
+ "disable",
+ "invert-match",
+ "match-calendar",
+ "match-field",
+ "match-severity",
+ "mode",
+ "name",
+ "origin",
+ "target"
+ ]
+ },
+ "post": {
+ "params": {
+ "mode": {
+ "enum": [
+ "all",
+ "any"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/notifications/matchers/{name}": {
+ "get": {
+ "responseFields": [
+ "comment",
+ "digest",
+ "disable",
+ "invert-match",
+ "match-calendar",
+ "match-field",
+ "match-severity",
+ "mode",
+ "name",
+ "target"
+ ]
+ },
+ "put": {
+ "params": {
+ "mode": {
+ "enum": [
+ "all",
+ "any"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/config": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/cluster/config/nodes": {
+ "get": {
+ "responseFields": [
+ "node"
+ ]
+ }
+ },
+ "/cluster/config/nodes/{node}": {
+ "post": {
+ "responseFields": [
+ "corosync_authkey",
+ "corosync_conf",
+ "warnings"
+ ]
+ }
+ },
+ "/cluster/config/join": {
+ "get": {
+ "responseFields": [
+ "config_digest",
+ "nodelist",
+ "preferred_node",
+ "totem"
+ ]
+ }
+ },
+ "/cluster/firewall": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/cluster/firewall/groups": {
+ "get": {
+ "responseFields": [
+ "comment",
+ "digest",
+ "group"
+ ]
+ }
+ },
+ "/cluster/firewall/groups/{group}": {
+ "get": {
+ "responseFields": [
+ "action",
+ "comment",
+ "dest",
+ "dport",
+ "enable",
+ "icmp-type",
+ "iface",
+ "ipversion",
+ "log",
+ "macro",
+ "pos",
+ "proto",
+ "source",
+ "sport",
+ "type"
+ ]
+ },
+ "post": {
+ "params": {
+ "log": {
+ "enum": [
+ "emerg",
+ "alert",
+ "crit",
+ "err",
+ "warning",
+ "notice",
+ "info",
+ "debug",
+ "nolog"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "in",
+ "out",
+ "forward",
+ "group"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/firewall/groups/{group}/{pos}": {
+ "get": {
+ "responseFields": [
+ "action",
+ "comment",
+ "dest",
+ "dport",
+ "enable",
+ "icmp-type",
+ "iface",
+ "ipversion",
+ "log",
+ "macro",
+ "pos",
+ "proto",
+ "source",
+ "sport",
+ "type"
+ ]
+ },
+ "put": {
+ "params": {
+ "log": {
+ "enum": [
+ "emerg",
+ "alert",
+ "crit",
+ "err",
+ "warning",
+ "notice",
+ "info",
+ "debug",
+ "nolog"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "in",
+ "out",
+ "forward",
+ "group"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/firewall/rules": {
+ "get": {
+ "responseFields": [
+ "action",
+ "comment",
+ "dest",
+ "dport",
+ "enable",
+ "icmp-type",
+ "iface",
+ "ipversion",
+ "log",
+ "macro",
+ "pos",
+ "proto",
+ "source",
+ "sport",
+ "type"
+ ]
+ },
+ "post": {
+ "params": {
+ "log": {
+ "enum": [
+ "emerg",
+ "alert",
+ "crit",
+ "err",
+ "warning",
+ "notice",
+ "info",
+ "debug",
+ "nolog"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "in",
+ "out",
+ "forward",
+ "group"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/firewall/rules/{pos}": {
+ "get": {
+ "responseFields": [
+ "action",
+ "comment",
+ "dest",
+ "dport",
+ "enable",
+ "icmp-type",
+ "iface",
+ "ipversion",
+ "log",
+ "macro",
+ "pos",
+ "proto",
+ "source",
+ "sport",
+ "type"
+ ]
+ },
+ "put": {
+ "params": {
+ "log": {
+ "enum": [
+ "emerg",
+ "alert",
+ "crit",
+ "err",
+ "warning",
+ "notice",
+ "info",
+ "debug",
+ "nolog"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "in",
+ "out",
+ "forward",
+ "group"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/firewall/ipset": {
+ "get": {
+ "responseFields": [
+ "comment",
+ "digest",
+ "name"
+ ]
+ }
+ },
+ "/cluster/firewall/ipset/{name}": {
+ "get": {
+ "responseFields": [
+ "cidr",
+ "comment",
+ "digest",
+ "nomatch"
+ ]
+ }
+ },
+ "/cluster/firewall/aliases": {
+ "get": {
+ "responseFields": [
+ "cidr",
+ "comment",
+ "digest",
+ "name"
+ ]
+ }
+ },
+ "/cluster/firewall/options": {
+ "get": {
+ "responseFields": [
+ "ebtables",
+ "enable",
+ "log_ratelimit",
+ "policy_forward",
+ "policy_in",
+ "policy_out"
+ ]
+ },
+ "put": {
+ "params": {
+ "policy_forward": {
+ "enum": [
+ "ACCEPT",
+ "DROP"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "policy_in": {
+ "enum": [
+ "ACCEPT",
+ "REJECT",
+ "DROP"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "policy_out": {
+ "enum": [
+ "ACCEPT",
+ "REJECT",
+ "DROP"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/firewall/macros": {
+ "get": {
+ "responseFields": [
+ "descr",
+ "macro"
+ ]
+ }
+ },
+ "/cluster/firewall/refs": {
+ "get": {
+ "params": {
+ "type": {
+ "enum": [
+ "alias",
+ "ipset"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "comment",
+ "name",
+ "ref",
+ "scope",
+ "type"
+ ]
+ }
+ },
+ "/cluster/backup": {
+ "get": {
+ "responseFields": [
+ "id"
+ ]
+ },
+ "post": {
+ "params": {
+ "compress": {
+ "enum": [
+ "0",
+ "1",
+ "gzip",
+ "lzo",
+ "zstd"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "dow": {
+ "enum": null,
+ "x-enum-values": [
+ "mon",
+ "tue",
+ "wed",
+ "thu",
+ "fri",
+ "sat",
+ "sun"
+ ],
+ "type": "string"
+ },
+ "mailnotification": {
+ "enum": [
+ "always",
+ "failure"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "mode": {
+ "enum": [
+ "snapshot",
+ "suspend",
+ "stop"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "notification-mode": {
+ "enum": [
+ "auto",
+ "legacy-sendmail",
+ "notification-system"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "pbs-change-detection-mode": {
+ "enum": [
+ "legacy",
+ "data",
+ "metadata"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/backup/{id}": {
+ "put": {
+ "params": {
+ "compress": {
+ "enum": [
+ "0",
+ "1",
+ "gzip",
+ "lzo",
+ "zstd"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "dow": {
+ "enum": null,
+ "x-enum-values": [
+ "mon",
+ "tue",
+ "wed",
+ "thu",
+ "fri",
+ "sat",
+ "sun"
+ ],
+ "type": "string"
+ },
+ "mailnotification": {
+ "enum": [
+ "always",
+ "failure"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "mode": {
+ "enum": [
+ "snapshot",
+ "suspend",
+ "stop"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "notification-mode": {
+ "enum": [
+ "auto",
+ "legacy-sendmail",
+ "notification-system"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "pbs-change-detection-mode": {
+ "enum": [
+ "legacy",
+ "data",
+ "metadata"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/backup/{id}/included_volumes": {
+ "get": {
+ "responseFields": [
+ "children"
+ ]
+ }
+ },
+ "/cluster/backup-info": {
+ "get": {
+ "responseFields": [
+ "subdir"
+ ]
+ }
+ },
+ "/cluster/backup-info/not-backed-up": {
+ "get": {
+ "responseFields": [
+ "name",
+ "type",
+ "vmid"
+ ]
+ }
+ },
+ "/cluster/ha": {
+ "get": {
+ "responseFields": [
+ "id"
+ ]
+ }
+ },
+ "/cluster/ha/resources": {
+ "get": {
+ "params": {
+ "type": {
+ "enum": [
+ "ct",
+ "vm"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "sid"
+ ]
+ },
+ "post": {
+ "params": {
+ "state": {
+ "enum": [
+ "started",
+ "stopped",
+ "enabled",
+ "disabled",
+ "ignored"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "ct",
+ "vm"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/ha/resources/{sid}": {
+ "get": {
+ "responseFields": [
+ "comment",
+ "digest",
+ "failback",
+ "group",
+ "max_relocate",
+ "max_restart",
+ "sid",
+ "state",
+ "type"
+ ]
+ },
+ "put": {
+ "params": {
+ "state": {
+ "enum": [
+ "started",
+ "stopped",
+ "enabled",
+ "disabled",
+ "ignored"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/ha/resources/{sid}/migrate": {
+ "post": {
+ "responseFields": [
+ "blocking-resources",
+ "comigrated-resources",
+ "requested-node",
+ "sid"
+ ]
+ }
+ },
+ "/cluster/ha/resources/{sid}/relocate": {
+ "post": {
+ "responseFields": [
+ "blocking-resources",
+ "comigrated-resources",
+ "requested-node",
+ "sid"
+ ]
+ }
+ },
+ "/cluster/ha/groups": {
+ "get": {
+ "responseFields": [
+ "group"
+ ]
+ },
+ "post": {
+ "params": {
+ "type": {
+ "enum": [
+ "group"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/ha/rules": {
+ "get": {
+ "params": {
+ "type": {
+ "enum": [
+ "node-affinity",
+ "resource-affinity"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "rule"
+ ]
+ },
+ "post": {
+ "params": {
+ "affinity": {
+ "enum": [
+ "positive",
+ "negative"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "node-affinity",
+ "resource-affinity"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/ha/rules/{rule}": {
+ "get": {
+ "responseFields": [
+ "rule",
+ "type"
+ ]
+ },
+ "put": {
+ "params": {
+ "affinity": {
+ "enum": [
+ "positive",
+ "negative"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "node-affinity",
+ "resource-affinity"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/ha/status": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/cluster/ha/status/current": {
+ "get": {
+ "responseFields": [
+ "crm_state",
+ "failback",
+ "id",
+ "max_relocate",
+ "max_restart",
+ "node",
+ "quorate",
+ "request_state",
+ "sid",
+ "state",
+ "status",
+ "timestamp",
+ "type"
+ ]
+ }
+ },
+ "/cluster/acme": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/cluster/acme/plugins": {
+ "get": {
+ "params": {
+ "type": {
+ "enum": [
+ "dns",
+ "standalone"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "api",
+ "data",
+ "digest",
+ "disable",
+ "nodes",
+ "plugin",
+ "type",
+ "validation-delay"
+ ]
+ },
+ "post": {
+ "params": {
+ "api": {
+ "enum": [
+ "1984hosting",
+ "acmedns",
+ "acmeproxy",
+ "active24",
+ "ad",
+ "ali",
+ "alviy",
+ "anx",
+ "artfiles",
+ "arvan",
+ "aurora",
+ "autodns",
+ "aws",
+ "azion",
+ "azure",
+ "beget",
+ "bookmyname",
+ "bunny",
+ "cf",
+ "clouddns",
+ "cloudns",
+ "cn",
+ "conoha",
+ "constellix",
+ "cpanel",
+ "curanet",
+ "cyon",
+ "da",
+ "ddnss",
+ "desec",
+ "df",
+ "dgon",
+ "dnsexit",
+ "dnshome",
+ "dnsimple",
+ "dnsservices",
+ "doapi",
+ "domeneshop",
+ "dp",
+ "dpi",
+ "dreamhost",
+ "duckdns",
+ "durabledns",
+ "dyn",
+ "dynu",
+ "dynv6",
+ "easydns",
+ "edgecenter",
+ "edgedns",
+ "euserv",
+ "exoscale",
+ "fornex",
+ "freedns",
+ "freemyip",
+ "gandi_livedns",
+ "gcloud",
+ "gcore",
+ "gd",
+ "geoscaling",
+ "googledomains",
+ "he",
+ "he_ddns",
+ "hetzner",
+ "hexonet",
+ "hostingde",
+ "huaweicloud",
+ "infoblox",
+ "infomaniak",
+ "internetbs",
+ "inwx",
+ "ionos",
+ "ionos_cloud",
+ "ipv64",
+ "ispconfig",
+ "jd",
+ "joker",
+ "kappernet",
+ "kas",
+ "kinghost",
+ "knot",
+ "la",
+ "leaseweb",
+ "lexicon",
+ "limacity",
+ "linode",
+ "linode_v4",
+ "loopia",
+ "lua",
+ "maradns",
+ "me",
+ "miab",
+ "mijnhost",
+ "misaka",
+ "myapi",
+ "mydevil",
+ "mydnsjp",
+ "mythic_beasts",
+ "namecheap",
+ "namecom",
+ "namesilo",
+ "nanelo",
+ "nederhost",
+ "neodigit",
+ "netcup",
+ "netlify",
+ "nic",
+ "njalla",
+ "nm",
+ "nsd",
+ "nsone",
+ "nsupdate",
+ "nw",
+ "oci",
+ "omglol",
+ "one",
+ "online",
+ "openprovider",
+ "openstack",
+ "opnsense",
+ "ovh",
+ "pdns",
+ "pleskxml",
+ "pointhq",
+ "porkbun",
+ "rackcorp",
+ "rackspace",
+ "rage4",
+ "rcode0",
+ "regru",
+ "scaleway",
+ "schlundtech",
+ "selectel",
+ "selfhost",
+ "servercow",
+ "simply",
+ "technitium",
+ "tele3",
+ "tencent",
+ "timeweb",
+ "transip",
+ "udr",
+ "ultra",
+ "unoeuro",
+ "variomedia",
+ "veesp",
+ "vercel",
+ "vscale",
+ "vultr",
+ "websupport",
+ "west_cn",
+ "world4you",
+ "yandex360",
+ "yc",
+ "zilore",
+ "zone",
+ "zoneedit",
+ "zonomi"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "dns",
+ "standalone"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/acme/plugins/{id}": {
+ "get": {
+ "responseFields": [
+ "api",
+ "data",
+ "digest",
+ "disable",
+ "nodes",
+ "plugin",
+ "type",
+ "validation-delay"
+ ]
+ },
+ "put": {
+ "params": {
+ "api": {
+ "enum": [
+ "1984hosting",
+ "acmedns",
+ "acmeproxy",
+ "active24",
+ "ad",
+ "ali",
+ "alviy",
+ "anx",
+ "artfiles",
+ "arvan",
+ "aurora",
+ "autodns",
+ "aws",
+ "azion",
+ "azure",
+ "beget",
+ "bookmyname",
+ "bunny",
+ "cf",
+ "clouddns",
+ "cloudns",
+ "cn",
+ "conoha",
+ "constellix",
+ "cpanel",
+ "curanet",
+ "cyon",
+ "da",
+ "ddnss",
+ "desec",
+ "df",
+ "dgon",
+ "dnsexit",
+ "dnshome",
+ "dnsimple",
+ "dnsservices",
+ "doapi",
+ "domeneshop",
+ "dp",
+ "dpi",
+ "dreamhost",
+ "duckdns",
+ "durabledns",
+ "dyn",
+ "dynu",
+ "dynv6",
+ "easydns",
+ "edgecenter",
+ "edgedns",
+ "euserv",
+ "exoscale",
+ "fornex",
+ "freedns",
+ "freemyip",
+ "gandi_livedns",
+ "gcloud",
+ "gcore",
+ "gd",
+ "geoscaling",
+ "googledomains",
+ "he",
+ "he_ddns",
+ "hetzner",
+ "hexonet",
+ "hostingde",
+ "huaweicloud",
+ "infoblox",
+ "infomaniak",
+ "internetbs",
+ "inwx",
+ "ionos",
+ "ionos_cloud",
+ "ipv64",
+ "ispconfig",
+ "jd",
+ "joker",
+ "kappernet",
+ "kas",
+ "kinghost",
+ "knot",
+ "la",
+ "leaseweb",
+ "lexicon",
+ "limacity",
+ "linode",
+ "linode_v4",
+ "loopia",
+ "lua",
+ "maradns",
+ "me",
+ "miab",
+ "mijnhost",
+ "misaka",
+ "myapi",
+ "mydevil",
+ "mydnsjp",
+ "mythic_beasts",
+ "namecheap",
+ "namecom",
+ "namesilo",
+ "nanelo",
+ "nederhost",
+ "neodigit",
+ "netcup",
+ "netlify",
+ "nic",
+ "njalla",
+ "nm",
+ "nsd",
+ "nsone",
+ "nsupdate",
+ "nw",
+ "oci",
+ "omglol",
+ "one",
+ "online",
+ "openprovider",
+ "openstack",
+ "opnsense",
+ "ovh",
+ "pdns",
+ "pleskxml",
+ "pointhq",
+ "porkbun",
+ "rackcorp",
+ "rackspace",
+ "rage4",
+ "rcode0",
+ "regru",
+ "scaleway",
+ "schlundtech",
+ "selectel",
+ "selfhost",
+ "servercow",
+ "simply",
+ "technitium",
+ "tele3",
+ "tencent",
+ "timeweb",
+ "transip",
+ "udr",
+ "ultra",
+ "unoeuro",
+ "variomedia",
+ "veesp",
+ "vercel",
+ "vscale",
+ "vultr",
+ "websupport",
+ "west_cn",
+ "world4you",
+ "yandex360",
+ "yc",
+ "zilore",
+ "zone",
+ "zoneedit",
+ "zonomi"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/acme/account": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/cluster/acme/account/{name}": {
+ "get": {
+ "responseFields": [
+ "account",
+ "directory",
+ "location",
+ "tos"
+ ]
+ }
+ },
+ "/cluster/acme/meta": {
+ "get": {
+ "responseFields": [
+ "caaIdentities",
+ "externalAccountRequired",
+ "termsOfService",
+ "website"
+ ]
+ }
+ },
+ "/cluster/acme/directories": {
+ "get": {
+ "responseFields": [
+ "name",
+ "url"
+ ]
+ }
+ },
+ "/cluster/acme/challenge-schema": {
+ "get": {
+ "responseFields": [
+ "id",
+ "name",
+ "schema",
+ "type"
+ ]
+ }
+ },
+ "/cluster/ceph": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/cluster/ceph/metadata": {
+ "get": {
+ "params": {
+ "scope": {
+ "enum": [
+ "all",
+ "versions"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "mds",
+ "mgr",
+ "mon",
+ "node",
+ "osd"
+ ]
+ }
+ },
+ "/cluster/ceph/flags": {
+ "get": {
+ "responseFields": [
+ "description",
+ "name",
+ "value"
+ ]
+ }
+ },
+ "/cluster/ceph/flags/{flag}": {
+ "get": {
+ "params": {
+ "flag": {
+ "enum": [
+ "nobackfill",
+ "nodeep-scrub",
+ "nodown",
+ "noin",
+ "noout",
+ "norebalance",
+ "norecover",
+ "noscrub",
+ "notieragent",
+ "noup",
+ "pause"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ },
+ "put": {
+ "params": {
+ "flag": {
+ "enum": [
+ "nobackfill",
+ "nodeep-scrub",
+ "nodown",
+ "noin",
+ "noout",
+ "norebalance",
+ "norecover",
+ "noscrub",
+ "notieragent",
+ "noup",
+ "pause"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/jobs": {
+ "get": {
+ "responseFields": [
+ "subdir"
+ ]
+ }
+ },
+ "/cluster/jobs/realm-sync": {
+ "get": {
+ "responseFields": [
+ "comment",
+ "enabled",
+ "id",
+ "last-run",
+ "next-run",
+ "realm",
+ "remove-vanished",
+ "schedule",
+ "scope"
+ ]
+ }
+ },
+ "/cluster/jobs/realm-sync/{id}": {
+ "post": {
+ "params": {
+ "scope": {
+ "enum": [
+ "users",
+ "groups",
+ "both"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ },
+ "put": {
+ "params": {
+ "scope": {
+ "enum": [
+ "users",
+ "groups",
+ "both"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/jobs/schedule-analyze": {
+ "get": {
+ "responseFields": [
+ "timestamp",
+ "utc"
+ ]
+ }
+ },
+ "/cluster/mapping/dir": {
+ "get": {
+ "responseFields": [
+ "checks",
+ "description",
+ "id",
+ "map"
+ ]
+ }
+ },
+ "/cluster/mapping/pci": {
+ "get": {
+ "responseFields": [
+ "checks",
+ "description",
+ "id",
+ "map"
+ ]
+ }
+ },
+ "/cluster/mapping/usb": {
+ "get": {
+ "responseFields": [
+ "description",
+ "error",
+ "id",
+ "map"
+ ]
+ }
+ },
+ "/cluster/bulk-action/guest": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/cluster/sdn": {
+ "get": {
+ "responseFields": [
+ "id"
+ ]
+ }
+ },
+ "/cluster/sdn/vnets": {
+ "get": {
+ "responseFields": [
+ "alias",
+ "digest",
+ "isolate-ports",
+ "pending",
+ "state",
+ "tag",
+ "type",
+ "vlanaware",
+ "vnet",
+ "zone"
+ ]
+ },
+ "post": {
+ "params": {
+ "type": {
+ "enum": [
+ "vnet"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/sdn/vnets/{vnet}/firewall": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/cluster/sdn/vnets/{vnet}/firewall/rules": {
+ "get": {
+ "responseFields": [
+ "action",
+ "comment",
+ "dest",
+ "dport",
+ "enable",
+ "icmp-type",
+ "iface",
+ "ipversion",
+ "log",
+ "macro",
+ "pos",
+ "proto",
+ "source",
+ "sport",
+ "type"
+ ]
+ },
+ "post": {
+ "params": {
+ "log": {
+ "enum": [
+ "emerg",
+ "alert",
+ "crit",
+ "err",
+ "warning",
+ "notice",
+ "info",
+ "debug",
+ "nolog"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "in",
+ "out",
+ "forward",
+ "group"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/sdn/vnets/{vnet}/firewall/rules/{pos}": {
+ "get": {
+ "responseFields": [
+ "action",
+ "comment",
+ "dest",
+ "dport",
+ "enable",
+ "icmp-type",
+ "iface",
+ "ipversion",
+ "log",
+ "macro",
+ "pos",
+ "proto",
+ "source",
+ "sport",
+ "type"
+ ]
+ },
+ "put": {
+ "params": {
+ "log": {
+ "enum": [
+ "emerg",
+ "alert",
+ "crit",
+ "err",
+ "warning",
+ "notice",
+ "info",
+ "debug",
+ "nolog"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "in",
+ "out",
+ "forward",
+ "group"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/sdn/vnets/{vnet}/firewall/options": {
+ "get": {
+ "responseFields": [
+ "enable",
+ "log_level_forward",
+ "policy_forward"
+ ]
+ },
+ "put": {
+ "params": {
+ "log_level_forward": {
+ "enum": [
+ "emerg",
+ "alert",
+ "crit",
+ "err",
+ "warning",
+ "notice",
+ "info",
+ "debug",
+ "nolog"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "policy_forward": {
+ "enum": [
+ "ACCEPT",
+ "DROP"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/sdn/vnets/{vnet}/subnets": {
+ "get": {
+ "responseFields": []
+ },
+ "post": {
+ "params": {
+ "type": {
+ "enum": [
+ "subnet"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/sdn/zones": {
+ "get": {
+ "params": {
+ "type": {
+ "enum": [
+ "evpn",
+ "faucet",
+ "qinq",
+ "simple",
+ "vlan",
+ "vxlan"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "advertise-subnets",
+ "bridge",
+ "bridge-disable-mac-learning",
+ "controller",
+ "dhcp",
+ "digest",
+ "disable-arp-nd-suppression",
+ "dns",
+ "dnszone",
+ "exitnodes",
+ "exitnodes-local-routing",
+ "exitnodes-primary",
+ "ipam",
+ "mac",
+ "mtu",
+ "nodes",
+ "peers",
+ "pending",
+ "reversedns",
+ "rt-import",
+ "state",
+ "tag",
+ "type",
+ "vlan-protocol",
+ "vrf-vxlan",
+ "vxlan-port",
+ "zone"
+ ]
+ },
+ "post": {
+ "params": {
+ "dhcp": {
+ "enum": [
+ "dnsmasq"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "evpn",
+ "faucet",
+ "qinq",
+ "simple",
+ "vlan",
+ "vxlan"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "vlan-protocol": {
+ "enum": [
+ "802.1q",
+ "802.1ad"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/sdn/zones/{zone}": {
+ "put": {
+ "params": {
+ "dhcp": {
+ "enum": [
+ "dnsmasq"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "vlan-protocol": {
+ "enum": [
+ "802.1q",
+ "802.1ad"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/sdn/controllers": {
+ "get": {
+ "params": {
+ "type": {
+ "enum": [
+ "bgp",
+ "evpn",
+ "faucet",
+ "isis"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "asn",
+ "bgp-multipath-as-relax",
+ "controller",
+ "digest",
+ "ebgp",
+ "ebgp-multihop",
+ "isis-domain",
+ "isis-ifaces",
+ "isis-net",
+ "loopback",
+ "node",
+ "peers",
+ "pending",
+ "state",
+ "type"
+ ]
+ },
+ "post": {
+ "params": {
+ "type": {
+ "enum": [
+ "bgp",
+ "evpn",
+ "faucet",
+ "isis"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/sdn/ipams": {
+ "get": {
+ "params": {
+ "type": {
+ "enum": [
+ "netbox",
+ "phpipam",
+ "pve"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "ipam",
+ "type"
+ ]
+ },
+ "post": {
+ "params": {
+ "type": {
+ "enum": [
+ "netbox",
+ "phpipam",
+ "pve"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/sdn/dns": {
+ "get": {
+ "params": {
+ "type": {
+ "enum": [
+ "powerdns"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "dns",
+ "type"
+ ]
+ },
+ "post": {
+ "params": {
+ "type": {
+ "enum": [
+ "powerdns"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/sdn/fabrics": {
+ "get": {
+ "responseFields": [
+ "subdir"
+ ]
+ }
+ },
+ "/cluster/sdn/fabrics/fabric": {
+ "get": {
+ "responseFields": [
+ "area",
+ "csnp_interval",
+ "digest",
+ "hello_interval",
+ "id",
+ "ip6_prefix",
+ "ip_prefix",
+ "lock-token",
+ "protocol"
+ ]
+ },
+ "post": {
+ "params": {
+ "protocol": {
+ "enum": [
+ "openfabric",
+ "ospf"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/sdn/fabrics/fabric/{id}": {
+ "get": {
+ "responseFields": [
+ "area",
+ "csnp_interval",
+ "digest",
+ "hello_interval",
+ "id",
+ "ip6_prefix",
+ "ip_prefix",
+ "lock-token",
+ "protocol"
+ ]
+ },
+ "put": {
+ "params": {
+ "protocol": {
+ "enum": [
+ "openfabric",
+ "ospf"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/sdn/fabrics/node": {
+ "get": {
+ "responseFields": [
+ "digest",
+ "fabric_id",
+ "interfaces",
+ "ip",
+ "ip6",
+ "lock-token",
+ "node_id",
+ "protocol"
+ ]
+ }
+ },
+ "/cluster/sdn/fabrics/node/{fabric_id}": {
+ "get": {
+ "responseFields": [
+ "digest",
+ "fabric_id",
+ "interfaces",
+ "ip",
+ "ip6",
+ "lock-token",
+ "node_id",
+ "protocol"
+ ]
+ },
+ "post": {
+ "params": {
+ "protocol": {
+ "enum": [
+ "openfabric",
+ "ospf"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/sdn/fabrics/node/{fabric_id}/{node_id}": {
+ "put": {
+ "params": {
+ "protocol": {
+ "enum": [
+ "openfabric",
+ "ospf"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/sdn/fabrics/all": {
+ "get": {
+ "responseFields": [
+ "fabrics",
+ "nodes"
+ ]
+ }
+ },
+ "/cluster/log": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/cluster/resources": {
+ "get": {
+ "params": {
+ "type": {
+ "enum": [
+ "vm",
+ "storage",
+ "node",
+ "sdn"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "cgroup-mode",
+ "content",
+ "cpu",
+ "disk",
+ "diskread",
+ "diskwrite",
+ "hastate",
+ "id",
+ "level",
+ "lock",
+ "maxcpu",
+ "maxdisk",
+ "maxmem",
+ "mem",
+ "memhost",
+ "name",
+ "netin",
+ "netout",
+ "network",
+ "network-type",
+ "node",
+ "plugintype",
+ "pool",
+ "protocol",
+ "sdn",
+ "status",
+ "storage",
+ "tags",
+ "template",
+ "type",
+ "uptime",
+ "vmid",
+ "zone-type"
+ ]
+ }
+ },
+ "/cluster/tasks": {
+ "get": {
+ "responseFields": [
+ "upid"
+ ]
+ }
+ },
+ "/cluster/options": {
+ "put": {
+ "params": {
+ "console": {
+ "enum": [
+ "applet",
+ "vv",
+ "html5",
+ "xtermjs"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "fencing": {
+ "enum": [
+ "watchdog",
+ "hardware",
+ "both"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "keyboard": {
+ "enum": [
+ "de",
+ "de-ch",
+ "da",
+ "en-gb",
+ "en-us",
+ "es",
+ "fi",
+ "fr",
+ "fr-be",
+ "fr-ca",
+ "fr-ch",
+ "hu",
+ "is",
+ "it",
+ "ja",
+ "lt",
+ "mk",
+ "nl",
+ "no",
+ "pl",
+ "pt",
+ "pt-br",
+ "sv",
+ "sl",
+ "tr"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "language": {
+ "enum": [
+ "ar",
+ "ca",
+ "da",
+ "de",
+ "en",
+ "es",
+ "eu",
+ "fa",
+ "fr",
+ "hr",
+ "he",
+ "it",
+ "ja",
+ "ka",
+ "kr",
+ "nb",
+ "nl",
+ "nn",
+ "pl",
+ "pt_BR",
+ "ru",
+ "sl",
+ "sv",
+ "tr",
+ "ukr",
+ "zh_CN",
+ "zh_TW"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/cluster/status": {
+ "get": {
+ "responseFields": [
+ "id",
+ "ip",
+ "level",
+ "local",
+ "name",
+ "nodeid",
+ "nodes",
+ "online",
+ "quorate",
+ "type",
+ "version"
+ ]
+ }
+ },
+ "/nodes": {
+ "get": {
+ "responseFields": [
+ "cpu",
+ "level",
+ "maxcpu",
+ "maxmem",
+ "mem",
+ "node",
+ "ssl_fingerprint",
+ "status",
+ "uptime"
+ ]
+ }
+ },
+ "/nodes/{node}": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/nodes/{node}/qemu": {
+ "get": {
+ "responseFields": [
+ "cpu",
+ "cpus",
+ "diskread",
+ "diskwrite",
+ "lock",
+ "maxdisk",
+ "maxmem",
+ "mem",
+ "memhost",
+ "name",
+ "netin",
+ "netout",
+ "pid",
+ "pressurecpufull",
+ "pressurecpusome",
+ "pressureiofull",
+ "pressureiosome",
+ "pressurememoryfull",
+ "pressurememorysome",
+ "qmpstatus",
+ "running-machine",
+ "running-qemu",
+ "serial",
+ "status",
+ "tags",
+ "template",
+ "uptime",
+ "vmid"
+ ]
+ },
+ "post": {
+ "params": {
+ "arch": {
+ "enum": [
+ "x86_64",
+ "aarch64"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "bios": {
+ "enum": [
+ "seabios",
+ "ovmf"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "citype": {
+ "enum": [
+ "configdrive2",
+ "nocloud",
+ "opennebula"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "hotplug": {
+ "enum": null,
+ "x-enum-values": [
+ "network",
+ "disk",
+ "cpu",
+ "memory",
+ "usb",
+ "cloudinit"
+ ],
+ "type": "string"
+ },
+ "hugepages": {
+ "enum": [
+ "any",
+ "2",
+ "1024"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "keyboard": {
+ "enum": [
+ "de",
+ "de-ch",
+ "da",
+ "en-gb",
+ "en-us",
+ "es",
+ "fi",
+ "fr",
+ "fr-be",
+ "fr-ca",
+ "fr-ch",
+ "hu",
+ "is",
+ "it",
+ "ja",
+ "lt",
+ "mk",
+ "nl",
+ "no",
+ "pl",
+ "pt",
+ "pt-br",
+ "sv",
+ "sl",
+ "tr"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "lock": {
+ "enum": [
+ "backup",
+ "clone",
+ "create",
+ "migrate",
+ "rollback",
+ "snapshot",
+ "snapshot-delete",
+ "suspending",
+ "suspended"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "ostype": {
+ "enum": [
+ "other",
+ "wxp",
+ "w2k",
+ "w2k3",
+ "w2k8",
+ "wvista",
+ "win7",
+ "win8",
+ "win10",
+ "win11",
+ "l24",
+ "l26",
+ "solaris"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "scsihw": {
+ "enum": [
+ "lsi",
+ "lsi53c810",
+ "virtio-scsi-pci",
+ "virtio-scsi-single",
+ "megasas",
+ "pvscsi"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}": {
+ "get": {
+ "responseFields": [
+ "subdir"
+ ]
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/firewall": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/firewall/rules": {
+ "get": {
+ "responseFields": [
+ "action",
+ "comment",
+ "dest",
+ "dport",
+ "enable",
+ "icmp-type",
+ "iface",
+ "ipversion",
+ "log",
+ "macro",
+ "pos",
+ "proto",
+ "source",
+ "sport",
+ "type"
+ ]
+ },
+ "post": {
+ "params": {
+ "log": {
+ "enum": [
+ "emerg",
+ "alert",
+ "crit",
+ "err",
+ "warning",
+ "notice",
+ "info",
+ "debug",
+ "nolog"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "in",
+ "out",
+ "forward",
+ "group"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/firewall/rules/{pos}": {
+ "get": {
+ "responseFields": [
+ "action",
+ "comment",
+ "dest",
+ "dport",
+ "enable",
+ "icmp-type",
+ "iface",
+ "ipversion",
+ "log",
+ "macro",
+ "pos",
+ "proto",
+ "source",
+ "sport",
+ "type"
+ ]
+ },
+ "put": {
+ "params": {
+ "log": {
+ "enum": [
+ "emerg",
+ "alert",
+ "crit",
+ "err",
+ "warning",
+ "notice",
+ "info",
+ "debug",
+ "nolog"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "in",
+ "out",
+ "forward",
+ "group"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/firewall/aliases": {
+ "get": {
+ "responseFields": [
+ "cidr",
+ "comment",
+ "digest",
+ "name"
+ ]
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/firewall/ipset": {
+ "get": {
+ "responseFields": [
+ "comment",
+ "digest",
+ "name"
+ ]
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/firewall/ipset/{name}": {
+ "get": {
+ "responseFields": [
+ "cidr",
+ "comment",
+ "digest",
+ "nomatch"
+ ]
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/firewall/options": {
+ "get": {
+ "responseFields": [
+ "dhcp",
+ "enable",
+ "ipfilter",
+ "log_level_in",
+ "log_level_out",
+ "macfilter",
+ "ndp",
+ "policy_in",
+ "policy_out",
+ "radv"
+ ]
+ },
+ "put": {
+ "params": {
+ "log_level_in": {
+ "enum": [
+ "emerg",
+ "alert",
+ "crit",
+ "err",
+ "warning",
+ "notice",
+ "info",
+ "debug",
+ "nolog"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "log_level_out": {
+ "enum": [
+ "emerg",
+ "alert",
+ "crit",
+ "err",
+ "warning",
+ "notice",
+ "info",
+ "debug",
+ "nolog"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "policy_in": {
+ "enum": [
+ "ACCEPT",
+ "REJECT",
+ "DROP"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "policy_out": {
+ "enum": [
+ "ACCEPT",
+ "REJECT",
+ "DROP"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/firewall/log": {
+ "get": {
+ "responseFields": [
+ "n",
+ "t"
+ ]
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/firewall/refs": {
+ "get": {
+ "params": {
+ "type": {
+ "enum": [
+ "alias",
+ "ipset"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "comment",
+ "name",
+ "ref",
+ "scope",
+ "type"
+ ]
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/agent": {
+ "get": {
+ "responseFields": []
+ },
+ "post": {
+ "params": {
+ "command": {
+ "enum": [
+ "fsfreeze-freeze",
+ "fsfreeze-status",
+ "fsfreeze-thaw",
+ "fstrim",
+ "get-fsinfo",
+ "get-host-name",
+ "get-memory-block-info",
+ "get-memory-blocks",
+ "get-osinfo",
+ "get-time",
+ "get-timezone",
+ "get-users",
+ "get-vcpus",
+ "info",
+ "network-get-interfaces",
+ "ping",
+ "shutdown",
+ "suspend-disk",
+ "suspend-hybrid",
+ "suspend-ram"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/agent/exec": {
+ "post": {
+ "responseFields": [
+ "pid"
+ ]
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/agent/exec-status": {
+ "get": {
+ "responseFields": [
+ "err-data",
+ "err-truncated",
+ "exitcode",
+ "exited",
+ "out-data",
+ "out-truncated",
+ "signal"
+ ]
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/agent/file-read": {
+ "get": {
+ "responseFields": [
+ "content",
+ "truncated"
+ ]
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/rrd": {
+ "get": {
+ "params": {
+ "cf": {
+ "enum": [
+ "AVERAGE",
+ "MAX"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "timeframe": {
+ "enum": [
+ "hour",
+ "day",
+ "week",
+ "month",
+ "year"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "filename"
+ ]
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/rrddata": {
+ "get": {
+ "params": {
+ "cf": {
+ "enum": [
+ "AVERAGE",
+ "MAX"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "timeframe": {
+ "enum": [
+ "hour",
+ "day",
+ "week",
+ "month",
+ "year"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": []
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/config": {
+ "get": {
+ "responseFields": [
+ "acpi",
+ "affinity",
+ "agent",
+ "allow-ksm",
+ "amd-sev",
+ "arch",
+ "args",
+ "audio0",
+ "autostart",
+ "balloon",
+ "bios",
+ "boot",
+ "bootdisk",
+ "cdrom",
+ "cicustom",
+ "cipassword",
+ "citype",
+ "ciupgrade",
+ "ciuser",
+ "cores",
+ "cpu",
+ "cpulimit",
+ "cpuunits",
+ "description",
+ "digest",
+ "efidisk0",
+ "freeze",
+ "hookscript",
+ "hostpci[n]",
+ "hotplug",
+ "hugepages",
+ "ide[n]",
+ "intel-tdx",
+ "ipconfig[n]",
+ "ivshmem",
+ "keephugepages",
+ "keyboard",
+ "kvm",
+ "localtime",
+ "lock",
+ "machine",
+ "memory",
+ "meta",
+ "migrate_downtime",
+ "migrate_speed",
+ "name",
+ "nameserver",
+ "net[n]",
+ "numa",
+ "numa[n]",
+ "onboot",
+ "ostype",
+ "parallel[n]",
+ "parent",
+ "protection",
+ "reboot",
+ "rng0",
+ "running-nets-host-mtu",
+ "runningcpu",
+ "runningmachine",
+ "sata[n]",
+ "scsi[n]",
+ "scsihw",
+ "searchdomain",
+ "serial[n]",
+ "shares",
+ "smbios1",
+ "smp",
+ "snaptime",
+ "sockets",
+ "spice_enhancements",
+ "sshkeys",
+ "startdate",
+ "startup",
+ "tablet",
+ "tags",
+ "tdf",
+ "template",
+ "tpmstate0",
+ "unused[n]",
+ "usb[n]",
+ "vcpus",
+ "vga",
+ "virtio[n]",
+ "virtiofs[n]",
+ "vmgenid",
+ "vmstate",
+ "vmstatestorage",
+ "watchdog"
+ ]
+ },
+ "post": {
+ "params": {
+ "arch": {
+ "enum": [
+ "x86_64",
+ "aarch64"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "bios": {
+ "enum": [
+ "seabios",
+ "ovmf"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "citype": {
+ "enum": [
+ "configdrive2",
+ "nocloud",
+ "opennebula"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "hotplug": {
+ "enum": null,
+ "x-enum-values": [
+ "network",
+ "disk",
+ "cpu",
+ "memory",
+ "usb",
+ "cloudinit"
+ ],
+ "type": "string"
+ },
+ "hugepages": {
+ "enum": [
+ "any",
+ "2",
+ "1024"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "keyboard": {
+ "enum": [
+ "de",
+ "de-ch",
+ "da",
+ "en-gb",
+ "en-us",
+ "es",
+ "fi",
+ "fr",
+ "fr-be",
+ "fr-ca",
+ "fr-ch",
+ "hu",
+ "is",
+ "it",
+ "ja",
+ "lt",
+ "mk",
+ "nl",
+ "no",
+ "pl",
+ "pt",
+ "pt-br",
+ "sv",
+ "sl",
+ "tr"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "lock": {
+ "enum": [
+ "backup",
+ "clone",
+ "create",
+ "migrate",
+ "rollback",
+ "snapshot",
+ "snapshot-delete",
+ "suspending",
+ "suspended"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "ostype": {
+ "enum": [
+ "other",
+ "wxp",
+ "w2k",
+ "w2k3",
+ "w2k8",
+ "wvista",
+ "win7",
+ "win8",
+ "win10",
+ "win11",
+ "l24",
+ "l26",
+ "solaris"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "scsihw": {
+ "enum": [
+ "lsi",
+ "lsi53c810",
+ "virtio-scsi-pci",
+ "virtio-scsi-single",
+ "megasas",
+ "pvscsi"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ },
+ "put": {
+ "params": {
+ "arch": {
+ "enum": [
+ "x86_64",
+ "aarch64"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "bios": {
+ "enum": [
+ "seabios",
+ "ovmf"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "citype": {
+ "enum": [
+ "configdrive2",
+ "nocloud",
+ "opennebula"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "hotplug": {
+ "enum": null,
+ "x-enum-values": [
+ "network",
+ "disk",
+ "cpu",
+ "memory",
+ "usb",
+ "cloudinit"
+ ],
+ "type": "string"
+ },
+ "hugepages": {
+ "enum": [
+ "any",
+ "2",
+ "1024"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "keyboard": {
+ "enum": [
+ "de",
+ "de-ch",
+ "da",
+ "en-gb",
+ "en-us",
+ "es",
+ "fi",
+ "fr",
+ "fr-be",
+ "fr-ca",
+ "fr-ch",
+ "hu",
+ "is",
+ "it",
+ "ja",
+ "lt",
+ "mk",
+ "nl",
+ "no",
+ "pl",
+ "pt",
+ "pt-br",
+ "sv",
+ "sl",
+ "tr"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "lock": {
+ "enum": [
+ "backup",
+ "clone",
+ "create",
+ "migrate",
+ "rollback",
+ "snapshot",
+ "snapshot-delete",
+ "suspending",
+ "suspended"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "ostype": {
+ "enum": [
+ "other",
+ "wxp",
+ "w2k",
+ "w2k3",
+ "w2k8",
+ "wvista",
+ "win7",
+ "win8",
+ "win10",
+ "win11",
+ "l24",
+ "l26",
+ "solaris"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "scsihw": {
+ "enum": [
+ "lsi",
+ "lsi53c810",
+ "virtio-scsi-pci",
+ "virtio-scsi-single",
+ "megasas",
+ "pvscsi"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/pending": {
+ "get": {
+ "responseFields": [
+ "delete",
+ "key",
+ "pending",
+ "value"
+ ]
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/cloudinit": {
+ "get": {
+ "responseFields": [
+ "delete",
+ "key",
+ "pending",
+ "value"
+ ]
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/cloudinit/dump": {
+ "get": {
+ "params": {
+ "type": {
+ "enum": [
+ "user",
+ "network",
+ "meta"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/termproxy": {
+ "post": {
+ "params": {
+ "serial": {
+ "enum": [
+ "serial0",
+ "serial1",
+ "serial2",
+ "serial3"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/vncwebsocket": {
+ "get": {
+ "responseFields": [
+ "port"
+ ]
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/status": {
+ "get": {
+ "responseFields": [
+ "subdir"
+ ]
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/status/current": {
+ "get": {
+ "responseFields": [
+ "agent",
+ "clipboard",
+ "cpu",
+ "cpus",
+ "diskread",
+ "diskwrite",
+ "ha",
+ "lock",
+ "maxdisk",
+ "maxmem",
+ "mem",
+ "memhost",
+ "name",
+ "netin",
+ "netout",
+ "pid",
+ "pressurecpufull",
+ "pressurecpusome",
+ "pressureiofull",
+ "pressureiosome",
+ "pressurememoryfull",
+ "pressurememorysome",
+ "qmpstatus",
+ "running-machine",
+ "running-qemu",
+ "serial",
+ "spice",
+ "status",
+ "tags",
+ "template",
+ "uptime",
+ "vmid"
+ ]
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/status/start": {
+ "post": {
+ "params": {
+ "migration_type": {
+ "enum": [
+ "secure",
+ "insecure"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/feature": {
+ "get": {
+ "params": {
+ "feature": {
+ "enum": [
+ "snapshot",
+ "clone",
+ "copy"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "hasFeature",
+ "nodes"
+ ]
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/clone": {
+ "post": {
+ "params": {
+ "format": {
+ "enum": [
+ "raw",
+ "qcow2",
+ "vmdk"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/move_disk": {
+ "post": {
+ "params": {
+ "disk": {
+ "enum": [
+ "ide0",
+ "ide1",
+ "ide2",
+ "ide3",
+ "scsi0",
+ "scsi1",
+ "scsi2",
+ "scsi3",
+ "scsi4",
+ "scsi5",
+ "scsi6",
+ "scsi7",
+ "scsi8",
+ "scsi9",
+ "scsi10",
+ "scsi11",
+ "scsi12",
+ "scsi13",
+ "scsi14",
+ "scsi15",
+ "scsi16",
+ "scsi17",
+ "scsi18",
+ "scsi19",
+ "scsi20",
+ "scsi21",
+ "scsi22",
+ "scsi23",
+ "scsi24",
+ "scsi25",
+ "scsi26",
+ "scsi27",
+ "scsi28",
+ "scsi29",
+ "scsi30",
+ "virtio0",
+ "virtio1",
+ "virtio2",
+ "virtio3",
+ "virtio4",
+ "virtio5",
+ "virtio6",
+ "virtio7",
+ "virtio8",
+ "virtio9",
+ "virtio10",
+ "virtio11",
+ "virtio12",
+ "virtio13",
+ "virtio14",
+ "virtio15",
+ "sata0",
+ "sata1",
+ "sata2",
+ "sata3",
+ "sata4",
+ "sata5",
+ "efidisk0",
+ "tpmstate0",
+ "unused0",
+ "unused1",
+ "unused2",
+ "unused3",
+ "unused4",
+ "unused5",
+ "unused6",
+ "unused7",
+ "unused8",
+ "unused9",
+ "unused10",
+ "unused11",
+ "unused12",
+ "unused13",
+ "unused14",
+ "unused15",
+ "unused16",
+ "unused17",
+ "unused18",
+ "unused19",
+ "unused20",
+ "unused21",
+ "unused22",
+ "unused23",
+ "unused24",
+ "unused25",
+ "unused26",
+ "unused27",
+ "unused28",
+ "unused29",
+ "unused30",
+ "unused31",
+ "unused32",
+ "unused33",
+ "unused34",
+ "unused35",
+ "unused36",
+ "unused37",
+ "unused38",
+ "unused39",
+ "unused40",
+ "unused41",
+ "unused42",
+ "unused43",
+ "unused44",
+ "unused45",
+ "unused46",
+ "unused47",
+ "unused48",
+ "unused49",
+ "unused50",
+ "unused51",
+ "unused52",
+ "unused53",
+ "unused54",
+ "unused55",
+ "unused56",
+ "unused57",
+ "unused58",
+ "unused59",
+ "unused60",
+ "unused61",
+ "unused62",
+ "unused63",
+ "unused64",
+ "unused65",
+ "unused66",
+ "unused67",
+ "unused68",
+ "unused69",
+ "unused70",
+ "unused71",
+ "unused72",
+ "unused73",
+ "unused74",
+ "unused75",
+ "unused76",
+ "unused77",
+ "unused78",
+ "unused79",
+ "unused80",
+ "unused81",
+ "unused82",
+ "unused83",
+ "unused84",
+ "unused85",
+ "unused86",
+ "unused87",
+ "unused88",
+ "unused89",
+ "unused90",
+ "unused91",
+ "unused92",
+ "unused93",
+ "unused94",
+ "unused95",
+ "unused96",
+ "unused97",
+ "unused98",
+ "unused99",
+ "unused100",
+ "unused101",
+ "unused102",
+ "unused103",
+ "unused104",
+ "unused105",
+ "unused106",
+ "unused107",
+ "unused108",
+ "unused109",
+ "unused110",
+ "unused111",
+ "unused112",
+ "unused113",
+ "unused114",
+ "unused115",
+ "unused116",
+ "unused117",
+ "unused118",
+ "unused119",
+ "unused120",
+ "unused121",
+ "unused122",
+ "unused123",
+ "unused124",
+ "unused125",
+ "unused126",
+ "unused127",
+ "unused128",
+ "unused129",
+ "unused130",
+ "unused131",
+ "unused132",
+ "unused133",
+ "unused134",
+ "unused135",
+ "unused136",
+ "unused137",
+ "unused138",
+ "unused139",
+ "unused140",
+ "unused141",
+ "unused142",
+ "unused143",
+ "unused144",
+ "unused145",
+ "unused146",
+ "unused147",
+ "unused148",
+ "unused149",
+ "unused150",
+ "unused151",
+ "unused152",
+ "unused153",
+ "unused154",
+ "unused155",
+ "unused156",
+ "unused157",
+ "unused158",
+ "unused159",
+ "unused160",
+ "unused161",
+ "unused162",
+ "unused163",
+ "unused164",
+ "unused165",
+ "unused166",
+ "unused167",
+ "unused168",
+ "unused169",
+ "unused170",
+ "unused171",
+ "unused172",
+ "unused173",
+ "unused174",
+ "unused175",
+ "unused176",
+ "unused177",
+ "unused178",
+ "unused179",
+ "unused180",
+ "unused181",
+ "unused182",
+ "unused183",
+ "unused184",
+ "unused185",
+ "unused186",
+ "unused187",
+ "unused188",
+ "unused189",
+ "unused190",
+ "unused191",
+ "unused192",
+ "unused193",
+ "unused194",
+ "unused195",
+ "unused196",
+ "unused197",
+ "unused198",
+ "unused199",
+ "unused200",
+ "unused201",
+ "unused202",
+ "unused203",
+ "unused204",
+ "unused205",
+ "unused206",
+ "unused207",
+ "unused208",
+ "unused209",
+ "unused210",
+ "unused211",
+ "unused212",
+ "unused213",
+ "unused214",
+ "unused215",
+ "unused216",
+ "unused217",
+ "unused218",
+ "unused219",
+ "unused220",
+ "unused221",
+ "unused222",
+ "unused223",
+ "unused224",
+ "unused225",
+ "unused226",
+ "unused227",
+ "unused228",
+ "unused229",
+ "unused230",
+ "unused231",
+ "unused232",
+ "unused233",
+ "unused234",
+ "unused235",
+ "unused236",
+ "unused237",
+ "unused238",
+ "unused239",
+ "unused240",
+ "unused241",
+ "unused242",
+ "unused243",
+ "unused244",
+ "unused245",
+ "unused246",
+ "unused247",
+ "unused248",
+ "unused249",
+ "unused250",
+ "unused251",
+ "unused252",
+ "unused253",
+ "unused254",
+ "unused255"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "format": {
+ "enum": [
+ "raw",
+ "qcow2",
+ "vmdk"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "target-disk": {
+ "enum": [
+ "ide0",
+ "ide1",
+ "ide2",
+ "ide3",
+ "scsi0",
+ "scsi1",
+ "scsi2",
+ "scsi3",
+ "scsi4",
+ "scsi5",
+ "scsi6",
+ "scsi7",
+ "scsi8",
+ "scsi9",
+ "scsi10",
+ "scsi11",
+ "scsi12",
+ "scsi13",
+ "scsi14",
+ "scsi15",
+ "scsi16",
+ "scsi17",
+ "scsi18",
+ "scsi19",
+ "scsi20",
+ "scsi21",
+ "scsi22",
+ "scsi23",
+ "scsi24",
+ "scsi25",
+ "scsi26",
+ "scsi27",
+ "scsi28",
+ "scsi29",
+ "scsi30",
+ "virtio0",
+ "virtio1",
+ "virtio2",
+ "virtio3",
+ "virtio4",
+ "virtio5",
+ "virtio6",
+ "virtio7",
+ "virtio8",
+ "virtio9",
+ "virtio10",
+ "virtio11",
+ "virtio12",
+ "virtio13",
+ "virtio14",
+ "virtio15",
+ "sata0",
+ "sata1",
+ "sata2",
+ "sata3",
+ "sata4",
+ "sata5",
+ "efidisk0",
+ "tpmstate0",
+ "unused0",
+ "unused1",
+ "unused2",
+ "unused3",
+ "unused4",
+ "unused5",
+ "unused6",
+ "unused7",
+ "unused8",
+ "unused9",
+ "unused10",
+ "unused11",
+ "unused12",
+ "unused13",
+ "unused14",
+ "unused15",
+ "unused16",
+ "unused17",
+ "unused18",
+ "unused19",
+ "unused20",
+ "unused21",
+ "unused22",
+ "unused23",
+ "unused24",
+ "unused25",
+ "unused26",
+ "unused27",
+ "unused28",
+ "unused29",
+ "unused30",
+ "unused31",
+ "unused32",
+ "unused33",
+ "unused34",
+ "unused35",
+ "unused36",
+ "unused37",
+ "unused38",
+ "unused39",
+ "unused40",
+ "unused41",
+ "unused42",
+ "unused43",
+ "unused44",
+ "unused45",
+ "unused46",
+ "unused47",
+ "unused48",
+ "unused49",
+ "unused50",
+ "unused51",
+ "unused52",
+ "unused53",
+ "unused54",
+ "unused55",
+ "unused56",
+ "unused57",
+ "unused58",
+ "unused59",
+ "unused60",
+ "unused61",
+ "unused62",
+ "unused63",
+ "unused64",
+ "unused65",
+ "unused66",
+ "unused67",
+ "unused68",
+ "unused69",
+ "unused70",
+ "unused71",
+ "unused72",
+ "unused73",
+ "unused74",
+ "unused75",
+ "unused76",
+ "unused77",
+ "unused78",
+ "unused79",
+ "unused80",
+ "unused81",
+ "unused82",
+ "unused83",
+ "unused84",
+ "unused85",
+ "unused86",
+ "unused87",
+ "unused88",
+ "unused89",
+ "unused90",
+ "unused91",
+ "unused92",
+ "unused93",
+ "unused94",
+ "unused95",
+ "unused96",
+ "unused97",
+ "unused98",
+ "unused99",
+ "unused100",
+ "unused101",
+ "unused102",
+ "unused103",
+ "unused104",
+ "unused105",
+ "unused106",
+ "unused107",
+ "unused108",
+ "unused109",
+ "unused110",
+ "unused111",
+ "unused112",
+ "unused113",
+ "unused114",
+ "unused115",
+ "unused116",
+ "unused117",
+ "unused118",
+ "unused119",
+ "unused120",
+ "unused121",
+ "unused122",
+ "unused123",
+ "unused124",
+ "unused125",
+ "unused126",
+ "unused127",
+ "unused128",
+ "unused129",
+ "unused130",
+ "unused131",
+ "unused132",
+ "unused133",
+ "unused134",
+ "unused135",
+ "unused136",
+ "unused137",
+ "unused138",
+ "unused139",
+ "unused140",
+ "unused141",
+ "unused142",
+ "unused143",
+ "unused144",
+ "unused145",
+ "unused146",
+ "unused147",
+ "unused148",
+ "unused149",
+ "unused150",
+ "unused151",
+ "unused152",
+ "unused153",
+ "unused154",
+ "unused155",
+ "unused156",
+ "unused157",
+ "unused158",
+ "unused159",
+ "unused160",
+ "unused161",
+ "unused162",
+ "unused163",
+ "unused164",
+ "unused165",
+ "unused166",
+ "unused167",
+ "unused168",
+ "unused169",
+ "unused170",
+ "unused171",
+ "unused172",
+ "unused173",
+ "unused174",
+ "unused175",
+ "unused176",
+ "unused177",
+ "unused178",
+ "unused179",
+ "unused180",
+ "unused181",
+ "unused182",
+ "unused183",
+ "unused184",
+ "unused185",
+ "unused186",
+ "unused187",
+ "unused188",
+ "unused189",
+ "unused190",
+ "unused191",
+ "unused192",
+ "unused193",
+ "unused194",
+ "unused195",
+ "unused196",
+ "unused197",
+ "unused198",
+ "unused199",
+ "unused200",
+ "unused201",
+ "unused202",
+ "unused203",
+ "unused204",
+ "unused205",
+ "unused206",
+ "unused207",
+ "unused208",
+ "unused209",
+ "unused210",
+ "unused211",
+ "unused212",
+ "unused213",
+ "unused214",
+ "unused215",
+ "unused216",
+ "unused217",
+ "unused218",
+ "unused219",
+ "unused220",
+ "unused221",
+ "unused222",
+ "unused223",
+ "unused224",
+ "unused225",
+ "unused226",
+ "unused227",
+ "unused228",
+ "unused229",
+ "unused230",
+ "unused231",
+ "unused232",
+ "unused233",
+ "unused234",
+ "unused235",
+ "unused236",
+ "unused237",
+ "unused238",
+ "unused239",
+ "unused240",
+ "unused241",
+ "unused242",
+ "unused243",
+ "unused244",
+ "unused245",
+ "unused246",
+ "unused247",
+ "unused248",
+ "unused249",
+ "unused250",
+ "unused251",
+ "unused252",
+ "unused253",
+ "unused254",
+ "unused255"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/migrate": {
+ "get": {
+ "responseFields": [
+ "allowed_nodes",
+ "dependent-ha-resources",
+ "has-dbus-vmstate",
+ "local_disks",
+ "local_resources",
+ "mapped-resource-info",
+ "mapped-resources",
+ "not_allowed_nodes",
+ "running"
+ ]
+ },
+ "post": {
+ "params": {
+ "migration_type": {
+ "enum": [
+ "secure",
+ "insecure"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/resize": {
+ "put": {
+ "params": {
+ "disk": {
+ "enum": [
+ "ide0",
+ "ide1",
+ "ide2",
+ "ide3",
+ "scsi0",
+ "scsi1",
+ "scsi2",
+ "scsi3",
+ "scsi4",
+ "scsi5",
+ "scsi6",
+ "scsi7",
+ "scsi8",
+ "scsi9",
+ "scsi10",
+ "scsi11",
+ "scsi12",
+ "scsi13",
+ "scsi14",
+ "scsi15",
+ "scsi16",
+ "scsi17",
+ "scsi18",
+ "scsi19",
+ "scsi20",
+ "scsi21",
+ "scsi22",
+ "scsi23",
+ "scsi24",
+ "scsi25",
+ "scsi26",
+ "scsi27",
+ "scsi28",
+ "scsi29",
+ "scsi30",
+ "virtio0",
+ "virtio1",
+ "virtio2",
+ "virtio3",
+ "virtio4",
+ "virtio5",
+ "virtio6",
+ "virtio7",
+ "virtio8",
+ "virtio9",
+ "virtio10",
+ "virtio11",
+ "virtio12",
+ "virtio13",
+ "virtio14",
+ "virtio15",
+ "sata0",
+ "sata1",
+ "sata2",
+ "sata3",
+ "sata4",
+ "sata5",
+ "efidisk0",
+ "tpmstate0"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/snapshot": {
+ "get": {
+ "responseFields": [
+ "description",
+ "name",
+ "parent",
+ "snaptime",
+ "vmstate"
+ ]
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/snapshot/{snapname}": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/template": {
+ "post": {
+ "params": {
+ "disk": {
+ "enum": [
+ "ide0",
+ "ide1",
+ "ide2",
+ "ide3",
+ "scsi0",
+ "scsi1",
+ "scsi2",
+ "scsi3",
+ "scsi4",
+ "scsi5",
+ "scsi6",
+ "scsi7",
+ "scsi8",
+ "scsi9",
+ "scsi10",
+ "scsi11",
+ "scsi12",
+ "scsi13",
+ "scsi14",
+ "scsi15",
+ "scsi16",
+ "scsi17",
+ "scsi18",
+ "scsi19",
+ "scsi20",
+ "scsi21",
+ "scsi22",
+ "scsi23",
+ "scsi24",
+ "scsi25",
+ "scsi26",
+ "scsi27",
+ "scsi28",
+ "scsi29",
+ "scsi30",
+ "virtio0",
+ "virtio1",
+ "virtio2",
+ "virtio3",
+ "virtio4",
+ "virtio5",
+ "virtio6",
+ "virtio7",
+ "virtio8",
+ "virtio9",
+ "virtio10",
+ "virtio11",
+ "virtio12",
+ "virtio13",
+ "virtio14",
+ "virtio15",
+ "sata0",
+ "sata1",
+ "sata2",
+ "sata3",
+ "sata4",
+ "sata5",
+ "efidisk0",
+ "tpmstate0"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/mtunnelwebsocket": {
+ "get": {
+ "responseFields": [
+ "port",
+ "socket"
+ ]
+ }
+ },
+ "/nodes/{node}/qemu/{vmid}/dbus-vmstate": {
+ "post": {
+ "params": {
+ "action": {
+ "enum": [
+ "start",
+ "stop"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/lxc": {
+ "get": {
+ "responseFields": [
+ "cpu",
+ "cpus",
+ "disk",
+ "diskread",
+ "diskwrite",
+ "lock",
+ "maxdisk",
+ "maxmem",
+ "maxswap",
+ "mem",
+ "name",
+ "netin",
+ "netout",
+ "pressurecpusome",
+ "pressureiofull",
+ "pressureiosome",
+ "pressurememoryfull",
+ "pressurememorysome",
+ "status",
+ "tags",
+ "template",
+ "uptime",
+ "vmid"
+ ]
+ },
+ "post": {
+ "params": {
+ "arch": {
+ "enum": [
+ "amd64",
+ "i386",
+ "arm64",
+ "armhf",
+ "riscv32",
+ "riscv64"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "cmode": {
+ "enum": [
+ "shell",
+ "console",
+ "tty"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "lock": {
+ "enum": [
+ "backup",
+ "create",
+ "destroyed",
+ "disk",
+ "fstrim",
+ "migrate",
+ "mounted",
+ "rollback",
+ "snapshot",
+ "snapshot-delete"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "ostype": {
+ "enum": [
+ "debian",
+ "devuan",
+ "ubuntu",
+ "centos",
+ "fedora",
+ "opensuse",
+ "archlinux",
+ "alpine",
+ "gentoo",
+ "nixos",
+ "unmanaged"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/lxc/{vmid}": {
+ "get": {
+ "responseFields": [
+ "subdir"
+ ]
+ }
+ },
+ "/nodes/{node}/lxc/{vmid}/config": {
+ "get": {
+ "responseFields": [
+ "arch",
+ "cmode",
+ "console",
+ "cores",
+ "cpulimit",
+ "cpuunits",
+ "debug",
+ "description",
+ "dev[n]",
+ "digest",
+ "entrypoint",
+ "env",
+ "features",
+ "hookscript",
+ "hostname",
+ "lock",
+ "lxc",
+ "memory",
+ "mp[n]",
+ "nameserver",
+ "net[n]",
+ "onboot",
+ "ostype",
+ "protection",
+ "rootfs",
+ "searchdomain",
+ "startup",
+ "swap",
+ "tags",
+ "template",
+ "timezone",
+ "tty",
+ "unprivileged",
+ "unused[n]"
+ ]
+ },
+ "put": {
+ "params": {
+ "arch": {
+ "enum": [
+ "amd64",
+ "i386",
+ "arm64",
+ "armhf",
+ "riscv32",
+ "riscv64"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "cmode": {
+ "enum": [
+ "shell",
+ "console",
+ "tty"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "lock": {
+ "enum": [
+ "backup",
+ "create",
+ "destroyed",
+ "disk",
+ "fstrim",
+ "migrate",
+ "mounted",
+ "rollback",
+ "snapshot",
+ "snapshot-delete"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "ostype": {
+ "enum": [
+ "debian",
+ "devuan",
+ "ubuntu",
+ "centos",
+ "fedora",
+ "opensuse",
+ "archlinux",
+ "alpine",
+ "gentoo",
+ "nixos",
+ "unmanaged"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/lxc/{vmid}/status": {
+ "get": {
+ "responseFields": [
+ "subdir"
+ ]
+ }
+ },
+ "/nodes/{node}/lxc/{vmid}/status/current": {
+ "get": {
+ "responseFields": [
+ "cpu",
+ "cpus",
+ "disk",
+ "diskread",
+ "diskwrite",
+ "ha",
+ "lock",
+ "maxdisk",
+ "maxmem",
+ "maxswap",
+ "mem",
+ "name",
+ "netin",
+ "netout",
+ "pressurecpusome",
+ "pressureiofull",
+ "pressureiosome",
+ "pressurememoryfull",
+ "pressurememorysome",
+ "status",
+ "tags",
+ "template",
+ "uptime",
+ "vmid"
+ ]
+ }
+ },
+ "/nodes/{node}/lxc/{vmid}/snapshot": {
+ "get": {
+ "responseFields": [
+ "description",
+ "name",
+ "parent",
+ "snaptime"
+ ]
+ }
+ },
+ "/nodes/{node}/lxc/{vmid}/snapshot/{snapname}": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/nodes/{node}/lxc/{vmid}/firewall": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/nodes/{node}/lxc/{vmid}/firewall/rules": {
+ "get": {
+ "responseFields": [
+ "action",
+ "comment",
+ "dest",
+ "dport",
+ "enable",
+ "icmp-type",
+ "iface",
+ "ipversion",
+ "log",
+ "macro",
+ "pos",
+ "proto",
+ "source",
+ "sport",
+ "type"
+ ]
+ },
+ "post": {
+ "params": {
+ "log": {
+ "enum": [
+ "emerg",
+ "alert",
+ "crit",
+ "err",
+ "warning",
+ "notice",
+ "info",
+ "debug",
+ "nolog"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "in",
+ "out",
+ "forward",
+ "group"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/lxc/{vmid}/firewall/rules/{pos}": {
+ "get": {
+ "responseFields": [
+ "action",
+ "comment",
+ "dest",
+ "dport",
+ "enable",
+ "icmp-type",
+ "iface",
+ "ipversion",
+ "log",
+ "macro",
+ "pos",
+ "proto",
+ "source",
+ "sport",
+ "type"
+ ]
+ },
+ "put": {
+ "params": {
+ "log": {
+ "enum": [
+ "emerg",
+ "alert",
+ "crit",
+ "err",
+ "warning",
+ "notice",
+ "info",
+ "debug",
+ "nolog"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "in",
+ "out",
+ "forward",
+ "group"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/lxc/{vmid}/firewall/aliases": {
+ "get": {
+ "responseFields": [
+ "cidr",
+ "comment",
+ "digest",
+ "name"
+ ]
+ }
+ },
+ "/nodes/{node}/lxc/{vmid}/firewall/ipset": {
+ "get": {
+ "responseFields": [
+ "comment",
+ "digest",
+ "name"
+ ]
+ }
+ },
+ "/nodes/{node}/lxc/{vmid}/firewall/ipset/{name}": {
+ "get": {
+ "responseFields": [
+ "cidr",
+ "comment",
+ "digest",
+ "nomatch"
+ ]
+ }
+ },
+ "/nodes/{node}/lxc/{vmid}/firewall/options": {
+ "get": {
+ "responseFields": [
+ "dhcp",
+ "enable",
+ "ipfilter",
+ "log_level_in",
+ "log_level_out",
+ "macfilter",
+ "ndp",
+ "policy_in",
+ "policy_out",
+ "radv"
+ ]
+ },
+ "put": {
+ "params": {
+ "log_level_in": {
+ "enum": [
+ "emerg",
+ "alert",
+ "crit",
+ "err",
+ "warning",
+ "notice",
+ "info",
+ "debug",
+ "nolog"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "log_level_out": {
+ "enum": [
+ "emerg",
+ "alert",
+ "crit",
+ "err",
+ "warning",
+ "notice",
+ "info",
+ "debug",
+ "nolog"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "policy_in": {
+ "enum": [
+ "ACCEPT",
+ "REJECT",
+ "DROP"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "policy_out": {
+ "enum": [
+ "ACCEPT",
+ "REJECT",
+ "DROP"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/lxc/{vmid}/firewall/log": {
+ "get": {
+ "responseFields": [
+ "n",
+ "t"
+ ]
+ }
+ },
+ "/nodes/{node}/lxc/{vmid}/firewall/refs": {
+ "get": {
+ "params": {
+ "type": {
+ "enum": [
+ "alias",
+ "ipset"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "comment",
+ "name",
+ "ref",
+ "scope",
+ "type"
+ ]
+ }
+ },
+ "/nodes/{node}/lxc/{vmid}/rrd": {
+ "get": {
+ "params": {
+ "cf": {
+ "enum": [
+ "AVERAGE",
+ "MAX"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "timeframe": {
+ "enum": [
+ "hour",
+ "day",
+ "week",
+ "month",
+ "year"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "filename"
+ ]
+ }
+ },
+ "/nodes/{node}/lxc/{vmid}/rrddata": {
+ "get": {
+ "params": {
+ "cf": {
+ "enum": [
+ "AVERAGE",
+ "MAX"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "timeframe": {
+ "enum": [
+ "hour",
+ "day",
+ "week",
+ "month",
+ "year"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": []
+ }
+ },
+ "/nodes/{node}/lxc/{vmid}/vncwebsocket": {
+ "get": {
+ "responseFields": [
+ "port"
+ ]
+ }
+ },
+ "/nodes/{node}/lxc/{vmid}/migrate": {
+ "get": {
+ "responseFields": [
+ "allowed-nodes",
+ "dependent-ha-resources",
+ "not-allowed-nodes",
+ "running"
+ ]
+ }
+ },
+ "/nodes/{node}/lxc/{vmid}/feature": {
+ "get": {
+ "params": {
+ "feature": {
+ "enum": [
+ "snapshot",
+ "clone",
+ "copy"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "hasFeature"
+ ]
+ }
+ },
+ "/nodes/{node}/lxc/{vmid}/resize": {
+ "put": {
+ "params": {
+ "disk": {
+ "enum": [
+ "rootfs",
+ "mp0",
+ "mp1",
+ "mp2",
+ "mp3",
+ "mp4",
+ "mp5",
+ "mp6",
+ "mp7",
+ "mp8",
+ "mp9",
+ "mp10",
+ "mp11",
+ "mp12",
+ "mp13",
+ "mp14",
+ "mp15",
+ "mp16",
+ "mp17",
+ "mp18",
+ "mp19",
+ "mp20",
+ "mp21",
+ "mp22",
+ "mp23",
+ "mp24",
+ "mp25",
+ "mp26",
+ "mp27",
+ "mp28",
+ "mp29",
+ "mp30",
+ "mp31",
+ "mp32",
+ "mp33",
+ "mp34",
+ "mp35",
+ "mp36",
+ "mp37",
+ "mp38",
+ "mp39",
+ "mp40",
+ "mp41",
+ "mp42",
+ "mp43",
+ "mp44",
+ "mp45",
+ "mp46",
+ "mp47",
+ "mp48",
+ "mp49",
+ "mp50",
+ "mp51",
+ "mp52",
+ "mp53",
+ "mp54",
+ "mp55",
+ "mp56",
+ "mp57",
+ "mp58",
+ "mp59",
+ "mp60",
+ "mp61",
+ "mp62",
+ "mp63",
+ "mp64",
+ "mp65",
+ "mp66",
+ "mp67",
+ "mp68",
+ "mp69",
+ "mp70",
+ "mp71",
+ "mp72",
+ "mp73",
+ "mp74",
+ "mp75",
+ "mp76",
+ "mp77",
+ "mp78",
+ "mp79",
+ "mp80",
+ "mp81",
+ "mp82",
+ "mp83",
+ "mp84",
+ "mp85",
+ "mp86",
+ "mp87",
+ "mp88",
+ "mp89",
+ "mp90",
+ "mp91",
+ "mp92",
+ "mp93",
+ "mp94",
+ "mp95",
+ "mp96",
+ "mp97",
+ "mp98",
+ "mp99",
+ "mp100",
+ "mp101",
+ "mp102",
+ "mp103",
+ "mp104",
+ "mp105",
+ "mp106",
+ "mp107",
+ "mp108",
+ "mp109",
+ "mp110",
+ "mp111",
+ "mp112",
+ "mp113",
+ "mp114",
+ "mp115",
+ "mp116",
+ "mp117",
+ "mp118",
+ "mp119",
+ "mp120",
+ "mp121",
+ "mp122",
+ "mp123",
+ "mp124",
+ "mp125",
+ "mp126",
+ "mp127",
+ "mp128",
+ "mp129",
+ "mp130",
+ "mp131",
+ "mp132",
+ "mp133",
+ "mp134",
+ "mp135",
+ "mp136",
+ "mp137",
+ "mp138",
+ "mp139",
+ "mp140",
+ "mp141",
+ "mp142",
+ "mp143",
+ "mp144",
+ "mp145",
+ "mp146",
+ "mp147",
+ "mp148",
+ "mp149",
+ "mp150",
+ "mp151",
+ "mp152",
+ "mp153",
+ "mp154",
+ "mp155",
+ "mp156",
+ "mp157",
+ "mp158",
+ "mp159",
+ "mp160",
+ "mp161",
+ "mp162",
+ "mp163",
+ "mp164",
+ "mp165",
+ "mp166",
+ "mp167",
+ "mp168",
+ "mp169",
+ "mp170",
+ "mp171",
+ "mp172",
+ "mp173",
+ "mp174",
+ "mp175",
+ "mp176",
+ "mp177",
+ "mp178",
+ "mp179",
+ "mp180",
+ "mp181",
+ "mp182",
+ "mp183",
+ "mp184",
+ "mp185",
+ "mp186",
+ "mp187",
+ "mp188",
+ "mp189",
+ "mp190",
+ "mp191",
+ "mp192",
+ "mp193",
+ "mp194",
+ "mp195",
+ "mp196",
+ "mp197",
+ "mp198",
+ "mp199",
+ "mp200",
+ "mp201",
+ "mp202",
+ "mp203",
+ "mp204",
+ "mp205",
+ "mp206",
+ "mp207",
+ "mp208",
+ "mp209",
+ "mp210",
+ "mp211",
+ "mp212",
+ "mp213",
+ "mp214",
+ "mp215",
+ "mp216",
+ "mp217",
+ "mp218",
+ "mp219",
+ "mp220",
+ "mp221",
+ "mp222",
+ "mp223",
+ "mp224",
+ "mp225",
+ "mp226",
+ "mp227",
+ "mp228",
+ "mp229",
+ "mp230",
+ "mp231",
+ "mp232",
+ "mp233",
+ "mp234",
+ "mp235",
+ "mp236",
+ "mp237",
+ "mp238",
+ "mp239",
+ "mp240",
+ "mp241",
+ "mp242",
+ "mp243",
+ "mp244",
+ "mp245",
+ "mp246",
+ "mp247",
+ "mp248",
+ "mp249",
+ "mp250",
+ "mp251",
+ "mp252",
+ "mp253",
+ "mp254",
+ "mp255"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/lxc/{vmid}/move_volume": {
+ "post": {
+ "params": {
+ "target-volume": {
+ "enum": [
+ "rootfs",
+ "mp0",
+ "mp1",
+ "mp2",
+ "mp3",
+ "mp4",
+ "mp5",
+ "mp6",
+ "mp7",
+ "mp8",
+ "mp9",
+ "mp10",
+ "mp11",
+ "mp12",
+ "mp13",
+ "mp14",
+ "mp15",
+ "mp16",
+ "mp17",
+ "mp18",
+ "mp19",
+ "mp20",
+ "mp21",
+ "mp22",
+ "mp23",
+ "mp24",
+ "mp25",
+ "mp26",
+ "mp27",
+ "mp28",
+ "mp29",
+ "mp30",
+ "mp31",
+ "mp32",
+ "mp33",
+ "mp34",
+ "mp35",
+ "mp36",
+ "mp37",
+ "mp38",
+ "mp39",
+ "mp40",
+ "mp41",
+ "mp42",
+ "mp43",
+ "mp44",
+ "mp45",
+ "mp46",
+ "mp47",
+ "mp48",
+ "mp49",
+ "mp50",
+ "mp51",
+ "mp52",
+ "mp53",
+ "mp54",
+ "mp55",
+ "mp56",
+ "mp57",
+ "mp58",
+ "mp59",
+ "mp60",
+ "mp61",
+ "mp62",
+ "mp63",
+ "mp64",
+ "mp65",
+ "mp66",
+ "mp67",
+ "mp68",
+ "mp69",
+ "mp70",
+ "mp71",
+ "mp72",
+ "mp73",
+ "mp74",
+ "mp75",
+ "mp76",
+ "mp77",
+ "mp78",
+ "mp79",
+ "mp80",
+ "mp81",
+ "mp82",
+ "mp83",
+ "mp84",
+ "mp85",
+ "mp86",
+ "mp87",
+ "mp88",
+ "mp89",
+ "mp90",
+ "mp91",
+ "mp92",
+ "mp93",
+ "mp94",
+ "mp95",
+ "mp96",
+ "mp97",
+ "mp98",
+ "mp99",
+ "mp100",
+ "mp101",
+ "mp102",
+ "mp103",
+ "mp104",
+ "mp105",
+ "mp106",
+ "mp107",
+ "mp108",
+ "mp109",
+ "mp110",
+ "mp111",
+ "mp112",
+ "mp113",
+ "mp114",
+ "mp115",
+ "mp116",
+ "mp117",
+ "mp118",
+ "mp119",
+ "mp120",
+ "mp121",
+ "mp122",
+ "mp123",
+ "mp124",
+ "mp125",
+ "mp126",
+ "mp127",
+ "mp128",
+ "mp129",
+ "mp130",
+ "mp131",
+ "mp132",
+ "mp133",
+ "mp134",
+ "mp135",
+ "mp136",
+ "mp137",
+ "mp138",
+ "mp139",
+ "mp140",
+ "mp141",
+ "mp142",
+ "mp143",
+ "mp144",
+ "mp145",
+ "mp146",
+ "mp147",
+ "mp148",
+ "mp149",
+ "mp150",
+ "mp151",
+ "mp152",
+ "mp153",
+ "mp154",
+ "mp155",
+ "mp156",
+ "mp157",
+ "mp158",
+ "mp159",
+ "mp160",
+ "mp161",
+ "mp162",
+ "mp163",
+ "mp164",
+ "mp165",
+ "mp166",
+ "mp167",
+ "mp168",
+ "mp169",
+ "mp170",
+ "mp171",
+ "mp172",
+ "mp173",
+ "mp174",
+ "mp175",
+ "mp176",
+ "mp177",
+ "mp178",
+ "mp179",
+ "mp180",
+ "mp181",
+ "mp182",
+ "mp183",
+ "mp184",
+ "mp185",
+ "mp186",
+ "mp187",
+ "mp188",
+ "mp189",
+ "mp190",
+ "mp191",
+ "mp192",
+ "mp193",
+ "mp194",
+ "mp195",
+ "mp196",
+ "mp197",
+ "mp198",
+ "mp199",
+ "mp200",
+ "mp201",
+ "mp202",
+ "mp203",
+ "mp204",
+ "mp205",
+ "mp206",
+ "mp207",
+ "mp208",
+ "mp209",
+ "mp210",
+ "mp211",
+ "mp212",
+ "mp213",
+ "mp214",
+ "mp215",
+ "mp216",
+ "mp217",
+ "mp218",
+ "mp219",
+ "mp220",
+ "mp221",
+ "mp222",
+ "mp223",
+ "mp224",
+ "mp225",
+ "mp226",
+ "mp227",
+ "mp228",
+ "mp229",
+ "mp230",
+ "mp231",
+ "mp232",
+ "mp233",
+ "mp234",
+ "mp235",
+ "mp236",
+ "mp237",
+ "mp238",
+ "mp239",
+ "mp240",
+ "mp241",
+ "mp242",
+ "mp243",
+ "mp244",
+ "mp245",
+ "mp246",
+ "mp247",
+ "mp248",
+ "mp249",
+ "mp250",
+ "mp251",
+ "mp252",
+ "mp253",
+ "mp254",
+ "mp255",
+ "unused0",
+ "unused1",
+ "unused2",
+ "unused3",
+ "unused4",
+ "unused5",
+ "unused6",
+ "unused7",
+ "unused8",
+ "unused9",
+ "unused10",
+ "unused11",
+ "unused12",
+ "unused13",
+ "unused14",
+ "unused15",
+ "unused16",
+ "unused17",
+ "unused18",
+ "unused19",
+ "unused20",
+ "unused21",
+ "unused22",
+ "unused23",
+ "unused24",
+ "unused25",
+ "unused26",
+ "unused27",
+ "unused28",
+ "unused29",
+ "unused30",
+ "unused31",
+ "unused32",
+ "unused33",
+ "unused34",
+ "unused35",
+ "unused36",
+ "unused37",
+ "unused38",
+ "unused39",
+ "unused40",
+ "unused41",
+ "unused42",
+ "unused43",
+ "unused44",
+ "unused45",
+ "unused46",
+ "unused47",
+ "unused48",
+ "unused49",
+ "unused50",
+ "unused51",
+ "unused52",
+ "unused53",
+ "unused54",
+ "unused55",
+ "unused56",
+ "unused57",
+ "unused58",
+ "unused59",
+ "unused60",
+ "unused61",
+ "unused62",
+ "unused63",
+ "unused64",
+ "unused65",
+ "unused66",
+ "unused67",
+ "unused68",
+ "unused69",
+ "unused70",
+ "unused71",
+ "unused72",
+ "unused73",
+ "unused74",
+ "unused75",
+ "unused76",
+ "unused77",
+ "unused78",
+ "unused79",
+ "unused80",
+ "unused81",
+ "unused82",
+ "unused83",
+ "unused84",
+ "unused85",
+ "unused86",
+ "unused87",
+ "unused88",
+ "unused89",
+ "unused90",
+ "unused91",
+ "unused92",
+ "unused93",
+ "unused94",
+ "unused95",
+ "unused96",
+ "unused97",
+ "unused98",
+ "unused99",
+ "unused100",
+ "unused101",
+ "unused102",
+ "unused103",
+ "unused104",
+ "unused105",
+ "unused106",
+ "unused107",
+ "unused108",
+ "unused109",
+ "unused110",
+ "unused111",
+ "unused112",
+ "unused113",
+ "unused114",
+ "unused115",
+ "unused116",
+ "unused117",
+ "unused118",
+ "unused119",
+ "unused120",
+ "unused121",
+ "unused122",
+ "unused123",
+ "unused124",
+ "unused125",
+ "unused126",
+ "unused127",
+ "unused128",
+ "unused129",
+ "unused130",
+ "unused131",
+ "unused132",
+ "unused133",
+ "unused134",
+ "unused135",
+ "unused136",
+ "unused137",
+ "unused138",
+ "unused139",
+ "unused140",
+ "unused141",
+ "unused142",
+ "unused143",
+ "unused144",
+ "unused145",
+ "unused146",
+ "unused147",
+ "unused148",
+ "unused149",
+ "unused150",
+ "unused151",
+ "unused152",
+ "unused153",
+ "unused154",
+ "unused155",
+ "unused156",
+ "unused157",
+ "unused158",
+ "unused159",
+ "unused160",
+ "unused161",
+ "unused162",
+ "unused163",
+ "unused164",
+ "unused165",
+ "unused166",
+ "unused167",
+ "unused168",
+ "unused169",
+ "unused170",
+ "unused171",
+ "unused172",
+ "unused173",
+ "unused174",
+ "unused175",
+ "unused176",
+ "unused177",
+ "unused178",
+ "unused179",
+ "unused180",
+ "unused181",
+ "unused182",
+ "unused183",
+ "unused184",
+ "unused185",
+ "unused186",
+ "unused187",
+ "unused188",
+ "unused189",
+ "unused190",
+ "unused191",
+ "unused192",
+ "unused193",
+ "unused194",
+ "unused195",
+ "unused196",
+ "unused197",
+ "unused198",
+ "unused199",
+ "unused200",
+ "unused201",
+ "unused202",
+ "unused203",
+ "unused204",
+ "unused205",
+ "unused206",
+ "unused207",
+ "unused208",
+ "unused209",
+ "unused210",
+ "unused211",
+ "unused212",
+ "unused213",
+ "unused214",
+ "unused215",
+ "unused216",
+ "unused217",
+ "unused218",
+ "unused219",
+ "unused220",
+ "unused221",
+ "unused222",
+ "unused223",
+ "unused224",
+ "unused225",
+ "unused226",
+ "unused227",
+ "unused228",
+ "unused229",
+ "unused230",
+ "unused231",
+ "unused232",
+ "unused233",
+ "unused234",
+ "unused235",
+ "unused236",
+ "unused237",
+ "unused238",
+ "unused239",
+ "unused240",
+ "unused241",
+ "unused242",
+ "unused243",
+ "unused244",
+ "unused245",
+ "unused246",
+ "unused247",
+ "unused248",
+ "unused249",
+ "unused250",
+ "unused251",
+ "unused252",
+ "unused253",
+ "unused254",
+ "unused255"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "volume": {
+ "enum": [
+ "rootfs",
+ "mp0",
+ "mp1",
+ "mp2",
+ "mp3",
+ "mp4",
+ "mp5",
+ "mp6",
+ "mp7",
+ "mp8",
+ "mp9",
+ "mp10",
+ "mp11",
+ "mp12",
+ "mp13",
+ "mp14",
+ "mp15",
+ "mp16",
+ "mp17",
+ "mp18",
+ "mp19",
+ "mp20",
+ "mp21",
+ "mp22",
+ "mp23",
+ "mp24",
+ "mp25",
+ "mp26",
+ "mp27",
+ "mp28",
+ "mp29",
+ "mp30",
+ "mp31",
+ "mp32",
+ "mp33",
+ "mp34",
+ "mp35",
+ "mp36",
+ "mp37",
+ "mp38",
+ "mp39",
+ "mp40",
+ "mp41",
+ "mp42",
+ "mp43",
+ "mp44",
+ "mp45",
+ "mp46",
+ "mp47",
+ "mp48",
+ "mp49",
+ "mp50",
+ "mp51",
+ "mp52",
+ "mp53",
+ "mp54",
+ "mp55",
+ "mp56",
+ "mp57",
+ "mp58",
+ "mp59",
+ "mp60",
+ "mp61",
+ "mp62",
+ "mp63",
+ "mp64",
+ "mp65",
+ "mp66",
+ "mp67",
+ "mp68",
+ "mp69",
+ "mp70",
+ "mp71",
+ "mp72",
+ "mp73",
+ "mp74",
+ "mp75",
+ "mp76",
+ "mp77",
+ "mp78",
+ "mp79",
+ "mp80",
+ "mp81",
+ "mp82",
+ "mp83",
+ "mp84",
+ "mp85",
+ "mp86",
+ "mp87",
+ "mp88",
+ "mp89",
+ "mp90",
+ "mp91",
+ "mp92",
+ "mp93",
+ "mp94",
+ "mp95",
+ "mp96",
+ "mp97",
+ "mp98",
+ "mp99",
+ "mp100",
+ "mp101",
+ "mp102",
+ "mp103",
+ "mp104",
+ "mp105",
+ "mp106",
+ "mp107",
+ "mp108",
+ "mp109",
+ "mp110",
+ "mp111",
+ "mp112",
+ "mp113",
+ "mp114",
+ "mp115",
+ "mp116",
+ "mp117",
+ "mp118",
+ "mp119",
+ "mp120",
+ "mp121",
+ "mp122",
+ "mp123",
+ "mp124",
+ "mp125",
+ "mp126",
+ "mp127",
+ "mp128",
+ "mp129",
+ "mp130",
+ "mp131",
+ "mp132",
+ "mp133",
+ "mp134",
+ "mp135",
+ "mp136",
+ "mp137",
+ "mp138",
+ "mp139",
+ "mp140",
+ "mp141",
+ "mp142",
+ "mp143",
+ "mp144",
+ "mp145",
+ "mp146",
+ "mp147",
+ "mp148",
+ "mp149",
+ "mp150",
+ "mp151",
+ "mp152",
+ "mp153",
+ "mp154",
+ "mp155",
+ "mp156",
+ "mp157",
+ "mp158",
+ "mp159",
+ "mp160",
+ "mp161",
+ "mp162",
+ "mp163",
+ "mp164",
+ "mp165",
+ "mp166",
+ "mp167",
+ "mp168",
+ "mp169",
+ "mp170",
+ "mp171",
+ "mp172",
+ "mp173",
+ "mp174",
+ "mp175",
+ "mp176",
+ "mp177",
+ "mp178",
+ "mp179",
+ "mp180",
+ "mp181",
+ "mp182",
+ "mp183",
+ "mp184",
+ "mp185",
+ "mp186",
+ "mp187",
+ "mp188",
+ "mp189",
+ "mp190",
+ "mp191",
+ "mp192",
+ "mp193",
+ "mp194",
+ "mp195",
+ "mp196",
+ "mp197",
+ "mp198",
+ "mp199",
+ "mp200",
+ "mp201",
+ "mp202",
+ "mp203",
+ "mp204",
+ "mp205",
+ "mp206",
+ "mp207",
+ "mp208",
+ "mp209",
+ "mp210",
+ "mp211",
+ "mp212",
+ "mp213",
+ "mp214",
+ "mp215",
+ "mp216",
+ "mp217",
+ "mp218",
+ "mp219",
+ "mp220",
+ "mp221",
+ "mp222",
+ "mp223",
+ "mp224",
+ "mp225",
+ "mp226",
+ "mp227",
+ "mp228",
+ "mp229",
+ "mp230",
+ "mp231",
+ "mp232",
+ "mp233",
+ "mp234",
+ "mp235",
+ "mp236",
+ "mp237",
+ "mp238",
+ "mp239",
+ "mp240",
+ "mp241",
+ "mp242",
+ "mp243",
+ "mp244",
+ "mp245",
+ "mp246",
+ "mp247",
+ "mp248",
+ "mp249",
+ "mp250",
+ "mp251",
+ "mp252",
+ "mp253",
+ "mp254",
+ "mp255",
+ "unused0",
+ "unused1",
+ "unused2",
+ "unused3",
+ "unused4",
+ "unused5",
+ "unused6",
+ "unused7",
+ "unused8",
+ "unused9",
+ "unused10",
+ "unused11",
+ "unused12",
+ "unused13",
+ "unused14",
+ "unused15",
+ "unused16",
+ "unused17",
+ "unused18",
+ "unused19",
+ "unused20",
+ "unused21",
+ "unused22",
+ "unused23",
+ "unused24",
+ "unused25",
+ "unused26",
+ "unused27",
+ "unused28",
+ "unused29",
+ "unused30",
+ "unused31",
+ "unused32",
+ "unused33",
+ "unused34",
+ "unused35",
+ "unused36",
+ "unused37",
+ "unused38",
+ "unused39",
+ "unused40",
+ "unused41",
+ "unused42",
+ "unused43",
+ "unused44",
+ "unused45",
+ "unused46",
+ "unused47",
+ "unused48",
+ "unused49",
+ "unused50",
+ "unused51",
+ "unused52",
+ "unused53",
+ "unused54",
+ "unused55",
+ "unused56",
+ "unused57",
+ "unused58",
+ "unused59",
+ "unused60",
+ "unused61",
+ "unused62",
+ "unused63",
+ "unused64",
+ "unused65",
+ "unused66",
+ "unused67",
+ "unused68",
+ "unused69",
+ "unused70",
+ "unused71",
+ "unused72",
+ "unused73",
+ "unused74",
+ "unused75",
+ "unused76",
+ "unused77",
+ "unused78",
+ "unused79",
+ "unused80",
+ "unused81",
+ "unused82",
+ "unused83",
+ "unused84",
+ "unused85",
+ "unused86",
+ "unused87",
+ "unused88",
+ "unused89",
+ "unused90",
+ "unused91",
+ "unused92",
+ "unused93",
+ "unused94",
+ "unused95",
+ "unused96",
+ "unused97",
+ "unused98",
+ "unused99",
+ "unused100",
+ "unused101",
+ "unused102",
+ "unused103",
+ "unused104",
+ "unused105",
+ "unused106",
+ "unused107",
+ "unused108",
+ "unused109",
+ "unused110",
+ "unused111",
+ "unused112",
+ "unused113",
+ "unused114",
+ "unused115",
+ "unused116",
+ "unused117",
+ "unused118",
+ "unused119",
+ "unused120",
+ "unused121",
+ "unused122",
+ "unused123",
+ "unused124",
+ "unused125",
+ "unused126",
+ "unused127",
+ "unused128",
+ "unused129",
+ "unused130",
+ "unused131",
+ "unused132",
+ "unused133",
+ "unused134",
+ "unused135",
+ "unused136",
+ "unused137",
+ "unused138",
+ "unused139",
+ "unused140",
+ "unused141",
+ "unused142",
+ "unused143",
+ "unused144",
+ "unused145",
+ "unused146",
+ "unused147",
+ "unused148",
+ "unused149",
+ "unused150",
+ "unused151",
+ "unused152",
+ "unused153",
+ "unused154",
+ "unused155",
+ "unused156",
+ "unused157",
+ "unused158",
+ "unused159",
+ "unused160",
+ "unused161",
+ "unused162",
+ "unused163",
+ "unused164",
+ "unused165",
+ "unused166",
+ "unused167",
+ "unused168",
+ "unused169",
+ "unused170",
+ "unused171",
+ "unused172",
+ "unused173",
+ "unused174",
+ "unused175",
+ "unused176",
+ "unused177",
+ "unused178",
+ "unused179",
+ "unused180",
+ "unused181",
+ "unused182",
+ "unused183",
+ "unused184",
+ "unused185",
+ "unused186",
+ "unused187",
+ "unused188",
+ "unused189",
+ "unused190",
+ "unused191",
+ "unused192",
+ "unused193",
+ "unused194",
+ "unused195",
+ "unused196",
+ "unused197",
+ "unused198",
+ "unused199",
+ "unused200",
+ "unused201",
+ "unused202",
+ "unused203",
+ "unused204",
+ "unused205",
+ "unused206",
+ "unused207",
+ "unused208",
+ "unused209",
+ "unused210",
+ "unused211",
+ "unused212",
+ "unused213",
+ "unused214",
+ "unused215",
+ "unused216",
+ "unused217",
+ "unused218",
+ "unused219",
+ "unused220",
+ "unused221",
+ "unused222",
+ "unused223",
+ "unused224",
+ "unused225",
+ "unused226",
+ "unused227",
+ "unused228",
+ "unused229",
+ "unused230",
+ "unused231",
+ "unused232",
+ "unused233",
+ "unused234",
+ "unused235",
+ "unused236",
+ "unused237",
+ "unused238",
+ "unused239",
+ "unused240",
+ "unused241",
+ "unused242",
+ "unused243",
+ "unused244",
+ "unused245",
+ "unused246",
+ "unused247",
+ "unused248",
+ "unused249",
+ "unused250",
+ "unused251",
+ "unused252",
+ "unused253",
+ "unused254",
+ "unused255"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/lxc/{vmid}/pending": {
+ "get": {
+ "responseFields": [
+ "delete",
+ "key",
+ "pending",
+ "value"
+ ]
+ }
+ },
+ "/nodes/{node}/lxc/{vmid}/interfaces": {
+ "get": {
+ "responseFields": [
+ "hardware-address",
+ "hwaddr",
+ "inet",
+ "inet6",
+ "ip-addresses",
+ "name"
+ ]
+ }
+ },
+ "/nodes/{node}/lxc/{vmid}/mtunnelwebsocket": {
+ "get": {
+ "responseFields": [
+ "port",
+ "socket"
+ ]
+ }
+ },
+ "/nodes/{node}/ceph": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/nodes/{node}/ceph/cfg": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/nodes/{node}/ceph/cfg/db": {
+ "get": {
+ "responseFields": [
+ "can_update_at_runtime",
+ "level",
+ "mask",
+ "name",
+ "section",
+ "value"
+ ]
+ }
+ },
+ "/nodes/{node}/ceph/osd/{osdid}": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/nodes/{node}/ceph/osd/{osdid}/metadata": {
+ "get": {
+ "responseFields": [
+ "devices",
+ "osd"
+ ]
+ }
+ },
+ "/nodes/{node}/ceph/osd/{osdid}/lv-info": {
+ "get": {
+ "params": {
+ "type": {
+ "enum": [
+ "block",
+ "db",
+ "wal"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "creation_time",
+ "lv_name",
+ "lv_path",
+ "lv_size",
+ "lv_uuid",
+ "vg_name"
+ ]
+ }
+ },
+ "/nodes/{node}/ceph/mds": {
+ "get": {
+ "responseFields": [
+ "addr",
+ "host",
+ "name",
+ "rank",
+ "standby_replay",
+ "state"
+ ]
+ }
+ },
+ "/nodes/{node}/ceph/mgr": {
+ "get": {
+ "responseFields": [
+ "addr",
+ "host",
+ "name",
+ "state"
+ ]
+ }
+ },
+ "/nodes/{node}/ceph/mon": {
+ "get": {
+ "responseFields": [
+ "addr",
+ "ceph_version",
+ "ceph_version_short",
+ "direxists",
+ "host",
+ "name",
+ "quorum",
+ "rank",
+ "service",
+ "state"
+ ]
+ }
+ },
+ "/nodes/{node}/ceph/fs": {
+ "get": {
+ "responseFields": [
+ "data_pool",
+ "metadata_pool",
+ "name"
+ ]
+ }
+ },
+ "/nodes/{node}/ceph/pool": {
+ "get": {
+ "responseFields": [
+ "application_metadata",
+ "autoscale_status",
+ "bytes_used",
+ "crush_rule",
+ "crush_rule_name",
+ "min_size",
+ "percent_used",
+ "pg_autoscale_mode",
+ "pg_num",
+ "pg_num_final",
+ "pg_num_min",
+ "pool",
+ "pool_name",
+ "size",
+ "target_size",
+ "target_size_ratio",
+ "type"
+ ]
+ },
+ "post": {
+ "params": {
+ "application": {
+ "enum": [
+ "rbd",
+ "cephfs",
+ "rgw"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "pg_autoscale_mode": {
+ "enum": [
+ "on",
+ "off",
+ "warn"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/ceph/pool/{name}": {
+ "get": {
+ "responseFields": []
+ },
+ "put": {
+ "params": {
+ "application": {
+ "enum": [
+ "rbd",
+ "cephfs",
+ "rgw"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "pg_autoscale_mode": {
+ "enum": [
+ "on",
+ "off",
+ "warn"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/ceph/pool/{name}/status": {
+ "get": {
+ "responseFields": [
+ "application",
+ "application_list",
+ "autoscale_status",
+ "crush_rule",
+ "fast_read",
+ "hashpspool",
+ "id",
+ "min_size",
+ "name",
+ "nodeep-scrub",
+ "nodelete",
+ "nopgchange",
+ "noscrub",
+ "nosizechange",
+ "pg_autoscale_mode",
+ "pg_num",
+ "pg_num_min",
+ "pgp_num",
+ "size",
+ "statistics",
+ "target_size",
+ "target_size_ratio",
+ "use_gmt_hitset",
+ "write_fadvise_dontneed"
+ ]
+ }
+ },
+ "/nodes/{node}/ceph/log": {
+ "get": {
+ "responseFields": [
+ "n",
+ "t"
+ ]
+ }
+ },
+ "/nodes/{node}/ceph/rules": {
+ "get": {
+ "responseFields": [
+ "name"
+ ]
+ }
+ },
+ "/nodes/{node}/ceph/cmd-safety": {
+ "get": {
+ "params": {
+ "action": {
+ "enum": [
+ "stop",
+ "destroy"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "service": {
+ "enum": [
+ "osd",
+ "mon",
+ "mds"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "safe",
+ "status"
+ ]
+ }
+ },
+ "/nodes/{node}/vzdump": {
+ "post": {
+ "params": {
+ "compress": {
+ "enum": [
+ "0",
+ "1",
+ "gzip",
+ "lzo",
+ "zstd"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "mailnotification": {
+ "enum": [
+ "always",
+ "failure"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "mode": {
+ "enum": [
+ "snapshot",
+ "suspend",
+ "stop"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "notification-mode": {
+ "enum": [
+ "auto",
+ "legacy-sendmail",
+ "notification-system"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "pbs-change-detection-mode": {
+ "enum": [
+ "legacy",
+ "data",
+ "metadata"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/vzdump/defaults": {
+ "get": {
+ "responseFields": [
+ "all",
+ "bwlimit",
+ "compress",
+ "dumpdir",
+ "exclude",
+ "exclude-path",
+ "fleecing",
+ "ionice",
+ "lockwait",
+ "mailnotification",
+ "mailto",
+ "maxfiles",
+ "mode",
+ "node",
+ "notes-template",
+ "notification-mode",
+ "pbs-change-detection-mode",
+ "performance",
+ "pigz",
+ "pool",
+ "protected",
+ "prune-backups",
+ "quiet",
+ "remove",
+ "script",
+ "stdexcludes",
+ "stop",
+ "stopwait",
+ "storage",
+ "tmpdir",
+ "vmid",
+ "zstd"
+ ]
+ }
+ },
+ "/nodes/{node}/services": {
+ "get": {
+ "responseFields": [
+ "active-state",
+ "desc",
+ "name",
+ "service",
+ "state",
+ "unit-state"
+ ]
+ }
+ },
+ "/nodes/{node}/services/{service}": {
+ "get": {
+ "params": {
+ "service": {
+ "enum": [
+ "chrony",
+ "corosync",
+ "cron",
+ "ksmtuned",
+ "lxcfs",
+ "postfix",
+ "proxmox-firewall",
+ "pve-cluster",
+ "pve-firewall",
+ "pve-ha-crm",
+ "pve-ha-lrm",
+ "pve-lxc-syscalld",
+ "pvedaemon",
+ "pvefw-logger",
+ "pveproxy",
+ "pvescheduler",
+ "pvestatd",
+ "qmeventd",
+ "spiceproxy",
+ "sshd",
+ "syslog",
+ "systemd-journald",
+ "systemd-timesyncd"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "subdir"
+ ]
+ }
+ },
+ "/nodes/{node}/services/{service}/state": {
+ "get": {
+ "params": {
+ "service": {
+ "enum": [
+ "chrony",
+ "corosync",
+ "cron",
+ "ksmtuned",
+ "lxcfs",
+ "postfix",
+ "proxmox-firewall",
+ "pve-cluster",
+ "pve-firewall",
+ "pve-ha-crm",
+ "pve-ha-lrm",
+ "pve-lxc-syscalld",
+ "pvedaemon",
+ "pvefw-logger",
+ "pveproxy",
+ "pvescheduler",
+ "pvestatd",
+ "qmeventd",
+ "spiceproxy",
+ "sshd",
+ "syslog",
+ "systemd-journald",
+ "systemd-timesyncd"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "active-state",
+ "desc",
+ "name",
+ "service",
+ "state",
+ "unit-state"
+ ]
+ }
+ },
+ "/nodes/{node}/services/{service}/start": {
+ "post": {
+ "params": {
+ "service": {
+ "enum": [
+ "chrony",
+ "corosync",
+ "cron",
+ "ksmtuned",
+ "lxcfs",
+ "postfix",
+ "proxmox-firewall",
+ "pve-cluster",
+ "pve-firewall",
+ "pve-ha-crm",
+ "pve-ha-lrm",
+ "pve-lxc-syscalld",
+ "pvedaemon",
+ "pvefw-logger",
+ "pveproxy",
+ "pvescheduler",
+ "pvestatd",
+ "qmeventd",
+ "spiceproxy",
+ "sshd",
+ "syslog",
+ "systemd-journald",
+ "systemd-timesyncd"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/services/{service}/stop": {
+ "post": {
+ "params": {
+ "service": {
+ "enum": [
+ "chrony",
+ "corosync",
+ "cron",
+ "ksmtuned",
+ "lxcfs",
+ "postfix",
+ "proxmox-firewall",
+ "pve-cluster",
+ "pve-firewall",
+ "pve-ha-crm",
+ "pve-ha-lrm",
+ "pve-lxc-syscalld",
+ "pvedaemon",
+ "pvefw-logger",
+ "pveproxy",
+ "pvescheduler",
+ "pvestatd",
+ "qmeventd",
+ "spiceproxy",
+ "sshd",
+ "syslog",
+ "systemd-journald",
+ "systemd-timesyncd"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/services/{service}/restart": {
+ "post": {
+ "params": {
+ "service": {
+ "enum": [
+ "chrony",
+ "corosync",
+ "cron",
+ "ksmtuned",
+ "lxcfs",
+ "postfix",
+ "proxmox-firewall",
+ "pve-cluster",
+ "pve-firewall",
+ "pve-ha-crm",
+ "pve-ha-lrm",
+ "pve-lxc-syscalld",
+ "pvedaemon",
+ "pvefw-logger",
+ "pveproxy",
+ "pvescheduler",
+ "pvestatd",
+ "qmeventd",
+ "spiceproxy",
+ "sshd",
+ "syslog",
+ "systemd-journald",
+ "systemd-timesyncd"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/services/{service}/reload": {
+ "post": {
+ "params": {
+ "service": {
+ "enum": [
+ "chrony",
+ "corosync",
+ "cron",
+ "ksmtuned",
+ "lxcfs",
+ "postfix",
+ "proxmox-firewall",
+ "pve-cluster",
+ "pve-firewall",
+ "pve-ha-crm",
+ "pve-ha-lrm",
+ "pve-lxc-syscalld",
+ "pvedaemon",
+ "pvefw-logger",
+ "pveproxy",
+ "pvescheduler",
+ "pvestatd",
+ "qmeventd",
+ "spiceproxy",
+ "sshd",
+ "syslog",
+ "systemd-journald",
+ "systemd-timesyncd"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/subscription": {
+ "get": {
+ "responseFields": [
+ "checktime",
+ "key",
+ "level",
+ "message",
+ "nextduedate",
+ "productname",
+ "regdate",
+ "serverid",
+ "signature",
+ "sockets",
+ "status",
+ "url"
+ ]
+ }
+ },
+ "/nodes/{node}/network": {
+ "get": {
+ "params": {
+ "type": {
+ "enum": [
+ "bridge",
+ "bond",
+ "eth",
+ "alias",
+ "vlan",
+ "fabric",
+ "OVSBridge",
+ "OVSBond",
+ "OVSPort",
+ "OVSIntPort",
+ "vnet",
+ "any_bridge",
+ "any_local_bridge",
+ "include_sdn"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "active",
+ "address",
+ "address6",
+ "autostart",
+ "bond-primary",
+ "bond_mode",
+ "bond_xmit_hash_policy",
+ "bridge-access",
+ "bridge-arp-nd-suppress",
+ "bridge-learning",
+ "bridge-multicast-flood",
+ "bridge-unicast-flood",
+ "bridge_ports",
+ "bridge_vids",
+ "bridge_vlan_aware",
+ "cidr",
+ "cidr6",
+ "comments",
+ "comments6",
+ "exists",
+ "families",
+ "gateway",
+ "gateway6",
+ "iface",
+ "link-type",
+ "method",
+ "method6",
+ "mtu",
+ "netmask",
+ "netmask6",
+ "options",
+ "options6",
+ "ovs_bonds",
+ "ovs_bridge",
+ "ovs_options",
+ "ovs_ports",
+ "ovs_tag",
+ "priority",
+ "slaves",
+ "type",
+ "uplink-id",
+ "vlan-id",
+ "vlan-protocol",
+ "vlan-raw-device",
+ "vxlan-id",
+ "vxlan-local-tunnelip",
+ "vxlan-physdev",
+ "vxlan-svcnodeip"
+ ]
+ },
+ "post": {
+ "params": {
+ "bond_mode": {
+ "enum": [
+ "balance-rr",
+ "active-backup",
+ "balance-xor",
+ "broadcast",
+ "802.3ad",
+ "balance-tlb",
+ "balance-alb",
+ "balance-slb",
+ "lacp-balance-slb",
+ "lacp-balance-tcp"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "bond_xmit_hash_policy": {
+ "enum": [
+ "layer2",
+ "layer2+3",
+ "layer3+4"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "netmask": {
+ "enum": [
+ "0.0.0.0",
+ "128.0.0.0",
+ "192.0.0.0",
+ "224.0.0.0",
+ "240.0.0.0",
+ "248.0.0.0",
+ "252.0.0.0",
+ "254.0.0.0",
+ "255.0.0.0",
+ "255.128.0.0",
+ "255.192.0.0",
+ "255.224.0.0",
+ "255.240.0.0",
+ "255.248.0.0",
+ "255.252.0.0",
+ "255.254.0.0",
+ "255.255.0.0",
+ "255.255.128.0",
+ "255.255.192.0",
+ "255.255.224.0",
+ "255.255.240.0",
+ "255.255.248.0",
+ "255.255.252.0",
+ "255.255.254.0",
+ "255.255.255.0",
+ "255.255.255.128",
+ "255.255.255.192",
+ "255.255.255.224",
+ "255.255.255.240",
+ "255.255.255.248",
+ "255.255.255.252",
+ "255.255.255.254",
+ "255.255.255.255"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "bridge",
+ "bond",
+ "eth",
+ "alias",
+ "vlan",
+ "fabric",
+ "OVSBridge",
+ "OVSBond",
+ "OVSPort",
+ "OVSIntPort",
+ "vnet",
+ "unknown"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/network/{iface}": {
+ "get": {
+ "responseFields": [
+ "method",
+ "type"
+ ]
+ },
+ "put": {
+ "params": {
+ "bond_mode": {
+ "enum": [
+ "balance-rr",
+ "active-backup",
+ "balance-xor",
+ "broadcast",
+ "802.3ad",
+ "balance-tlb",
+ "balance-alb",
+ "balance-slb",
+ "lacp-balance-slb",
+ "lacp-balance-tcp"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "bond_xmit_hash_policy": {
+ "enum": [
+ "layer2",
+ "layer2+3",
+ "layer3+4"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "netmask": {
+ "enum": [
+ "0.0.0.0",
+ "128.0.0.0",
+ "192.0.0.0",
+ "224.0.0.0",
+ "240.0.0.0",
+ "248.0.0.0",
+ "252.0.0.0",
+ "254.0.0.0",
+ "255.0.0.0",
+ "255.128.0.0",
+ "255.192.0.0",
+ "255.224.0.0",
+ "255.240.0.0",
+ "255.248.0.0",
+ "255.252.0.0",
+ "255.254.0.0",
+ "255.255.0.0",
+ "255.255.128.0",
+ "255.255.192.0",
+ "255.255.224.0",
+ "255.255.240.0",
+ "255.255.248.0",
+ "255.255.252.0",
+ "255.255.254.0",
+ "255.255.255.0",
+ "255.255.255.128",
+ "255.255.255.192",
+ "255.255.255.224",
+ "255.255.255.240",
+ "255.255.255.248",
+ "255.255.255.252",
+ "255.255.255.254",
+ "255.255.255.255"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "bridge",
+ "bond",
+ "eth",
+ "alias",
+ "vlan",
+ "fabric",
+ "OVSBridge",
+ "OVSBond",
+ "OVSPort",
+ "OVSIntPort",
+ "vnet",
+ "unknown"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/tasks": {
+ "get": {
+ "params": {
+ "source": {
+ "enum": [
+ "archive",
+ "active",
+ "all"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "statusfilter": {
+ "enum": null,
+ "x-enum-values": [
+ "ok",
+ "error",
+ "warning",
+ "unknown"
+ ],
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "endtime",
+ "id",
+ "node",
+ "pid",
+ "pstart",
+ "starttime",
+ "status",
+ "type",
+ "upid",
+ "user"
+ ]
+ }
+ },
+ "/nodes/{node}/tasks/{upid}": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/nodes/{node}/tasks/{upid}/log": {
+ "get": {
+ "responseFields": [
+ "n",
+ "t"
+ ]
+ }
+ },
+ "/nodes/{node}/tasks/{upid}/status": {
+ "get": {
+ "responseFields": [
+ "exitstatus",
+ "id",
+ "node",
+ "pid",
+ "pstart",
+ "starttime",
+ "status",
+ "type",
+ "upid",
+ "user"
+ ]
+ }
+ },
+ "/nodes/{node}/scan": {
+ "get": {
+ "responseFields": [
+ "method"
+ ]
+ }
+ },
+ "/nodes/{node}/scan/nfs": {
+ "get": {
+ "responseFields": [
+ "options",
+ "path"
+ ]
+ }
+ },
+ "/nodes/{node}/scan/cifs": {
+ "get": {
+ "responseFields": [
+ "description",
+ "share"
+ ]
+ }
+ },
+ "/nodes/{node}/scan/pbs": {
+ "get": {
+ "responseFields": [
+ "comment",
+ "store"
+ ]
+ }
+ },
+ "/nodes/{node}/scan/iscsi": {
+ "get": {
+ "responseFields": [
+ "portal",
+ "target"
+ ]
+ }
+ },
+ "/nodes/{node}/scan/lvm": {
+ "get": {
+ "responseFields": [
+ "vg"
+ ]
+ }
+ },
+ "/nodes/{node}/scan/lvmthin": {
+ "get": {
+ "responseFields": [
+ "lv"
+ ]
+ }
+ },
+ "/nodes/{node}/scan/zfs": {
+ "get": {
+ "responseFields": [
+ "pool"
+ ]
+ }
+ },
+ "/nodes/{node}/hardware": {
+ "get": {
+ "responseFields": [
+ "type"
+ ]
+ }
+ },
+ "/nodes/{node}/hardware/pci": {
+ "get": {
+ "responseFields": [
+ "class",
+ "device",
+ "device_name",
+ "id",
+ "iommugroup",
+ "mdev",
+ "subsystem_device",
+ "subsystem_device_name",
+ "subsystem_vendor",
+ "subsystem_vendor_name",
+ "vendor",
+ "vendor_name"
+ ]
+ }
+ },
+ "/nodes/{node}/hardware/pci/{pci-id-or-mapping}": {
+ "get": {
+ "responseFields": [
+ "method"
+ ]
+ }
+ },
+ "/nodes/{node}/hardware/pci/{pci-id-or-mapping}/mdev": {
+ "get": {
+ "responseFields": [
+ "available",
+ "description",
+ "name",
+ "type"
+ ]
+ }
+ },
+ "/nodes/{node}/hardware/usb": {
+ "get": {
+ "responseFields": [
+ "busnum",
+ "class",
+ "devnum",
+ "level",
+ "manufacturer",
+ "port",
+ "prodid",
+ "product",
+ "serial",
+ "speed",
+ "usbpath",
+ "vendid"
+ ]
+ }
+ },
+ "/nodes/{node}/capabilities": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/nodes/{node}/capabilities/qemu": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/nodes/{node}/capabilities/qemu/cpu": {
+ "get": {
+ "responseFields": [
+ "custom",
+ "name",
+ "vendor"
+ ]
+ }
+ },
+ "/nodes/{node}/capabilities/qemu/cpu-flags": {
+ "get": {
+ "responseFields": [
+ "description",
+ "name"
+ ]
+ }
+ },
+ "/nodes/{node}/capabilities/qemu/machines": {
+ "get": {
+ "responseFields": [
+ "changes",
+ "id",
+ "type",
+ "version"
+ ]
+ }
+ },
+ "/nodes/{node}/capabilities/qemu/migration": {
+ "get": {
+ "responseFields": [
+ "has-dbus-vmstate"
+ ]
+ }
+ },
+ "/nodes/{node}/storage": {
+ "get": {
+ "params": {
+ "content": {
+ "enum": null,
+ "x-enum-values": [
+ "images",
+ "rootdir",
+ "vztmpl",
+ "backup",
+ "iso",
+ "snippets",
+ "import"
+ ],
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "active",
+ "avail",
+ "content",
+ "enabled",
+ "formats",
+ "select_existing",
+ "shared",
+ "storage",
+ "total",
+ "type",
+ "used",
+ "used_fraction"
+ ]
+ }
+ },
+ "/nodes/{node}/storage/{storage}": {
+ "get": {
+ "responseFields": [
+ "subdir"
+ ]
+ }
+ },
+ "/nodes/{node}/storage/{storage}/prunebackups": {
+ "get": {
+ "params": {
+ "type": {
+ "enum": [
+ "qemu",
+ "lxc"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "ctime",
+ "mark",
+ "type",
+ "vmid",
+ "volid"
+ ]
+ },
+ "delete": {
+ "params": {
+ "type": {
+ "enum": [
+ "qemu",
+ "lxc"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/storage/{storage}/content": {
+ "get": {
+ "params": {
+ "content": {
+ "enum": [
+ "images",
+ "rootdir",
+ "vztmpl",
+ "backup",
+ "iso",
+ "snippets",
+ "import"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "ctime",
+ "encrypted",
+ "format",
+ "notes",
+ "parent",
+ "protected",
+ "size",
+ "used",
+ "verification",
+ "vmid",
+ "volid"
+ ]
+ },
+ "post": {
+ "params": {
+ "format": {
+ "enum": [
+ "raw",
+ "qcow2",
+ "subvol",
+ "vmdk"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/storage/{storage}/content/{volume}": {
+ "get": {
+ "responseFields": [
+ "format",
+ "notes",
+ "path",
+ "protected",
+ "size",
+ "used"
+ ]
+ }
+ },
+ "/nodes/{node}/storage/{storage}/file-restore/list": {
+ "get": {
+ "responseFields": [
+ "filepath",
+ "leaf",
+ "mtime",
+ "size",
+ "text",
+ "type"
+ ]
+ }
+ },
+ "/nodes/{node}/storage/{storage}/status": {
+ "get": {
+ "responseFields": [
+ "active",
+ "avail",
+ "content",
+ "enabled",
+ "shared",
+ "total",
+ "type",
+ "used"
+ ]
+ }
+ },
+ "/nodes/{node}/storage/{storage}/rrd": {
+ "get": {
+ "params": {
+ "cf": {
+ "enum": [
+ "AVERAGE",
+ "MAX"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "timeframe": {
+ "enum": [
+ "hour",
+ "day",
+ "week",
+ "month",
+ "year"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "filename"
+ ]
+ }
+ },
+ "/nodes/{node}/storage/{storage}/rrddata": {
+ "get": {
+ "params": {
+ "cf": {
+ "enum": [
+ "AVERAGE",
+ "MAX"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "timeframe": {
+ "enum": [
+ "hour",
+ "day",
+ "week",
+ "month",
+ "year"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": []
+ }
+ },
+ "/nodes/{node}/storage/{storage}/upload": {
+ "post": {
+ "params": {
+ "checksum-algorithm": {
+ "enum": [
+ "md5",
+ "sha1",
+ "sha224",
+ "sha256",
+ "sha384",
+ "sha512"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "content": {
+ "enum": [
+ "iso",
+ "vztmpl",
+ "import"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/storage/{storage}/download-url": {
+ "post": {
+ "params": {
+ "checksum-algorithm": {
+ "enum": [
+ "md5",
+ "sha1",
+ "sha224",
+ "sha256",
+ "sha384",
+ "sha512"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "content": {
+ "enum": [
+ "iso",
+ "vztmpl",
+ "import"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/storage/{storage}/import-metadata": {
+ "get": {
+ "responseFields": [
+ "create-args",
+ "disks",
+ "net",
+ "source",
+ "type",
+ "warnings"
+ ]
+ }
+ },
+ "/nodes/{node}/disks": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/nodes/{node}/disks/lvm": {
+ "get": {
+ "responseFields": [
+ "children",
+ "leaf"
+ ]
+ }
+ },
+ "/nodes/{node}/disks/lvmthin": {
+ "get": {
+ "responseFields": [
+ "lv",
+ "lv_size",
+ "metadata_size",
+ "metadata_used",
+ "used",
+ "vg"
+ ]
+ }
+ },
+ "/nodes/{node}/disks/directory": {
+ "get": {
+ "responseFields": [
+ "device",
+ "options",
+ "path",
+ "type",
+ "unitfile"
+ ]
+ },
+ "post": {
+ "params": {
+ "filesystem": {
+ "enum": [
+ "ext4",
+ "xfs"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/disks/zfs": {
+ "get": {
+ "responseFields": [
+ "alloc",
+ "dedup",
+ "frag",
+ "free",
+ "health",
+ "name",
+ "size"
+ ]
+ },
+ "post": {
+ "params": {
+ "compression": {
+ "enum": [
+ "on",
+ "off",
+ "gzip",
+ "lz4",
+ "lzjb",
+ "zle",
+ "zstd"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "raidlevel": {
+ "enum": [
+ "single",
+ "mirror",
+ "raid10",
+ "raidz",
+ "raidz2",
+ "raidz3",
+ "draid",
+ "draid2",
+ "draid3"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/disks/zfs/{name}": {
+ "get": {
+ "responseFields": [
+ "action",
+ "children",
+ "errors",
+ "name",
+ "scan",
+ "state",
+ "status"
+ ]
+ }
+ },
+ "/nodes/{node}/disks/list": {
+ "get": {
+ "params": {
+ "type": {
+ "enum": [
+ "unused",
+ "journal_disks"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "devpath",
+ "gpt",
+ "health",
+ "model",
+ "mounted",
+ "osdid",
+ "osdid-list",
+ "parent",
+ "serial",
+ "size",
+ "used",
+ "vendor",
+ "wwn"
+ ]
+ }
+ },
+ "/nodes/{node}/disks/smart": {
+ "get": {
+ "responseFields": [
+ "attributes",
+ "health",
+ "text",
+ "type"
+ ]
+ }
+ },
+ "/nodes/{node}/apt": {
+ "get": {
+ "responseFields": [
+ "id"
+ ]
+ }
+ },
+ "/nodes/{node}/apt/update": {
+ "get": {
+ "responseFields": [
+ "Arch",
+ "Description",
+ "NotifyStatus",
+ "OldVersion",
+ "Origin",
+ "Package",
+ "Priority",
+ "Section",
+ "Title",
+ "Version"
+ ]
+ }
+ },
+ "/nodes/{node}/apt/repositories": {
+ "get": {
+ "responseFields": [
+ "digest",
+ "errors",
+ "files",
+ "infos",
+ "standard-repos"
+ ]
+ }
+ },
+ "/nodes/{node}/apt/versions": {
+ "get": {
+ "responseFields": [
+ "Arch",
+ "CurrentState",
+ "Description",
+ "ManagerVersion",
+ "NotifyStatus",
+ "OldVersion",
+ "Origin",
+ "Package",
+ "Priority",
+ "RunningKernel",
+ "Section",
+ "Title",
+ "Version"
+ ]
+ }
+ },
+ "/nodes/{node}/firewall": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/nodes/{node}/firewall/rules": {
+ "get": {
+ "responseFields": [
+ "action",
+ "comment",
+ "dest",
+ "dport",
+ "enable",
+ "icmp-type",
+ "iface",
+ "ipversion",
+ "log",
+ "macro",
+ "pos",
+ "proto",
+ "source",
+ "sport",
+ "type"
+ ]
+ },
+ "post": {
+ "params": {
+ "log": {
+ "enum": [
+ "emerg",
+ "alert",
+ "crit",
+ "err",
+ "warning",
+ "notice",
+ "info",
+ "debug",
+ "nolog"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "in",
+ "out",
+ "forward",
+ "group"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/firewall/rules/{pos}": {
+ "get": {
+ "responseFields": [
+ "action",
+ "comment",
+ "dest",
+ "dport",
+ "enable",
+ "icmp-type",
+ "iface",
+ "ipversion",
+ "log",
+ "macro",
+ "pos",
+ "proto",
+ "source",
+ "sport",
+ "type"
+ ]
+ },
+ "put": {
+ "params": {
+ "log": {
+ "enum": [
+ "emerg",
+ "alert",
+ "crit",
+ "err",
+ "warning",
+ "notice",
+ "info",
+ "debug",
+ "nolog"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "in",
+ "out",
+ "forward",
+ "group"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/firewall/options": {
+ "get": {
+ "responseFields": [
+ "enable",
+ "log_level_forward",
+ "log_level_in",
+ "log_level_out",
+ "log_nf_conntrack",
+ "ndp",
+ "nf_conntrack_allow_invalid",
+ "nf_conntrack_helpers",
+ "nf_conntrack_max",
+ "nf_conntrack_tcp_timeout_established",
+ "nf_conntrack_tcp_timeout_syn_recv",
+ "nftables",
+ "nosmurfs",
+ "protection_synflood",
+ "protection_synflood_burst",
+ "protection_synflood_rate",
+ "smurf_log_level",
+ "tcp_flags_log_level",
+ "tcpflags"
+ ]
+ },
+ "put": {
+ "params": {
+ "log_level_forward": {
+ "enum": [
+ "emerg",
+ "alert",
+ "crit",
+ "err",
+ "warning",
+ "notice",
+ "info",
+ "debug",
+ "nolog"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "log_level_in": {
+ "enum": [
+ "emerg",
+ "alert",
+ "crit",
+ "err",
+ "warning",
+ "notice",
+ "info",
+ "debug",
+ "nolog"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "log_level_out": {
+ "enum": [
+ "emerg",
+ "alert",
+ "crit",
+ "err",
+ "warning",
+ "notice",
+ "info",
+ "debug",
+ "nolog"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "nf_conntrack_helpers": {
+ "enum": null,
+ "x-enum-values": [
+ "amanda",
+ "ftp",
+ "irc",
+ "netbios-ns",
+ "pptp",
+ "sane",
+ "sip",
+ "snmp",
+ "tftp"
+ ],
+ "type": "string"
+ },
+ "smurf_log_level": {
+ "enum": [
+ "emerg",
+ "alert",
+ "crit",
+ "err",
+ "warning",
+ "notice",
+ "info",
+ "debug",
+ "nolog"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "tcp_flags_log_level": {
+ "enum": [
+ "emerg",
+ "alert",
+ "crit",
+ "err",
+ "warning",
+ "notice",
+ "info",
+ "debug",
+ "nolog"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/firewall/log": {
+ "get": {
+ "responseFields": [
+ "n",
+ "t"
+ ]
+ }
+ },
+ "/nodes/{node}/replication": {
+ "get": {
+ "responseFields": [
+ "id"
+ ]
+ }
+ },
+ "/nodes/{node}/replication/{id}": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/nodes/{node}/replication/{id}/log": {
+ "get": {
+ "responseFields": [
+ "n",
+ "t"
+ ]
+ }
+ },
+ "/nodes/{node}/certificates": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/nodes/{node}/certificates/acme": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/nodes/{node}/certificates/info": {
+ "get": {
+ "responseFields": [
+ "filename",
+ "fingerprint",
+ "issuer",
+ "notafter",
+ "notbefore",
+ "pem",
+ "public-key-bits",
+ "public-key-type",
+ "san",
+ "subject"
+ ]
+ }
+ },
+ "/nodes/{node}/certificates/custom": {
+ "post": {
+ "responseFields": [
+ "filename",
+ "fingerprint",
+ "issuer",
+ "notafter",
+ "notbefore",
+ "pem",
+ "public-key-bits",
+ "public-key-type",
+ "san",
+ "subject"
+ ]
+ }
+ },
+ "/nodes/{node}/config": {
+ "get": {
+ "params": {
+ "property": {
+ "enum": [
+ "acme",
+ "acmedomain0",
+ "acmedomain1",
+ "acmedomain2",
+ "acmedomain3",
+ "acmedomain4",
+ "acmedomain5",
+ "ballooning-target",
+ "description",
+ "startall-onboot-delay",
+ "wakeonlan"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "acme",
+ "acmedomain[n]",
+ "ballooning-target",
+ "description",
+ "digest",
+ "startall-onboot-delay",
+ "wakeonlan"
+ ]
+ }
+ },
+ "/nodes/{node}/sdn": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/nodes/{node}/sdn/fabrics/{fabric}": {
+ "get": {
+ "responseFields": [
+ "subdir"
+ ]
+ }
+ },
+ "/nodes/{node}/sdn/fabrics/{fabric}/routes": {
+ "get": {
+ "responseFields": [
+ "route",
+ "via"
+ ]
+ }
+ },
+ "/nodes/{node}/sdn/fabrics/{fabric}/neighbors": {
+ "get": {
+ "responseFields": [
+ "neighbor",
+ "status",
+ "uptime"
+ ]
+ }
+ },
+ "/nodes/{node}/sdn/fabrics/{fabric}/interfaces": {
+ "get": {
+ "responseFields": [
+ "name",
+ "state",
+ "type"
+ ]
+ }
+ },
+ "/nodes/{node}/sdn/zones": {
+ "get": {
+ "responseFields": [
+ "status",
+ "zone"
+ ]
+ }
+ },
+ "/nodes/{node}/sdn/zones/{zone}": {
+ "get": {
+ "responseFields": [
+ "subdir"
+ ]
+ }
+ },
+ "/nodes/{node}/sdn/zones/{zone}/content": {
+ "get": {
+ "responseFields": [
+ "status",
+ "statusmsg",
+ "vnet"
+ ]
+ }
+ },
+ "/nodes/{node}/sdn/zones/{zone}/bridges": {
+ "get": {
+ "responseFields": [
+ "name",
+ "ports",
+ "vlan_filtering"
+ ]
+ }
+ },
+ "/nodes/{node}/sdn/zones/{zone}/ip-vrf": {
+ "get": {
+ "responseFields": [
+ "ip",
+ "metric",
+ "nexthops",
+ "protocol"
+ ]
+ }
+ },
+ "/nodes/{node}/sdn/vnets/{vnet}": {
+ "get": {
+ "responseFields": [
+ "subdir"
+ ]
+ }
+ },
+ "/nodes/{node}/sdn/vnets/{vnet}/mac-vrf": {
+ "get": {
+ "responseFields": [
+ "ip",
+ "mac",
+ "nexthop"
+ ]
+ }
+ },
+ "/nodes/{node}/version": {
+ "get": {
+ "responseFields": [
+ "release",
+ "repoid",
+ "version"
+ ]
+ }
+ },
+ "/nodes/{node}/status": {
+ "get": {
+ "responseFields": [
+ "boot-info",
+ "cpu",
+ "cpuinfo",
+ "current-kernel",
+ "loadavg",
+ "memory",
+ "pveversion",
+ "rootfs"
+ ]
+ },
+ "post": {
+ "params": {
+ "command": {
+ "enum": [
+ "reboot",
+ "shutdown"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/netstat": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/nodes/{node}/execute": {
+ "post": {
+ "responseFields": []
+ }
+ },
+ "/nodes/{node}/rrd": {
+ "get": {
+ "params": {
+ "cf": {
+ "enum": [
+ "AVERAGE",
+ "MAX"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "timeframe": {
+ "enum": [
+ "hour",
+ "day",
+ "week",
+ "month",
+ "year",
+ "decade"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "filename"
+ ]
+ }
+ },
+ "/nodes/{node}/rrddata": {
+ "get": {
+ "params": {
+ "cf": {
+ "enum": [
+ "AVERAGE",
+ "MAX"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "timeframe": {
+ "enum": [
+ "hour",
+ "day",
+ "week",
+ "month",
+ "year",
+ "decade"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": []
+ }
+ },
+ "/nodes/{node}/syslog": {
+ "get": {
+ "responseFields": [
+ "n",
+ "t"
+ ]
+ }
+ },
+ "/nodes/{node}/vncshell": {
+ "post": {
+ "params": {
+ "cmd": {
+ "enum": [
+ "ceph_install",
+ "login",
+ "upgrade"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/termproxy": {
+ "post": {
+ "params": {
+ "cmd": {
+ "enum": [
+ "ceph_install",
+ "login",
+ "upgrade"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/vncwebsocket": {
+ "get": {
+ "responseFields": [
+ "port"
+ ]
+ }
+ },
+ "/nodes/{node}/spiceshell": {
+ "post": {
+ "params": {
+ "cmd": {
+ "enum": [
+ "ceph_install",
+ "login",
+ "upgrade"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/nodes/{node}/dns": {
+ "get": {
+ "responseFields": [
+ "dns1",
+ "dns2",
+ "dns3",
+ "search"
+ ]
+ }
+ },
+ "/nodes/{node}/time": {
+ "get": {
+ "responseFields": [
+ "localtime",
+ "time",
+ "timezone"
+ ]
+ }
+ },
+ "/nodes/{node}/aplinfo": {
+ "get": {
+ "responseFields": []
+ }
+ },
+ "/nodes/{node}/query-url-metadata": {
+ "get": {
+ "responseFields": [
+ "filename",
+ "mimetype",
+ "size"
+ ]
+ }
+ },
+ "/nodes/{node}/hosts": {
+ "get": {
+ "responseFields": [
+ "data",
+ "digest"
+ ]
+ }
+ },
+ "/storage": {
+ "get": {
+ "params": {
+ "type": {
+ "enum": [
+ "btrfs",
+ "cephfs",
+ "cifs",
+ "dir",
+ "esxi",
+ "iscsi",
+ "iscsidirect",
+ "lvm",
+ "lvmthin",
+ "nfs",
+ "pbs",
+ "rbd",
+ "zfs",
+ "zfspool"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "storage"
+ ]
+ },
+ "post": {
+ "params": {
+ "content": {
+ "enum": null,
+ "x-enum-values": [
+ "images",
+ "rootdir",
+ "vztmpl",
+ "backup",
+ "iso",
+ "snippets",
+ "import"
+ ],
+ "type": "string"
+ },
+ "format": {
+ "enum": [
+ "raw",
+ "qcow2",
+ "subvol",
+ "vmdk"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "preallocation": {
+ "enum": [
+ "off",
+ "metadata",
+ "falloc",
+ "full"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "saferemove-stepsize": {
+ "enum": [
+ "1",
+ "2",
+ "4",
+ "8",
+ "16",
+ "32"
+ ],
+ "x-enum-values": null,
+ "type": "integer"
+ },
+ "smbversion": {
+ "enum": [
+ "default",
+ "2.0",
+ "2.1",
+ "3",
+ "3.0",
+ "3.11"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "btrfs",
+ "cephfs",
+ "cifs",
+ "dir",
+ "esxi",
+ "iscsi",
+ "iscsidirect",
+ "lvm",
+ "lvmthin",
+ "nfs",
+ "pbs",
+ "rbd",
+ "zfs",
+ "zfspool"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "config",
+ "storage",
+ "type"
+ ]
+ }
+ },
+ "/storage/{storage}": {
+ "put": {
+ "params": {
+ "content": {
+ "enum": null,
+ "x-enum-values": [
+ "images",
+ "rootdir",
+ "vztmpl",
+ "backup",
+ "iso",
+ "snippets",
+ "import"
+ ],
+ "type": "string"
+ },
+ "format": {
+ "enum": [
+ "raw",
+ "qcow2",
+ "subvol",
+ "vmdk"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "preallocation": {
+ "enum": [
+ "off",
+ "metadata",
+ "falloc",
+ "full"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "saferemove-stepsize": {
+ "enum": [
+ "1",
+ "2",
+ "4",
+ "8",
+ "16",
+ "32"
+ ],
+ "x-enum-values": null,
+ "type": "integer"
+ },
+ "smbversion": {
+ "enum": [
+ "default",
+ "2.0",
+ "2.1",
+ "3",
+ "3.0",
+ "3.11"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "config",
+ "storage",
+ "type"
+ ]
+ }
+ },
+ "/access": {
+ "get": {
+ "responseFields": [
+ "subdir"
+ ]
+ }
+ },
+ "/access/users": {
+ "get": {
+ "responseFields": [
+ "comment",
+ "email",
+ "enable",
+ "expire",
+ "firstname",
+ "groups",
+ "keys",
+ "lastname",
+ "realm-type",
+ "tfa-locked-until",
+ "tokens",
+ "totp-locked",
+ "userid"
+ ]
+ }
+ },
+ "/access/users/{userid}": {
+ "get": {
+ "responseFields": [
+ "comment",
+ "email",
+ "enable",
+ "expire",
+ "firstname",
+ "groups",
+ "keys",
+ "lastname",
+ "tokens"
+ ]
+ }
+ },
+ "/access/users/{userid}/tfa": {
+ "get": {
+ "responseFields": [
+ "realm",
+ "types",
+ "user"
+ ]
+ }
+ },
+ "/access/users/{userid}/token": {
+ "get": {
+ "responseFields": [
+ "comment",
+ "expire",
+ "privsep",
+ "tokenid"
+ ]
+ }
+ },
+ "/access/users/{userid}/token/{tokenid}": {
+ "get": {
+ "responseFields": [
+ "comment",
+ "expire",
+ "privsep"
+ ]
+ },
+ "post": {
+ "responseFields": [
+ "full-tokenid",
+ "info",
+ "value"
+ ]
+ },
+ "put": {
+ "responseFields": [
+ "comment",
+ "expire",
+ "privsep"
+ ]
+ }
+ },
+ "/access/groups": {
+ "get": {
+ "responseFields": [
+ "comment",
+ "groupid",
+ "users"
+ ]
+ }
+ },
+ "/access/groups/{groupid}": {
+ "get": {
+ "responseFields": [
+ "comment",
+ "members"
+ ]
+ }
+ },
+ "/access/roles": {
+ "get": {
+ "responseFields": [
+ "privs",
+ "roleid",
+ "special"
+ ]
+ },
+ "post": {
+ "params": {
+ "privs": {
+ "enum": null,
+ "x-enum-values": [
+ "Datastore.Allocate",
+ "Datastore.AllocateSpace",
+ "Datastore.AllocateTemplate",
+ "Datastore.Audit",
+ "Group.Allocate",
+ "Mapping.Audit",
+ "Mapping.Modify",
+ "Mapping.Use",
+ "Permissions.Modify",
+ "Pool.Allocate",
+ "Pool.Audit",
+ "Realm.Allocate",
+ "Realm.AllocateUser",
+ "SDN.Allocate",
+ "SDN.Audit",
+ "SDN.Use",
+ "Sys.AccessNetwork",
+ "Sys.Audit",
+ "Sys.Console",
+ "Sys.Incoming",
+ "Sys.Modify",
+ "Sys.PowerMgmt",
+ "Sys.Syslog",
+ "User.Modify",
+ "VM.Allocate",
+ "VM.Audit",
+ "VM.Backup",
+ "VM.Clone",
+ "VM.Config.CDROM",
+ "VM.Config.Cloudinit",
+ "VM.Config.CPU",
+ "VM.Config.Disk",
+ "VM.Config.HWType",
+ "VM.Config.Memory",
+ "VM.Config.Network",
+ "VM.Config.Options",
+ "VM.Console",
+ "VM.GuestAgent.Audit",
+ "VM.GuestAgent.FileRead",
+ "VM.GuestAgent.FileSystemMgmt",
+ "VM.GuestAgent.FileWrite",
+ "VM.GuestAgent.Unrestricted",
+ "VM.Migrate",
+ "VM.Monitor",
+ "VM.PowerMgmt",
+ "VM.Replicate",
+ "VM.Snapshot",
+ "VM.Snapshot.Rollback"
+ ],
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/access/roles/{roleid}": {
+ "get": {
+ "responseFields": [
+ "Datastore.Allocate",
+ "Datastore.AllocateSpace",
+ "Datastore.AllocateTemplate",
+ "Datastore.Audit",
+ "Group.Allocate",
+ "Mapping.Audit",
+ "Mapping.Modify",
+ "Mapping.Use",
+ "Permissions.Modify",
+ "Pool.Allocate",
+ "Pool.Audit",
+ "Realm.Allocate",
+ "Realm.AllocateUser",
+ "SDN.Allocate",
+ "SDN.Audit",
+ "SDN.Use",
+ "Sys.AccessNetwork",
+ "Sys.Audit",
+ "Sys.Console",
+ "Sys.Incoming",
+ "Sys.Modify",
+ "Sys.PowerMgmt",
+ "Sys.Syslog",
+ "User.Modify",
+ "VM.Allocate",
+ "VM.Audit",
+ "VM.Backup",
+ "VM.Clone",
+ "VM.Config.CDROM",
+ "VM.Config.CPU",
+ "VM.Config.Cloudinit",
+ "VM.Config.Disk",
+ "VM.Config.HWType",
+ "VM.Config.Memory",
+ "VM.Config.Network",
+ "VM.Config.Options",
+ "VM.Console",
+ "VM.GuestAgent.Audit",
+ "VM.GuestAgent.FileRead",
+ "VM.GuestAgent.FileSystemMgmt",
+ "VM.GuestAgent.FileWrite",
+ "VM.GuestAgent.Unrestricted",
+ "VM.Migrate",
+ "VM.PowerMgmt",
+ "VM.Replicate",
+ "VM.Snapshot",
+ "VM.Snapshot.Rollback"
+ ]
+ },
+ "put": {
+ "params": {
+ "privs": {
+ "enum": null,
+ "x-enum-values": [
+ "Datastore.Allocate",
+ "Datastore.AllocateSpace",
+ "Datastore.AllocateTemplate",
+ "Datastore.Audit",
+ "Group.Allocate",
+ "Mapping.Audit",
+ "Mapping.Modify",
+ "Mapping.Use",
+ "Permissions.Modify",
+ "Pool.Allocate",
+ "Pool.Audit",
+ "Realm.Allocate",
+ "Realm.AllocateUser",
+ "SDN.Allocate",
+ "SDN.Audit",
+ "SDN.Use",
+ "Sys.AccessNetwork",
+ "Sys.Audit",
+ "Sys.Console",
+ "Sys.Incoming",
+ "Sys.Modify",
+ "Sys.PowerMgmt",
+ "Sys.Syslog",
+ "User.Modify",
+ "VM.Allocate",
+ "VM.Audit",
+ "VM.Backup",
+ "VM.Clone",
+ "VM.Config.CDROM",
+ "VM.Config.Cloudinit",
+ "VM.Config.CPU",
+ "VM.Config.Disk",
+ "VM.Config.HWType",
+ "VM.Config.Memory",
+ "VM.Config.Network",
+ "VM.Config.Options",
+ "VM.Console",
+ "VM.GuestAgent.Audit",
+ "VM.GuestAgent.FileRead",
+ "VM.GuestAgent.FileSystemMgmt",
+ "VM.GuestAgent.FileWrite",
+ "VM.GuestAgent.Unrestricted",
+ "VM.Migrate",
+ "VM.Monitor",
+ "VM.PowerMgmt",
+ "VM.Replicate",
+ "VM.Snapshot",
+ "VM.Snapshot.Rollback"
+ ],
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/access/acl": {
+ "get": {
+ "responseFields": [
+ "path",
+ "propagate",
+ "roleid",
+ "type",
+ "ugid"
+ ]
+ }
+ },
+ "/access/domains": {
+ "get": {
+ "responseFields": [
+ "comment",
+ "realm",
+ "tfa",
+ "type"
+ ]
+ },
+ "post": {
+ "params": {
+ "mode": {
+ "enum": [
+ "ldap",
+ "ldaps",
+ "ldap+starttls"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "sslversion": {
+ "enum": [
+ "tlsv1",
+ "tlsv1_1",
+ "tlsv1_2",
+ "tlsv1_3"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "ad",
+ "ldap",
+ "openid",
+ "pam",
+ "pve"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/access/domains/{realm}": {
+ "put": {
+ "params": {
+ "mode": {
+ "enum": [
+ "ldap",
+ "ldaps",
+ "ldap+starttls"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ },
+ "sslversion": {
+ "enum": [
+ "tlsv1",
+ "tlsv1_1",
+ "tlsv1_2",
+ "tlsv1_3"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/access/domains/{realm}/sync": {
+ "post": {
+ "params": {
+ "scope": {
+ "enum": [
+ "users",
+ "groups",
+ "both"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/access/openid": {
+ "get": {
+ "responseFields": [
+ "subdir"
+ ]
+ }
+ },
+ "/access/tfa": {
+ "get": {
+ "responseFields": [
+ "entries",
+ "tfa-locked-until",
+ "totp-locked",
+ "userid"
+ ]
+ }
+ },
+ "/access/tfa/{userid}": {
+ "get": {
+ "responseFields": [
+ "created",
+ "description",
+ "enable",
+ "id",
+ "type"
+ ]
+ },
+ "post": {
+ "params": {
+ "type": {
+ "enum": [
+ "totp",
+ "u2f",
+ "webauthn",
+ "recovery",
+ "yubico"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "challenge",
+ "id",
+ "recovery"
+ ]
+ }
+ },
+ "/access/tfa/{userid}/{id}": {
+ "get": {
+ "responseFields": [
+ "created",
+ "description",
+ "enable",
+ "id",
+ "type"
+ ]
+ }
+ },
+ "/access/ticket": {
+ "post": {
+ "params": {
+ "privs": {
+ "enum": null,
+ "x-enum-values": [
+ "Datastore.Allocate",
+ "Datastore.AllocateSpace",
+ "Datastore.AllocateTemplate",
+ "Datastore.Audit",
+ "Group.Allocate",
+ "Mapping.Audit",
+ "Mapping.Modify",
+ "Mapping.Use",
+ "Permissions.Modify",
+ "Pool.Allocate",
+ "Pool.Audit",
+ "Realm.Allocate",
+ "Realm.AllocateUser",
+ "SDN.Allocate",
+ "SDN.Audit",
+ "SDN.Use",
+ "Sys.AccessNetwork",
+ "Sys.Audit",
+ "Sys.Console",
+ "Sys.Incoming",
+ "Sys.Modify",
+ "Sys.PowerMgmt",
+ "Sys.Syslog",
+ "User.Modify",
+ "VM.Allocate",
+ "VM.Audit",
+ "VM.Backup",
+ "VM.Clone",
+ "VM.Config.CDROM",
+ "VM.Config.Cloudinit",
+ "VM.Config.CPU",
+ "VM.Config.Disk",
+ "VM.Config.HWType",
+ "VM.Config.Memory",
+ "VM.Config.Network",
+ "VM.Config.Options",
+ "VM.Console",
+ "VM.GuestAgent.Audit",
+ "VM.GuestAgent.FileRead",
+ "VM.GuestAgent.FileSystemMgmt",
+ "VM.GuestAgent.FileWrite",
+ "VM.GuestAgent.Unrestricted",
+ "VM.Migrate",
+ "VM.Monitor",
+ "VM.PowerMgmt",
+ "VM.Replicate",
+ "VM.Snapshot",
+ "VM.Snapshot.Rollback"
+ ],
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "CSRFPreventionToken",
+ "clustername",
+ "ticket",
+ "username"
+ ]
+ }
+ },
+ "/access/vncticket": {
+ "post": {
+ "params": {
+ "privs": {
+ "enum": null,
+ "x-enum-values": [
+ "Datastore.Allocate",
+ "Datastore.AllocateSpace",
+ "Datastore.AllocateTemplate",
+ "Datastore.Audit",
+ "Group.Allocate",
+ "Mapping.Audit",
+ "Mapping.Modify",
+ "Mapping.Use",
+ "Permissions.Modify",
+ "Pool.Allocate",
+ "Pool.Audit",
+ "Realm.Allocate",
+ "Realm.AllocateUser",
+ "SDN.Allocate",
+ "SDN.Audit",
+ "SDN.Use",
+ "Sys.AccessNetwork",
+ "Sys.Audit",
+ "Sys.Console",
+ "Sys.Incoming",
+ "Sys.Modify",
+ "Sys.PowerMgmt",
+ "Sys.Syslog",
+ "User.Modify",
+ "VM.Allocate",
+ "VM.Audit",
+ "VM.Backup",
+ "VM.Clone",
+ "VM.Config.CDROM",
+ "VM.Config.Cloudinit",
+ "VM.Config.CPU",
+ "VM.Config.Disk",
+ "VM.Config.HWType",
+ "VM.Config.Memory",
+ "VM.Config.Network",
+ "VM.Config.Options",
+ "VM.Console",
+ "VM.GuestAgent.Audit",
+ "VM.GuestAgent.FileRead",
+ "VM.GuestAgent.FileSystemMgmt",
+ "VM.GuestAgent.FileWrite",
+ "VM.GuestAgent.Unrestricted",
+ "VM.Migrate",
+ "VM.Monitor",
+ "VM.PowerMgmt",
+ "VM.Replicate",
+ "VM.Snapshot",
+ "VM.Snapshot.Rollback"
+ ],
+ "type": "string"
+ }
+ }
+ }
+ },
+ "/pools": {
+ "get": {
+ "params": {
+ "type": {
+ "enum": [
+ "qemu",
+ "lxc",
+ "storage"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "comment",
+ "members",
+ "poolid"
+ ]
+ }
+ },
+ "/pools/{poolid}": {
+ "get": {
+ "params": {
+ "type": {
+ "enum": [
+ "qemu",
+ "lxc",
+ "storage"
+ ],
+ "x-enum-values": null,
+ "type": "string"
+ }
+ },
+ "responseFields": [
+ "comment",
+ "members"
+ ]
+ }
+ },
+ "/version": {
+ "get": {
+ "responseFields": [
+ "console",
+ "release",
+ "repoid",
+ "version"
+ ]
+ }
+ }
+ },
+ "meta": {
+ "generated_at": "2026-03-26T20:08:30.474Z"
+ }
+}
\ No newline at end of file
diff --git a/tests/PSProxmoxVE.Core.Tests/OpenApiSpecValidationTests.cs b/tests/PSProxmoxVE.Core.Tests/OpenApiSpecValidationTests.cs
new file mode 100644
index 0000000..2cb8188
--- /dev/null
+++ b/tests/PSProxmoxVE.Core.Tests/OpenApiSpecValidationTests.cs
@@ -0,0 +1,327 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using Xunit;
+
+namespace PSProxmoxVE.Core.Tests
+{
+ ///
+ /// Validates that the module's hardcoded enum values (ValidateSet, privilege names, etc.)
+ /// match what the PVE API actually accepts, as defined by the OpenAPI spec.
+ ///
+ /// The fixture pve-api-enums.json is extracted from the full OpenAPI spec at
+ /// ~/Source/pve_api/tools/pve-api-parser/pve-openapi.json and contains only
+ /// parameter enum values and response field names.
+ ///
+ public class OpenApiSpecValidationTests
+ {
+ private static readonly Lazy _spec = new Lazy(() =>
+ JObject.Parse(TestHelper.LoadFixture("pve-api-enums.json")));
+
+ private static JObject Spec => _spec.Value;
+
+ private static HashSet GetEnumValues(string path, string method, string paramName)
+ {
+ var pathData = Spec["paths"]?[path]?[method]?["params"]?[paramName];
+ if (pathData == null) return new HashSet(StringComparer.OrdinalIgnoreCase);
+
+ var values = new HashSet(StringComparer.OrdinalIgnoreCase);
+
+ var enumArray = pathData["enum"] as JArray;
+ if (enumArray != null)
+ {
+ foreach (var v in enumArray)
+ values.Add(v.ToString());
+ }
+
+ var xEnumArray = pathData["x-enum-values"] as JArray;
+ if (xEnumArray != null)
+ {
+ foreach (var v in xEnumArray)
+ values.Add(v.ToString());
+ }
+
+ return values;
+ }
+
+ // ── Privileges ──────────────────────────────────────────────────────
+
+ [Fact]
+ public void Privileges_AllKnownValuesAcceptedByApi()
+ {
+ var apiPrivileges = GetEnumValues("/access/roles", "post", "privs");
+ Assert.NotEmpty(apiPrivileges);
+
+ // These are privilege names used in tests and documentation
+ var modulePrivileges = new[]
+ {
+ "VM.Allocate", "VM.Audit", "VM.Backup", "VM.Clone",
+ "VM.Config.CDROM", "VM.Config.Cloudinit", "VM.Config.CPU",
+ "VM.Config.Disk", "VM.Config.HWType", "VM.Config.Memory",
+ "VM.Config.Network", "VM.Config.Options", "VM.Console",
+ "VM.Migrate", "VM.Monitor", "VM.PowerMgmt", "VM.Snapshot",
+ "VM.Snapshot.Rollback",
+ "Datastore.Allocate", "Datastore.AllocateSpace",
+ "Datastore.AllocateTemplate", "Datastore.Audit",
+ "Sys.Audit", "Sys.Console", "Sys.Modify", "Sys.PowerMgmt",
+ "Sys.Syslog", "Sys.AccessNetwork", "Sys.Incoming",
+ "SDN.Allocate", "SDN.Audit", "SDN.Use",
+ "User.Modify", "Permissions.Modify",
+ "Pool.Allocate", "Pool.Audit",
+ "Group.Allocate",
+ "Realm.Allocate", "Realm.AllocateUser",
+ "Mapping.Audit", "Mapping.Modify", "Mapping.Use",
+ "VM.GuestAgent.Audit", "VM.GuestAgent.FileRead",
+ "VM.GuestAgent.FileWrite", "VM.GuestAgent.FileSystemMgmt",
+ "VM.GuestAgent.Unrestricted", "VM.Replicate"
+ };
+
+ var invalid = modulePrivileges.Where(p => !apiPrivileges.Contains(p)).ToList();
+ Assert.True(invalid.Count == 0,
+ $"Invalid privilege name(s) not accepted by PVE API: {string.Join(", ", invalid)}. " +
+ $"Valid privileges: {string.Join(", ", apiPrivileges.OrderBy(p => p))}");
+ }
+
+ // ── Storage Types ───────────────────────────────────────────────────
+
+ [Theory]
+ [InlineData("dir")]
+ [InlineData("nfs")]
+ [InlineData("lvm")]
+ [InlineData("lvmthin")]
+ [InlineData("zfspool")]
+ [InlineData("zfs")]
+ [InlineData("cephfs")]
+ [InlineData("rbd")]
+ [InlineData("iscsi")]
+ [InlineData("iscsidirect")]
+ [InlineData("cifs")]
+ [InlineData("pbs")]
+ [InlineData("btrfs")]
+ [InlineData("esxi")]
+ // Note: "glusterfs" was removed in PVE 9.0 — replaced by btrfs/esxi.
+ // The module's ValidateSet still includes it.
+ // See: NewPveStorageCmdlet.cs line 27-28
+ public void StorageType_IsValidInApi(string storageType)
+ {
+ var apiTypes = GetEnumValues("/storage", "post", "type");
+ Assert.True(apiTypes.Contains(storageType),
+ $"Storage type '{storageType}' not in API enum: {string.Join(", ", apiTypes)}");
+ }
+
+ // ── Backup Modes ────────────────────────────────────────────────────
+
+ [Theory]
+ [InlineData("snapshot")]
+ [InlineData("suspend")]
+ [InlineData("stop")]
+ public void BackupMode_IsValidInApi(string mode)
+ {
+ var apiModes = GetEnumValues("/nodes/{node}/vzdump", "post", "mode");
+ Assert.True(apiModes.Contains(mode),
+ $"Backup mode '{mode}' not in API enum: {string.Join(", ", apiModes)}");
+ }
+
+ // ── Backup Compression ──────────────────────────────────────────────
+
+ [Theory]
+ [InlineData("zstd")]
+ [InlineData("lzo")]
+ [InlineData("gzip")]
+ // Note: "none" is NOT valid — PVE uses "0" for no compression.
+ // The module's ValidateSet includes "none" which may cause API errors.
+ // See: NewPveBackupCmdlet.cs line 51, NewPveBackupJobCmdlet.cs line 54
+ [InlineData("0")]
+ public void BackupCompression_IsValidInApi(string compress)
+ {
+ var apiValues = GetEnumValues("/nodes/{node}/vzdump", "post", "compress");
+ Assert.True(apiValues.Contains(compress),
+ $"Compression '{compress}' not in API enum: {string.Join(", ", apiValues)}");
+ }
+
+ // ── Disk Formats ────────────────────────────────────────────────────
+
+ [Theory]
+ [InlineData("raw")]
+ [InlineData("qcow2")]
+ [InlineData("vmdk")]
+ public void DiskFormat_IsValidInApi(string format)
+ {
+ var apiFormats = GetEnumValues("/nodes/{node}/qemu/{vmid}/move_disk", "post", "format");
+ Assert.True(apiFormats.Contains(format),
+ $"Disk format '{format}' not in API enum: {string.Join(", ", apiFormats)}");
+ }
+
+ // ── HA Resource States ──────────────────────────────────────────────
+
+ [Theory]
+ [InlineData("started")]
+ [InlineData("stopped")]
+ [InlineData("disabled")]
+ [InlineData("ignored")]
+ public void HaResourceState_IsValidInApi(string state)
+ {
+ var apiStates = GetEnumValues("/cluster/ha/resources", "post", "state");
+ Assert.True(apiStates.Contains(state),
+ $"HA state '{state}' not in API enum: {string.Join(", ", apiStates)}");
+ }
+
+ // ── SDN Zone Types ──────────────────────────────────────────────────
+
+ [Theory]
+ [InlineData("vlan")]
+ [InlineData("vxlan")]
+ [InlineData("evpn")]
+ [InlineData("simple")]
+ [InlineData("qinq")]
+ public void SdnZoneType_IsValidInApi(string zoneType)
+ {
+ var apiTypes = GetEnumValues("/cluster/sdn/zones", "post", "type");
+ Assert.True(apiTypes.Contains(zoneType),
+ $"SDN zone type '{zoneType}' not in API enum: {string.Join(", ", apiTypes)}");
+ }
+
+ // ── SDN Controller Types ────────────────────────────────────────────
+
+ [Theory]
+ [InlineData("evpn")]
+ [InlineData("bgp")]
+ public void SdnControllerType_IsValidInApi(string controllerType)
+ {
+ var apiTypes = GetEnumValues("/cluster/sdn/controllers", "post", "type");
+ Assert.True(apiTypes.Contains(controllerType),
+ $"SDN controller type '{controllerType}' not in API enum: {string.Join(", ", apiTypes)}");
+ }
+
+ // ── SDN IPAM Types ──────────────────────────────────────────────────
+
+ [Theory]
+ [InlineData("pve")]
+ [InlineData("netbox")]
+ [InlineData("phpipam")]
+ public void SdnIpamType_IsValidInApi(string ipamType)
+ {
+ var apiTypes = GetEnumValues("/cluster/sdn/ipams", "post", "type");
+ Assert.True(apiTypes.Contains(ipamType),
+ $"SDN IPAM type '{ipamType}' not in API enum: {string.Join(", ", apiTypes)}");
+ }
+
+ // ── SDN DNS Types ───────────────────────────────────────────────────
+
+ [Theory]
+ [InlineData("powerdns")]
+ public void SdnDnsType_IsValidInApi(string dnsType)
+ {
+ var apiTypes = GetEnumValues("/cluster/sdn/dns", "post", "type");
+ Assert.True(apiTypes.Contains(dnsType),
+ $"SDN DNS type '{dnsType}' not in API enum: {string.Join(", ", apiTypes)}");
+ }
+
+ // ── Firewall Actions ────────────────────────────────────────────────
+ // The 'action' param uses a pattern regex (also accepts group names),
+ // not an enum. Validate against the documented pattern instead.
+
+ [Theory]
+ [InlineData("ACCEPT")]
+ [InlineData("DROP")]
+ [InlineData("REJECT")]
+ public void FirewallAction_MatchesApiPattern(string action)
+ {
+ // PVE defines action as pattern: [A-Za-z][A-Za-z0-9\-\_]+
+ Assert.Matches(@"^[A-Za-z][A-Za-z0-9\-_]+$", action);
+ }
+
+ // ── Firewall Directions ─────────────────────────────────────────────
+
+ [Theory]
+ [InlineData("in")]
+ [InlineData("out")]
+ [InlineData("group")]
+ public void FirewallDirection_IsValidInApi(string direction)
+ {
+ var apiDirections = GetEnumValues("/cluster/firewall/rules", "post", "type");
+ Assert.True(apiDirections.Contains(direction),
+ $"Firewall direction '{direction}' not in API enum: {string.Join(", ", apiDirections)}");
+ }
+
+ // ── Auth Domain Types ───────────────────────────────────────────────
+
+ [Theory]
+ [InlineData("pam")]
+ [InlineData("pve")]
+ [InlineData("ad")]
+ [InlineData("ldap")]
+ [InlineData("openid")]
+ public void AuthDomainType_IsValidInApi(string domainType)
+ {
+ var apiTypes = GetEnumValues("/access/domains", "post", "type");
+ Assert.True(apiTypes.Contains(domainType),
+ $"Auth domain type '{domainType}' not in API enum: {string.Join(", ", apiTypes)}");
+ }
+
+ // ── Cluster Resource Types ──────────────────────────────────────────
+
+ [Theory]
+ [InlineData("vm")]
+ [InlineData("node")]
+ [InlineData("storage")]
+ [InlineData("sdn")]
+ // Note: "lxc" is NOT a valid type filter — PVE uses "vm" for both QEMU and LXC.
+ // The module's ValidateSet includes "lxc" which may cause API errors.
+ // See: GetPveClusterResourceCmdlet.cs line 23
+ public void ClusterResourceType_IsValidInApi(string resourceType)
+ {
+ var apiTypes = GetEnumValues("/cluster/resources", "get", "type");
+ Assert.True(apiTypes.Contains(resourceType),
+ $"Cluster resource type '{resourceType}' not in API enum: {string.Join(", ", apiTypes)}");
+ }
+
+ // ── Content Types (Upload) ──────────────────────────────────────────
+
+ [Theory]
+ [InlineData("iso")]
+ [InlineData("vztmpl")]
+ public void UploadContentType_IsValidInApi(string contentType)
+ {
+ var apiTypes = GetEnumValues("/nodes/{node}/storage/{storage}/upload", "post", "content");
+ Assert.True(apiTypes.Contains(contentType),
+ $"Upload content type '{contentType}' not in API enum: {string.Join(", ", apiTypes)}");
+ }
+
+ // ── Console Viewer Types ────────────────────────────────────────────
+
+ [Theory]
+ [InlineData("applet")]
+ [InlineData("vv")]
+ [InlineData("html5")]
+ [InlineData("xtermjs")]
+ public void ConsoleViewer_IsValidInApi(string viewer)
+ {
+ var apiViewers = GetEnumValues("/cluster/options", "put", "console");
+ Assert.True(apiViewers.Contains(viewer),
+ $"Console viewer '{viewer}' not in API enum: {string.Join(", ", apiViewers)}");
+ }
+
+ // ── Network Interface Types ─────────────────────────────────────────
+
+ [Theory]
+ [InlineData("bridge")]
+ [InlineData("bond")]
+ [InlineData("eth")]
+ [InlineData("alias")]
+ [InlineData("vlan")]
+ [InlineData("OVSBridge")]
+ [InlineData("OVSBond")]
+ [InlineData("OVSPort")]
+ [InlineData("OVSIntPort")]
+ public void NetworkInterfaceType_IsValidInApi(string ifaceType)
+ {
+ var apiTypes = GetEnumValues("/nodes/{node}/network", "post", "type");
+ Assert.True(apiTypes.Contains(ifaceType),
+ $"Network interface type '{ifaceType}' not in API enum: {string.Join(", ", apiTypes)}");
+ }
+ }
+}