type Mutation { validateTorrents(filter: TorrentFilter!): Boolean! cleanupTorrents(files: Boolean, dryRun: Boolean!): CleanupResponse! downloadTorrent(infohash: String!, file: String): DownloadTorrentResponse uploadFile(dir: String!, file: Upload!): Boolean! dedupeStorage: Int! } input TorrentFilter @oneOf { everything: Boolean infohash: String # pathGlob: String! } type DownloadTorrentResponse { task: Task } type CleanupResponse { count: Int! list: [String!]! } type Task { id: ID! }