tstor/ui/lib/api/schema.graphql
royalcat fa1fdcfc63
All checks were successful
docker / build-docker (linux/amd64) (push) Successful in 1m39s
docker / build-docker (linux/386) (push) Successful in 1m48s
docker / build-docker (linux/arm64) (push) Successful in 8m42s
docker / build-docker (linux/arm64/v8) (push) Successful in 8m40s
docker / build-docker (linux/arm/v7) (push) Successful in 9m11s
upload file
2024-05-15 00:40:38 +03:00

142 lines
2.6 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
uploadFile(dir: String!, 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