{"record":{"id":"aab947b8df664daf","repo":"duplicati/duplicati","slug":"actionoptionunsupported","errorCode":"ActionOptionUnsupported","errorMessage":"The specified action '{action}' is not supported","messagePattern":"The specified action '(.+?)' is not supported","errorType":"validation","errorClass":"UserInformationException","httpStatus":null,"severity":"error","filePath":"Duplicati/Library/Backend/Duplicati/ListBackupsModule.cs","lineNumber":58,"sourceCode":"    /// </summary>\n    public ListBackupsModule()\n    {\n    }\n\n    /// <inheritdoc />\n    public async Task<IDictionary<string, string>> Execute(IDictionary<string, string?> options, CancellationToken cancellationToken)\n    {\n        var opts = new Dictionary<string, string?>(options);\n\n        var action = opts.GetValueOrDefault(\"action\");\n        if (string.IsNullOrEmpty(action))\n            throw new UserInformationException(\"The 'action' option must be specified\", \"ActionOptionMissing\");\n\n        if (!Enum.TryParse<Operation>(action, out var operation))\n            throw new UserInformationException($\"The specified action '{action}' is not valid\", \"ActionOptionInvalid\");\n\n        if (operation != Operation.ListBackups)\n            throw new UserInformationException($\"The specified action '{action}' is not supported\", \"ActionOptionUnsupported\");\n\n        var url = opts.GetValueOrDefault(\"url\");\n        if (string.IsNullOrEmpty(url))\n            throw new UserInformationException(\"The 'url' option must be specified\", \"UrlOptionMissing\");\n        var uri = new Library.Utility.RelaxedUri(url);\n        foreach (var key in uri.QueryParameters.AllKeys)\n            if (key != null)\n                opts[key] = uri.QueryParameters[key];\n\n        // We do not need a backup id to list backups, but the backend requires one\n        opts[DuplicatiBackend.BACKUP_ID_OPTION] = \"--unused--\";\n\n        using var backend = new DuplicatiBackend(url, opts);\n        return new Dictionary<string, string>()\n        {\n            { \"folders\", JsonSerializer.Serialize( await backend.ListBackupFolders(cancellationToken).ToArrayAsync(cancellationToken) ) }\n        };\n    }","sourceCodeStart":40,"sourceCodeEnd":76,"githubUrl":"https://github.com/duplicati/duplicati/blob/3f348be3e33f5d72d414e3ad55839c2ba34dda67/Duplicati/Library/Backend/Duplicati/ListBackupsModule.cs#L40-L76","documentation":"Error \"The specified action '{action}' is not supported\" thrown in duplicati/duplicati.","triggerScenarios":"Thrown at Duplicati/Library/Backend/Duplicati/ListBackupsModule.cs:58 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use a supported action value; check the module documentation for supported operations."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"3f348be3e33f5d72d414e3ad55839c2ba34dda67","analyzedAt":"2026-08-13T16:48:27.008Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}