diff --git a/pr_body.md b/pr_body.md index cd36504..3c75b9d 100644 --- a/pr_body.md +++ b/pr_body.md @@ -2,16 +2,9 @@ This PR contains automated updates to the Proxmox API specifications. -### PVE API Changes - -- Endpoints: 428 → 428 (+0) -- File sizes: - - JSON: 3.2M - - YAML: 2.4M - ### PBS API Changes -- Endpoints: 240 → 240 (+0) +- Endpoints: 240 → 241 (+1) - File sizes: - JSON: 1.8M - YAML: 1.3M @@ -30,4 +23,4 @@ This PR contains automated updates to the Proxmox API specifications. 3. Merge to update the API specifications --- -*Generated automatically by GitHub Actions on 2026-01-04 02:53:02 UTC* +*Generated automatically by GitHub Actions on 2026-04-26 03:11:44 UTC* diff --git a/proxmox-backup-server/apidoc.js b/proxmox-backup-server/apidoc.js index 839b71c..7837b79 100644 --- a/proxmox-backup-server/apidoc.js +++ b/proxmox-backup-server/apidoc.js @@ -91,7 +91,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "PUT": { "description": "Update Access Control List (ACLs).", @@ -173,7 +174,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -251,7 +253,8 @@ var apiSchema = [ "minLength": 36, "pattern": "/^UPID:(?P[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?):(?P[0-9A-Fa-f]{8}):(?P[0-9A-Fa-f]{8,9}):(?P[0-9A-Fa-f]{8,16}):(?P[0-9A-Fa-f]{8}):(?P[^:\\s]+):(?P[^:\\s]*):(?P[^:\\s]+):$/", "type": "string" - } + }, + "unstable": false } }, "leaf": 1, @@ -319,7 +322,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 0, @@ -357,7 +361,8 @@ var apiSchema = [ "returns": { "description": "Redirection URL.", "type": "string" - } + }, + "unstable": false } }, "leaf": 1, @@ -420,7 +425,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false } }, "leaf": 1, @@ -442,7 +448,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -488,7 +495,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -531,7 +539,8 @@ var apiSchema = [ "description": "Map of ACL path to Map of privilege to propagate bit", "properties": {}, "type": "object" - } + }, + "unstable": false } }, "leaf": 1, @@ -601,7 +610,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 1, @@ -663,7 +673,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Get a single TFA entry.", @@ -706,7 +717,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "PUT": { "description": "Update user's TFA entry description.", @@ -768,7 +780,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -849,7 +862,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Add a TFA entry to the user.", @@ -950,7 +964,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false } }, "leaf": 0, @@ -1032,7 +1047,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 0, @@ -1054,7 +1070,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "POST": { "description": "Either create a new HttpOnly ticket or a regular ticket.", @@ -1136,7 +1153,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false } }, "leaf": 1, @@ -1199,7 +1217,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Read user's API token metadata", @@ -1274,7 +1293,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "POST": { "description": "Generate a new API token with given metadata", @@ -1356,7 +1376,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update user's API token metadata", @@ -1453,7 +1474,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false } }, "leaf": 1, @@ -1539,7 +1561,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 0, @@ -1579,7 +1602,8 @@ var apiSchema = [ "returns": { "description": "Whether the user was previously locked out of any 2nd factor.", "type": "boolean" - } + }, + "unstable": false } }, "leaf": 1, @@ -1631,7 +1655,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Read user configuration data.", @@ -1725,7 +1750,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update user configuration. To change a user's password use the 'PUT /access/password' endpoint.", @@ -1837,7 +1863,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -1976,7 +2003,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Create new user.", @@ -2060,7 +2088,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -2109,7 +2138,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -2131,7 +2161,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -2176,7 +2207,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -2243,7 +2275,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -2302,7 +2335,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -2364,7 +2398,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -2426,7 +2461,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -2513,7 +2549,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 1, @@ -2660,7 +2697,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "POST": { "description": "Start garbage collection.", @@ -2695,7 +2733,8 @@ var apiSchema = [ "minLength": 36, "pattern": "/^UPID:(?P[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?):(?P[0-9A-Fa-f]{8}):(?P[0-9A-Fa-f]{8,9}):(?P[0-9A-Fa-f]{8,16}):(?P[0-9A-Fa-f]{8}):(?P[^:\\s]+):(?P[^:\\s]*):(?P[^:\\s]+):$/", "type": "string" - } + }, + "unstable": false } }, "leaf": 1, @@ -2747,7 +2786,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "PUT": { "description": "Set \"notes\" for a backup group", @@ -2796,7 +2836,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -2873,7 +2914,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "GET": { "description": "List backup groups.", @@ -2957,7 +2999,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 1, @@ -3015,7 +3058,8 @@ var apiSchema = [ "minLength": 36, "pattern": "/^UPID:(?P[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?):(?P[0-9A-Fa-f]{8}):(?P[0-9A-Fa-f]{8,9}):(?P[0-9A-Fa-f]{8,16}):(?P[0-9A-Fa-f]{8}):(?P[^:\\s]+):(?P[^:\\s]*):(?P[^:\\s]+):$/", "type": "string" - } + }, + "unstable": false } }, "leaf": 1, @@ -3063,7 +3107,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "List the namespaces of a datastore.", @@ -3121,7 +3166,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Create a new datastore namespace.", @@ -3162,7 +3208,8 @@ var apiSchema = [ "maxLength": 256, "pattern": "/^(?:(?:(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)/){0,7}(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*))?$/", "type": "string" - } + }, + "unstable": false } }, "leaf": 1, @@ -3219,7 +3266,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "PUT": { "description": "Set \"notes\" for a specific backup", @@ -3273,7 +3321,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -3330,7 +3379,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "PUT": { "description": "En- or disable protection for a specific backup", @@ -3384,7 +3434,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -3515,7 +3566,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 1, @@ -3605,7 +3657,8 @@ var apiSchema = [ "minLength": 36, "pattern": "/^UPID:(?P[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?):(?P[0-9A-Fa-f]{8}):(?P[0-9A-Fa-f]{8,9}):(?P[0-9A-Fa-f]{8,16}):(?P[0-9A-Fa-f]{8}):(?P[^:\\s]+):(?P[^:\\s]*):(?P[^:\\s]+):$/", "type": "string" - } + }, + "unstable": false } }, "leaf": 1, @@ -3677,7 +3730,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -3737,7 +3791,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -3779,7 +3834,8 @@ var apiSchema = [ "minLength": 36, "pattern": "/^UPID:(?P[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?):(?P[0-9A-Fa-f]{8}):(?P[0-9A-Fa-f]{8,9}):(?P[0-9A-Fa-f]{8,16}):(?P[0-9A-Fa-f]{8}):(?P[^:\\s]+):(?P[^:\\s]*):(?P[^:\\s]+):$/", "type": "string" - } + }, + "unstable": false } }, "leaf": 1, @@ -3836,7 +3892,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "List backup snapshots.", @@ -3971,7 +4028,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 1, @@ -4015,6 +4073,15 @@ var apiSchema = [ "minimum": 0, "type": "integer" }, + "backend-type": { + "default": "filesystem", + "description": "Datastore backend type", + "enum": [ + "filesystem", + "s3" + ], + "type": "string" + }, "counts": { "additionalProperties": false, "description": "Counts of groups/snapshots per BackupType.", @@ -4178,6 +4245,49 @@ var apiSchema = [ }, "type": "object" }, + "s3-statistics": { + "additionalProperties": false, + "description": "Statistics specific to the S3 backend", + "optional": 1, + "properties": { + "delete": { + "description": "Delete requests", + "minimum": 0, + "type": "integer" + }, + "downloaded": { + "description": "Total downloaded (bytes).", + "minimum": 0, + "type": "integer" + }, + "get": { + "description": "Get requests", + "minimum": 0, + "type": "integer" + }, + "head": { + "description": "Head requests", + "minimum": 0, + "type": "integer" + }, + "post": { + "description": "Post requests", + "minimum": 0, + "type": "integer" + }, + "put": { + "description": "Put requests", + "minimum": 0, + "type": "integer" + }, + "uploaded": { + "description": "Total uploaded (bytes).", + "minimum": 0, + "type": "integer" + } + }, + "type": "object" + }, "total": { "description": "Total space (bytes).", "minimum": 0, @@ -4190,7 +4300,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false } }, "leaf": 1, @@ -4248,7 +4359,8 @@ var apiSchema = [ "minLength": 36, "pattern": "/^UPID:(?P[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?):(?P[0-9A-Fa-f]{8}):(?P[0-9A-Fa-f]{8,9}):(?P[0-9A-Fa-f]{8,16}):(?P[0-9A-Fa-f]{8}):(?P[^:\\s]+):(?P[^:\\s]*):(?P[^:\\s]+):$/", "type": "string" - } + }, + "unstable": false } }, "leaf": 1, @@ -4305,7 +4417,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -4404,7 +4517,8 @@ var apiSchema = [ "minLength": 36, "pattern": "/^UPID:(?P[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?):(?P[0-9A-Fa-f]{8}):(?P[0-9A-Fa-f]{8,9}):(?P[0-9A-Fa-f]{8,16}):(?P[0-9A-Fa-f]{8}):(?P[^:\\s]+):(?P[^:\\s]*):(?P[^:\\s]+):$/", "type": "string" - } + }, + "unstable": false } }, "leaf": 1, @@ -4426,7 +4540,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -4452,6 +4567,15 @@ var apiSchema = [ "additionalProperties": false, "description": "Basic information about a datastore.", "properties": { + "backend-type": { + "default": "filesystem", + "description": "Datastore backend type", + "enum": [ + "filesystem", + "s3" + ], + "type": "string" + }, "comment": { "description": "Comment.", "maxLength": 128, @@ -4512,7 +4636,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 0, @@ -4658,7 +4783,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 1, @@ -4802,7 +4928,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 0, @@ -4869,7 +4996,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 1, @@ -4904,7 +5032,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -4926,7 +5055,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -5068,7 +5198,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 0, @@ -5094,7 +5225,7 @@ var apiSchema = [ "minLength": 3, "type": "string" }, - "s3-client-id": { + "s3-endpoint-id": { "description": "ID to uniquely identify s3 client config.", "maxLength": 32, "minLength": 3, @@ -5119,12 +5250,61 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, - "path": "/admin/s3/{s3-client-id}/check", + "path": "/admin/s3/{s3-endpoint-id}/check", "text": "check" + }, + { + "info": { + "PUT": { + "description": "Reset the S3 request counters for matching endpoint, bucket or datastore (if prefix is given).", + "method": "PUT", + "parameters": { + "additionalProperties": false, + "description": "Reset the S3 request counters for matching endpoint, bucket or datastore (if prefix is given).", + "properties": { + "bucket": { + "description": "Bucket name for S3 object store.", + "maxLength": 63, + "minLength": 3, + "type": "string" + }, + "s3-endpoint-id": { + "description": "ID to uniquely identify s3 client config.", + "maxLength": 32, + "minLength": 3, + "pattern": "/^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$/", + "type": "string" + }, + "store-prefix": { + "description": "Store prefix within bucket for S3 object keys (commonly datastore name)", + "optional": 1, + "type": "string" + } + } + }, + "permissions": { + "check": { + "partial": false, + "path": [], + "privs": [ + "Sys.Modify" + ] + } + }, + "returns": { + "type": "null" + }, + "unstable": false + } + }, + "leaf": 1, + "path": "/admin/s3/{s3-endpoint-id}/reset-counters", + "text": "reset-counters" } ], "info": { @@ -5141,12 +5321,13 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, - "path": "/admin/s3/{s3-client-id}", - "text": "{s3-client-id}" + "path": "/admin/s3/{s3-endpoint-id}", + "text": "{s3-endpoint-id}" } ], "info": {}, @@ -5182,7 +5363,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -5204,7 +5386,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -5426,12 +5609,21 @@ var apiSchema = [ "description": "Only synchronize verified backup snapshots, exclude others.", "optional": 1, "type": "boolean" + }, + "worker-threads": { + "default": 1, + "description": "The number of worker threads to process groups in parallel.", + "maximum": 32, + "minimum": 1, + "optional": 1, + "type": "integer" } }, "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 0, @@ -5550,7 +5742,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 1, @@ -5585,7 +5778,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -5607,7 +5801,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -5737,7 +5932,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 0, @@ -5759,7 +5955,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -5831,7 +6028,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -5882,7 +6080,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Read the AD realm configuration", @@ -6075,7 +6274,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update an AD realm configuration", @@ -6453,7 +6653,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false } }, "leaf": 1, @@ -6649,7 +6850,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Create a new AD realm", @@ -6836,7 +7038,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -6883,7 +7086,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Read the LDAP realm configuration", @@ -7079,7 +7283,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update an LDAP realm configuration", @@ -7465,7 +7670,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false } }, "leaf": 1, @@ -7664,7 +7870,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Create a new LDAP realm", @@ -7854,7 +8061,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -7901,7 +8109,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Read the OpenID realm configuration", @@ -8021,7 +8230,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update an OpenID realm configuration", @@ -8236,7 +8446,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false } }, "leaf": 1, @@ -8359,7 +8570,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Create a new OpenId realm", @@ -8468,7 +8680,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -8534,7 +8747,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update the PAM realm configuration", @@ -8626,7 +8840,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false } }, "leaf": 1, @@ -8692,7 +8907,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update the Proxmox Backup authentication server realm configuration", @@ -8784,7 +9000,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false } }, "leaf": 1, @@ -8831,7 +9048,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update the TFA configuration.", @@ -8883,7 +9101,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -8905,7 +9124,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -8927,7 +9147,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -8974,7 +9195,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Return existing ACME account information.", @@ -9008,8 +9230,61 @@ var apiSchema = [ "properties": { "account": { "additionalProperties": true, - "description": "Raw account data.", - "properties": {}, + "description": "ACME Account data. This is the part of the account returned from and possibly sent to the ACME\nprovider. Some fields may be uptdated by the user via a request to the account location, others\nmay not be changed.", + "properties": { + "contact": { + "description": "The account's contact info.\n\nThis usually contains a `\"mailto:\"` entry but may also contain some other\ndata if the server accepts it.", + "items": { + "description": "Contact Info.", + "type": "string" + }, + "type": "array" + }, + "externalAccountBinding": { + "additionalProperties": false, + "description": "External Account Bindings", + "optional": 1, + "properties": { + "payload": { + "description": "Payload", + "type": "string" + }, + "protected": { + "description": "JOSE Header (see RFC 7515)", + "type": "string" + }, + "signature": { + "description": "HMAC signature", + "type": "string" + } + }, + "type": "object" + }, + "onlyReturnExisting": { + "description": "This is only used by the client when querying an account.", + "type": "boolean" + }, + "orders": { + "description": "URLs to currently pending orders.", + "optional": 1, + "type": "string" + }, + "status": { + "description": "Status of an ACME account.", + "enum": [ + "", + "valid", + "deactivated", + "revoked" + ], + "type": "string" + }, + "termsOfServiceAgreed": { + "description": "Indicated whether the user agreed to the ACME provider's terms of service.", + "optional": 1, + "type": "boolean" + } + }, "type": "object" }, "directory": { @@ -9027,7 +9302,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update an ACME account.", @@ -9062,7 +9338,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -9106,7 +9383,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Register an ACME account.", @@ -9161,7 +9439,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -9209,7 +9488,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 1, @@ -9247,7 +9527,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 1, @@ -9288,7 +9569,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "List ACME challenge plugins.", @@ -9320,7 +9602,7 @@ var apiSchema = [ }, "returns": { "additionalProperties": false, - "description": "The API's format is inherited from PVE/PMG:", + "description": "ACME plugin config. The API's format is inherited from PVE/PMG:", "properties": { "api": { "description": "DNS Api name.", @@ -9354,7 +9636,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update an ACME plugin configuration.", @@ -9376,7 +9659,7 @@ var apiSchema = [ "delete": { "description": "List of properties to delete.", "items": { - "description": "Deletable property name", + "description": "Deletable plugin property names.", "enum": [ "disable", "validation-delay" @@ -9387,8 +9670,9 @@ var apiSchema = [ "type": "array" }, "digest": { - "description": "Digest to protect against concurrent updates", + "description": "Prevent changes if current configuration file has different SHA256 digest. This can be used to prevent concurrent modifications.", "optional": 1, + "pattern": "/^[a-f0-9]{64}$/", "type": "string" }, "disable": { @@ -9428,7 +9712,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -9461,7 +9746,7 @@ var apiSchema = [ "description": "List of ACME plugin configurations.", "items": { "additionalProperties": false, - "description": "The API's format is inherited from PVE/PMG:", + "description": "ACME plugin config. The API's format is inherited from PVE/PMG:", "properties": { "api": { "description": "DNS Api name.", @@ -9497,7 +9782,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Add ACME plugin configuration.", @@ -9555,7 +9841,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -9585,7 +9872,8 @@ var apiSchema = [ "description": "The ACME Directory's ToS URL, if any.", "optional": 1, "type": "string" - } + }, + "unstable": false } }, "leaf": 1, @@ -9607,7 +9895,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -9649,7 +9938,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Get tape changer configuration", @@ -9718,7 +10008,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update a tape changer configuration", @@ -9796,7 +10087,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -9859,7 +10151,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Create a new changer device", @@ -9916,7 +10209,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -9979,7 +10273,8 @@ var apiSchema = [ "minLength": 36, "pattern": "/^UPID:(?P[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?):(?P[0-9A-Fa-f]{8}):(?P[0-9A-Fa-f]{8,9}):(?P[0-9A-Fa-f]{8,16}):(?P[0-9A-Fa-f]{8}):(?P[^:\\s]+):(?P[^:\\s]*):(?P[^:\\s]+):$/", "type": "string" - } + }, + "unstable": false }, "GET": { "description": "Read a datastore configuration.", @@ -10032,6 +10327,17 @@ var apiSchema = [ "pattern": "/^[[:^cntrl:]]*$/", "type": "string" }, + "counter-reset-schedule": { + "description": "Reset notification threshold related counters at specified schedule.", + "optional": 1, + "type": "string", + "typetext": "" + }, + "gc-on-unmount": { + "description": "Run garbage collection before unmounting a removable datastore.", + "optional": 1, + "type": "boolean" + }, "gc-schedule": { "description": "Run garbage collection job at specified schedule.", "optional": 1, @@ -10123,6 +10429,58 @@ var apiSchema = [ "optional": 1, "type": "string" }, + "notification-thresholds": { + "description": "Threshold values for notifications", + "format": { + "additionalProperties": false, + "description": "Request counter thresholds", + "properties": { + "s3-delete": { + "description": "Threshold for DELETE requests.", + "optional": 1, + "type": "integer" + }, + "s3-download": { + "description": "Byte size with optional unit (B, KB (base 10), MB, GB, ..., KiB (base 2), MiB, Gib, ...).", + "maxLength": 64, + "minLength": 1, + "optional": 1, + "type": "string" + }, + "s3-get": { + "description": "Threshold for GET requests.", + "optional": 1, + "type": "integer" + }, + "s3-head": { + "description": "Threshold for HEAD requests.", + "optional": 1, + "type": "integer" + }, + "s3-post": { + "description": "Threshold for POST requests.", + "optional": 1, + "type": "integer" + }, + "s3-put": { + "description": "Threshold for PUT requests.", + "optional": 1, + "type": "integer" + }, + "s3-upload": { + "description": "Byte size with optional unit (B, KB (base 10), MB, GB, ..., KiB (base 2), MiB, Gib, ...).", + "maxLength": 64, + "minLength": 1, + "optional": 1, + "type": "string" + } + }, + "type": "object" + }, + "optional": 1, + "type": "string", + "typetext": "[[s3-delete=] [,s3-download=] [,s3-get=] [,s3-head=] [,s3-post=] [,s3-put=] [,s3-upload=]]" + }, "notify": { "description": "Datastore notification setting, enum can be one of 'always', 'never', or 'error'.", "format": { @@ -10275,7 +10633,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update datastore config.", @@ -10291,6 +10650,12 @@ var apiSchema = [ "pattern": "/^[[:^cntrl:]]*$/", "type": "string" }, + "counter-reset-schedule": { + "description": "Reset notification threshold related counters at specified schedule.", + "optional": 1, + "type": "string", + "typetext": "" + }, "delete": { "description": "List of properties to delete.", "items": { @@ -10298,6 +10663,7 @@ var apiSchema = [ "enum": [ "comment", "gc-schedule", + "gc-on-unmount", "prune-schedule", "keep-last", "keep-hourly", @@ -10310,7 +10676,9 @@ var apiSchema = [ "notify", "notification-mode", "tuning", - "maintenance-mode" + "maintenance-mode", + "notification-thresholds", + "counter-reset-schedule" ], "type": "string" }, @@ -10323,6 +10691,11 @@ var apiSchema = [ "pattern": "/^[a-f0-9]{64}$/", "type": "string" }, + "gc-on-unmount": { + "description": "Run garbage collection before unmounting a removable datastore.", + "optional": 1, + "type": "boolean" + }, "gc-schedule": { "description": "Run garbage collection job at specified schedule.", "optional": 1, @@ -10414,6 +10787,58 @@ var apiSchema = [ "optional": 1, "type": "string" }, + "notification-thresholds": { + "description": "Threshold values for notifications", + "format": { + "additionalProperties": false, + "description": "Request counter thresholds", + "properties": { + "s3-delete": { + "description": "Threshold for DELETE requests.", + "optional": 1, + "type": "integer" + }, + "s3-download": { + "description": "Byte size with optional unit (B, KB (base 10), MB, GB, ..., KiB (base 2), MiB, Gib, ...).", + "maxLength": 64, + "minLength": 1, + "optional": 1, + "type": "string" + }, + "s3-get": { + "description": "Threshold for GET requests.", + "optional": 1, + "type": "integer" + }, + "s3-head": { + "description": "Threshold for HEAD requests.", + "optional": 1, + "type": "integer" + }, + "s3-post": { + "description": "Threshold for POST requests.", + "optional": 1, + "type": "integer" + }, + "s3-put": { + "description": "Threshold for PUT requests.", + "optional": 1, + "type": "integer" + }, + "s3-upload": { + "description": "Byte size with optional unit (B, KB (base 10), MB, GB, ..., KiB (base 2), MiB, Gib, ...).", + "maxLength": 64, + "minLength": 1, + "optional": 1, + "type": "string" + } + }, + "type": "object" + }, + "optional": 1, + "type": "string", + "typetext": "[[s3-delete=] [,s3-download=] [,s3-get=] [,s3-head=] [,s3-post=] [,s3-put=] [,s3-upload=]]" + }, "notify": { "description": "Datastore notification setting, enum can be one of 'always', 'never', or 'error'.", "format": { @@ -10574,7 +10999,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -10619,6 +11045,17 @@ var apiSchema = [ "pattern": "/^[[:^cntrl:]]*$/", "type": "string" }, + "counter-reset-schedule": { + "description": "Reset notification threshold related counters at specified schedule.", + "optional": 1, + "type": "string", + "typetext": "" + }, + "gc-on-unmount": { + "description": "Run garbage collection before unmounting a removable datastore.", + "optional": 1, + "type": "boolean" + }, "gc-schedule": { "description": "Run garbage collection job at specified schedule.", "optional": 1, @@ -10710,6 +11147,58 @@ var apiSchema = [ "optional": 1, "type": "string" }, + "notification-thresholds": { + "description": "Threshold values for notifications", + "format": { + "additionalProperties": false, + "description": "Request counter thresholds", + "properties": { + "s3-delete": { + "description": "Threshold for DELETE requests.", + "optional": 1, + "type": "integer" + }, + "s3-download": { + "description": "Byte size with optional unit (B, KB (base 10), MB, GB, ..., KiB (base 2), MiB, Gib, ...).", + "maxLength": 64, + "minLength": 1, + "optional": 1, + "type": "string" + }, + "s3-get": { + "description": "Threshold for GET requests.", + "optional": 1, + "type": "integer" + }, + "s3-head": { + "description": "Threshold for HEAD requests.", + "optional": 1, + "type": "integer" + }, + "s3-post": { + "description": "Threshold for POST requests.", + "optional": 1, + "type": "integer" + }, + "s3-put": { + "description": "Threshold for PUT requests.", + "optional": 1, + "type": "integer" + }, + "s3-upload": { + "description": "Byte size with optional unit (B, KB (base 10), MB, GB, ..., KiB (base 2), MiB, Gib, ...).", + "maxLength": 64, + "minLength": 1, + "optional": 1, + "type": "string" + } + }, + "type": "object" + }, + "optional": 1, + "type": "string", + "typetext": "[[s3-delete=] [,s3-download=] [,s3-get=] [,s3-head=] [,s3-post=] [,s3-put=] [,s3-upload=]]" + }, "notify": { "description": "Datastore notification setting, enum can be one of 'always', 'never', or 'error'.", "format": { @@ -10864,7 +11353,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Create new datastore config.", @@ -10892,6 +11382,17 @@ var apiSchema = [ "pattern": "/^[[:^cntrl:]]*$/", "type": "string" }, + "counter-reset-schedule": { + "description": "Reset notification threshold related counters at specified schedule.", + "optional": 1, + "type": "string", + "typetext": "" + }, + "gc-on-unmount": { + "description": "Run garbage collection before unmounting a removable datastore.", + "optional": 1, + "type": "boolean" + }, "gc-schedule": { "description": "Run garbage collection job at specified schedule.", "optional": 1, @@ -10983,6 +11484,58 @@ var apiSchema = [ "optional": 1, "type": "string" }, + "notification-thresholds": { + "description": "Threshold values for notifications", + "format": { + "additionalProperties": false, + "description": "Request counter thresholds", + "properties": { + "s3-delete": { + "description": "Threshold for DELETE requests.", + "optional": 1, + "type": "integer" + }, + "s3-download": { + "description": "Byte size with optional unit (B, KB (base 10), MB, GB, ..., KiB (base 2), MiB, Gib, ...).", + "maxLength": 64, + "minLength": 1, + "optional": 1, + "type": "string" + }, + "s3-get": { + "description": "Threshold for GET requests.", + "optional": 1, + "type": "integer" + }, + "s3-head": { + "description": "Threshold for HEAD requests.", + "optional": 1, + "type": "integer" + }, + "s3-post": { + "description": "Threshold for POST requests.", + "optional": 1, + "type": "integer" + }, + "s3-put": { + "description": "Threshold for PUT requests.", + "optional": 1, + "type": "integer" + }, + "s3-upload": { + "description": "Byte size with optional unit (B, KB (base 10), MB, GB, ..., KiB (base 2), MiB, Gib, ...).", + "maxLength": 64, + "minLength": 1, + "optional": 1, + "type": "string" + } + }, + "type": "object" + }, + "optional": 1, + "type": "string", + "typetext": "[[s3-delete=] [,s3-download=] [,s3-get=] [,s3-head=] [,s3-post=] [,s3-put=] [,s3-upload=]]" + }, "notify": { "description": "Datastore notification setting, enum can be one of 'always', 'never', or 'error'.", "format": { @@ -11161,7 +11714,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -11203,7 +11757,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Get drive configuration", @@ -11267,7 +11822,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update a drive configuration", @@ -11340,7 +11896,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -11398,7 +11955,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Create a new drive", @@ -11450,7 +12008,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -11492,7 +12051,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Get media pool configuration", @@ -11567,7 +12127,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update media pool settings", @@ -11647,7 +12208,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -11716,7 +12278,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Create a new media pool", @@ -11779,7 +12342,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -11825,7 +12389,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Read the InfluxDB http server configuration", @@ -11916,7 +12481,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update an InfluxDB http server configuration", @@ -12021,7 +12587,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -12115,7 +12682,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Create a new InfluxDB http server configuration", @@ -12195,7 +12763,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -12239,7 +12808,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Read the InfluxDB udp server configuration", @@ -12303,7 +12873,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update an InfluxDB udp server configuration", @@ -12377,7 +12948,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -12444,7 +13016,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Create a new InfluxDB udp server configuration", @@ -12497,7 +13070,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -12519,7 +13093,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -12564,7 +13139,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Get a gotify endpoint.", @@ -12638,7 +13214,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update gotify endpoint.", @@ -12711,7 +13288,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -12788,7 +13366,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Add a new gotify endpoint.", @@ -12855,7 +13434,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -12896,7 +13476,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Get a sendmail endpoint.", @@ -13000,7 +13581,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update sendmail endpoint.", @@ -13101,7 +13683,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -13208,7 +13791,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Add a new sendmail endpoint.", @@ -13301,7 +13885,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -13342,7 +13927,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Get a smtp endpoint.", @@ -13467,7 +14053,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update smtp endpoint.", @@ -13603,7 +14190,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -13731,7 +14319,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Add a new smtp endpoint.", @@ -13850,7 +14439,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -13891,7 +14481,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Get a webhook endpoint.", @@ -14028,7 +14619,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update webhook endpoint.", @@ -14168,7 +14760,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -14308,7 +14901,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Add a new webhook endpoint.", @@ -14434,7 +15028,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -14456,7 +15051,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -14508,7 +15104,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 1, @@ -14551,7 +15148,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 1, @@ -14592,7 +15190,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Get a notification matcher.", @@ -14711,7 +15310,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update notification matcher.", @@ -14834,7 +15434,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -14956,7 +15557,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Add a new notification matcher.", @@ -15064,7 +15666,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -15107,7 +15710,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -15129,7 +15733,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -15201,7 +15806,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 0, @@ -15223,7 +15829,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -15262,7 +15869,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Read a prune job configuration.", @@ -15372,7 +15980,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update prune job config.", @@ -15500,7 +16109,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -15613,7 +16223,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Create a new prune job.", @@ -15712,7 +16323,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -15826,7 +16438,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 1, @@ -15891,7 +16504,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 1, @@ -15913,7 +16527,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -15956,6 +16571,15 @@ var apiSchema = [ "additionalProperties": false, "description": "Basic information about a datastore.", "properties": { + "backend-type": { + "default": "filesystem", + "description": "Datastore backend type", + "enum": [ + "filesystem", + "s3" + ], + "type": "string" + }, "comment": { "description": "Comment.", "maxLength": 128, @@ -16016,7 +16640,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 0, @@ -16061,7 +16686,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Read remote configuration data.", @@ -16131,10 +16757,17 @@ var apiSchema = [ "description": "The (optional) port", "optional": 1, "type": "integer" + }, + "use-node-proxy": { + "default": false, + "description": "Use the http proxy configuration of the node for remote connections.", + "optional": 1, + "type": "boolean" } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update remote configuration.", @@ -16165,7 +16798,8 @@ var apiSchema = [ "enum": [ "comment", "fingerprint", - "port" + "port", + "use-node-proxy" ], "type": "string" }, @@ -16209,6 +16843,12 @@ var apiSchema = [ "description": "The (optional) port", "optional": 1, "type": "integer" + }, + "use-node-proxy": { + "default": false, + "description": "Use the http proxy configuration of the node for remote connections.", + "optional": 1, + "type": "boolean" } } }, @@ -16226,7 +16866,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -16289,12 +16930,19 @@ var apiSchema = [ "description": "The (optional) port", "optional": 1, "type": "integer" + }, + "use-node-proxy": { + "default": false, + "description": "Use the http proxy configuration of the node for remote connections.", + "optional": 1, + "type": "boolean" } }, "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Create new remote.", @@ -16346,6 +16994,12 @@ var apiSchema = [ "description": "The (optional) port", "optional": 1, "type": "integer" + }, + "use-node-proxy": { + "default": false, + "description": "Use the http proxy configuration of the node for remote connections.", + "optional": 1, + "type": "boolean" } } }, @@ -16362,7 +17016,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -16402,7 +17057,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -16448,7 +17104,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Read an s3 client configuration.", @@ -16535,7 +17192,8 @@ var apiSchema = [ "items": { "description": "Provider specific feature implementation quirks.", "enum": [ - "skip-if-none-match-header" + "skip-if-none-match-header", + "delete-objects-via-delete-object" ], "type": "string" }, @@ -16570,7 +17228,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update an s3 client configuration.", @@ -16659,7 +17318,8 @@ var apiSchema = [ "items": { "description": "Provider specific feature implementation quirks.", "enum": [ - "skip-if-none-match-header" + "skip-if-none-match-header", + "delete-objects-via-delete-object" ], "type": "string" }, @@ -16714,7 +17374,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -16793,7 +17454,8 @@ var apiSchema = [ "items": { "description": "Provider specific feature implementation quirks.", "enum": [ - "skip-if-none-match-header" + "skip-if-none-match-header", + "delete-objects-via-delete-object" ], "type": "string" }, @@ -16830,7 +17492,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Create a new s3 client configuration.", @@ -16891,7 +17554,8 @@ var apiSchema = [ "items": { "description": "Provider specific feature implementation quirks.", "enum": [ - "skip-if-none-match-header" + "skip-if-none-match-header", + "delete-objects-via-delete-object" ], "type": "string" }, @@ -16944,7 +17608,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -16983,7 +17648,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Read a sync job configuration.", @@ -17164,10 +17830,19 @@ var apiSchema = [ "description": "Only synchronize verified backup snapshots, exclude others.", "optional": 1, "type": "boolean" + }, + "worker-threads": { + "default": 1, + "description": "The number of worker threads to process groups in parallel.", + "maximum": 32, + "minimum": 1, + "optional": 1, + "type": "integer" } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update sync job config.", @@ -17220,7 +17895,8 @@ var apiSchema = [ "verified-only", "run-on-mount", "unmount-on-done", - "sync-direction" + "sync-direction", + "worker-threads" ], "type": "string" }, @@ -17369,6 +18045,14 @@ var apiSchema = [ "description": "Only synchronize verified backup snapshots, exclude others.", "optional": 1, "type": "boolean" + }, + "worker-threads": { + "default": 1, + "description": "The number of worker threads to process groups in parallel.", + "maximum": 32, + "minimum": 1, + "optional": 1, + "type": "integer" } } }, @@ -17378,7 +18062,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -17572,12 +18257,21 @@ var apiSchema = [ "description": "Only synchronize verified backup snapshots, exclude others.", "optional": 1, "type": "boolean" + }, + "worker-threads": { + "default": 1, + "description": "The number of worker threads to process groups in parallel.", + "maximum": 32, + "minimum": 1, + "optional": 1, + "type": "integer" } }, "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Create a new sync job.", @@ -17741,6 +18435,14 @@ var apiSchema = [ "description": "Only synchronize verified backup snapshots, exclude others.", "optional": 1, "type": "boolean" + }, + "worker-threads": { + "default": 1, + "description": "The number of worker threads to process groups in parallel.", + "maximum": 32, + "minimum": 1, + "optional": 1, + "type": "integer" } } }, @@ -17750,7 +18452,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -17798,7 +18501,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Read a tape backup job configuration.", @@ -17942,7 +18646,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update the tape backup job", @@ -18106,7 +18811,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -18244,7 +18950,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Create a new tape backup job.", @@ -18376,7 +19083,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -18421,7 +19129,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Get key config (public key part)", @@ -18489,7 +19198,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Change the encryption key's password (and password hint).", @@ -18560,7 +19270,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -18633,7 +19344,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Create a new encryption key", @@ -18691,7 +19403,8 @@ var apiSchema = [ "description": "Tape encryption key fingerprint (sha256).", "pattern": "/^(?:[0-9a-fA-F][0-9a-fA-F])(?::[0-9a-fA-F][0-9a-fA-F]){31}$/", "type": "string" - } + }, + "unstable": false } }, "leaf": 0, @@ -18735,7 +19448,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Read traffic control configuration data.", @@ -18841,7 +19555,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update traffic control configuration.", @@ -18961,7 +19676,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -19070,7 +19786,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Create new traffic control rule.", @@ -19165,7 +19882,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -19204,7 +19922,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Read a verification job configuration.", @@ -19302,7 +20021,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update verification job config.", @@ -19415,7 +20135,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -19516,7 +20237,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Create a new verification job.", @@ -19603,7 +20325,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -19625,7 +20348,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -19678,7 +20402,8 @@ var apiSchema = [ "minLength": 36, "pattern": "/^UPID:(?P[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?):(?P[0-9A-Fa-f]{8}):(?P[0-9A-Fa-f]{8,9}):(?P[0-9A-Fa-f]{8,16}):(?P[0-9A-Fa-f]{8}):(?P[^:\\s]+):(?P[^:\\s]*):(?P[^:\\s]+):$/", "type": "string" - } + }, + "unstable": false } }, "leaf": 1, @@ -19924,7 +20649,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "POST": { "description": "Change the properties of the specified repository.\n\nThe `digest` parameter asserts that the configuration has not been modified.", @@ -19970,7 +20696,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "PUT": { "description": "Add the repository identified by the `handle`.\nIf the repository is already configured, it will be set to enabled.\n\nThe `digest` parameter asserts that the configuration has not been modified.", @@ -20015,7 +20742,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -20099,7 +20827,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Update the APT database", @@ -20141,7 +20870,8 @@ var apiSchema = [ "minLength": 36, "pattern": "/^UPID:(?P[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?):(?P[0-9A-Fa-f]{8}):(?P[0-9A-Fa-f]{8,9}):(?P[0-9A-Fa-f]{8,16}):(?P[0-9A-Fa-f]{8}):(?P[^:\\s]+):(?P[^:\\s]*):(?P[^:\\s]+):$/", "type": "string" - } + }, + "unstable": false } }, "leaf": 1, @@ -20225,7 +20955,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 1, @@ -20247,7 +20978,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -20294,7 +21026,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "PUT": { "description": "Renew the current ACME certificate if it expires within 30 days (or always if the `force`\nparameter is set).", @@ -20330,7 +21063,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -20352,7 +21086,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -20395,7 +21130,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "POST": { "description": "Upload a custom certificate.", @@ -20505,7 +21241,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 1, @@ -20601,7 +21338,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 1, @@ -20623,7 +21361,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -20668,8 +21407,7 @@ var apiSchema = [ "description": "The ACME configuration.\n\nCurrently only contains the name of the account use.", "properties": { "account": { - "description": "ACME account name.", - "pattern": "/^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$/", + "description": "Account to use to acquire ACME certificates.", "type": "string" } }, @@ -20915,7 +21653,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update the node configuration", @@ -20931,8 +21670,7 @@ var apiSchema = [ "description": "The ACME configuration.\n\nCurrently only contains the name of the account use.", "properties": { "account": { - "description": "ACME account name.", - "pattern": "/^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$/", + "description": "Account to use to acquire ACME certificates.", "type": "string" } }, @@ -21226,7 +21964,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -21274,7 +22013,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -21353,7 +22093,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Create a Filesystem on an unused disk. Will be mounted under `/mnt/datastore/`.", @@ -21421,7 +22162,8 @@ var apiSchema = [ "minLength": 36, "pattern": "/^UPID:(?P[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?):(?P[0-9A-Fa-f]{8}):(?P[0-9A-Fa-f]{8,9}):(?P[0-9A-Fa-f]{8,16}):(?P[0-9A-Fa-f]{8}):(?P[^:\\s]+):(?P[^:\\s]*):(?P[^:\\s]+):$/", "type": "string" - } + }, + "unstable": false } }, "leaf": 0, @@ -21474,7 +22216,8 @@ var apiSchema = [ "minLength": 36, "pattern": "/^UPID:(?P[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?):(?P[0-9A-Fa-f]{8}):(?P[0-9A-Fa-f]{8,9}):(?P[0-9A-Fa-f]{8,16}):(?P[0-9A-Fa-f]{8}):(?P[^:\\s]+):(?P[^:\\s]*):(?P[^:\\s]+):$/", "type": "string" - } + }, + "unstable": false } }, "leaf": 1, @@ -21684,7 +22427,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 1, @@ -21800,7 +22544,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false } }, "leaf": 1, @@ -21847,7 +22592,8 @@ var apiSchema = [ "minLength": 36, "pattern": "/^UPID:(?P[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?):(?P[0-9A-Fa-f]{8}):(?P[0-9A-Fa-f]{8,9}):(?P[0-9A-Fa-f]{8,16}):(?P[0-9A-Fa-f]{8}):(?P[^:\\s]+):(?P[^:\\s]*):(?P[^:\\s]+):$/", "type": "string" - } + }, + "unstable": false } }, "leaf": 1, @@ -21894,7 +22640,8 @@ var apiSchema = [ "description": "zpool vdev tree with status", "properties": {}, "type": "object" - } + }, + "unstable": false } }, "leaf": 1, @@ -21971,7 +22718,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Create a new ZFS pool. Will be mounted under `/mnt/datastore/`.", @@ -22067,7 +22815,8 @@ var apiSchema = [ "minLength": 36, "pattern": "/^UPID:(?P[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?):(?P[0-9A-Fa-f]{8}):(?P[0-9A-Fa-f]{8,9}):(?P[0-9A-Fa-f]{8,16}):(?P[0-9A-Fa-f]{8}):(?P[^:\\s]+):(?P[^:\\s]*):(?P[^:\\s]+):$/", "type": "string" - } + }, + "unstable": false } }, "leaf": 0, @@ -22089,7 +22838,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -22159,7 +22909,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update DNS settings.", @@ -22233,7 +22984,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -22303,7 +23055,8 @@ var apiSchema = [ "type": "string" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 1, @@ -22357,7 +23110,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Read a network interface configuration.", @@ -22592,7 +23346,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Update network interface config.", @@ -22834,7 +23589,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -22872,7 +23628,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "List all datastores", @@ -23103,7 +23860,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Create network interface configuration.", @@ -23313,7 +24071,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "PUT": { "description": "Reload network configuration (requires ifupdown2).", @@ -23344,7 +24103,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -23382,7 +24142,8 @@ var apiSchema = [ "returns": { "description": "Returns report of the node", "type": "string" - } + }, + "unstable": false } }, "leaf": 1, @@ -23439,7 +24200,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -23486,7 +24248,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -23529,7 +24292,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -23572,7 +24336,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -23615,7 +24380,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -23658,7 +24424,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -23680,7 +24447,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -23746,7 +24514,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 0, @@ -23952,7 +24721,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "POST": { "description": "Reboot or shutdown the node.", @@ -23990,7 +24760,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -24026,7 +24797,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Read subscription info.", @@ -24109,7 +24881,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "POST": { "description": "Check and update subscription status.", @@ -24144,7 +24917,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "PUT": { "description": "Set a subscription key and check it.", @@ -24180,7 +24954,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -24263,7 +25038,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 1, @@ -24327,7 +25103,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -24420,7 +25197,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false } }, "leaf": 1, @@ -24455,7 +25233,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "GET": { "description": "Directory index.", @@ -24470,7 +25249,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -24620,7 +25400,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 0, @@ -24686,7 +25467,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false } }, "leaf": 1, @@ -24735,7 +25517,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false }, "PUT": { "description": "Set time zone", @@ -24772,7 +25555,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -24817,7 +25601,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -24839,7 +25624,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -24858,7 +25644,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -24889,7 +25676,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false } }, "leaf": 1, @@ -25012,6 +25800,14 @@ var apiSchema = [ "description": "Only synchronize verified backup snapshots, exclude others.", "optional": 1, "type": "boolean" + }, + "worker-threads": { + "default": 1, + "description": "The number of worker threads to process groups in parallel.", + "maximum": 32, + "minimum": 1, + "optional": 1, + "type": "integer" } } }, @@ -25021,7 +25817,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -25138,6 +25935,14 @@ var apiSchema = [ "description": "Only synchronize verified backup snapshots, exclude others.", "optional": 1, "type": "boolean" + }, + "worker-threads": { + "default": 1, + "description": "The number of worker threads to process groups in parallel.", + "maximum": 32, + "minimum": 1, + "optional": 1, + "type": "integer" } } }, @@ -25147,7 +25952,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -25209,7 +26015,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -25243,6 +26050,15 @@ var apiSchema = [ "optional": 1, "type": "integer" }, + "backend-type": { + "default": "filesystem", + "description": "Datastore backend type", + "enum": [ + "filesystem", + "s3" + ], + "type": "string" + }, "error": { "description": "An error description, for example, when the datastore could not be looked up", "optional": 1, @@ -25390,7 +26206,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 1, @@ -25426,7 +26243,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -25448,7 +26266,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -25483,7 +26302,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -25646,7 +26466,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "POST": { "description": "Backup datastore to tape media pool", @@ -25759,7 +26580,8 @@ var apiSchema = [ "minLength": 36, "pattern": "/^UPID:(?P[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?):(?P[0-9A-Fa-f]{8}):(?P[0-9A-Fa-f]{8,9}):(?P[0-9A-Fa-f]{8,16}):(?P[0-9A-Fa-f]{8}):(?P[^:\\s]+):(?P[^:\\s]*):(?P[^:\\s]+):$/", "type": "string" - } + }, + "unstable": false } }, "leaf": 0, @@ -25850,7 +26672,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 1, @@ -25900,7 +26723,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -25922,7 +26746,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -26000,7 +26825,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 0, @@ -26055,7 +26881,8 @@ var apiSchema = [ "minLength": 36, "pattern": "/^UPID:(?P[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?):(?P[0-9A-Fa-f]{8}):(?P[0-9A-Fa-f]{8,9}):(?P[0-9A-Fa-f]{8,16}):(?P[0-9A-Fa-f]{8}):(?P[^:\\s]+):(?P[^:\\s]*):(?P[^:\\s]+):$/", "type": "string" - } + }, + "unstable": false } }, "leaf": 1, @@ -26117,7 +26944,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 1, @@ -26175,7 +27003,8 @@ var apiSchema = [ "minLength": 36, "pattern": "/^UPID:(?P[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?):(?P[0-9A-Fa-f]{8}):(?P[0-9A-Fa-f]{8,9}):(?P[0-9A-Fa-f]{8,16}):(?P[0-9A-Fa-f]{8}):(?P[^:\\s]+):(?P[^:\\s]*):(?P[^:\\s]+):$/", "type": "string" - } + }, + "unstable": false } }, "leaf": 1, @@ -26218,7 +27047,8 @@ var apiSchema = [ "minLength": 36, "pattern": "/^UPID:(?P[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?):(?P[0-9A-Fa-f]{8}):(?P[0-9A-Fa-f]{8,9}):(?P[0-9A-Fa-f]{8,16}):(?P[0-9A-Fa-f]{8}):(?P[^:\\s]+):(?P[^:\\s]*):(?P[^:\\s]+):$/", "type": "string" - } + }, + "unstable": false } }, "leaf": 1, @@ -26261,7 +27091,8 @@ var apiSchema = [ "minLength": 36, "pattern": "/^UPID:(?P[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?):(?P[0-9A-Fa-f]{8}):(?P[0-9A-Fa-f]{8,9}):(?P[0-9A-Fa-f]{8,16}):(?P[0-9A-Fa-f]{8}):(?P[^:\\s]+):(?P[^:\\s]*):(?P[^:\\s]+):$/", "type": "string" - } + }, + "unstable": false } }, "leaf": 1, @@ -26310,7 +27141,8 @@ var apiSchema = [ "description": "The import-export slot number the media was transferred to.", "minimum": 1, "type": "integer" - } + }, + "unstable": false } }, "leaf": 1, @@ -26367,7 +27199,8 @@ var apiSchema = [ "minLength": 36, "pattern": "/^UPID:(?P[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?):(?P[0-9A-Fa-f]{8}):(?P[0-9A-Fa-f]{8,9}):(?P[0-9A-Fa-f]{8,16}):(?P[0-9A-Fa-f]{8}):(?P[^:\\s]+):(?P[^:\\s]*):(?P[^:\\s]+):$/", "type": "string" - } + }, + "unstable": false } }, "leaf": 1, @@ -26425,7 +27258,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false }, "PUT": { "description": "Update inventory\n\nNote: Only useful for drives with associated changer device.\n\nThis method queries the changer to get a list of media labels. It\nthen loads any unknown media into the drive, reads the label, and\nstore the result to the media database.\n\nIf `catalog` is true, also tries to restore the catalog from tape.\n\nNote: This updates the media online status.", @@ -26473,7 +27307,8 @@ var apiSchema = [ "minLength": 36, "pattern": "/^UPID:(?P[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?):(?P[0-9A-Fa-f]{8}):(?P[0-9A-Fa-f]{8,9}):(?P[0-9A-Fa-f]{8,16}):(?P[0-9A-Fa-f]{8}):(?P[^:\\s]+):(?P[^:\\s]*):(?P[^:\\s]+):$/", "type": "string" - } + }, + "unstable": false } }, "leaf": 1, @@ -26531,7 +27366,8 @@ var apiSchema = [ "minLength": 36, "pattern": "/^UPID:(?P[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?):(?P[0-9A-Fa-f]{8}):(?P[0-9A-Fa-f]{8,9}):(?P[0-9A-Fa-f]{8,16}):(?P[0-9A-Fa-f]{8}):(?P[^:\\s]+):(?P[^:\\s]*):(?P[^:\\s]+):$/", "type": "string" - } + }, + "unstable": false } }, "leaf": 1, @@ -26581,7 +27417,8 @@ var apiSchema = [ "minLength": 36, "pattern": "/^UPID:(?P[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?):(?P[0-9A-Fa-f]{8}):(?P[0-9A-Fa-f]{8,9}):(?P[0-9A-Fa-f]{8,16}):(?P[0-9A-Fa-f]{8}):(?P[^:\\s]+):(?P[^:\\s]*):(?P[^:\\s]+):$/", "type": "string" - } + }, + "unstable": false } }, "leaf": 1, @@ -26626,7 +27463,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -26715,7 +27553,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false } }, "leaf": 1, @@ -26759,7 +27598,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -26802,7 +27642,8 @@ var apiSchema = [ "minLength": 36, "pattern": "/^UPID:(?P[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?):(?P[0-9A-Fa-f]{8}):(?P[0-9A-Fa-f]{8,9}):(?P[0-9A-Fa-f]{8,16}):(?P[0-9A-Fa-f]{8}):(?P[^:\\s]+):(?P[^:\\s]*):(?P[^:\\s]+):$/", "type": "string" - } + }, + "unstable": false } }, "leaf": 1, @@ -26971,7 +27812,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false } }, "leaf": 1, @@ -27020,7 +27862,8 @@ var apiSchema = [ "minLength": 36, "pattern": "/^UPID:(?P[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?):(?P[0-9A-Fa-f]{8}):(?P[0-9A-Fa-f]{8,9}):(?P[0-9A-Fa-f]{8,16}):(?P[0-9A-Fa-f]{8}):(?P[^:\\s]+):(?P[^:\\s]*):(?P[^:\\s]+):$/", "type": "string" - } + }, + "unstable": false } }, "leaf": 1, @@ -27191,7 +28034,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false } }, "leaf": 1, @@ -27213,7 +28057,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -27329,7 +28174,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 0, @@ -27450,7 +28296,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 1, @@ -27500,7 +28347,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -27529,7 +28377,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "POST": { "description": "Update media status (None, 'full', 'damaged' or 'retired')\n\nIt is not allowed to set status to 'writable' or 'unknown' (those\nare internally managed states).", @@ -27570,7 +28419,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -27592,7 +28442,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -27715,7 +28566,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 0, @@ -27763,7 +28615,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 1, @@ -27816,7 +28669,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -27838,7 +28692,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -27976,7 +28831,8 @@ var apiSchema = [ "minLength": 36, "pattern": "/^UPID:(?P[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?):(?P[0-9A-Fa-f]{8}):(?P[0-9A-Fa-f]{8,9}):(?P[0-9A-Fa-f]{8,16}):(?P[0-9A-Fa-f]{8}):(?P[^:\\s]+):(?P[^:\\s]*):(?P[^:\\s]+):$/", "type": "string" - } + }, + "unstable": false } }, "leaf": 1, @@ -28039,7 +28895,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 1, @@ -28102,7 +28959,8 @@ var apiSchema = [ "type": "object" }, "type": "array" - } + }, + "unstable": false } }, "leaf": 1, @@ -28124,7 +28982,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -28162,7 +29021,8 @@ var apiSchema = [ } }, "type": "object" - } + }, + "unstable": false } }, "leaf": 1, @@ -28185,7 +29045,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -28218,7 +29079,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -28261,7 +29123,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -28301,7 +29164,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -28326,7 +29190,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false }, "PUT": { "description": "Append chunk to dynamic index writer.", @@ -28363,7 +29228,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -28382,7 +29248,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -28425,7 +29292,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -28442,7 +29310,7 @@ var apiSchema = [ "description": "Close fixed index writer.", "properties": { "chunk-count": { - "description": "Chunk count. This is used to verify that the server got all chunks. Ignored for incremental backups.", + "description": "Number of new and re-indexed chunks. Used to verify that the server got all chunk digests.", "minimum": 0, "type": "integer" }, @@ -28465,7 +29333,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -28494,13 +29363,15 @@ var apiSchema = [ "size": { "description": "File size.", "minimum": 1, + "optional": 1, "type": "integer" } } }, "returns": { "type": "null" - } + }, + "unstable": false }, "PUT": { "description": "Append chunk to fixed index writer.", @@ -28537,7 +29408,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -28562,7 +29434,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -28581,7 +29454,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -28600,7 +29474,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -28608,6 +29483,7 @@ var apiSchema = [ "text": "speedtest" } ], + "expanded": false, "info": { "GET": { "description": "Directory index.", @@ -28622,7 +29498,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, @@ -28649,7 +29526,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -28674,7 +29552,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -28693,7 +29572,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 1, @@ -28701,6 +29581,7 @@ var apiSchema = [ "text": "speedtest" } ], + "expanded": false, "info": { "GET": { "description": "Directory index.", @@ -28715,7 +29596,8 @@ var apiSchema = [ }, "returns": { "type": "null" - } + }, + "unstable": false } }, "leaf": 0, diff --git a/proxmox-backup-server/pbs-api.json b/proxmox-backup-server/pbs-api.json index c3ba653..ef5e2b4 100644 --- a/proxmox-backup-server/pbs-api.json +++ b/proxmox-backup-server/pbs-api.json @@ -4636,6 +4636,10 @@ "items": { "type": "object", "properties": { + "backend-type": { + "type": "string", + "description": "Datastore backend type" + }, "comment": { "type": "string", "description": "Comment." @@ -9147,6 +9151,10 @@ "type": "integer", "description": "Available space (bytes)." }, + "backend-type": { + "type": "string", + "description": "Datastore backend type" + }, "counts": { "type": "object", "properties": { @@ -9273,6 +9281,40 @@ }, "description": "Garbage collection status." }, + "s3-statistics": { + "type": "object", + "properties": { + "delete": { + "type": "integer", + "description": "Delete requests" + }, + "downloaded": { + "type": "integer", + "description": "Total downloaded (bytes)." + }, + "get": { + "type": "integer", + "description": "Get requests" + }, + "head": { + "type": "integer", + "description": "Head requests" + }, + "post": { + "type": "integer", + "description": "Post requests" + }, + "put": { + "type": "integer", + "description": "Put requests" + }, + "uploaded": { + "type": "integer", + "description": "Total uploaded (bytes)." + } + }, + "description": "Statistics specific to the S3 backend" + }, "total": { "type": "integer", "description": "Total space (bytes)." @@ -10744,24 +10786,24 @@ ] } }, - "//admin/admin/s3/admin/s3/{s3-client-id}": { + "//admin/admin/s3/admin/s3/{s3-endpoint-id}": { "get": { "summary": "Directory index.", "description": "Directory index.", - "operationId": "get_admin_admin_s3_admin_s3_s3-client-id", + "operationId": "get_admin_admin_s3_admin_s3_s3-endpoint-id", "tags": [ "Administration" ], "parameters": [ { - "name": "s3-client-id", + "name": "s3-endpoint-id", "in": "path", "required": true, "schema": { "type": "string", - "description": "The s3-client-id parameter" + "description": "The s3-endpoint-id parameter" }, - "description": "The s3-client-id parameter" + "description": "The s3-endpoint-id parameter" } ], "responses": { @@ -10856,11 +10898,148 @@ ] } }, - "//admin/admin/s3/admin/s3/{s3-client-id}/admin/s3/{s3-client-id}/check": { + "//admin/admin/s3/admin/s3/{s3-endpoint-id}/admin/s3/{s3-endpoint-id}/check": { "put": { "summary": "Perform basic sanity check for given s3 client configuration", "description": "Perform basic sanity check for given s3 client configuration", - "operationId": "put_admin_admin_s3_admin_s3_s3-client-id_admin_s3_s3-client-id_check", + "operationId": "put_admin_admin_s3_admin_s3_s3-endpoint-id_admin_s3_s3-endpoint-id_check", + "tags": [ + "Administration" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "bucket": { + "type": "string", + "description": "Bucket name for S3 object store.", + "minLength": 3, + "maxLength": 63 + }, + "store-prefix": { + "type": "string", + "description": "Store prefix within bucket for S3 object keys (commonly datastore name)" + } + }, + "required": [ + "bucket" + ] + } + } + } + }, + "parameters": [ + { + "name": "s3-endpoint-id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "description": "The s3-endpoint-id parameter" + }, + "description": "The s3-endpoint-id parameter" + } + ], + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": {}, + "additionalProperties": false + } + } + } + }, + "400": { + "description": "Bad Request - Invalid input parameters or malformed request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProxmoxError" + } + } + } + }, + "401": { + "description": "Unauthorized - Authentication required or invalid credentials", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProxmoxError" + } + } + } + }, + "403": { + "description": "Forbidden - Insufficient permissions for the requested operation", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProxmoxError" + } + } + } + }, + "404": { + "description": "Not Found - Requested resource does not exist", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProxmoxError" + } + } + } + }, + "422": { + "description": "Unprocessable Entity - Request is well-formed but contains semantic errors", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProxmoxError" + } + } + } + }, + "500": { + "description": "Internal Server Error - Unexpected server error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProxmoxError" + } + } + } + }, + "503": { + "description": "Service Unavailable - Service temporarily unavailable", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProxmoxError" + } + } + } + } + }, + "security": [ + { + "ProxmoxApiToken": [], + "ProxmoxCSRFToken": [] + } + ] + } + }, + "//admin/admin/s3/admin/s3/{s3-endpoint-id}/admin/s3/{s3-endpoint-id}/reset-counters": { + "put": { + "summary": "Reset the S3 request counters for matching endpoint, bucket or datastore (if prefix is given).", + "description": "Reset the S3 request counters for matching endpoint, bucket or datastore (if prefix is given).", + "operationId": "put_admin_admin_s3_admin_s3_s3-endpoint-id_admin_s3_s3-endpoint-id_reset-counters", "tags": [ "Administration" ], @@ -10891,14 +11070,14 @@ }, "parameters": [ { - "name": "s3-client-id", + "name": "s3-endpoint-id", "in": "path", "required": true, "schema": { "type": "string", - "description": "The s3-client-id parameter" + "description": "The s3-endpoint-id parameter" }, - "description": "The s3-client-id parameter" + "description": "The s3-endpoint-id parameter" } ], "responses": { @@ -11153,6 +11332,10 @@ "verified-only": { "type": "boolean", "description": "Only synchronize verified backup snapshots, exclude others." + }, + "worker-threads": { + "type": "integer", + "description": "The number of worker threads to process groups in parallel." } }, "description": "Status of Sync Job" @@ -16481,7 +16664,51 @@ "properties": { "account": { "type": "object", - "description": "Raw account data." + "properties": { + "contact": { + "type": "array", + "items": { + "type": "string", + "description": "Contact Info." + }, + "description": "The account's contact info.\n\nThis usually contains a `\"mailto:\"` entry but may also contain some other\ndata if the server accepts it." + }, + "externalAccountBinding": { + "type": "object", + "properties": { + "payload": { + "type": "string", + "description": "Payload" + }, + "protected": { + "type": "string", + "description": "JOSE Header (see RFC 7515)" + }, + "signature": { + "type": "string", + "description": "HMAC signature" + } + }, + "description": "External Account Bindings" + }, + "onlyReturnExisting": { + "type": "boolean", + "description": "This is only used by the client when querying an account." + }, + "orders": { + "type": "string", + "description": "URLs to currently pending orders." + }, + "status": { + "type": "string", + "description": "Status of an ACME account." + }, + "termsOfServiceAgreed": { + "type": "boolean", + "description": "Indicated whether the user agreed to the ACME provider's terms of service." + } + }, + "description": "ACME Account data. This is the part of the account returned from and possibly sent to the ACME\nprovider. Some fields may be uptdated by the user via a request to the account location, others\nmay not be changed." }, "directory": { "type": "string", @@ -16983,7 +17210,7 @@ "description": "Extra delay in seconds to wait before requesting validation.\n\nAllows to cope with long TTL of DNS records." } }, - "description": "The API's format is inherited from PVE/PMG:" + "description": "ACME plugin config. The API's format is inherited from PVE/PMG:" }, "description": "List of ACME plugin configurations." } @@ -17348,7 +17575,7 @@ ], "responses": { "200": { - "description": "The API's format is inherited from PVE/PMG:", + "description": "ACME plugin config. The API's format is inherited from PVE/PMG:", "content": { "application/json": { "schema": { @@ -17379,7 +17606,7 @@ "description": "Extra delay in seconds to wait before requesting validation.\n\nAllows to cope with long TTL of DNS records." } }, - "description": "The API's format is inherited from PVE/PMG:" + "description": "ACME plugin config. The API's format is inherited from PVE/PMG:" } } } @@ -17493,7 +17720,8 @@ }, "digest": { "type": "string", - "description": "Digest to protect against concurrent updates" + "description": "Prevent changes if current configuration file has different SHA256 digest. This can be used to prevent concurrent modifications.", + "pattern": "^[a-f0-9]{64}$" }, "disable": { "type": "boolean", @@ -18398,6 +18626,14 @@ "type": "string", "description": "Comment." }, + "counter-reset-schedule": { + "type": "string", + "description": "Reset notification threshold related counters at specified schedule." + }, + "gc-on-unmount": { + "type": "boolean", + "description": "Run garbage collection before unmounting a removable datastore." + }, "gc-schedule": { "type": "string", "description": "Run garbage collection job at specified schedule." @@ -18438,6 +18674,10 @@ "type": "string", "description": "Configure how notifications for this datastore should be sent.\n`legacy-sendmail` sends email notifications to the user configured\nin `notify-user` via the system's `sendmail` executable.\n`notification-system` emits matchable notification events to the\nnotification system." }, + "notification-thresholds": { + "type": "string", + "description": "Threshold values for notifications" + }, "notify": { "type": "string", "description": "Datastore notification setting, enum can be one of 'always', 'never', or 'error'." @@ -18577,6 +18817,14 @@ "maxLength": 128, "pattern": "^[[:^cntrl:]]*$" }, + "counter-reset-schedule": { + "type": "string", + "description": "Reset notification threshold related counters at specified schedule." + }, + "gc-on-unmount": { + "type": "boolean", + "description": "Run garbage collection before unmounting a removable datastore." + }, "gc-schedule": { "type": "string", "description": "Run garbage collection job at specified schedule." @@ -18631,6 +18879,10 @@ ], "default": "notification-system" }, + "notification-thresholds": { + "type": "string", + "description": "Threshold values for notifications" + }, "notify": { "type": "string", "description": "Datastore notification setting, enum can be one of 'always', 'never', or 'error'." @@ -18953,6 +19205,14 @@ "type": "string", "description": "Comment." }, + "counter-reset-schedule": { + "type": "string", + "description": "Reset notification threshold related counters at specified schedule." + }, + "gc-on-unmount": { + "type": "boolean", + "description": "Run garbage collection before unmounting a removable datastore." + }, "gc-schedule": { "type": "string", "description": "Run garbage collection job at specified schedule." @@ -18993,6 +19253,10 @@ "type": "string", "description": "Configure how notifications for this datastore should be sent.\n`legacy-sendmail` sends email notifications to the user configured\nin `notify-user` via the system's `sendmail` executable.\n`notification-system` emits matchable notification events to the\nnotification system." }, + "notification-thresholds": { + "type": "string", + "description": "Threshold values for notifications" + }, "notify": { "type": "string", "description": "Datastore notification setting, enum can be one of 'always', 'never', or 'error'." @@ -19121,6 +19385,10 @@ "maxLength": 128, "pattern": "^[[:^cntrl:]]*$" }, + "counter-reset-schedule": { + "type": "string", + "description": "Reset notification threshold related counters at specified schedule." + }, "delete": { "type": "array", "description": "List of properties to delete.", @@ -19133,6 +19401,10 @@ "description": "Prevent changes if current configuration file has different SHA256 digest. This can be used to prevent concurrent modifications.", "pattern": "^[a-f0-9]{64}$" }, + "gc-on-unmount": { + "type": "boolean", + "description": "Run garbage collection before unmounting a removable datastore." + }, "gc-schedule": { "type": "string", "description": "Run garbage collection job at specified schedule." @@ -19180,6 +19452,10 @@ ], "default": "notification-system" }, + "notification-thresholds": { + "type": "string", + "description": "Threshold values for notifications" + }, "notify": { "type": "string", "description": "Datastore notification setting, enum can be one of 'always', 'never', or 'error'." @@ -27638,6 +27914,10 @@ "port": { "type": "integer", "description": "The (optional) port" + }, + "use-node-proxy": { + "type": "boolean", + "description": "Use the http proxy configuration of the node for remote connections." } }, "description": "Remote properties." @@ -27779,6 +28059,11 @@ "port": { "type": "integer", "description": "The (optional) port" + }, + "use-node-proxy": { + "type": "boolean", + "description": "Use the http proxy configuration of the node for remote connections.", + "default": false } }, "required": [ @@ -28055,6 +28340,10 @@ "port": { "type": "integer", "description": "The (optional) port" + }, + "use-node-proxy": { + "type": "boolean", + "description": "Use the http proxy configuration of the node for remote connections." } }, "description": "Remote properties." @@ -28199,6 +28488,11 @@ "port": { "type": "integer", "description": "The (optional) port" + }, + "use-node-proxy": { + "type": "boolean", + "description": "Use the http proxy configuration of the node for remote connections.", + "default": false } } } @@ -28339,6 +28633,10 @@ "items": { "type": "object", "properties": { + "backend-type": { + "type": "string", + "description": "Datastore backend type" + }, "comment": { "type": "string", "description": "Comment." @@ -29954,6 +30252,10 @@ "verified-only": { "type": "boolean", "description": "Only synchronize verified backup snapshots, exclude others." + }, + "worker-threads": { + "type": "integer", + "description": "The number of worker threads to process groups in parallel." } }, "description": "Sync Job" @@ -30187,6 +30489,13 @@ "verified-only": { "type": "boolean", "description": "Only synchronize verified backup snapshots, exclude others." + }, + "worker-threads": { + "type": "integer", + "description": "The number of worker threads to process groups in parallel.", + "minimum": 1, + "maximum": 32, + "default": 1 } }, "required": [ @@ -30534,6 +30843,10 @@ "verified-only": { "type": "boolean", "description": "Only synchronize verified backup snapshots, exclude others." + }, + "worker-threads": { + "type": "integer", + "description": "The number of worker threads to process groups in parallel." } }, "description": "Sync Job" @@ -30770,6 +31083,13 @@ "verified-only": { "type": "boolean", "description": "Only synchronize verified backup snapshots, exclude others." + }, + "worker-threads": { + "type": "integer", + "description": "The number of worker threads to process groups in parallel.", + "minimum": 1, + "maximum": 32, + "default": 1 } } } @@ -44106,6 +44426,13 @@ "verified-only": { "type": "boolean", "description": "Only synchronize verified backup snapshots, exclude others." + }, + "worker-threads": { + "type": "integer", + "description": "The number of worker threads to process groups in parallel.", + "minimum": 1, + "maximum": 32, + "default": 1 } }, "required": [ @@ -44310,6 +44637,13 @@ "verified-only": { "type": "boolean", "description": "Only synchronize verified backup snapshots, exclude others." + }, + "worker-threads": { + "type": "integer", + "description": "The number of worker threads to process groups in parallel.", + "minimum": 1, + "maximum": 32, + "default": 1 } }, "required": [ @@ -44709,6 +45043,10 @@ "type": "integer", "description": "The available bytes of the underlying storage. (-1 on error)" }, + "backend-type": { + "type": "string", + "description": "Datastore backend type" + }, "error": { "type": "string", "description": "An error description, for example, when the datastore could not be looked up" @@ -51730,7 +52068,7 @@ "properties": { "chunk-count": { "type": "integer", - "description": "Chunk count. This is used to verify that the server got all chunks. Ignored for incremental backups.", + "description": "Number of new and re-indexed chunks. Used to verify that the server got all chunk digests.", "minimum": 0 }, "csum": { @@ -51882,8 +52220,7 @@ } }, "required": [ - "archive-name", - "size" + "archive-name" ] } } diff --git a/proxmox-backup-server/pbs-api.yaml b/proxmox-backup-server/pbs-api.yaml index 66171b0..b5ef322 100644 --- a/proxmox-backup-server/pbs-api.yaml +++ b/proxmox-backup-server/pbs-api.yaml @@ -3142,6 +3142,9 @@ paths: items: type: object properties: + backend-type: + type: string + description: Datastore backend type comment: type: string description: Comment. @@ -6121,6 +6124,9 @@ paths: avail: type: integer description: Available space (bytes). + backend-type: + type: string + description: Datastore backend type counts: type: object properties: @@ -6216,6 +6222,31 @@ paths: type: string description: Unique Process/Task Identifier description: Garbage collection status. + s3-statistics: + type: object + properties: + delete: + type: integer + description: Delete requests + downloaded: + type: integer + description: Total downloaded (bytes). + get: + type: integer + description: Get requests + head: + type: integer + description: Head requests + post: + type: integer + description: Post requests + put: + type: integer + description: Put requests + uploaded: + type: integer + description: Total uploaded (bytes). + description: Statistics specific to the S3 backend total: type: integer description: Total space (bytes). @@ -7203,21 +7234,21 @@ paths: security: - ProxmoxApiToken: [] ProxmoxCSRFToken: [] - //admin/admin/s3/admin/s3/{s3-client-id}: + //admin/admin/s3/admin/s3/{s3-endpoint-id}: get: summary: Directory index. description: Directory index. - operationId: get_admin_admin_s3_admin_s3_s3-client-id + operationId: get_admin_admin_s3_admin_s3_s3-endpoint-id tags: - Administration parameters: - - name: s3-client-id + - name: s3-endpoint-id in: path required: true schema: type: string - description: The s3-client-id parameter - description: The s3-client-id parameter + description: The s3-endpoint-id parameter + description: The s3-endpoint-id parameter responses: '200': description: Successful operation @@ -7273,11 +7304,101 @@ paths: security: - ProxmoxApiToken: [] ProxmoxCSRFToken: [] - //admin/admin/s3/admin/s3/{s3-client-id}/admin/s3/{s3-client-id}/check: + //admin/admin/s3/admin/s3/{s3-endpoint-id}/admin/s3/{s3-endpoint-id}/check: put: summary: Perform basic sanity check for given s3 client configuration description: Perform basic sanity check for given s3 client configuration - operationId: put_admin_admin_s3_admin_s3_s3-client-id_admin_s3_s3-client-id_check + operationId: put_admin_admin_s3_admin_s3_s3-endpoint-id_admin_s3_s3-endpoint-id_check + tags: + - Administration + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + bucket: + type: string + description: Bucket name for S3 object store. + minLength: 3 + maxLength: 63 + store-prefix: + type: string + description: Store prefix within bucket for S3 object keys (commonly + datastore name) + required: + - bucket + parameters: + - name: s3-endpoint-id + in: path + required: true + schema: + type: string + description: The s3-endpoint-id parameter + description: The s3-endpoint-id parameter + responses: + '200': + description: Successful operation + content: + application/json: + schema: + type: object + properties: {} + additionalProperties: false + '400': + description: Bad Request - Invalid input parameters or malformed request + content: + application/json: + schema: + $ref: '#/components/schemas/ProxmoxError' + '401': + description: Unauthorized - Authentication required or invalid credentials + content: + application/json: + schema: + $ref: '#/components/schemas/ProxmoxError' + '403': + description: Forbidden - Insufficient permissions for the requested operation + content: + application/json: + schema: + $ref: '#/components/schemas/ProxmoxError' + '404': + description: Not Found - Requested resource does not exist + content: + application/json: + schema: + $ref: '#/components/schemas/ProxmoxError' + '422': + description: Unprocessable Entity - Request is well-formed but contains + semantic errors + content: + application/json: + schema: + $ref: '#/components/schemas/ProxmoxError' + '500': + description: Internal Server Error - Unexpected server error + content: + application/json: + schema: + $ref: '#/components/schemas/ProxmoxError' + '503': + description: Service Unavailable - Service temporarily unavailable + content: + application/json: + schema: + $ref: '#/components/schemas/ProxmoxError' + security: + - ProxmoxApiToken: [] + ProxmoxCSRFToken: [] + //admin/admin/s3/admin/s3/{s3-endpoint-id}/admin/s3/{s3-endpoint-id}/reset-counters: + put: + summary: Reset the S3 request counters for matching endpoint, bucket or datastore + (if prefix is given). + description: Reset the S3 request counters for matching endpoint, bucket or + datastore (if prefix is given). + operationId: put_admin_admin_s3_admin_s3_s3-endpoint-id_admin_s3_s3-endpoint-id_reset-counters tags: - Administration requestBody: @@ -7299,13 +7420,13 @@ paths: required: - bucket parameters: - - name: s3-client-id + - name: s3-endpoint-id in: path required: true schema: type: string - description: The s3-client-id parameter - description: The s3-client-id parameter + description: The s3-endpoint-id parameter + description: The s3-endpoint-id parameter responses: '200': description: Successful operation @@ -7499,6 +7620,10 @@ paths: type: boolean description: Only synchronize verified backup snapshots, exclude others. + worker-threads: + type: integer + description: The number of worker threads to process groups + in parallel. description: Status of Sync Job description: List configured jobs and their status. '400': @@ -11329,7 +11454,53 @@ paths: properties: account: type: object - description: Raw account data. + properties: + contact: + type: array + items: + type: string + description: Contact Info. + description: 'The account''s contact info. + + + This usually contains a `"mailto:"` entry + but may also contain some other + + data if the server accepts it.' + externalAccountBinding: + type: object + properties: + payload: + type: string + description: Payload + protected: + type: string + description: JOSE Header (see RFC 7515) + signature: + type: string + description: HMAC signature + description: External Account Bindings + onlyReturnExisting: + type: boolean + description: This is only used by the client when querying + an account. + orders: + type: string + description: URLs to currently pending orders. + status: + type: string + description: Status of an ACME account. + termsOfServiceAgreed: + type: boolean + description: Indicated whether the user agreed to the ACME + provider's terms of service. + description: 'ACME Account data. This is the part of the account + returned from and possibly sent to the ACME + + provider. Some fields may be uptdated by the user via a request + to the account location, others + + may not be changed.' directory: type: string description: The ACME directory URL the account was created at. @@ -11655,7 +11826,8 @@ paths: Allows to cope with long TTL of DNS records.' - description: 'The API''s format is inherited from PVE/PMG:' + description: 'ACME plugin config. The API''s format is inherited + from PVE/PMG:' description: List of ACME plugin configurations. '400': description: Bad Request - Invalid input parameters or malformed request @@ -11890,7 +12062,7 @@ paths: description: The id parameter responses: '200': - description: 'The API''s format is inherited from PVE/PMG:' + description: 'ACME plugin config. The API''s format is inherited from PVE/PMG:' content: application/json: schema: @@ -11918,7 +12090,8 @@ paths: Allows to cope with long TTL of DNS records.' - description: 'The API''s format is inherited from PVE/PMG:' + description: 'ACME plugin config. The API''s format is inherited from + PVE/PMG:' '400': description: Bad Request - Invalid input parameters or malformed request content: @@ -11991,7 +12164,9 @@ paths: type: string digest: type: string - description: Digest to protect against concurrent updates + description: Prevent changes if current configuration file has different + SHA256 digest. This can be used to prevent concurrent modifications. + pattern: ^[a-f0-9]{64}$ disable: type: boolean description: Flag to disable the config. @@ -12609,6 +12784,14 @@ paths: comment: type: string description: Comment. + counter-reset-schedule: + type: string + description: Reset notification threshold related counters at + specified schedule. + gc-on-unmount: + type: boolean + description: Run garbage collection before unmounting a removable + datastore. gc-schedule: type: string description: Run garbage collection job at specified schedule. @@ -12650,6 +12833,9 @@ paths: to the notification system.' + notification-thresholds: + type: string + description: Threshold values for notifications notify: type: string description: Datastore notification setting, enum can be one @@ -12745,6 +12931,14 @@ paths: description: Comment. maxLength: 128 pattern: ^[[:^cntrl:]]*$ + counter-reset-schedule: + type: string + description: Reset notification threshold related counters at specified + schedule. + gc-on-unmount: + type: boolean + description: Run garbage collection before unmounting a removable + datastore. gc-schedule: type: string description: Run garbage collection job at specified schedule. @@ -12798,6 +12992,9 @@ paths: - legacy-sendmail - notification-system default: notification-system + notification-thresholds: + type: string + description: Threshold values for notifications notify: type: string description: Datastore notification setting, enum can be one of @@ -13020,6 +13217,14 @@ paths: comment: type: string description: Comment. + counter-reset-schedule: + type: string + description: Reset notification threshold related counters at + specified schedule. + gc-on-unmount: + type: boolean + description: Run garbage collection before unmounting a removable + datastore. gc-schedule: type: string description: Run garbage collection job at specified schedule. @@ -13061,6 +13266,9 @@ paths: the notification system.' + notification-thresholds: + type: string + description: Threshold values for notifications notify: type: string description: Datastore notification setting, enum can be one of @@ -13147,6 +13355,10 @@ paths: description: Comment. maxLength: 128 pattern: ^[[:^cntrl:]]*$ + counter-reset-schedule: + type: string + description: Reset notification threshold related counters at specified + schedule. delete: type: array description: List of properties to delete. @@ -13157,6 +13369,10 @@ paths: description: Prevent changes if current configuration file has different SHA256 digest. This can be used to prevent concurrent modifications. pattern: ^[a-f0-9]{64}$ + gc-on-unmount: + type: boolean + description: Run garbage collection before unmounting a removable + datastore. gc-schedule: type: string description: Run garbage collection job at specified schedule. @@ -13204,6 +13420,9 @@ paths: - legacy-sendmail - notification-system default: notification-system + notification-thresholds: + type: string + description: Threshold values for notifications notify: type: string description: Datastore notification setting, enum can be one of @@ -19051,6 +19270,10 @@ paths: port: type: integer description: The (optional) port + use-node-proxy: + type: boolean + description: Use the http proxy configuration of the node for + remote connections. description: Remote properties. description: The list of configured remotes (with config digest). '400': @@ -19146,6 +19369,11 @@ paths: port: type: integer description: The (optional) port + use-node-proxy: + type: boolean + description: Use the http proxy configuration of the node for remote + connections. + default: false required: - auth-id - host @@ -19326,6 +19554,10 @@ paths: port: type: integer description: The (optional) port + use-node-proxy: + type: boolean + description: Use the http proxy configuration of the node for + remote connections. description: Remote properties. '400': description: Bad Request - Invalid input parameters or malformed request @@ -19424,6 +19656,11 @@ paths: port: type: integer description: The (optional) port + use-node-proxy: + type: boolean + description: Use the http proxy configuration of the node for remote + connections. + default: false parameters: - name: name in: path @@ -19512,6 +19749,9 @@ paths: items: type: object properties: + backend-type: + type: string + description: Datastore backend type comment: type: string description: Comment. @@ -20622,6 +20862,10 @@ paths: type: boolean description: Only synchronize verified backup snapshots, exclude others. + worker-threads: + type: integer + description: The number of worker threads to process groups + in parallel. description: Sync Job description: List configured jobs. '400': @@ -20803,6 +21047,12 @@ paths: type: boolean description: Only synchronize verified backup snapshots, exclude others. + worker-threads: + type: integer + description: The number of worker threads to process groups in parallel. + minimum: 1 + maximum: 32 + default: 1 required: - id - remote-store @@ -21050,6 +21300,10 @@ paths: type: boolean description: Only synchronize verified backup snapshots, exclude others. + worker-threads: + type: integer + description: The number of worker threads to process groups in + parallel. description: Sync Job '400': description: Bad Request - Invalid input parameters or malformed request @@ -21234,6 +21488,12 @@ paths: type: boolean description: Only synchronize verified backup snapshots, exclude others. + worker-threads: + type: integer + description: The number of worker threads to process groups in parallel. + minimum: 1 + maximum: 32 + default: 1 parameters: - name: id in: path @@ -30195,6 +30455,12 @@ paths: type: boolean description: Only synchronize verified backup snapshots, exclude others. + worker-threads: + type: integer + description: The number of worker threads to process groups in parallel. + minimum: 1 + maximum: 32 + default: 1 required: - remote-store - store @@ -30349,6 +30615,12 @@ paths: type: boolean description: Only synchronize verified backup snapshots, exclude others. + worker-threads: + type: integer + description: The number of worker threads to process groups in parallel. + minimum: 1 + maximum: 32 + default: 1 required: - remote - remote-store @@ -30607,6 +30879,9 @@ paths: type: integer description: The available bytes of the underlying storage. (-1 on error) + backend-type: + type: string + description: Datastore backend type error: type: string description: An error description, for example, when the datastore @@ -35336,8 +35611,8 @@ paths: properties: chunk-count: type: integer - description: Chunk count. This is used to verify that the server - got all chunks. Ignored for incremental backups. + description: Number of new and re-indexed chunks. Used to verify + that the server got all chunk digests. minimum: 0 csum: type: string @@ -35440,7 +35715,6 @@ paths: minimum: 1 required: - archive-name - - size responses: '200': description: Successful operation