139 lines
2.5 KiB
GraphQL
139 lines
2.5 KiB
GraphQL
|
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
|
||
|
dedupeStorage: Int!
|
||
|
}
|
||
|
input Pagination {
|
||
|
offset: Int!
|
||
|
limit: Int!
|
||
|
}
|
||
|
interface Progress {
|
||
|
current: Int!
|
||
|
total: Int!
|
||
|
}
|
||
|
type Query {
|
||
|
torrents(filter: TorrentsFilter, pagination: Pagination): [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!]!
|
||
|
}
|
||
|
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
|
||
|
}
|