basePath: / definitions: api.cacheReqJS: properties: action: type: string hash: type: string type: object api.setsReqJS: properties: action: type: string sets: $ref: '#/definitions/settings.BTSets' type: object api.torrReqJS: properties: action: type: string data: type: string hash: type: string link: type: string poster: type: string save_to_db: type: boolean title: type: string type: object api.viewedReqJS: properties: action: type: string file_index: type: integer hash: type: string type: object models.TorrentDetails: properties: audioQuality: type: integer categories: type: string createDate: type: string hash: type: string imdbid: type: string link: type: string magnet: type: string name: type: string names: items: type: string type: array peer: type: integer seed: type: integer size: type: string title: type: string tracker: type: string videoQuality: type: integer year: type: integer type: object settings.BTSets: properties: cacheSize: description: Cache type: integer connectionsLimit: type: integer disableDHT: type: boolean disablePEX: type: boolean disableTCP: type: boolean disableUPNP: type: boolean disableUTP: type: boolean disableUpload: type: boolean downloadRateLimit: description: in kb, 0 - inf type: integer enableDLNA: description: DLNA type: boolean enableDebug: description: debug logs type: boolean enableIPv6: description: BT Config type: boolean enableRutorSearch: description: Rutor type: boolean forceEncrypt: description: Torrent type: boolean friendlyName: type: string peersListenPort: type: integer preloadCache: description: in percent type: integer readerReadAHead: description: in percent, 5%-100%, [...S__X__E...] [S-E] not clean type: integer removeCacheOnDrop: type: boolean retrackersMode: description: 0 - don`t add, 1 - add retrackers (def), 2 - remove retrackers 3 - replace retrackers type: integer sslCert: type: string sslKey: type: string sslPort: description: HTTPS type: integer torrentDisconnectTimeout: description: in seconds type: integer torrentsSavePath: type: string uploadRateLimit: description: in kb, 0 - inf type: integer useDisk: description: Disk type: boolean type: object settings.Viewed: properties: file_index: type: integer hash: type: string type: object state.CacheState: properties: capacity: type: integer filled: type: integer hash: type: string pieces: additionalProperties: $ref: '#/definitions/state.ItemState' type: object piecesCount: type: integer piecesLength: type: integer readers: items: $ref: '#/definitions/state.ReaderState' type: array torrent: $ref: '#/definitions/state.TorrentStatus' type: object state.ItemState: properties: completed: type: boolean id: type: integer length: type: integer priority: type: integer size: type: integer type: object state.ReaderState: properties: end: type: integer reader: type: integer start: type: integer type: object state.TorrentFileStat: properties: id: type: integer length: type: integer path: type: string type: object state.TorrentStat: enum: - 0 - 1 - 2 - 3 - 4 - 5 type: integer x-enum-varnames: - TorrentAdded - TorrentGettingInfo - TorrentPreload - TorrentWorking - TorrentClosed - TorrentInDB state.TorrentStatus: properties: active_peers: type: integer bit_rate: type: string bytes_read: type: integer bytes_read_data: type: integer bytes_read_useful_data: type: integer bytes_written: type: integer bytes_written_data: type: integer chunks_read: type: integer chunks_read_useful: type: integer chunks_read_wasted: type: integer chunks_written: type: integer connected_seeders: type: integer data: type: string download_speed: type: number duration_seconds: type: number file_stats: items: $ref: '#/definitions/state.TorrentFileStat' type: array half_open_peers: type: integer hash: type: string loaded_size: type: integer name: type: string pending_peers: type: integer pieces_dirtied_bad: type: integer pieces_dirtied_good: type: integer poster: type: string preload_size: type: integer preloaded_bytes: type: integer stat: $ref: '#/definitions/state.TorrentStat' stat_string: type: string timestamp: type: integer title: type: string torrent_size: type: integer total_peers: type: integer upload_speed: type: number type: object externalDocs: description: OpenAPI url: https://swagger.io/resources/open-api/ info: contact: {} description: Torrent streaming server. license: name: GPL 3.0 title: Swagger Torrserver API version: '{version.Version}' paths: /cache: post: description: Return cache stats. parameters: - description: Cache stats request in: body name: request required: true schema: $ref: '#/definitions/api.cacheReqJS' produces: - application/json responses: "200": description: Cache stats schema: $ref: '#/definitions/state.CacheState' summary: Return cache stats tags: - API /download/{size}: get: description: Download the test file of given size (for speed testing purpose). parameters: - description: Test file size (in MB) in: path name: size required: true type: string produces: - application/octet-stream responses: "200": description: OK schema: type: file summary: Generates test file of given size tags: - API /echo: get: description: Tests whether server is alive or not produces: - text/plain responses: "200": description: Server version schema: type: string summary: Tests server status tags: - API /ffp/{hash}/{id}: get: description: Gather informations using ffprobe. parameters: - description: Torrent hash in: path name: hash required: true type: string - description: File index in torrent in: path name: id required: true type: string produces: - application/json responses: "200": description: Data returned from ffprobe summary: Gather informations using ffprobe tags: - API /magnets: get: description: Get HTML of magnet links. produces: - text/html responses: "200": description: Magnet links summary: Get HTML of magnet links tags: - Pages /msx/{pth}: get: description: Multi usage endpoint. parameters: - description: Route MSX pages in: path name: link required: true type: string produces: - application/json responses: "200": description: Data returned according to path summary: Multi usage endpoint tags: - MSX /msx/imdb: get: description: Get MSX IMDB informations. produces: - application/json responses: "200": description: JSON MSX IMDB informations summary: Get MSX IMDB informations tags: - MSX /msx/imdb/{id}: get: description: Get MSX IMDB informations. parameters: - description: IMDB ID in: path name: id required: true type: string produces: - application/json responses: "200": description: JSON MSX IMDB informations summary: Get MSX IMDB informations tags: - MSX /play/{hash}/{id}: get: description: Play given torrent referenced by hash. parameters: - description: Torrent hash in: path name: hash required: true type: string - description: File index in torrent in: path name: id required: true type: string - description: Not authenticated in: query name: not_auth type: boolean produces: - application/octet-stream responses: "200": description: Torrent data summary: Play given torrent referenced by hash tags: - API /playlist: get: description: Get HTTP link of torrent in M3U list. parameters: - description: Torrent hash in: query name: hash required: true type: string - description: From last play file in: query name: fromlast type: boolean produces: - audio/x-mpegurl responses: "200": description: OK schema: type: file summary: Get HTTP link of torrent in M3U list tags: - API /playlistall/all.m3u: get: description: Retrieve all torrents and generates a bundled M3U playlist. produces: - audio/x-mpegurl responses: "200": description: OK schema: type: file summary: Get a M3U playlist with all torrents tags: - API /search: get: description: Makes a rutor search. parameters: - description: Rutor query in: query name: query required: true type: string produces: - application/json responses: "200": description: Rutor torrent search result(s) schema: items: $ref: '#/definitions/models.TorrentDetails' type: array summary: Makes a rutor search tags: - API /settings: post: consumes: - application/json description: Allow to get or set server settings. parameters: - description: Settings request in: body name: request required: true schema: $ref: '#/definitions/api.setsReqJS' produces: - application/json responses: "200": description: Depends on what action has been asked schema: $ref: '#/definitions/settings.BTSets' summary: Get / Set server settings tags: - API /shutdown: get: description: Gracefully shuts down server after 1 second. responses: "200": description: OK summary: Shuts down server tags: - API /stat: get: description: Stat server. produces: - text/plain responses: "200": description: Stats summary: Stat server tags: - Pages /stream: get: description: Multi usage endpoint. parameters: - description: Magnet/hash/link to torrent in: query name: link required: true type: string - description: File index in torrent in: query name: index type: string - description: Should preload torrent in: query name: preload type: string - description: Get statistics from torrent in: query name: stat type: string - description: Should save torrent in: query name: save type: string - description: Get torrent as M3U playlist in: query name: m3u type: string - description: Get M3U from last played file in: query name: fromlast type: string - description: Start stream torrent in: query name: play type: string - description: Set title of torrent in: query name: title required: true type: string - description: Set poster link of torrent in: query name: poster required: true type: string - description: Stream / playlist without authentication in: query name: not_auth required: true type: string produces: - application/octet-stream responses: "200": description: Data returned according to query summary: Multi usage endpoint tags: - API /torrent/upload: post: consumes: - multipart/form-data description: Only one file support. parameters: - description: Torrent file to insert in: formData name: file required: true type: file - description: Save to DB in: formData name: save type: string - description: Torrent title in: formData name: title type: string - description: Torrent poster in: formData name: poster type: string - description: Torrent data in: formData name: data type: string produces: - application/json responses: "200": description: Torrent status schema: $ref: '#/definitions/state.TorrentStatus' summary: Only one file support tags: - API /torrents: post: consumes: - application/json description: Allow to add, get or set torrents to server. The action depends of what has been asked. parameters: - description: Torrent request in: body name: request required: true schema: $ref: '#/definitions/api.torrReqJS' produces: - application/json responses: "200": description: OK summary: Handle torrents informations tags: - API /viewed: post: consumes: - application/json description: Allow to set, list or remove viewed torrents from server. parameters: - description: Viewed torrent request in: body name: request required: true schema: $ref: '#/definitions/api.viewedReqJS' produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/settings.Viewed' type: array summary: Set / List / Remove viewed torrents tags: - API securityDefinitions: BasicAuth: type: basic swagger: "2.0"