directive @oneOf on INPUT_OBJECT | FIELD_DEFINITION directive @stream on FIELD_DEFINITION type ArchiveFS implements Dir & FsEntry { name: String! entries: [FsEntry!]! size: Int! } input BooleanFilter @oneOf { eq: Boolean } type CleanupResponse { count: Int! list: [String!]! } scalar DateTime input DateTimeFilter @oneOf { eq: DateTime gt: DateTime lt: DateTime gte: DateTime lte: DateTime } interface Dir implements FsEntry { name: String! entries: [FsEntry!]! } type DownloadTorrentResponse { task: Task } interface File implements FsEntry { name: String! size: Int! } interface FsEntry { name: String! } input IntFilter @oneOf { eq: Int gt: Int lt: Int gte: Int lte: Int in: [Int!] } type Mutation { validateTorrents(filter: TorrentFilter!): Boolean! cleanupTorrents(files: Boolean, dryRun: Boolean!): CleanupResponse! downloadTorrent(infohash: String!, file: String): DownloadTorrentResponse uploadFile(file: Upload!): Boolean! dedupeStorage: Int! } input Pagination { offset: Int! limit: Int! } interface Progress { current: Int! total: Int! } type Query { torrents(filter: TorrentsFilter): [Torrent!]! fsEntry(path: String!): FsEntry } type ResolverFS implements Dir & FsEntry { name: String! entries: [FsEntry!]! } type Schema { query: Query mutation: Mutation } type SimpleDir implements Dir & FsEntry { name: String! entries: [FsEntry!]! } type SimpleFile implements File & FsEntry { name: String! size: Int! } input StringFilter @oneOf { eq: String substr: String in: [String!] } type Subscription { taskProgress(taskID: ID!): Progress torrentDownloadUpdates: TorrentProgress } type Task { id: ID! } type Torrent { name: String! infohash: String! bytesCompleted: Int! torrentFilePath: String! bytesMissing: Int! files: [TorrentFile!]! excludedFiles: [TorrentFile!]! peers: [TorrentPeer!]! downloading: Boolean! } type TorrentFS implements Dir & FsEntry { name: String! torrent: Torrent! entries: [FsEntry!]! } type TorrentFile { filename: String! size: Int! bytesCompleted: Int! } type TorrentFileEntry implements File & FsEntry { name: String! torrent: Torrent! size: Int! } input TorrentFilter @oneOf { everything: Boolean infohash: String } type TorrentPeer { ip: String! downloadRate: Float! discovery: String! port: Int! clientName: String! } type TorrentProgress implements Progress { torrent: Torrent! current: Int! total: Int! } input TorrentsFilter { infohash: StringFilter name: StringFilter bytesCompleted: IntFilter bytesMissing: IntFilter peersCount: IntFilter downloading: BooleanFilter } scalar Upload