diff --git a/qbittorrent-web-api-gen/src/parser/groups.txt b/qbittorrent-web-api-gen/src/parser/groups.txt deleted file mode 100644 index 96d8e85..0000000 --- a/qbittorrent-web-api-gen/src/parser/groups.txt +++ /dev/null @@ -1,5696 +0,0 @@ -[ - ApiGroup { - name: "authentication", - methods: [ - ApiMethod { - name: "login", - description: Some( - "Example showing how to login and execute a command that requires authentication using `curl`:\n\n```sh\n$ curl -i --header 'Referer: http://localhost:8080' --data 'username=admin&password=adminadmin' http://localhost:8080/api/v2/auth/login\nHTTP/1.1 200 OK\nContent-Encoding:\nContent-Length: 3\nContent-Type: text/plain; charset=UTF-8\nSet-Cookie: SID=hBc7TxF76ERhvIw0jQQ4LZ7Z1jQUV0tQ; path=/\n$ curl http://localhost:8080/api/v2/torrents/info --cookie \"SID=hBc7TxF76ERhvIw0jQQ4LZ7Z1jQUV0tQ\"\n```\n\nNote: Set `Referer` or `Origin` header to the exact same domain and port as used in the HTTP query `Host` header.", - ), - parameters: Some( - [ - String( - TypeInfo { - name: "username", - is_optional: false, - is_list: false, - description: Some( - "Username used to access the WebUI", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "password", - is_optional: false, - is_list: false, - description: Some( - "Password used to access the WebUI", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "login", - }, - ApiMethod { - name: "logout", - description: None, - parameters: None, - return_type: None, - url: "logout", - }, - ], - description: Some( - "All Authentication API methods are under \"auth\", e.g.: `/api/v2/auth/methodName`.\n\nqBittorrent uses cookie-based authentication.", - ), - url: "auth", - }, - ApiGroup { - name: "application", - methods: [ - ApiMethod { - name: "version", - description: None, - parameters: None, - return_type: None, - url: "version", - }, - ApiMethod { - name: "webapiVersion", - description: None, - parameters: None, - return_type: None, - url: "webapiVersion", - }, - ApiMethod { - name: "buildInfo", - description: None, - parameters: None, - return_type: Some( - ReturnType { - is_list: false, - parameters: [ - ReturnTypeParameter { - name: "qt", - description: "QT version", - return_type: String( - TypeInfo { - name: "qt", - is_optional: false, - is_list: false, - description: Some( - "QT version", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "libtorrent", - description: "libtorrent version", - return_type: String( - TypeInfo { - name: "libtorrent", - is_optional: false, - is_list: false, - description: Some( - "libtorrent version", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "boost", - description: "Boost version", - return_type: String( - TypeInfo { - name: "boost", - is_optional: false, - is_list: false, - description: Some( - "Boost version", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "openssl", - description: "OpenSSL version", - return_type: String( - TypeInfo { - name: "openssl", - is_optional: false, - is_list: false, - description: Some( - "OpenSSL version", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "bitness", - description: "Application bitness (e.g. 64-bit)", - return_type: Number( - TypeInfo { - name: "bitness", - is_optional: false, - is_list: false, - description: Some( - "Application bitness (e.g. 64-bit)", - ), - type_description: None, - }, - ), - }, - ], - }, - ), - url: "buildInfo", - }, - ApiMethod { - name: "shutdown", - description: None, - parameters: None, - return_type: None, - url: "shutdown", - }, - ApiMethod { - name: "preferences", - description: Some( - "Possible fields:\n\nPossible values of `scan_dirs`:\n\nPossible values of `scheduler_days`:\n\nPossible values of `encryption`:\n\nNB: the first options allows you to use both encrypted and unencrypted connections (this is the default); other options are mutually exclusive: e.g. by forcing encryption on you won't be able to use unencrypted connections and vice versa.\n\nPossible values of `proxy_type`:\n\nPossible values of `dyndns_service`:\n\nPossible values of `max_ratio_act`:\n\nPossible values of `bittorrent_protocol`:\n\nPossible values of `upload_choking_algorithm`:\n\nPossible values of `upload_slots_behavior`:\n\nPossible values of `utp_tcp_mixed_mode`:\n\nExample:\n\n```JSON\n{\n \"add_trackers\": \"\",\n \"add_trackers_enabled\": false,\n \"alt_dl_limit\": 10240,\n \"alt_up_limit\": 10240,\n \"alternative_webui_enabled\": false,\n \"alternative_webui_path\": \"/home/user/Documents/qbit-webui\",\n \"announce_ip\": \"\",\n \"announce_to_all_tiers\": true,\n \"announce_to_all_trackers\": false,\n \"anonymous_mode\": false,\n \"async_io_threads\": 4,\n \"auto_delete_mode\": 0,\n \"auto_tmm_enabled\": false,\n \"autorun_enabled\": false,\n \"autorun_program\": \"\",\n \"banned_IPs\": \"\",\n \"bittorrent_protocol\": 0,\n \"bypass_auth_subnet_whitelist\": \"\",\n \"bypass_auth_subnet_whitelist_enabled\": false,\n \"bypass_local_auth\": false,\n \"category_changed_tmm_enabled\": false,\n \"checking_memory_use\": 32,\n \"create_subfolder_enabled\": true,\n \"current_interface_address\": \"\",\n \"current_network_interface\": \"\",\n \"dht\": true,\n \"disk_cache\": -1,\n \"disk_cache_ttl\": 60,\n \"dl_limit\": 0,\n \"dont_count_slow_torrents\": false,\n \"dyndns_domain\": \"changeme.dyndns.org\",\n \"dyndns_enabled\": false,\n \"dyndns_password\": \"\",\n \"dyndns_service\": 0,\n \"dyndns_username\": \"\",\n \"embedded_tracker_port\": 9000,\n \"enable_coalesce_read_write\": false,\n \"enable_embedded_tracker\": false,\n \"enable_multi_connections_from_same_ip\": false,\n \"enable_os_cache\": true,\n \"enable_piece_extent_affinity\": false,\n \"enable_upload_suggestions\": false,\n \"encryption\": 0,\n \"export_dir\": \"/home/user/Downloads/all\",\n \"export_dir_fin\": \"/home/user/Downloads/completed\",\n \"file_pool_size\": 40,\n \"incomplete_files_ext\": false,\n \"ip_filter_enabled\": false,\n \"ip_filter_path\": \"\",\n \"ip_filter_trackers\": false,\n \"limit_lan_peers\": true,\n \"limit_tcp_overhead\": false,\n \"limit_utp_rate\": true,\n \"listen_port\": 58925,\n \"locale\": \"en\",\n \"lsd\": true,\n \"mail_notification_auth_enabled\": false,\n \"mail_notification_email\": \"\",\n \"mail_notification_enabled\": false,\n \"mail_notification_password\": \"\",\n \"mail_notification_sender\": \"qBittorrent_notification@example.com\",\n \"mail_notification_smtp\": \"smtp.changeme.com\",\n \"mail_notification_ssl_enabled\": false,\n \"mail_notification_username\": \"\",\n \"max_active_downloads\": 3,\n \"max_active_torrents\": 5,\n \"max_active_uploads\": 3,\n \"max_connec\": 500,\n \"max_connec_per_torrent\": 100,\n \"max_ratio\": -1,\n \"max_ratio_act\": 0,\n \"max_ratio_enabled\": false,\n \"max_seeding_time\": -1,\n \"max_seeding_time_enabled\": false,\n \"max_uploads\": -1,\n \"max_uploads_per_torrent\": -1,\n \"outgoing_ports_max\": 0,\n \"outgoing_ports_min\": 0,\n \"pex\": true,\n \"preallocate_all\": false,\n \"proxy_auth_enabled\": false,\n \"proxy_ip\": \"0.0.0.0\",\n \"proxy_password\": \"\",\n \"proxy_peer_connections\": false,\n \"proxy_port\": 8080,\n \"proxy_torrents_only\": false,\n \"proxy_type\": 0,\n \"proxy_username\": \"\",\n \"queueing_enabled\": false,\n \"random_port\": false,\n \"recheck_completed_torrents\": false,\n \"resolve_peer_countries\": true,\n \"rss_auto_downloading_enabled\":true,\n \"rss_download_repack_proper_episodes\":true,\n \"rss_max_articles_per_feed\":50,\n \"rss_processing_enabled\":true,\n \"rss_refresh_interval\":30,\n \"rss_smart_episode_filters\":\"s(\\\\d+)e(\\\\d+)\\n(\\\\d+)x(\\\\d+)\\n(\\\\d{4}[.\\\\-]\\\\d{1,2}[.\\\\-]\\\\d{1,2})\",\n \"save_path\": \"/home/user/Downloads/\",\n \"save_path_changed_tmm_enabled\": false,\n \"save_resume_data_interval\": 60,\n \"scan_dirs\":\n {\n \"/home/user/Downloads/incoming/games\": 0,\n \"/home/user/Downloads/incoming/movies\": 1,\n },\n \"schedule_from_hour\": 8,\n \"schedule_from_min\": 0,\n \"schedule_to_hour\": 20,\n \"schedule_to_min\": 0,\n \"scheduler_days\": 0,\n \"scheduler_enabled\": false,\n \"send_buffer_low_watermark\": 10,\n \"send_buffer_watermark\": 500,\n \"send_buffer_watermark_factor\": 50,\n \"slow_torrent_dl_rate_threshold\": 2,\n \"slow_torrent_inactive_timer\": 60,\n \"slow_torrent_ul_rate_threshold\": 2,\n \"socket_backlog_size\": 30,\n \"start_paused_enabled\": false,\n \"stop_tracker_timeout\": 1,\n \"temp_path\": \"/home/user/Downloads/temp\",\n \"temp_path_enabled\": false,\n \"torrent_changed_tmm_enabled\": true,\n \"up_limit\": 0,\n \"upload_choking_algorithm\": 1,\n \"upload_slots_behavior\": 0,\n \"upnp\": true,\n \"use_https\": false,\n \"utp_tcp_mixed_mode\": 0,\n \"web_ui_address\": \"*\",\n \"web_ui_ban_duration\": 3600,\n \"web_ui_clickjacking_protection_enabled\": true,\n \"web_ui_csrf_protection_enabled\": true,\n \"web_ui_custom_http_headers\": \"\",\n \"web_ui_domain_list\": \"*\",\n \"web_ui_host_header_validation_enabled\": true,\n \"web_ui_https_cert_path\": \"\",\n \"web_ui_https_key_path\": \"\",\n \"web_ui_max_auth_fail_count\": 5,\n \"web_ui_port\": 8080,\n \"web_ui_secure_cookie_enabled\": true,\n \"web_ui_session_timeout\": 3600,\n \"web_ui_upnp\": false,\n \"web_ui_use_custom_http_headers_enabled\": false,\n \"web_ui_username\": \"admin\"\n}\n```", - ), - parameters: None, - return_type: Some( - ReturnType { - is_list: false, - parameters: [ - ReturnTypeParameter { - name: "locale", - description: "Currently selected language (e.g. en_GB for English)", - return_type: String( - TypeInfo { - name: "locale", - is_optional: false, - is_list: false, - description: Some( - "Currently selected language (e.g. en_GB for English)", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "create_subfolder_enabled", - description: "True if a subfolder should be created when adding a torrent", - return_type: Bool( - TypeInfo { - name: "create_subfolder_enabled", - is_optional: false, - is_list: false, - description: Some( - "True if a subfolder should be created when adding a torrent", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "start_paused_enabled", - description: "True if torrents should be added in a Paused state", - return_type: Bool( - TypeInfo { - name: "start_paused_enabled", - is_optional: false, - is_list: false, - description: Some( - "True if torrents should be added in a Paused state", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "auto_delete_mode", - description: "TODO", - return_type: Number( - TypeInfo { - name: "auto_delete_mode", - is_optional: false, - is_list: false, - description: Some( - "TODO", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "preallocate_all", - description: "True if disk space should be pre-allocated for all files", - return_type: Bool( - TypeInfo { - name: "preallocate_all", - is_optional: false, - is_list: false, - description: Some( - "True if disk space should be pre-allocated for all files", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "incomplete_files_ext", - description: "True if \".!qB\" should be appended to incomplete files", - return_type: Bool( - TypeInfo { - name: "incomplete_files_ext", - is_optional: false, - is_list: false, - description: Some( - "True if \".!qB\" should be appended to incomplete files", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "auto_tmm_enabled", - description: "True if Automatic Torrent Management is enabled by default", - return_type: Bool( - TypeInfo { - name: "auto_tmm_enabled", - is_optional: false, - is_list: false, - description: Some( - "True if Automatic Torrent Management is enabled by default", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "torrent_changed_tmm_enabled", - description: "True if torrent should be relocated when its Category changes", - return_type: Bool( - TypeInfo { - name: "torrent_changed_tmm_enabled", - is_optional: false, - is_list: false, - description: Some( - "True if torrent should be relocated when its Category changes", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "save_path_changed_tmm_enabled", - description: "True if torrent should be relocated when the default save path changes", - return_type: Bool( - TypeInfo { - name: "save_path_changed_tmm_enabled", - is_optional: false, - is_list: false, - description: Some( - "True if torrent should be relocated when the default save path changes", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "category_changed_tmm_enabled", - description: "True if torrent should be relocated when its Category's save path changes", - return_type: Bool( - TypeInfo { - name: "category_changed_tmm_enabled", - is_optional: false, - is_list: false, - description: Some( - "True if torrent should be relocated when its Category's save path changes", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "save_path", - description: "Default save path for torrents, separated by slashes", - return_type: String( - TypeInfo { - name: "save_path", - is_optional: false, - is_list: false, - description: Some( - "Default save path for torrents, separated by slashes", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "temp_path_enabled", - description: "True if folder for incomplete torrents is enabled", - return_type: Bool( - TypeInfo { - name: "temp_path_enabled", - is_optional: false, - is_list: false, - description: Some( - "True if folder for incomplete torrents is enabled", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "temp_path", - description: "Path for incomplete torrents, separated by slashes", - return_type: String( - TypeInfo { - name: "temp_path", - is_optional: false, - is_list: false, - description: Some( - "Path for incomplete torrents, separated by slashes", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "scan_dirs", - description: "Property: directory to watch for torrent files, value: where torrents loaded from this directory should be downloaded to (see list of possible values below). Slashes are used as path separators; multiple key/value pairs can be specified", - return_type: Object( - TypeInfo { - name: "scan_dirs", - is_optional: false, - is_list: false, - description: Some( - "Property: directory to watch for torrent files, value: where torrents loaded from this directory should be downloaded to (see list of possible values below). Slashes are used as path separators; multiple key/value pairs can be specified", - ), - type_description: Some( - TypeDescription { - values: [ - TypeDescriptions { - value: "0", - description: "Download to the monitored folder", - }, - TypeDescriptions { - value: "1", - description: "Download to the default save path", - }, - TypeDescriptions { - value: "\"/path/to/download/to\"", - description: "Download to this path", - }, - ], - }, - ), - }, - ), - }, - ReturnTypeParameter { - name: "export_dir", - description: "Path to directory to copy .torrent files to. Slashes are used as path separators", - return_type: String( - TypeInfo { - name: "export_dir", - is_optional: false, - is_list: false, - description: Some( - "Path to directory to copy .torrent files to. Slashes are used as path separators", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "export_dir_fin", - description: "Path to directory to copy .torrent files of completed downloads to. Slashes are used as path separators", - return_type: String( - TypeInfo { - name: "export_dir_fin", - is_optional: false, - is_list: false, - description: Some( - "Path to directory to copy .torrent files of completed downloads to. Slashes are used as path separators", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "mail_notification_enabled", - description: "True if e-mail notification should be enabled", - return_type: Bool( - TypeInfo { - name: "mail_notification_enabled", - is_optional: false, - is_list: false, - description: Some( - "True if e-mail notification should be enabled", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "mail_notification_sender", - description: "e-mail where notifications should originate from", - return_type: String( - TypeInfo { - name: "mail_notification_sender", - is_optional: false, - is_list: false, - description: Some( - "e-mail where notifications should originate from", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "mail_notification_email", - description: "e-mail to send notifications to", - return_type: String( - TypeInfo { - name: "mail_notification_email", - is_optional: false, - is_list: false, - description: Some( - "e-mail to send notifications to", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "mail_notification_smtp", - description: "smtp server for e-mail notifications", - return_type: String( - TypeInfo { - name: "mail_notification_smtp", - is_optional: false, - is_list: false, - description: Some( - "smtp server for e-mail notifications", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "mail_notification_ssl_enabled", - description: "True if smtp server requires SSL connection", - return_type: Bool( - TypeInfo { - name: "mail_notification_ssl_enabled", - is_optional: false, - is_list: false, - description: Some( - "True if smtp server requires SSL connection", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "mail_notification_auth_enabled", - description: "True if smtp server requires authentication", - return_type: Bool( - TypeInfo { - name: "mail_notification_auth_enabled", - is_optional: false, - is_list: false, - description: Some( - "True if smtp server requires authentication", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "mail_notification_username", - description: "Username for smtp authentication", - return_type: String( - TypeInfo { - name: "mail_notification_username", - is_optional: false, - is_list: false, - description: Some( - "Username for smtp authentication", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "mail_notification_password", - description: "Password for smtp authentication", - return_type: String( - TypeInfo { - name: "mail_notification_password", - is_optional: false, - is_list: false, - description: Some( - "Password for smtp authentication", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "autorun_enabled", - description: "True if external program should be run after torrent has finished downloading", - return_type: Bool( - TypeInfo { - name: "autorun_enabled", - is_optional: false, - is_list: false, - description: Some( - "True if external program should be run after torrent has finished downloading", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "autorun_program", - description: "Program path/name/arguments to run if autorun_enabled is enabled; path is separated by slashes; you can use %f and %n arguments, which will be expanded by qBittorent as path_to_torrent_file and torrent_name (from the GUI; not the .torrent file name) respectively", - return_type: String( - TypeInfo { - name: "autorun_program", - is_optional: false, - is_list: false, - description: Some( - "Program path/name/arguments to run if autorun_enabled is enabled; path is separated by slashes; you can use %f and %n arguments, which will be expanded by qBittorent as path_to_torrent_file and torrent_name (from the GUI; not the .torrent file name) respectively", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "queueing_enabled", - description: "True if torrent queuing is enabled", - return_type: Bool( - TypeInfo { - name: "queueing_enabled", - is_optional: false, - is_list: false, - description: Some( - "True if torrent queuing is enabled", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "max_active_downloads", - description: "Maximum number of active simultaneous downloads", - return_type: Number( - TypeInfo { - name: "max_active_downloads", - is_optional: false, - is_list: false, - description: Some( - "Maximum number of active simultaneous downloads", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "max_active_torrents", - description: "Maximum number of active simultaneous downloads and uploads", - return_type: Number( - TypeInfo { - name: "max_active_torrents", - is_optional: false, - is_list: false, - description: Some( - "Maximum number of active simultaneous downloads and uploads", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "max_active_uploads", - description: "Maximum number of active simultaneous uploads", - return_type: Number( - TypeInfo { - name: "max_active_uploads", - is_optional: false, - is_list: false, - description: Some( - "Maximum number of active simultaneous uploads", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "dont_count_slow_torrents", - description: "If true torrents w/o any activity (stalled ones) will not be counted towards max_active_* limits; see [dont_count_slow_torrents](https://www.libtorrent.org/reference-Settings.html#dont_count_slow_torrents) for more information", - return_type: Bool( - TypeInfo { - name: "dont_count_slow_torrents", - is_optional: false, - is_list: false, - description: Some( - "If true torrents w/o any activity (stalled ones) will not be counted towards max_active_* limits; see [dont_count_slow_torrents](https://www.libtorrent.org/reference-Settings.html#dont_count_slow_torrents) for more information", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "slow_torrent_dl_rate_threshold", - description: "Download rate in KiB/s for a torrent to be considered \"slow\"", - return_type: Number( - TypeInfo { - name: "slow_torrent_dl_rate_threshold", - is_optional: false, - is_list: false, - description: Some( - "Download rate in KiB/s for a torrent to be considered \"slow\"", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "slow_torrent_ul_rate_threshold", - description: "Upload rate in KiB/s for a torrent to be considered \"slow\"", - return_type: Number( - TypeInfo { - name: "slow_torrent_ul_rate_threshold", - is_optional: false, - is_list: false, - description: Some( - "Upload rate in KiB/s for a torrent to be considered \"slow\"", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "slow_torrent_inactive_timer", - description: "Seconds a torrent should be inactive before considered \"slow\"", - return_type: Number( - TypeInfo { - name: "slow_torrent_inactive_timer", - is_optional: false, - is_list: false, - description: Some( - "Seconds a torrent should be inactive before considered \"slow\"", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "max_ratio_enabled", - description: "True if share ratio limit is enabled", - return_type: Bool( - TypeInfo { - name: "max_ratio_enabled", - is_optional: false, - is_list: false, - description: Some( - "True if share ratio limit is enabled", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "max_ratio", - description: "Get the global share ratio limit", - return_type: Float( - TypeInfo { - name: "max_ratio", - is_optional: false, - is_list: false, - description: Some( - "Get the global share ratio limit", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "max_ratio_act", - description: "Action performed when a torrent reaches the maximum share ratio. See list of possible values here below.", - return_type: Number( - TypeInfo { - name: "max_ratio_act", - is_optional: false, - is_list: false, - description: Some( - "Action performed when a torrent reaches the maximum share ratio. See list of possible values here below.", - ), - type_description: Some( - TypeDescription { - values: [ - TypeDescriptions { - value: "0", - description: "Pause torrent", - }, - TypeDescriptions { - value: "1", - description: "Remove torrent", - }, - ], - }, - ), - }, - ), - }, - ReturnTypeParameter { - name: "listen_port", - description: "Port for incoming connections", - return_type: Number( - TypeInfo { - name: "listen_port", - is_optional: false, - is_list: false, - description: Some( - "Port for incoming connections", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "upnp", - description: "True if UPnP/NAT-PMP is enabled", - return_type: Bool( - TypeInfo { - name: "upnp", - is_optional: false, - is_list: false, - description: Some( - "True if UPnP/NAT-PMP is enabled", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "random_port", - description: "True if the port is randomly selected", - return_type: Bool( - TypeInfo { - name: "random_port", - is_optional: false, - is_list: false, - description: Some( - "True if the port is randomly selected", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "dl_limit", - description: "Global download speed limit in KiB/s; -1 means no limit is applied", - return_type: Number( - TypeInfo { - name: "dl_limit", - is_optional: false, - is_list: false, - description: Some( - "Global download speed limit in KiB/s; -1 means no limit is applied", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "up_limit", - description: "Global upload speed limit in KiB/s; -1 means no limit is applied", - return_type: Number( - TypeInfo { - name: "up_limit", - is_optional: false, - is_list: false, - description: Some( - "Global upload speed limit in KiB/s; -1 means no limit is applied", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "max_connec", - description: "Maximum global number of simultaneous connections", - return_type: Number( - TypeInfo { - name: "max_connec", - is_optional: false, - is_list: false, - description: Some( - "Maximum global number of simultaneous connections", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "max_connec_per_torrent", - description: "Maximum number of simultaneous connections per torrent", - return_type: Number( - TypeInfo { - name: "max_connec_per_torrent", - is_optional: false, - is_list: false, - description: Some( - "Maximum number of simultaneous connections per torrent", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "max_uploads", - description: "Maximum number of upload slots", - return_type: Number( - TypeInfo { - name: "max_uploads", - is_optional: false, - is_list: false, - description: Some( - "Maximum number of upload slots", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "max_uploads_per_torrent", - description: "Maximum number of upload slots per torrent", - return_type: Number( - TypeInfo { - name: "max_uploads_per_torrent", - is_optional: false, - is_list: false, - description: Some( - "Maximum number of upload slots per torrent", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "stop_tracker_timeout", - description: "Timeout in seconds for a stopped announce request to trackers", - return_type: Number( - TypeInfo { - name: "stop_tracker_timeout", - is_optional: false, - is_list: false, - description: Some( - "Timeout in seconds for a stopped announce request to trackers", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "enable_piece_extent_affinity", - description: "True if the advanced libtorrent option piece_extent_affinity is enabled", - return_type: Bool( - TypeInfo { - name: "enable_piece_extent_affinity", - is_optional: false, - is_list: false, - description: Some( - "True if the advanced libtorrent option piece_extent_affinity is enabled", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "bittorrent_protocol", - description: "Bittorrent Protocol to use (see list of possible values below)", - return_type: Number( - TypeInfo { - name: "bittorrent_protocol", - is_optional: false, - is_list: false, - description: Some( - "Bittorrent Protocol to use (see list of possible values below)", - ), - type_description: Some( - TypeDescription { - values: [ - TypeDescriptions { - value: "0", - description: "TCP and μTP", - }, - TypeDescriptions { - value: "1", - description: "TCP", - }, - TypeDescriptions { - value: "2", - description: "μTP", - }, - ], - }, - ), - }, - ), - }, - ReturnTypeParameter { - name: "limit_utp_rate", - description: "True if [du]l_limit should be applied to uTP connections; this option is only available in qBittorent built against libtorrent version 0.16.X and higher", - return_type: Bool( - TypeInfo { - name: "limit_utp_rate", - is_optional: false, - is_list: false, - description: Some( - "True if [du]l_limit should be applied to uTP connections; this option is only available in qBittorent built against libtorrent version 0.16.X and higher", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "limit_tcp_overhead", - description: "True if [du]l_limit should be applied to estimated TCP overhead (service data: e.g. packet headers)", - return_type: Bool( - TypeInfo { - name: "limit_tcp_overhead", - is_optional: false, - is_list: false, - description: Some( - "True if [du]l_limit should be applied to estimated TCP overhead (service data: e.g. packet headers)", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "limit_lan_peers", - description: "True if [du]l_limit should be applied to peers on the LAN", - return_type: Bool( - TypeInfo { - name: "limit_lan_peers", - is_optional: false, - is_list: false, - description: Some( - "True if [du]l_limit should be applied to peers on the LAN", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "alt_dl_limit", - description: "Alternative global download speed limit in KiB/s", - return_type: Number( - TypeInfo { - name: "alt_dl_limit", - is_optional: false, - is_list: false, - description: Some( - "Alternative global download speed limit in KiB/s", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "alt_up_limit", - description: "Alternative global upload speed limit in KiB/s", - return_type: Number( - TypeInfo { - name: "alt_up_limit", - is_optional: false, - is_list: false, - description: Some( - "Alternative global upload speed limit in KiB/s", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "scheduler_enabled", - description: "True if alternative limits should be applied according to schedule", - return_type: Bool( - TypeInfo { - name: "scheduler_enabled", - is_optional: false, - is_list: false, - description: Some( - "True if alternative limits should be applied according to schedule", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "schedule_from_hour", - description: "Scheduler starting hour", - return_type: Number( - TypeInfo { - name: "schedule_from_hour", - is_optional: false, - is_list: false, - description: Some( - "Scheduler starting hour", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "schedule_from_min", - description: "Scheduler starting minute", - return_type: Number( - TypeInfo { - name: "schedule_from_min", - is_optional: false, - is_list: false, - description: Some( - "Scheduler starting minute", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "schedule_to_hour", - description: "Scheduler ending hour", - return_type: Number( - TypeInfo { - name: "schedule_to_hour", - is_optional: false, - is_list: false, - description: Some( - "Scheduler ending hour", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "schedule_to_min", - description: "Scheduler ending minute", - return_type: Number( - TypeInfo { - name: "schedule_to_min", - is_optional: false, - is_list: false, - description: Some( - "Scheduler ending minute", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "scheduler_days", - description: "Scheduler days. See possible values here below", - return_type: Number( - TypeInfo { - name: "scheduler_days", - is_optional: false, - is_list: false, - description: Some( - "Scheduler days. See possible values here below", - ), - type_description: Some( - TypeDescription { - values: [ - TypeDescriptions { - value: "0", - description: "Every day", - }, - TypeDescriptions { - value: "1", - description: "Every weekday", - }, - TypeDescriptions { - value: "2", - description: "Every weekend", - }, - TypeDescriptions { - value: "3", - description: "Every Monday", - }, - TypeDescriptions { - value: "4", - description: "Every Tuesday", - }, - TypeDescriptions { - value: "5", - description: "Every Wednesday", - }, - TypeDescriptions { - value: "6", - description: "Every Thursday", - }, - TypeDescriptions { - value: "7", - description: "Every Friday", - }, - TypeDescriptions { - value: "8", - description: "Every Saturday", - }, - TypeDescriptions { - value: "9", - description: "Every Sunday", - }, - ], - }, - ), - }, - ), - }, - ReturnTypeParameter { - name: "dht", - description: "True if DHT is enabled", - return_type: Bool( - TypeInfo { - name: "dht", - is_optional: false, - is_list: false, - description: Some( - "True if DHT is enabled", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "pex", - description: "True if PeX is enabled", - return_type: Bool( - TypeInfo { - name: "pex", - is_optional: false, - is_list: false, - description: Some( - "True if PeX is enabled", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "lsd", - description: "True if LSD is enabled", - return_type: Bool( - TypeInfo { - name: "lsd", - is_optional: false, - is_list: false, - description: Some( - "True if LSD is enabled", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "encryption", - description: "See list of possible values here below", - return_type: Number( - TypeInfo { - name: "encryption", - is_optional: false, - is_list: false, - description: Some( - "See list of possible values here below", - ), - type_description: Some( - TypeDescription { - values: [ - TypeDescriptions { - value: "0", - description: "Prefer encryption", - }, - TypeDescriptions { - value: "1", - description: "Force encryption on", - }, - TypeDescriptions { - value: "2", - description: "Force encryption off", - }, - ], - }, - ), - }, - ), - }, - ReturnTypeParameter { - name: "anonymous_mode", - description: "If true anonymous mode will be enabled; read more [here](Anonymous-Mode); this option is only available in qBittorent built against libtorrent version 0.16.X and higher", - return_type: Bool( - TypeInfo { - name: "anonymous_mode", - is_optional: false, - is_list: false, - description: Some( - "If true anonymous mode will be enabled; read more [here](Anonymous-Mode); this option is only available in qBittorent built against libtorrent version 0.16.X and higher", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "proxy_type", - description: "See list of possible values here below", - return_type: Number( - TypeInfo { - name: "proxy_type", - is_optional: false, - is_list: false, - description: Some( - "See list of possible values here below", - ), - type_description: Some( - TypeDescription { - values: [ - TypeDescriptions { - value: "-1", - description: "Proxy is disabled", - }, - TypeDescriptions { - value: "1", - description: "HTTP proxy without authentication", - }, - TypeDescriptions { - value: "2", - description: "SOCKS5 proxy without authentication", - }, - TypeDescriptions { - value: "3", - description: "HTTP proxy with authentication", - }, - TypeDescriptions { - value: "4", - description: "SOCKS5 proxy with authentication", - }, - TypeDescriptions { - value: "5", - description: "SOCKS4 proxy without authentication", - }, - ], - }, - ), - }, - ), - }, - ReturnTypeParameter { - name: "proxy_ip", - description: "Proxy IP address or domain name", - return_type: String( - TypeInfo { - name: "proxy_ip", - is_optional: false, - is_list: false, - description: Some( - "Proxy IP address or domain name", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "proxy_port", - description: "Proxy port", - return_type: Number( - TypeInfo { - name: "proxy_port", - is_optional: false, - is_list: false, - description: Some( - "Proxy port", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "proxy_peer_connections", - description: "True if peer and web seed connections should be proxified; this option will have any effect only in qBittorent built against libtorrent version 0.16.X and higher", - return_type: Bool( - TypeInfo { - name: "proxy_peer_connections", - is_optional: false, - is_list: false, - description: Some( - "True if peer and web seed connections should be proxified; this option will have any effect only in qBittorent built against libtorrent version 0.16.X and higher", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "proxy_auth_enabled", - description: "True proxy requires authentication; doesn't apply to SOCKS4 proxies", - return_type: Bool( - TypeInfo { - name: "proxy_auth_enabled", - is_optional: false, - is_list: false, - description: Some( - "True proxy requires authentication; doesn't apply to SOCKS4 proxies", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "proxy_username", - description: "Username for proxy authentication", - return_type: String( - TypeInfo { - name: "proxy_username", - is_optional: false, - is_list: false, - description: Some( - "Username for proxy authentication", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "proxy_password", - description: "Password for proxy authentication", - return_type: String( - TypeInfo { - name: "proxy_password", - is_optional: false, - is_list: false, - description: Some( - "Password for proxy authentication", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "proxy_torrents_only", - description: "True if proxy is only used for torrents", - return_type: Bool( - TypeInfo { - name: "proxy_torrents_only", - is_optional: false, - is_list: false, - description: Some( - "True if proxy is only used for torrents", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "ip_filter_enabled", - description: "True if external IP filter should be enabled", - return_type: Bool( - TypeInfo { - name: "ip_filter_enabled", - is_optional: false, - is_list: false, - description: Some( - "True if external IP filter should be enabled", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "ip_filter_path", - description: "Path to IP filter file (.dat, .p2p, .p2b files are supported); path is separated by slashes", - return_type: String( - TypeInfo { - name: "ip_filter_path", - is_optional: false, - is_list: false, - description: Some( - "Path to IP filter file (.dat, .p2p, .p2b files are supported); path is separated by slashes", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "ip_filter_trackers", - description: "True if IP filters are applied to trackers", - return_type: Bool( - TypeInfo { - name: "ip_filter_trackers", - is_optional: false, - is_list: false, - description: Some( - "True if IP filters are applied to trackers", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "web_ui_domain_list", - description: "Comma-separated list of domains to accept when performing Host header validation", - return_type: String( - TypeInfo { - name: "web_ui_domain_list", - is_optional: false, - is_list: false, - description: Some( - "Comma-separated list of domains to accept when performing Host header validation", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "web_ui_address", - description: "IP address to use for the WebUI", - return_type: String( - TypeInfo { - name: "web_ui_address", - is_optional: false, - is_list: false, - description: Some( - "IP address to use for the WebUI", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "web_ui_port", - description: "WebUI port", - return_type: Number( - TypeInfo { - name: "web_ui_port", - is_optional: false, - is_list: false, - description: Some( - "WebUI port", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "web_ui_upnp", - description: "True if UPnP is used for the WebUI port", - return_type: Bool( - TypeInfo { - name: "web_ui_upnp", - is_optional: false, - is_list: false, - description: Some( - "True if UPnP is used for the WebUI port", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "web_ui_username", - description: "WebUI username", - return_type: String( - TypeInfo { - name: "web_ui_username", - is_optional: false, - is_list: false, - description: Some( - "WebUI username", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "web_ui_password", - description: "For API ≥ v2.3.0: Plaintext WebUI password, not readable, write-only. For API < v2.3.0: MD5 hash of WebUI password, hash is generated from the following string: username:Web UI Access:plain_text_web_ui_password", - return_type: String( - TypeInfo { - name: "web_ui_password", - is_optional: false, - is_list: false, - description: Some( - "For API ≥ v2.3.0: Plaintext WebUI password, not readable, write-only. For API < v2.3.0: MD5 hash of WebUI password, hash is generated from the following string: username:Web UI Access:plain_text_web_ui_password", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "web_ui_csrf_protection_enabled", - description: "True if WebUI CSRF protection is enabled", - return_type: Bool( - TypeInfo { - name: "web_ui_csrf_protection_enabled", - is_optional: false, - is_list: false, - description: Some( - "True if WebUI CSRF protection is enabled", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "web_ui_clickjacking_protection_enabled", - description: "True if WebUI clickjacking protection is enabled", - return_type: Bool( - TypeInfo { - name: "web_ui_clickjacking_protection_enabled", - is_optional: false, - is_list: false, - description: Some( - "True if WebUI clickjacking protection is enabled", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "web_ui_secure_cookie_enabled", - description: "True if WebUI cookie Secure flag is enabled", - return_type: Bool( - TypeInfo { - name: "web_ui_secure_cookie_enabled", - is_optional: false, - is_list: false, - description: Some( - "True if WebUI cookie Secure flag is enabled", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "web_ui_max_auth_fail_count", - description: "Maximum number of authentication failures before WebUI access ban", - return_type: Number( - TypeInfo { - name: "web_ui_max_auth_fail_count", - is_optional: false, - is_list: false, - description: Some( - "Maximum number of authentication failures before WebUI access ban", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "web_ui_ban_duration", - description: "WebUI access ban duration in seconds", - return_type: Number( - TypeInfo { - name: "web_ui_ban_duration", - is_optional: false, - is_list: false, - description: Some( - "WebUI access ban duration in seconds", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "web_ui_session_timeout", - description: "Seconds until WebUI is automatically signed off", - return_type: Number( - TypeInfo { - name: "web_ui_session_timeout", - is_optional: false, - is_list: false, - description: Some( - "Seconds until WebUI is automatically signed off", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "web_ui_host_header_validation_enabled", - description: "True if WebUI host header validation is enabled", - return_type: Bool( - TypeInfo { - name: "web_ui_host_header_validation_enabled", - is_optional: false, - is_list: false, - description: Some( - "True if WebUI host header validation is enabled", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "bypass_local_auth", - description: "True if authentication challenge for loopback address (127.0.0.1) should be disabled", - return_type: Bool( - TypeInfo { - name: "bypass_local_auth", - is_optional: false, - is_list: false, - description: Some( - "True if authentication challenge for loopback address (127.0.0.1) should be disabled", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "bypass_auth_subnet_whitelist_enabled", - description: "True if webui authentication should be bypassed for clients whose ip resides within (at least) one of the subnets on the whitelist", - return_type: Bool( - TypeInfo { - name: "bypass_auth_subnet_whitelist_enabled", - is_optional: false, - is_list: false, - description: Some( - "True if webui authentication should be bypassed for clients whose ip resides within (at least) one of the subnets on the whitelist", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "bypass_auth_subnet_whitelist", - description: "(White)list of ipv4/ipv6 subnets for which webui authentication should be bypassed; list entries are separated by commas", - return_type: String( - TypeInfo { - name: "bypass_auth_subnet_whitelist", - is_optional: false, - is_list: false, - description: Some( - "(White)list of ipv4/ipv6 subnets for which webui authentication should be bypassed; list entries are separated by commas", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "alternative_webui_enabled", - description: "True if an alternative WebUI should be used", - return_type: Bool( - TypeInfo { - name: "alternative_webui_enabled", - is_optional: false, - is_list: false, - description: Some( - "True if an alternative WebUI should be used", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "alternative_webui_path", - description: "File path to the alternative WebUI", - return_type: String( - TypeInfo { - name: "alternative_webui_path", - is_optional: false, - is_list: false, - description: Some( - "File path to the alternative WebUI", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "use_https", - description: "True if WebUI HTTPS access is enabled", - return_type: Bool( - TypeInfo { - name: "use_https", - is_optional: false, - is_list: false, - description: Some( - "True if WebUI HTTPS access is enabled", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "ssl_key", - description: "For API < v2.0.1: SSL keyfile contents (this is a not a path)", - return_type: String( - TypeInfo { - name: "ssl_key", - is_optional: false, - is_list: false, - description: Some( - "For API < v2.0.1: SSL keyfile contents (this is a not a path)", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "ssl_cert", - description: "For API < v2.0.1: SSL certificate contents (this is a not a path)", - return_type: String( - TypeInfo { - name: "ssl_cert", - is_optional: false, - is_list: false, - description: Some( - "For API < v2.0.1: SSL certificate contents (this is a not a path)", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "web_ui_https_key_path", - description: "For API ≥ v2.0.1: Path to SSL keyfile", - return_type: String( - TypeInfo { - name: "web_ui_https_key_path", - is_optional: false, - is_list: false, - description: Some( - "For API ≥ v2.0.1: Path to SSL keyfile", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "web_ui_https_cert_path", - description: "For API ≥ v2.0.1: Path to SSL certificate", - return_type: String( - TypeInfo { - name: "web_ui_https_cert_path", - is_optional: false, - is_list: false, - description: Some( - "For API ≥ v2.0.1: Path to SSL certificate", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "dyndns_enabled", - description: "True if server DNS should be updated dynamically", - return_type: Bool( - TypeInfo { - name: "dyndns_enabled", - is_optional: false, - is_list: false, - description: Some( - "True if server DNS should be updated dynamically", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "dyndns_service", - description: "See list of possible values here below", - return_type: Number( - TypeInfo { - name: "dyndns_service", - is_optional: false, - is_list: false, - description: Some( - "See list of possible values here below", - ), - type_description: Some( - TypeDescription { - values: [ - TypeDescriptions { - value: "0", - description: "Use DyDNS", - }, - TypeDescriptions { - value: "1", - description: "Use NOIP", - }, - ], - }, - ), - }, - ), - }, - ReturnTypeParameter { - name: "dyndns_username", - description: "Username for DDNS service", - return_type: String( - TypeInfo { - name: "dyndns_username", - is_optional: false, - is_list: false, - description: Some( - "Username for DDNS service", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "dyndns_password", - description: "Password for DDNS service", - return_type: String( - TypeInfo { - name: "dyndns_password", - is_optional: false, - is_list: false, - description: Some( - "Password for DDNS service", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "dyndns_domain", - description: "Your DDNS domain name", - return_type: String( - TypeInfo { - name: "dyndns_domain", - is_optional: false, - is_list: false, - description: Some( - "Your DDNS domain name", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "rss_refresh_interval", - description: "RSS refresh interval", - return_type: Number( - TypeInfo { - name: "rss_refresh_interval", - is_optional: false, - is_list: false, - description: Some( - "RSS refresh interval", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "rss_max_articles_per_feed", - description: "Max stored articles per RSS feed", - return_type: Number( - TypeInfo { - name: "rss_max_articles_per_feed", - is_optional: false, - is_list: false, - description: Some( - "Max stored articles per RSS feed", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "rss_processing_enabled", - description: "Enable processing of RSS feeds", - return_type: Bool( - TypeInfo { - name: "rss_processing_enabled", - is_optional: false, - is_list: false, - description: Some( - "Enable processing of RSS feeds", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "rss_auto_downloading_enabled", - description: "Enable auto-downloading of torrents from the RSS feeds", - return_type: Bool( - TypeInfo { - name: "rss_auto_downloading_enabled", - is_optional: false, - is_list: false, - description: Some( - "Enable auto-downloading of torrents from the RSS feeds", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "rss_download_repack_proper_episodes", - description: "For API ≥ v2.5.1: Enable downloading of repack/proper Episodes", - return_type: Bool( - TypeInfo { - name: "rss_download_repack_proper_episodes", - is_optional: false, - is_list: false, - description: Some( - "For API ≥ v2.5.1: Enable downloading of repack/proper Episodes", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "rss_smart_episode_filters", - description: "For API ≥ v2.5.1: List of RSS Smart Episode Filters", - return_type: String( - TypeInfo { - name: "rss_smart_episode_filters", - is_optional: false, - is_list: false, - description: Some( - "For API ≥ v2.5.1: List of RSS Smart Episode Filters", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "add_trackers_enabled", - description: "Enable automatic adding of trackers to new torrents", - return_type: Bool( - TypeInfo { - name: "add_trackers_enabled", - is_optional: false, - is_list: false, - description: Some( - "Enable automatic adding of trackers to new torrents", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "add_trackers", - description: "List of trackers to add to new torrent", - return_type: String( - TypeInfo { - name: "add_trackers", - is_optional: false, - is_list: false, - description: Some( - "List of trackers to add to new torrent", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "web_ui_use_custom_http_headers_enabled", - description: "For API ≥ v2.5.1: Enable custom http headers", - return_type: Bool( - TypeInfo { - name: "web_ui_use_custom_http_headers_enabled", - is_optional: false, - is_list: false, - description: Some( - "For API ≥ v2.5.1: Enable custom http headers", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "web_ui_custom_http_headers", - description: "For API ≥ v2.5.1: List of custom http headers", - return_type: String( - TypeInfo { - name: "web_ui_custom_http_headers", - is_optional: false, - is_list: false, - description: Some( - "For API ≥ v2.5.1: List of custom http headers", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "max_seeding_time_enabled", - description: "True enables max seeding time", - return_type: Bool( - TypeInfo { - name: "max_seeding_time_enabled", - is_optional: false, - is_list: false, - description: Some( - "True enables max seeding time", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "max_seeding_time", - description: "Number of minutes to seed a torrent", - return_type: Number( - TypeInfo { - name: "max_seeding_time", - is_optional: false, - is_list: false, - description: Some( - "Number of minutes to seed a torrent", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "announce_ip", - description: "TODO", - return_type: String( - TypeInfo { - name: "announce_ip", - is_optional: false, - is_list: false, - description: Some( - "TODO", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "announce_to_all_tiers", - description: "True always announce to all tiers", - return_type: Bool( - TypeInfo { - name: "announce_to_all_tiers", - is_optional: false, - is_list: false, - description: Some( - "True always announce to all tiers", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "announce_to_all_trackers", - description: "True always announce to all trackers in a tier", - return_type: Bool( - TypeInfo { - name: "announce_to_all_trackers", - is_optional: false, - is_list: false, - description: Some( - "True always announce to all trackers in a tier", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "async_io_threads", - description: "Number of asynchronous I/O threads", - return_type: Number( - TypeInfo { - name: "async_io_threads", - is_optional: false, - is_list: false, - description: Some( - "Number of asynchronous I/O threads", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "banned_IPs", - description: "List of banned IPs", - return_type: String( - TypeInfo { - name: "banned_IPs", - is_optional: false, - is_list: false, - description: Some( - "List of banned IPs", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "checking_memory_use", - description: "Outstanding memory when checking torrents in MiB", - return_type: Number( - TypeInfo { - name: "checking_memory_use", - is_optional: false, - is_list: false, - description: Some( - "Outstanding memory when checking torrents in MiB", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "current_interface_address", - description: "IP Address to bind to. Empty String means All addresses", - return_type: String( - TypeInfo { - name: "current_interface_address", - is_optional: false, - is_list: false, - description: Some( - "IP Address to bind to. Empty String means All addresses", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "current_network_interface", - description: "Network Interface used", - return_type: String( - TypeInfo { - name: "current_network_interface", - is_optional: false, - is_list: false, - description: Some( - "Network Interface used", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "disk_cache", - description: "Disk cache used in MiB", - return_type: Number( - TypeInfo { - name: "disk_cache", - is_optional: false, - is_list: false, - description: Some( - "Disk cache used in MiB", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "disk_cache_ttl", - description: "Disk cache expiry interval in seconds", - return_type: Number( - TypeInfo { - name: "disk_cache_ttl", - is_optional: false, - is_list: false, - description: Some( - "Disk cache expiry interval in seconds", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "embedded_tracker_port", - description: "Port used for embedded tracker", - return_type: Number( - TypeInfo { - name: "embedded_tracker_port", - is_optional: false, - is_list: false, - description: Some( - "Port used for embedded tracker", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "enable_coalesce_read_write", - description: "True enables coalesce reads & writes", - return_type: Bool( - TypeInfo { - name: "enable_coalesce_read_write", - is_optional: false, - is_list: false, - description: Some( - "True enables coalesce reads & writes", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "enable_embedded_tracker", - description: "True enables embedded tracker", - return_type: Bool( - TypeInfo { - name: "enable_embedded_tracker", - is_optional: false, - is_list: false, - description: Some( - "True enables embedded tracker", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "enable_multi_connections_from_same_ip", - description: "True allows multiple connections from the same IP address", - return_type: Bool( - TypeInfo { - name: "enable_multi_connections_from_same_ip", - is_optional: false, - is_list: false, - description: Some( - "True allows multiple connections from the same IP address", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "enable_os_cache", - description: "True enables os cache", - return_type: Bool( - TypeInfo { - name: "enable_os_cache", - is_optional: false, - is_list: false, - description: Some( - "True enables os cache", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "enable_upload_suggestions", - description: "True enables sending of upload piece suggestions", - return_type: Bool( - TypeInfo { - name: "enable_upload_suggestions", - is_optional: false, - is_list: false, - description: Some( - "True enables sending of upload piece suggestions", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "file_pool_size", - description: "File pool size", - return_type: Number( - TypeInfo { - name: "file_pool_size", - is_optional: false, - is_list: false, - description: Some( - "File pool size", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "outgoing_ports_max", - description: "Maximal outgoing port (0: Disabled)", - return_type: Number( - TypeInfo { - name: "outgoing_ports_max", - is_optional: false, - is_list: false, - description: Some( - "Maximal outgoing port (0: Disabled)", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "outgoing_ports_min", - description: "Minimal outgoing port (0: Disabled)", - return_type: Number( - TypeInfo { - name: "outgoing_ports_min", - is_optional: false, - is_list: false, - description: Some( - "Minimal outgoing port (0: Disabled)", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "recheck_completed_torrents", - description: "True rechecks torrents on completion", - return_type: Bool( - TypeInfo { - name: "recheck_completed_torrents", - is_optional: false, - is_list: false, - description: Some( - "True rechecks torrents on completion", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "resolve_peer_countries", - description: "True resolves peer countries", - return_type: Bool( - TypeInfo { - name: "resolve_peer_countries", - is_optional: false, - is_list: false, - description: Some( - "True resolves peer countries", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "save_resume_data_interval", - description: "Save resume data interval in min", - return_type: Number( - TypeInfo { - name: "save_resume_data_interval", - is_optional: false, - is_list: false, - description: Some( - "Save resume data interval in min", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "send_buffer_low_watermark", - description: "Send buffer low watermark in KiB", - return_type: Number( - TypeInfo { - name: "send_buffer_low_watermark", - is_optional: false, - is_list: false, - description: Some( - "Send buffer low watermark in KiB", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "send_buffer_watermark", - description: "Send buffer watermark in KiB", - return_type: Number( - TypeInfo { - name: "send_buffer_watermark", - is_optional: false, - is_list: false, - description: Some( - "Send buffer watermark in KiB", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "send_buffer_watermark_factor", - description: "Send buffer watermark factor in percent", - return_type: Number( - TypeInfo { - name: "send_buffer_watermark_factor", - is_optional: false, - is_list: false, - description: Some( - "Send buffer watermark factor in percent", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "socket_backlog_size", - description: "Socket backlog size", - return_type: Number( - TypeInfo { - name: "socket_backlog_size", - is_optional: false, - is_list: false, - description: Some( - "Socket backlog size", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "upload_choking_algorithm", - description: "Upload choking algorithm used (see list of possible values below)", - return_type: Number( - TypeInfo { - name: "upload_choking_algorithm", - is_optional: false, - is_list: false, - description: Some( - "Upload choking algorithm used (see list of possible values below)", - ), - type_description: Some( - TypeDescription { - values: [ - TypeDescriptions { - value: "0", - description: "Round-robin", - }, - TypeDescriptions { - value: "1", - description: "Fastest upload", - }, - TypeDescriptions { - value: "2", - description: "Anti-leech", - }, - ], - }, - ), - }, - ), - }, - ReturnTypeParameter { - name: "upload_slots_behavior", - description: "Upload slots behavior used (see list of possible values below)", - return_type: Number( - TypeInfo { - name: "upload_slots_behavior", - is_optional: false, - is_list: false, - description: Some( - "Upload slots behavior used (see list of possible values below)", - ), - type_description: Some( - TypeDescription { - values: [ - TypeDescriptions { - value: "0", - description: "Fixed slots", - }, - TypeDescriptions { - value: "1", - description: "Upload rate based", - }, - ], - }, - ), - }, - ), - }, - ReturnTypeParameter { - name: "upnp_lease_duration", - description: "UPnP lease duration (0: Permanent lease)", - return_type: Number( - TypeInfo { - name: "upnp_lease_duration", - is_optional: false, - is_list: false, - description: Some( - "UPnP lease duration (0: Permanent lease)", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "utp_tcp_mixed_mode", - description: "μTP-TCP mixed mode algorithm (see list of possible values below)", - return_type: Number( - TypeInfo { - name: "utp_tcp_mixed_mode", - is_optional: false, - is_list: false, - description: Some( - "μTP-TCP mixed mode algorithm (see list of possible values below)", - ), - type_description: Some( - TypeDescription { - values: [ - TypeDescriptions { - value: "0", - description: "Prefer TCP", - }, - TypeDescriptions { - value: "1", - description: "Peer proportional", - }, - ], - }, - ), - }, - ), - }, - ], - }, - ), - url: "preferences", - }, - ApiMethod { - name: "setPreferences", - description: Some( - "1. There is no need to pass all possible preferences' `token:value` pairs if you only want to change one option\n 1. Paths in `scan_dirs` must exist, otherwise this option will have no effect\n 1. String values must be quoted; integer and boolean values must never be quoted\n\nFor a list of possible preference options see [Get application preferences](#get-application-preferences)", - ), - parameters: None, - return_type: None, - url: "setPreferences", - }, - ApiMethod { - name: "defaultSavePath", - description: None, - parameters: None, - return_type: None, - url: "defaultSavePath", - }, - ], - description: Some( - "All Application API methods are under \"app\", e.g.: `/api/v2/app/methodName`.", - ), - url: "app", - }, - ApiGroup { - name: "log", - methods: [ - ApiMethod { - name: "main", - description: Some( - "Each element of the array has the following properties:\n\nExample:\n\n```JSON\n[\n {\n \"id\":0,\n \"message\":\"qBittorrent v3.4.0 started\",\n \"timestamp\":1507969127860,\n \"type\":1\n },\n {\n \"id\":1,\n \"message\":\"qBittorrent is trying to listen on any interface port: 19036\",\n \"timestamp\":1507969127869,\n \"type\":2\n },\n {\n \"id\":2,\n \"message\":\"Peer ID: -qB3400-\",\n \"timestamp\":1507969127870,\n \"type\":1\n },\n {\n \"id\":3,\n \"message\":\"HTTP User-Agent is 'qBittorrent/3.4.0'\",\n \"timestamp\":1507969127870,\n \"type\":1\n },\n {\n \"id\":4,\n \"message\":\"DHT support [ON]\",\n \"timestamp\":1507969127871,\n \"type\":2\n },\n {\n \"id\":5,\n \"message\":\"Local Peer Discovery support [ON]\",\n \"timestamp\":1507969127871,\n \"type\":2\n },\n {\n \"id\":6,\n \"message\":\"PeX support [ON]\",\n \"timestamp\":1507969127871,\n \"type\":2\n },\n {\n \"id\":7,\n \"message\":\"Anonymous mode [OFF]\",\n \"timestamp\":1507969127871,\n \"type\":2\n },\n {\n \"id\":8,\n \"message\":\"Encryption support [ON]\",\n \"timestamp\":1507969127871,\n \"type\":2\n },\n {\n \"id\":9,\n \"message\":\"Embedded Tracker [OFF]\",\n \"timestamp\":1507969127871,\n \"type\":2\n },\n {\n \"id\":10,\n \"message\":\"UPnP / NAT-PMP support [ON]\",\n \"timestamp\":1507969127873,\n \"type\":2\n },\n {\n \"id\":11,\n \"message\":\"Web UI: Now listening on port 8080\",\n \"timestamp\":1507969127883,\n \"type\":1\n },\n {\n \"id\":12,\n \"message\":\"Options were saved successfully.\",\n \"timestamp\":1507969128055,\n \"type\":1\n },\n {\n \"id\":13,\n \"message\":\"qBittorrent is successfully listening on interface :: port: TCP/19036\",\n \"timestamp\":1507969128270,\n \"type\":2\n },\n {\n \"id\":14,\n \"message\":\"qBittorrent is successfully listening on interface 0.0.0.0 port: TCP/19036\",\n \"timestamp\":1507969128271,\n \"type\":2\n },\n {\n \"id\":15,\n \"message\":\"qBittorrent is successfully listening on interface 0.0.0.0 port: UDP/19036\",\n \"timestamp\":1507969128272,\n \"type\":2\n }\n]\n```", - ), - parameters: Some( - [ - Bool( - TypeInfo { - name: "normal", - is_optional: true, - is_list: false, - description: Some( - "Include normal messages (default: true)", - ), - type_description: None, - }, - ), - Bool( - TypeInfo { - name: "info", - is_optional: true, - is_list: false, - description: Some( - "Include info messages (default: true)", - ), - type_description: None, - }, - ), - Bool( - TypeInfo { - name: "warning", - is_optional: true, - is_list: false, - description: Some( - "Include warning messages (default: true)", - ), - type_description: None, - }, - ), - Bool( - TypeInfo { - name: "critical", - is_optional: true, - is_list: false, - description: Some( - "Include critical messages (default: true)", - ), - type_description: None, - }, - ), - Number( - TypeInfo { - name: "last_known_id", - is_optional: true, - is_list: false, - description: Some( - "Exclude messages with \"message id\" <= last_known_id (default: -1)", - ), - type_description: None, - }, - ), - ], - ), - return_type: Some( - ReturnType { - is_list: true, - parameters: [ - ReturnTypeParameter { - name: "id", - description: "ID of the message", - return_type: Number( - TypeInfo { - name: "id", - is_optional: false, - is_list: false, - description: Some( - "ID of the message", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "message", - description: "Text of the message", - return_type: String( - TypeInfo { - name: "message", - is_optional: false, - is_list: false, - description: Some( - "Text of the message", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "timestamp", - description: "Milliseconds since epoch", - return_type: Number( - TypeInfo { - name: "timestamp", - is_optional: false, - is_list: false, - description: Some( - "Milliseconds since epoch", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "type", - description: "Type of the message: Log::NORMAL: 1, Log::INFO: 2, Log::WARNING: 4, Log::CRITICAL: 8", - return_type: Number( - TypeInfo { - name: "type", - is_optional: false, - is_list: false, - description: Some( - "Type of the message: Log::NORMAL: 1, Log::INFO: 2, Log::WARNING: 4, Log::CRITICAL: 8", - ), - type_description: None, - }, - ), - }, - ], - }, - ), - url: "main", - }, - ApiMethod { - name: "peers", - description: None, - parameters: Some( - [ - Number( - TypeInfo { - name: "last_known_id", - is_optional: true, - is_list: false, - description: Some( - "Exclude messages with \"message id\" <= last_known_id (default: -1)", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "peers", - }, - ], - description: Some( - "All Log API methods are under \"log\", e.g.: `/api/v2/log/methodName`.", - ), - url: "log", - }, - ApiGroup { - name: "sync", - methods: [ - ApiMethod { - name: "maindata", - description: Some( - "Example:\n\n```JSON\n{\n \"rid\":15,\n \"torrents\":\n {\n \"8c212779b4abde7c6bc608063a0d008b7e40ce32\":\n {\n \"state\":\"pausedUP\"\n }\n }\n}\n```", - ), - parameters: Some( - [ - Number( - TypeInfo { - name: "rid", - is_optional: false, - is_list: false, - description: Some( - "Response ID. If not provided, rid=0 will be assumed. If the given rid is different from the one of last server reply, full_update will be true (see the server reply details for more info)", - ), - type_description: None, - }, - ), - ], - ), - return_type: Some( - ReturnType { - is_list: false, - parameters: [ - ReturnTypeParameter { - name: "rid", - description: "Response ID", - return_type: Number( - TypeInfo { - name: "rid", - is_optional: false, - is_list: false, - description: Some( - "Response ID", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "full_update", - description: "Whether the response contains all the data or partial data", - return_type: Bool( - TypeInfo { - name: "full_update", - is_optional: false, - is_list: false, - description: Some( - "Whether the response contains all the data or partial data", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "torrents", - description: "Property: torrent hash, value: same as [torrent list](#get-torrent-list)", - return_type: Object( - TypeInfo { - name: "torrents", - is_optional: false, - is_list: false, - description: Some( - "Property: torrent hash, value: same as [torrent list](#get-torrent-list)", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "torrents_removed", - description: "List of hashes of torrents removed since last request", - return_type: StringArray( - TypeInfo { - name: "torrents_removed", - is_optional: false, - is_list: false, - description: Some( - "List of hashes of torrents removed since last request", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "categories", - description: "Info for categories added since last request", - return_type: Object( - TypeInfo { - name: "categories", - is_optional: false, - is_list: false, - description: Some( - "Info for categories added since last request", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "categories_removed", - description: "List of categories removed since last request", - return_type: StringArray( - TypeInfo { - name: "categories_removed", - is_optional: false, - is_list: false, - description: Some( - "List of categories removed since last request", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "tags", - description: "List of tags added since last request", - return_type: StringArray( - TypeInfo { - name: "tags", - is_optional: false, - is_list: false, - description: Some( - "List of tags added since last request", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "tags_removed", - description: "List of tags removed since last request", - return_type: StringArray( - TypeInfo { - name: "tags_removed", - is_optional: false, - is_list: false, - description: Some( - "List of tags removed since last request", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "server_state", - description: "Global transfer info", - return_type: Object( - TypeInfo { - name: "server_state", - is_optional: false, - is_list: false, - description: Some( - "Global transfer info", - ), - type_description: None, - }, - ), - }, - ], - }, - ), - url: "maindata", - }, - ApiMethod { - name: "torrentPeers", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "hash", - is_optional: false, - is_list: false, - description: Some( - "Torrent hash", - ), - type_description: None, - }, - ), - Number( - TypeInfo { - name: "rid", - is_optional: false, - is_list: false, - description: Some( - "Response ID. If not provided, rid=0 will be assumed. If the given rid is different from the one of last server reply, full_update will be true (see the server reply details for more info)", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "torrentPeers", - }, - ], - description: Some( - "Sync API implements requests for obtaining changes since the last request.\nAll Sync API methods are under \"sync\", e.g.: `/api/v2/sync/methodName`.", - ), - url: "sync", - }, - ApiGroup { - name: "transfer_info", - methods: [ - ApiMethod { - name: "info", - description: Some( - "In addition to the above in partial data requests (see [Get partial data](#get-partial-data) for more info):\n\nPossible values of `connection_status`:\n\nExample:\n\n```JSON\n{\n \"connection_status\":\"connected\",\n \"dht_nodes\":386,\n \"dl_info_data\":681521119,\n \"dl_info_speed\":0,\n \"dl_rate_limit\":0,\n \"up_info_data\":10747904,\n \"up_info_speed\":0,\n \"up_rate_limit\":1048576\n}\n```", - ), - parameters: None, - return_type: Some( - ReturnType { - is_list: false, - parameters: [ - ReturnTypeParameter { - name: "dl_info_speed", - description: "Global download rate (bytes/s)", - return_type: Number( - TypeInfo { - name: "dl_info_speed", - is_optional: false, - is_list: false, - description: Some( - "Global download rate (bytes/s)", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "dl_info_data", - description: "Data downloaded this session (bytes)", - return_type: Number( - TypeInfo { - name: "dl_info_data", - is_optional: false, - is_list: false, - description: Some( - "Data downloaded this session (bytes)", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "up_info_speed", - description: "Global upload rate (bytes/s)", - return_type: Number( - TypeInfo { - name: "up_info_speed", - is_optional: false, - is_list: false, - description: Some( - "Global upload rate (bytes/s)", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "up_info_data", - description: "Data uploaded this session (bytes)", - return_type: Number( - TypeInfo { - name: "up_info_data", - is_optional: false, - is_list: false, - description: Some( - "Data uploaded this session (bytes)", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "dl_rate_limit", - description: "Download rate limit (bytes/s)", - return_type: Number( - TypeInfo { - name: "dl_rate_limit", - is_optional: false, - is_list: false, - description: Some( - "Download rate limit (bytes/s)", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "up_rate_limit", - description: "Upload rate limit (bytes/s)", - return_type: Number( - TypeInfo { - name: "up_rate_limit", - is_optional: false, - is_list: false, - description: Some( - "Upload rate limit (bytes/s)", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "dht_nodes", - description: "DHT nodes connected to", - return_type: Number( - TypeInfo { - name: "dht_nodes", - is_optional: false, - is_list: false, - description: Some( - "DHT nodes connected to", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "connection_status", - description: "Connection status. See possible values here below", - return_type: String( - TypeInfo { - name: "connection_status", - is_optional: false, - is_list: false, - description: Some( - "Connection status. See possible values here below", - ), - type_description: Some( - TypeDescription { - values: [ - TypeDescriptions { - value: "connected", - description: "", - }, - TypeDescriptions { - value: "firewalled", - description: "", - }, - TypeDescriptions { - value: "disconnected", - description: "", - }, - ], - }, - ), - }, - ), - }, - ], - }, - ), - url: "info", - }, - ApiMethod { - name: "speedLimitsMode", - description: None, - parameters: None, - return_type: None, - url: "speedLimitsMode", - }, - ApiMethod { - name: "toggleSpeedLimitsMode", - description: None, - parameters: None, - return_type: None, - url: "toggleSpeedLimitsMode", - }, - ApiMethod { - name: "downloadLimit", - description: None, - parameters: None, - return_type: None, - url: "downloadLimit", - }, - ApiMethod { - name: "setDownloadLimit", - description: None, - parameters: Some( - [ - Number( - TypeInfo { - name: "limit", - is_optional: false, - is_list: false, - description: Some( - "The global download speed limit to set in bytes/second", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "setDownloadLimit", - }, - ApiMethod { - name: "uploadLimit", - description: None, - parameters: None, - return_type: None, - url: "uploadLimit", - }, - ApiMethod { - name: "setUploadLimit", - description: None, - parameters: Some( - [ - Number( - TypeInfo { - name: "limit", - is_optional: false, - is_list: false, - description: Some( - "The global upload speed limit to set in bytes/second", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "setUploadLimit", - }, - ApiMethod { - name: "banPeers", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "peers", - is_optional: false, - is_list: false, - description: Some( - "The peer to ban, or multiple peers separated by a pipe \\", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "banPeers", - }, - ], - description: Some( - "All Transfer info API methods are under \"transfer\", e.g.: `/api/v2/transfer/methodName`.", - ), - url: "transfer", - }, - ApiGroup { - name: "torrent_management", - methods: [ - ApiMethod { - name: "info", - description: Some( - "Possible values of `state`:\n\nExample:\n\n```JSON\n[\n {\n \"dlspeed\":9681262,\n \"eta\":87,\n \"f_l_piece_prio\":false,\n \"force_start\":false,\n \"hash\":\"8c212779b4abde7c6bc608063a0d008b7e40ce32\",\n \"category\":\"\",\n \"tags\": \"\",\n \"name\":\"debian-8.1.0-amd64-CD-1.iso\",\n \"num_complete\":-1,\n \"num_incomplete\":-1,\n \"num_leechs\":2,\n \"num_seeds\":54,\n \"priority\":1,\n \"progress\":0.16108787059783936,\n \"ratio\":0,\n \"seq_dl\":false,\n \"size\":657457152,\n \"state\":\"downloading\",\n \"super_seeding\":false,\n \"upspeed\":0\n },\n {\n another_torrent_info\n }\n]\n```", - ), - parameters: Some( - [ - String( - TypeInfo { - name: "filter", - is_optional: true, - is_list: false, - description: Some( - "Filter torrent list by state. Allowed state filters: all, downloading, seeding, completed, paused, active, inactive, resumed, stalled, stalled_uploading, stalled_downloading, errored", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "category", - is_optional: true, - is_list: false, - description: Some( - "Get torrents with the given category (empty string means \"without category\"; no \"category\" parameter means \"any category\" <- broken until [#11748](https://github.com/qbittorrent/qBittorrent/issues/11748) is resolved). Remember to URL-encode the category name. For example, My category becomes My%20category", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "tag", - is_optional: true, - is_list: false, - description: Some( - "Get torrents with the given tag (empty string means \"without tag\"; no \"tag\" parameter means \"any tag\". Remember to URL-encode the category name. For example, My tag becomes My%20tag", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "sort", - is_optional: true, - is_list: false, - description: Some( - "Sort torrents by given key. They can be sorted using any field of the response's JSON array (which are documented below) as the sort key.", - ), - type_description: None, - }, - ), - Bool( - TypeInfo { - name: "reverse", - is_optional: true, - is_list: false, - description: Some( - "Enable reverse sorting. Defaults to false", - ), - type_description: None, - }, - ), - Number( - TypeInfo { - name: "limit", - is_optional: true, - is_list: false, - description: Some( - "Limit the number of torrents returned", - ), - type_description: None, - }, - ), - Number( - TypeInfo { - name: "offset", - is_optional: true, - is_list: false, - description: Some( - "Set offset (if less than 0, offset from end)", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "hashes", - is_optional: true, - is_list: false, - description: Some( - "Filter by hashes. Can contain multiple hashes separated by \\", - ), - type_description: None, - }, - ), - ], - ), - return_type: Some( - ReturnType { - is_list: true, - parameters: [ - ReturnTypeParameter { - name: "added_on", - description: "Time (Unix Epoch) when the torrent was added to the client", - return_type: Number( - TypeInfo { - name: "added_on", - is_optional: false, - is_list: false, - description: Some( - "Time (Unix Epoch) when the torrent was added to the client", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "amount_left", - description: "Amount of data left to download (bytes)", - return_type: Number( - TypeInfo { - name: "amount_left", - is_optional: false, - is_list: false, - description: Some( - "Amount of data left to download (bytes)", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "auto_tmm", - description: "Whether this torrent is managed by Automatic Torrent Management", - return_type: Bool( - TypeInfo { - name: "auto_tmm", - is_optional: false, - is_list: false, - description: Some( - "Whether this torrent is managed by Automatic Torrent Management", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "availability", - description: "Percentage of file pieces currently available", - return_type: Float( - TypeInfo { - name: "availability", - is_optional: false, - is_list: false, - description: Some( - "Percentage of file pieces currently available", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "category", - description: "Category of the torrent", - return_type: String( - TypeInfo { - name: "category", - is_optional: false, - is_list: false, - description: Some( - "Category of the torrent", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "completed", - description: "Amount of transfer data completed (bytes)", - return_type: Number( - TypeInfo { - name: "completed", - is_optional: false, - is_list: false, - description: Some( - "Amount of transfer data completed (bytes)", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "completion_on", - description: "Time (Unix Epoch) when the torrent completed", - return_type: Number( - TypeInfo { - name: "completion_on", - is_optional: false, - is_list: false, - description: Some( - "Time (Unix Epoch) when the torrent completed", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "content_path", - description: "Absolute path of torrent content (root path for multifile torrents, absolute file path for singlefile torrents)", - return_type: String( - TypeInfo { - name: "content_path", - is_optional: false, - is_list: false, - description: Some( - "Absolute path of torrent content (root path for multifile torrents, absolute file path for singlefile torrents)", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "dl_limit", - description: "Torrent download speed limit (bytes/s). -1 if ulimited.", - return_type: Number( - TypeInfo { - name: "dl_limit", - is_optional: false, - is_list: false, - description: Some( - "Torrent download speed limit (bytes/s). -1 if ulimited.", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "dlspeed", - description: "Torrent download speed (bytes/s)", - return_type: Number( - TypeInfo { - name: "dlspeed", - is_optional: false, - is_list: false, - description: Some( - "Torrent download speed (bytes/s)", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "downloaded", - description: "Amount of data downloaded", - return_type: Number( - TypeInfo { - name: "downloaded", - is_optional: false, - is_list: false, - description: Some( - "Amount of data downloaded", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "downloaded_session", - description: "Amount of data downloaded this session", - return_type: Number( - TypeInfo { - name: "downloaded_session", - is_optional: false, - is_list: false, - description: Some( - "Amount of data downloaded this session", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "eta", - description: "Torrent ETA (seconds)", - return_type: Number( - TypeInfo { - name: "eta", - is_optional: false, - is_list: false, - description: Some( - "Torrent ETA (seconds)", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "f_l_piece_prio", - description: "True if first last piece are prioritized", - return_type: Bool( - TypeInfo { - name: "f_l_piece_prio", - is_optional: false, - is_list: false, - description: Some( - "True if first last piece are prioritized", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "force_start", - description: "True if force start is enabled for this torrent", - return_type: Bool( - TypeInfo { - name: "force_start", - is_optional: false, - is_list: false, - description: Some( - "True if force start is enabled for this torrent", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "hash", - description: "Torrent hash", - return_type: String( - TypeInfo { - name: "hash", - is_optional: false, - is_list: false, - description: Some( - "Torrent hash", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "last_activity", - description: "Last time (Unix Epoch) when a chunk was downloaded/uploaded", - return_type: Number( - TypeInfo { - name: "last_activity", - is_optional: false, - is_list: false, - description: Some( - "Last time (Unix Epoch) when a chunk was downloaded/uploaded", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "magnet_uri", - description: "Magnet URI corresponding to this torrent", - return_type: String( - TypeInfo { - name: "magnet_uri", - is_optional: false, - is_list: false, - description: Some( - "Magnet URI corresponding to this torrent", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "max_ratio", - description: "Maximum share ratio until torrent is stopped from seeding/uploading", - return_type: Float( - TypeInfo { - name: "max_ratio", - is_optional: false, - is_list: false, - description: Some( - "Maximum share ratio until torrent is stopped from seeding/uploading", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "max_seeding_time", - description: "Maximum seeding time (seconds) until torrent is stopped from seeding", - return_type: Number( - TypeInfo { - name: "max_seeding_time", - is_optional: false, - is_list: false, - description: Some( - "Maximum seeding time (seconds) until torrent is stopped from seeding", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "name", - description: "Torrent name", - return_type: String( - TypeInfo { - name: "name", - is_optional: false, - is_list: false, - description: Some( - "Torrent name", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "num_complete", - description: "Number of seeds in the swarm", - return_type: Number( - TypeInfo { - name: "num_complete", - is_optional: false, - is_list: false, - description: Some( - "Number of seeds in the swarm", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "num_incomplete", - description: "Number of leechers in the swarm", - return_type: Number( - TypeInfo { - name: "num_incomplete", - is_optional: false, - is_list: false, - description: Some( - "Number of leechers in the swarm", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "num_leechs", - description: "Number of leechers connected to", - return_type: Number( - TypeInfo { - name: "num_leechs", - is_optional: false, - is_list: false, - description: Some( - "Number of leechers connected to", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "num_seeds", - description: "Number of seeds connected to", - return_type: Number( - TypeInfo { - name: "num_seeds", - is_optional: false, - is_list: false, - description: Some( - "Number of seeds connected to", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "priority", - description: "Torrent priority. Returns -1 if queuing is disabled or torrent is in seed mode", - return_type: Number( - TypeInfo { - name: "priority", - is_optional: false, - is_list: false, - description: Some( - "Torrent priority. Returns -1 if queuing is disabled or torrent is in seed mode", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "progress", - description: "Torrent progress (percentage/100)", - return_type: Float( - TypeInfo { - name: "progress", - is_optional: false, - is_list: false, - description: Some( - "Torrent progress (percentage/100)", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "ratio", - description: "Torrent share ratio. Max ratio value: 9999.", - return_type: Float( - TypeInfo { - name: "ratio", - is_optional: false, - is_list: false, - description: Some( - "Torrent share ratio. Max ratio value: 9999.", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "ratio_limit", - description: "TODO (what is different from max_ratio?)", - return_type: Float( - TypeInfo { - name: "ratio_limit", - is_optional: false, - is_list: false, - description: Some( - "TODO (what is different from max_ratio?)", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "save_path", - description: "Path where this torrent's data is stored", - return_type: String( - TypeInfo { - name: "save_path", - is_optional: false, - is_list: false, - description: Some( - "Path where this torrent's data is stored", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "seeding_time", - description: "Torrent elapsed time while complete (seconds)", - return_type: Number( - TypeInfo { - name: "seeding_time", - is_optional: false, - is_list: false, - description: Some( - "Torrent elapsed time while complete (seconds)", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "seeding_time_limit", - description: "TODO (what is different from max_seeding_time?) seeding_time_limit is a per torrent setting, when Automatic Torrent Management is disabled, furthermore then max_seeding_time is set to seeding_time_limit for this torrent. If Automatic Torrent Management is enabled, the value is -2. And if max_seeding_time is unset it have a default value -1.", - return_type: Number( - TypeInfo { - name: "seeding_time_limit", - is_optional: false, - is_list: false, - description: Some( - "TODO (what is different from max_seeding_time?) seeding_time_limit is a per torrent setting, when Automatic Torrent Management is disabled, furthermore then max_seeding_time is set to seeding_time_limit for this torrent. If Automatic Torrent Management is enabled, the value is -2. And if max_seeding_time is unset it have a default value -1.", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "seen_complete", - description: "Time (Unix Epoch) when this torrent was last seen complete", - return_type: Number( - TypeInfo { - name: "seen_complete", - is_optional: false, - is_list: false, - description: Some( - "Time (Unix Epoch) when this torrent was last seen complete", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "seq_dl", - description: "True if sequential download is enabled", - return_type: Bool( - TypeInfo { - name: "seq_dl", - is_optional: false, - is_list: false, - description: Some( - "True if sequential download is enabled", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "size", - description: "Total size (bytes) of files selected for download", - return_type: Number( - TypeInfo { - name: "size", - is_optional: false, - is_list: false, - description: Some( - "Total size (bytes) of files selected for download", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "state", - description: "Torrent state. See table here below for the possible values", - return_type: String( - TypeInfo { - name: "state", - is_optional: false, - is_list: false, - description: Some( - "Torrent state. See table here below for the possible values", - ), - type_description: Some( - TypeDescription { - values: [ - TypeDescriptions { - value: "error", - description: "Some error occurred, applies to paused torrents", - }, - TypeDescriptions { - value: "missingFiles", - description: "Torrent data files is missing", - }, - TypeDescriptions { - value: "uploading", - description: "Torrent is being seeded and data is being transferred", - }, - TypeDescriptions { - value: "pausedUP", - description: "Torrent is paused and has finished downloading", - }, - TypeDescriptions { - value: "queuedUP", - description: "Queuing is enabled and torrent is queued for upload", - }, - TypeDescriptions { - value: "stalledUP", - description: "Torrent is being seeded, but no connection were made", - }, - TypeDescriptions { - value: "checkingUP", - description: "Torrent has finished downloading and is being checked", - }, - TypeDescriptions { - value: "forcedUP", - description: "Torrent is forced to uploading and ignore queue limit", - }, - TypeDescriptions { - value: "allocating", - description: "Torrent is allocating disk space for download", - }, - TypeDescriptions { - value: "downloading", - description: "Torrent is being downloaded and data is being transferred", - }, - TypeDescriptions { - value: "metaDL", - description: "Torrent has just started downloading and is fetching metadata", - }, - TypeDescriptions { - value: "pausedDL", - description: "Torrent is paused and has NOT finished downloading", - }, - TypeDescriptions { - value: "queuedDL", - description: "Queuing is enabled and torrent is queued for download", - }, - TypeDescriptions { - value: "stalledDL", - description: "Torrent is being downloaded, but no connection were made", - }, - TypeDescriptions { - value: "checkingDL", - description: "Same as checkingUP, but torrent has NOT finished downloading", - }, - TypeDescriptions { - value: "forcedDL", - description: "Torrent is forced to downloading to ignore queue limit", - }, - TypeDescriptions { - value: "checkingResumeData", - description: "Checking resume data on qBt startup", - }, - TypeDescriptions { - value: "moving", - description: "Torrent is moving to another location", - }, - TypeDescriptions { - value: "unknown", - description: "Unknown status", - }, - ], - }, - ), - }, - ), - }, - ReturnTypeParameter { - name: "super_seeding", - description: "True if super seeding is enabled", - return_type: Bool( - TypeInfo { - name: "super_seeding", - is_optional: false, - is_list: false, - description: Some( - "True if super seeding is enabled", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "tags", - description: "Comma-concatenated tag list of the torrent", - return_type: String( - TypeInfo { - name: "tags", - is_optional: false, - is_list: false, - description: Some( - "Comma-concatenated tag list of the torrent", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "time_active", - description: "Total active time (seconds)", - return_type: Number( - TypeInfo { - name: "time_active", - is_optional: false, - is_list: false, - description: Some( - "Total active time (seconds)", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "total_size", - description: "Total size (bytes) of all file in this torrent (including unselected ones)", - return_type: Number( - TypeInfo { - name: "total_size", - is_optional: false, - is_list: false, - description: Some( - "Total size (bytes) of all file in this torrent (including unselected ones)", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "tracker", - description: "The first tracker with working status. Returns empty string if no tracker is working.", - return_type: String( - TypeInfo { - name: "tracker", - is_optional: false, - is_list: false, - description: Some( - "The first tracker with working status. Returns empty string if no tracker is working.", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "up_limit", - description: "Torrent upload speed limit (bytes/s). -1 if ulimited.", - return_type: Number( - TypeInfo { - name: "up_limit", - is_optional: false, - is_list: false, - description: Some( - "Torrent upload speed limit (bytes/s). -1 if ulimited.", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "uploaded", - description: "Amount of data uploaded", - return_type: Number( - TypeInfo { - name: "uploaded", - is_optional: false, - is_list: false, - description: Some( - "Amount of data uploaded", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "uploaded_session", - description: "Amount of data uploaded this session", - return_type: Number( - TypeInfo { - name: "uploaded_session", - is_optional: false, - is_list: false, - description: Some( - "Amount of data uploaded this session", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "upspeed", - description: "Torrent upload speed (bytes/s)", - return_type: Number( - TypeInfo { - name: "upspeed", - is_optional: false, - is_list: false, - description: Some( - "Torrent upload speed (bytes/s)", - ), - type_description: None, - }, - ), - }, - ], - }, - ), - url: "info", - }, - ApiMethod { - name: "properties", - description: Some( - "- empty, if the torrent hash is invalid\n- otherwise, a JSON object with the following fields\n\nNB: `-1` is returned if the type of the property is integer but its value is not known.\n\nExample:\n\n```JSON\n{\n \"addition_date\":1438429165,\n \"comment\":\"\\\"Debian CD from cdimage.debian.org\\\"\",\n \"completion_date\":1438429234,\n \"created_by\":\"\",\n \"creation_date\":1433605214,\n \"dl_limit\":-1,\n \"dl_speed\":0,\n \"dl_speed_avg\":9736015,\n \"eta\":8640000,\n \"last_seen\":1438430354,\n \"nb_connections\":3,\n \"nb_connections_limit\":250,\n \"peers\":1,\n \"peers_total\":89,\n \"piece_size\":524288,\n \"pieces_have\":1254,\n \"pieces_num\":1254,\n \"reannounce\":672,\n \"save_path\":\"/Downloads/debian-8.1.0-amd64-CD-1.iso\",\n \"seeding_time\":1128,\n \"seeds\":1,\n \"seeds_total\":254,\n \"share_ratio\":0.00072121022562178299,\n \"time_elapsed\":1197,\n \"total_downloaded\":681521119,\n \"total_downloaded_session\":681521119,\n \"total_size\":657457152,\n \"total_uploaded\":491520,\n \"total_uploaded_session\":491520,\n \"total_wasted\":23481724,\n \"up_limit\":-1,\n \"up_speed\":0,\n \"up_speed_avg\":410\n}\n```", - ), - parameters: Some( - [ - String( - TypeInfo { - name: "hash", - is_optional: false, - is_list: false, - description: Some( - "The hash of the torrent you want to get the generic properties of", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "properties", - }, - ApiMethod { - name: "trackers", - description: Some( - "Possible values of `status`:\n\nExample:\n\n```JSON\n[\n {\n \"msg\":\"\",\n \"num_peers\":100,\n \"status\":2,\n \"url\":\"http://bttracker.debian.org:6969/announce\"\n },\n {\n another_tracker_info\n }\n]\n```", - ), - parameters: Some( - [ - String( - TypeInfo { - name: "hash", - is_optional: false, - is_list: false, - description: Some( - "The hash of the torrent you want to get the trackers of", - ), - type_description: None, - }, - ), - ], - ), - return_type: Some( - ReturnType { - is_list: true, - parameters: [ - ReturnTypeParameter { - name: "url", - description: "Tracker url", - return_type: String( - TypeInfo { - name: "url", - is_optional: false, - is_list: false, - description: Some( - "Tracker url", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "status", - description: "Tracker status. See the table below for possible values", - return_type: Number( - TypeInfo { - name: "status", - is_optional: false, - is_list: false, - description: Some( - "Tracker status. See the table below for possible values", - ), - type_description: Some( - TypeDescription { - values: [ - TypeDescriptions { - value: "0", - description: "Tracker is disabled (used for DHT, PeX, and LSD)", - }, - TypeDescriptions { - value: "1", - description: "Tracker has not been contacted yet", - }, - TypeDescriptions { - value: "2", - description: "Tracker has been contacted and is working", - }, - TypeDescriptions { - value: "3", - description: "Tracker is updating", - }, - TypeDescriptions { - value: "4", - description: "Tracker has been contacted, but it is not working (or doesn't send proper replies)", - }, - ], - }, - ), - }, - ), - }, - ReturnTypeParameter { - name: "tier", - description: "Tracker priority tier. Lower tier trackers are tried before higher tiers. Tier numbers are valid when >= 0, < 0 is used as placeholder when tier does not exist for special entries (such as DHT).", - return_type: Number( - TypeInfo { - name: "tier", - is_optional: false, - is_list: false, - description: Some( - "Tracker priority tier. Lower tier trackers are tried before higher tiers. Tier numbers are valid when >= 0, < 0 is used as placeholder when tier does not exist for special entries (such as DHT).", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "num_peers", - description: "Number of peers for current torrent, as reported by the tracker", - return_type: Number( - TypeInfo { - name: "num_peers", - is_optional: false, - is_list: false, - description: Some( - "Number of peers for current torrent, as reported by the tracker", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "num_seeds", - description: "Number of seeds for current torrent, asreported by the tracker", - return_type: Number( - TypeInfo { - name: "num_seeds", - is_optional: false, - is_list: false, - description: Some( - "Number of seeds for current torrent, asreported by the tracker", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "num_leeches", - description: "Number of leeches for current torrent, as reported by the tracker", - return_type: Number( - TypeInfo { - name: "num_leeches", - is_optional: false, - is_list: false, - description: Some( - "Number of leeches for current torrent, as reported by the tracker", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "num_downloaded", - description: "Number of completed downlods for current torrent, as reported by the tracker", - return_type: Number( - TypeInfo { - name: "num_downloaded", - is_optional: false, - is_list: false, - description: Some( - "Number of completed downlods for current torrent, as reported by the tracker", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "msg", - description: "Tracker message (there is no way of knowing what this message is - it's up to tracker admins)", - return_type: String( - TypeInfo { - name: "msg", - is_optional: false, - is_list: false, - description: Some( - "Tracker message (there is no way of knowing what this message is - it's up to tracker admins)", - ), - type_description: None, - }, - ), - }, - ], - }, - ), - url: "trackers", - }, - ApiMethod { - name: "webseeds", - description: Some( - "Example:\n\n```JSON\n[\n {\n \"url\":\"http://some_url/\"\n },\n {\n \"url\":\"http://some_other_url/\"\n }\n]\n```", - ), - parameters: Some( - [ - String( - TypeInfo { - name: "hash", - is_optional: false, - is_list: false, - description: Some( - "The hash of the torrent you want to get the webseeds of", - ), - type_description: None, - }, - ), - ], - ), - return_type: Some( - ReturnType { - is_list: true, - parameters: [ - ReturnTypeParameter { - name: "url", - description: "URL of the web seed", - return_type: String( - TypeInfo { - name: "url", - is_optional: false, - is_list: false, - description: Some( - "URL of the web seed", - ), - type_description: None, - }, - ), - }, - ], - }, - ), - url: "webseeds", - }, - ApiMethod { - name: "files", - description: Some( - "- empty, if the torrent hash is invalid\n- otherwise, a JSON array, where each element contains info about one file, with the following fields\n\nPossible values of `priority`:\n\nExample:\n\n```JSON\n\n[\n {\n \"index\":0,\n \"is_seed\":false,\n \"name\":\"debian-8.1.0-amd64-CD-1.iso\",\n \"piece_range\":[0,1253],\n \"priority\":1,\n \"progress\":0,\n \"size\":657457152,\n \"availability\":0.5,\n }\n]\n```", - ), - parameters: Some( - [ - String( - TypeInfo { - name: "hash", - is_optional: false, - is_list: false, - description: Some( - "The hash of the torrent you want to get the contents of", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "indexes", - is_optional: true, - is_list: false, - description: Some( - "The indexes of the files you want to retrieve. indexes can contain multiple values separated by \\", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "files", - }, - ApiMethod { - name: "pieceStates", - description: Some( - "- empty, if the torrent hash is invalid\n- otherwise, an array of states (integers) of all pieces (in order) of a specific torrent.\n\nValue meanings are defined as below:\n\nExample:\n\n```JSON\n[0,0,2,1,0,0,2,1]\n```", - ), - parameters: Some( - [ - String( - TypeInfo { - name: "hash", - is_optional: false, - is_list: false, - description: Some( - "The hash of the torrent you want to get the pieces' states of", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "pieceStates", - }, - ApiMethod { - name: "pieceHashes", - description: Some( - "- empty, if the torrent hash is invalid\n- otherwise, an array of hashes (strings) of all pieces (in order) of a specific torrent.\n\nExample:\n\n```JSON\n[\"54eddd830a5b58480a6143d616a97e3a6c23c439\",\"f8a99d225aa4241db100f88407fc3bdaead583ab\",\"928fb615b9bd4dd8f9e9022552c8f8f37ef76f58\"]\n```", - ), - parameters: Some( - [ - String( - TypeInfo { - name: "hash", - is_optional: false, - is_list: false, - description: Some( - "The hash of the torrent you want to get the pieces' hashes of", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "pieceHashes", - }, - ApiMethod { - name: "pause", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "hashes", - is_optional: false, - is_list: false, - description: Some( - "The hashes of the torrents you want to pause. hashes can contain multiple hashes separated by \\", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "pause", - }, - ApiMethod { - name: "resume", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "hashes", - is_optional: false, - is_list: false, - description: Some( - "The hashes of the torrents you want to resume. hashes can contain multiple hashes separated by \\", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "resume", - }, - ApiMethod { - name: "delete", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "hashes", - is_optional: false, - is_list: false, - description: Some( - "The hashes of the torrents you want to delete. hashes can contain multiple hashes separated by \\", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "delete", - }, - ApiMethod { - name: "recheck", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "hashes", - is_optional: false, - is_list: false, - description: Some( - "The hashes of the torrents you want to recheck. hashes can contain multiple hashes separated by \\", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "recheck", - }, - ApiMethod { - name: "reannounce", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "hashes", - is_optional: false, - is_list: false, - description: Some( - "The hashes of the torrents you want to reannounce. hashes can contain multiple hashes separated by \\", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "reannounce", - }, - ApiMethod { - name: "add", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "urls", - is_optional: false, - is_list: false, - description: Some( - "URLs separated with newlines", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "savepath", - is_optional: true, - is_list: false, - description: Some( - "Download folder", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "cookie", - is_optional: true, - is_list: false, - description: Some( - "Cookie sent to download the .torrent file", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "category", - is_optional: true, - is_list: false, - description: Some( - "Category for the torrent", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "tags", - is_optional: true, - is_list: false, - description: Some( - "Tags for the torrent, split by ','", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "skip_checking", - is_optional: true, - is_list: false, - description: Some( - "Skip hash checking. Possible values are true, false (default)", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "paused", - is_optional: true, - is_list: false, - description: Some( - "Add torrents in the paused state. Possible values are true, false (default)", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "root_folder", - is_optional: true, - is_list: false, - description: Some( - "Create the root folder. Possible values are true, false, unset (default)", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "rename", - is_optional: true, - is_list: false, - description: Some( - "Rename torrent", - ), - type_description: None, - }, - ), - Number( - TypeInfo { - name: "upLimit", - is_optional: true, - is_list: false, - description: Some( - "Set torrent upload speed limit. Unit in bytes/second", - ), - type_description: None, - }, - ), - Number( - TypeInfo { - name: "dlLimit", - is_optional: true, - is_list: false, - description: Some( - "Set torrent download speed limit. Unit in bytes/second", - ), - type_description: None, - }, - ), - Float( - TypeInfo { - name: "ratioLimit", - is_optional: true, - is_list: false, - description: Some( - "Set torrent share ratio limit", - ), - type_description: None, - }, - ), - Number( - TypeInfo { - name: "seedingTimeLimit", - is_optional: true, - is_list: false, - description: Some( - "Set torrent seeding time limit. Unit in seconds", - ), - type_description: None, - }, - ), - Bool( - TypeInfo { - name: "autoTMM", - is_optional: true, - is_list: false, - description: Some( - "Whether Automatic Torrent Management should be used", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "sequentialDownload", - is_optional: true, - is_list: false, - description: Some( - "Enable sequential download. Possible values are true, false (default)", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "firstLastPiecePrio", - is_optional: true, - is_list: false, - description: Some( - "Prioritize download first last piece. Possible values are true, false (default)", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "add", - }, - ApiMethod { - name: "addTrackers", - description: None, - parameters: None, - return_type: None, - url: "addTrackers", - }, - ApiMethod { - name: "editTracker", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "hash", - is_optional: false, - is_list: false, - description: Some( - "The hash of the torrent", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "origUrl", - is_optional: false, - is_list: false, - description: Some( - "The tracker URL you want to edit", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "newUrl", - is_optional: false, - is_list: false, - description: Some( - "The new URL to replace the origUrl", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "editTracker", - }, - ApiMethod { - name: "removeTrackers", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "hash", - is_optional: false, - is_list: false, - description: Some( - "The hash of the torrent", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "urls", - is_optional: false, - is_list: false, - description: Some( - "URLs to remove, separated by \\", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "removeTrackers", - }, - ApiMethod { - name: "addPeers", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "hashes", - is_optional: false, - is_list: false, - description: Some( - "The hash of the torrent, or multiple hashes separated by a pipe \\", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "peers", - is_optional: false, - is_list: false, - description: Some( - "The peer to add, or multiple peers separated by a pipe \\", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "addPeers", - }, - ApiMethod { - name: "increasePrio", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "hashes", - is_optional: false, - is_list: false, - description: Some( - "The hashes of the torrents you want to increase the priority of. hashes can contain multiple hashes separated by \\", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "increasePrio", - }, - ApiMethod { - name: "decreasePrio", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "hashes", - is_optional: false, - is_list: false, - description: Some( - "The hashes of the torrents you want to decrease the priority of. hashes can contain multiple hashes separated by \\", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "decreasePrio", - }, - ApiMethod { - name: "topPrio", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "hashes", - is_optional: false, - is_list: false, - description: Some( - "The hashes of the torrents you want to set to the maximum priority. hashes can contain multiple hashes separated by \\", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "topPrio", - }, - ApiMethod { - name: "bottomPrio", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "hashes", - is_optional: false, - is_list: false, - description: Some( - "The hashes of the torrents you want to set to the minimum priority. hashes can contain multiple hashes separated by \\", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "bottomPrio", - }, - ApiMethod { - name: "filePrio", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "hash", - is_optional: false, - is_list: false, - description: Some( - "The hash of the torrent", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "id", - is_optional: false, - is_list: false, - description: Some( - "File ids, separated by \\", - ), - type_description: None, - }, - ), - Number( - TypeInfo { - name: "priority", - is_optional: false, - is_list: false, - description: Some( - "File priority to set (consult [torrent contents API](#get-torrent-contents) for possible values)", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "filePrio", - }, - ApiMethod { - name: "downloadLimit", - description: None, - parameters: None, - return_type: None, - url: "downloadLimit", - }, - ApiMethod { - name: "setShareLimits", - description: None, - parameters: None, - return_type: None, - url: "setShareLimits", - }, - ApiMethod { - name: "uploadLimit", - description: None, - parameters: None, - return_type: None, - url: "uploadLimit", - }, - ApiMethod { - name: "setUploadLimit", - description: None, - parameters: None, - return_type: None, - url: "setUploadLimit", - }, - ApiMethod { - name: "setLocation", - description: None, - parameters: None, - return_type: None, - url: "setLocation", - }, - ApiMethod { - name: "rename", - description: None, - parameters: None, - return_type: None, - url: "rename", - }, - ApiMethod { - name: "setCategory", - description: None, - parameters: None, - return_type: None, - url: "setCategory", - }, - ApiMethod { - name: "categories", - description: None, - parameters: None, - return_type: None, - url: "categories", - }, - ApiMethod { - name: "createCategory", - description: None, - parameters: None, - return_type: None, - url: "createCategory", - }, - ApiMethod { - name: "editCategory", - description: None, - parameters: None, - return_type: None, - url: "editCategory", - }, - ApiMethod { - name: "removeCategories", - description: None, - parameters: None, - return_type: None, - url: "removeCategories", - }, - ApiMethod { - name: "addTags", - description: None, - parameters: None, - return_type: None, - url: "addTags", - }, - ApiMethod { - name: "removeTags", - description: None, - parameters: None, - return_type: None, - url: "removeTags", - }, - ApiMethod { - name: "tags", - description: None, - parameters: None, - return_type: None, - url: "tags", - }, - ApiMethod { - name: "createTags", - description: None, - parameters: None, - return_type: None, - url: "createTags", - }, - ApiMethod { - name: "deleteTags", - description: None, - parameters: None, - return_type: None, - url: "deleteTags", - }, - ApiMethod { - name: "setAutoManagement", - description: None, - parameters: None, - return_type: None, - url: "setAutoManagement", - }, - ApiMethod { - name: "toggleSequentialDownload", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "hashes", - is_optional: false, - is_list: false, - description: Some( - "The hashes of the torrents you want to toggle sequential download for. hashes can contain multiple hashes separated by \\", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "toggleSequentialDownload", - }, - ApiMethod { - name: "toggleFirstLastPiecePrio", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "hashes", - is_optional: false, - is_list: false, - description: Some( - "The hashes of the torrents you want to toggle the first/last piece priority for. hashes can contain multiple hashes separated by \\", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "toggleFirstLastPiecePrio", - }, - ApiMethod { - name: "setForceStart", - description: None, - parameters: None, - return_type: None, - url: "setForceStart", - }, - ApiMethod { - name: "setSuperSeeding", - description: None, - parameters: None, - return_type: None, - url: "setSuperSeeding", - }, - ApiMethod { - name: "renameFile", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "hash", - is_optional: false, - is_list: false, - description: Some( - "The hash of the torrent", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "oldPath", - is_optional: false, - is_list: false, - description: Some( - "The old path of the torrent", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "newPath", - is_optional: false, - is_list: false, - description: Some( - "The new path to use for the file", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "renameFile", - }, - ApiMethod { - name: "renameFolder", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "hash", - is_optional: false, - is_list: false, - description: Some( - "The hash of the torrent", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "oldPath", - is_optional: false, - is_list: false, - description: Some( - "The old path of the torrent", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "newPath", - is_optional: false, - is_list: false, - description: Some( - "The new path to use for the file", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "renameFolder", - }, - ], - description: Some( - "All Torrent management API methods are under \"torrents\", e.g.: `/api/v2/torrents/methodName`.", - ), - url: "torrents", - }, - ApiGroup { - name: "rss", - methods: [ - ApiMethod { - name: "addFolder", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "path", - is_optional: false, - is_list: false, - description: Some( - "Full path of added folder (e.g. \"The Pirate Bay\\Top100\")", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "addFolder", - }, - ApiMethod { - name: "addFeed", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "url", - is_optional: false, - is_list: false, - description: Some( - "URL of RSS feed (e.g. \"[http://thepiratebay.org/rss//top100/200](http://thepiratebay.org/rss//top100/200)\")", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "path", - is_optional: true, - is_list: false, - description: Some( - "Full path of added folder (e.g. \"The Pirate Bay\\Top100\\Video\")", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "addFeed", - }, - ApiMethod { - name: "removeItem", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "path", - is_optional: false, - is_list: false, - description: Some( - "Full path of removed item (e.g. \"The Pirate Bay\\Top100\")", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "removeItem", - }, - ApiMethod { - name: "moveItem", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "itemPath", - is_optional: false, - is_list: false, - description: Some( - "Current full path of item (e.g. \"The Pirate Bay\\Top100\")", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "destPath", - is_optional: false, - is_list: false, - description: Some( - "New full path of item (e.g. \"The Pirate Bay\")", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "moveItem", - }, - ApiMethod { - name: "items", - description: None, - parameters: Some( - [ - Bool( - TypeInfo { - name: "withData", - is_optional: true, - is_list: false, - description: Some( - "True if you need current feed articles", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "items", - }, - ApiMethod { - name: "markAsRead", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "itemPath", - is_optional: false, - is_list: false, - description: Some( - "Current full path of item (e.g. \"The Pirate Bay\\Top100\")", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "articleId", - is_optional: true, - is_list: false, - description: Some( - "ID of article", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "markAsRead", - }, - ApiMethod { - name: "refreshItem", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "itemPath", - is_optional: false, - is_list: false, - description: Some( - "Current full path of item (e.g. \"The Pirate Bay\\Top100\")", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "refreshItem", - }, - ApiMethod { - name: "setRule", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "ruleName", - is_optional: false, - is_list: false, - description: Some( - "Rule name (e.g. \"Punisher\")", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "ruleDef", - is_optional: false, - is_list: false, - description: Some( - "JSON encoded rule definition", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "setRule", - }, - ApiMethod { - name: "renameRule", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "ruleName", - is_optional: false, - is_list: false, - description: Some( - "Rule name (e.g. \"Punisher\")", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "newRuleName", - is_optional: false, - is_list: false, - description: Some( - "New rule name (e.g. \"The Punisher\")", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "renameRule", - }, - ApiMethod { - name: "removeRule", - description: None, - parameters: Some( - [ - String( - TypeInfo { - name: "ruleName", - is_optional: false, - is_list: false, - description: Some( - "Rule name (e.g. \"Punisher\")", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "removeRule", - }, - ApiMethod { - name: "rules", - description: None, - parameters: None, - return_type: None, - url: "rules", - }, - ApiMethod { - name: "matchingArticles", - description: None, - parameters: None, - return_type: None, - url: "matchingArticles", - }, - ], - description: Some( - "All RSS API methods are under \"rss\", e.g.: `/api/v2/rss/methodName`.", - ), - url: "rss", - }, - ApiGroup { - name: "search", - methods: [ - ApiMethod { - name: "start", - description: Some( - "Example:\n\n```JSON\n{\n \"id\": 12345\n}\n```", - ), - parameters: Some( - [ - String( - TypeInfo { - name: "pattern", - is_optional: false, - is_list: false, - description: Some( - "Pattern to search for (e.g. \"Ubuntu 18.04\")", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "plugins", - is_optional: false, - is_list: false, - description: Some( - "Plugins to use for searching (e.g. \"legittorrents\"). Supports multiple plugins separated by \\", - ), - type_description: None, - }, - ), - String( - TypeInfo { - name: "category", - is_optional: false, - is_list: false, - description: Some( - "Categories to limit your search to (e.g. \"legittorrents\"). Available categories depend on the specified plugins. Also supports all", - ), - type_description: None, - }, - ), - ], - ), - return_type: Some( - ReturnType { - is_list: false, - parameters: [ - ReturnTypeParameter { - name: "id", - description: "ID of the search job", - return_type: Number( - TypeInfo { - name: "id", - is_optional: false, - is_list: false, - description: Some( - "ID of the search job", - ), - type_description: None, - }, - ), - }, - ], - }, - ), - url: "start", - }, - ApiMethod { - name: "stop", - description: None, - parameters: Some( - [ - Number( - TypeInfo { - name: "id", - is_optional: false, - is_list: false, - description: Some( - "ID of the search job", - ), - type_description: None, - }, - ), - ], - ), - return_type: None, - url: "stop", - }, - ApiMethod { - name: "status", - description: Some( - "Example:\n\n```JSON\n[\n {\n \"id\": 12345,\n \"status\": \"Running\",\n \"total\": 170\n }\n]\n```", - ), - parameters: Some( - [ - Number( - TypeInfo { - name: "id", - is_optional: true, - is_list: false, - description: Some( - "ID of the search job. If not specified, all search jobs are returned", - ), - type_description: None, - }, - ), - ], - ), - return_type: Some( - ReturnType { - is_list: true, - parameters: [ - ReturnTypeParameter { - name: "id", - description: "ID of the search job", - return_type: Number( - TypeInfo { - name: "id", - is_optional: false, - is_list: false, - description: Some( - "ID of the search job", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "status", - description: "Current status of the search job (either Running or Stopped)", - return_type: String( - TypeInfo { - name: "status", - is_optional: false, - is_list: false, - description: Some( - "Current status of the search job (either Running or Stopped)", - ), - type_description: None, - }, - ), - }, - ReturnTypeParameter { - name: "total", - description: "Total number of results. If the status is Running this number may contineu to increase", - return_type: Number( - TypeInfo { - name: "total", - is_optional: false, - is_list: false, - description: Some( - "Total number of results. If the status is Running this number may contineu to increase", - ), - type_description: None, - }, - ), - }, - ], - }, - ), - url: "status", - }, - ApiMethod { - name: "results", - description: None, - parameters: Some( - [ - Number( - TypeInfo { - name: "id", - is_optional: false, - is_list: false, - description: Some( - "ID of the search job", - ), - type_description: None, - }, - ), - Number( - TypeInfo { - name: "limit", - is_optional: true, - is_list: false, - description: Some( - "max number of results to return. 0 or negative means no limit", - ), - type_description: None, - }, - ), - Number( - TypeInfo { - name: "offset", - is_optional: true, - is_list: false, - description: Some( - "result to start at. A negative number means count backwards (e.g. -2 returns the 2 most recent results)", - ), - type_description: None, - }, - ), - ], - ), - return_type: Some( - ReturnType { - is_list: false, - parameters: [], - }, - ), - url: "results", - }, - ], - description: Some( - "All Search API methods are under \"search\", e.g.: `/api/v2/search/methodName`.", - ), - url: "search", - }, -] \ No newline at end of file diff --git a/qbittorrent-web-api-gen/src/parser/token_tree.txt b/qbittorrent-web-api-gen/src/parser/token_tree.txt deleted file mode 100644 index 52bd36c..0000000 --- a/qbittorrent-web-api-gen/src/parser/token_tree.txt +++ /dev/null @@ -1,13793 +0,0 @@ -TokenTree { - title: None, - content: [ - Text( - "This WebUI API documentation applies to qBittorrent v4.1+. For other WebUI API versions, visit [WebUI API](https://github.com/qbittorrent/qBittorrent/wiki#WebUI-API).", - ), - Text( - "", - ), - ], - children: [ - TokenTree { - title: Some( - "Table of Contents", - ), - content: [ - Text( - "", - ), - Text( - "1. [Changes](#changes)", - ), - Text( - " 1. [API v2.0](#api-v20)", - ), - Text( - " 1. [API v2.0.1](#api-v201)", - ), - Text( - " 1. [API v2.0.2](#api-v202)", - ), - Text( - " 1. [API v2.1.0](#api-v210)", - ), - Text( - " 1. [API v2.1.1](#api-v211)", - ), - Text( - " 1. [API v2.2.0](#api-v220)", - ), - Text( - " 1. [API v2.2.1](#api-v221)", - ), - Text( - " 1. [API v2.3.0](#api-v230)", - ), - Text( - " 1. [API v2.4.0](#api-v240)", - ), - Text( - " 1. [API v2.4.1](#api-v241)", - ), - Text( - " 1. [API v2.5.0](#api-v250)", - ), - Text( - " 1. [API v2.5.1](#api-v251)", - ), - Text( - " 1. [API v2.6.0](#api-v260)", - ), - Text( - " 1. [API v2.6.1](#api-v261)", - ), - Text( - " 1. [API v2.6.2](#api-v262)", - ), - Text( - " 1. [API v2.7.0](#api-v270)", - ), - Text( - " 1. [API v2.8.0](#api-v280)", - ), - Text( - " 1. [API v2.8.1](#api-v281)", - ), - Text( - " 1. [API v2.8.2](#api-v282)", - ), - Text( - " 1. [API v2.8.3](#api-v283)", - ), - Text( - "1. [General information](#general-information)", - ), - Text( - "1. [Authentication](#authentication)", - ), - Text( - " 1. [Login](#login)", - ), - Text( - " 1. [Logout](#logout)", - ), - Text( - "1. [Application](#application)", - ), - Text( - " 1. [Get application version](#get-application-version)", - ), - Text( - " 1. [Get API version](#get-api-version)", - ), - Text( - " 1. [Get build info](#get-build-info)", - ), - Text( - " 1. [Shutdown application](#shutdown-application)", - ), - Text( - " 1. [Get application preferences](#get-application-preferences)", - ), - Text( - " 1. [Set application preferences](#set-application-preferences)", - ), - Text( - " 1. [Get default save path](#get-default-save-path)", - ), - Text( - "1. [Log](#log)", - ), - Text( - " 1. [Get log](#get-log)", - ), - Text( - " 1. [Get peer log](#get-peer-log)", - ), - Text( - "1. [Sync](#sync)", - ), - Text( - " 1. [Get main data](#get-main-data)", - ), - Text( - " 1. [Get torrent peers data](#get-torrent-peers-data)", - ), - Text( - "1. [Transfer info](#transfer-info)", - ), - Text( - " 1. [Get global transfer info](#get-global-transfer-info)", - ), - Text( - " 1. [Get alternative speed limits state](#get-alternative-speed-limits-state)", - ), - Text( - " 1. [Toggle alternative speed limits](#toggle-alternative-speed-limits)", - ), - Text( - " 1. [Get global download limit](#get-global-download-limit)", - ), - Text( - " 1. [Set global download limit](#set-global-download-limit)", - ), - Text( - " 1. [Get global upload limit](#get-global-upload-limit)", - ), - Text( - " 1. [Set global upload limit](#set-global-upload-limit)", - ), - Text( - " 1. [Ban peers](#ban-peers)", - ), - Text( - "1. [Torrent management](#torrent-management)", - ), - Text( - " 1. [Get torrent list](#get-torrent-list)", - ), - Text( - " 1. [Get torrent generic properties](#get-torrent-generic-properties)", - ), - Text( - " 1. [Get torrent trackers](#get-torrent-trackers)", - ), - Text( - " 1. [Get torrent web seeds](#get-torrent-web-seeds)", - ), - Text( - " 1. [Get torrent contents](#get-torrent-contents)", - ), - Text( - " 1. [Get torrent pieces' states](#get-torrent-pieces-states)", - ), - Text( - " 1. [Get torrent pieces' hashes](#get-torrent-pieces-hashes)", - ), - Text( - " 1. [Pause torrents](#pause-torrents)", - ), - Text( - " 1. [Resume torrents](#resume-torrents)", - ), - Text( - " 1. [Delete torrents](#delete-torrents)", - ), - Text( - " 1. [Recheck torrents](#recheck-torrents)", - ), - Text( - " 1. [Reannounce torrents](#reannounce-torrents)", - ), - Text( - " 1. [Edit trackers](#edit-trackers)", - ), - Text( - " 1. [Remove trackers](#remove-trackers)", - ), - Text( - " 1. [Add peers](#add-peers)", - ), - Text( - " 1. [Add new torrent](#add-new-torrent)", - ), - Text( - " 1. [Add trackers to torrent](#add-trackers-to-torrent)", - ), - Text( - " 1. [Increase torrent priority](#increase-torrent-priority)", - ), - Text( - " 1. [Decrease torrent priority](#decrease-torrent-priority)", - ), - Text( - " 1. [Maximal torrent priority](#maximal-torrent-priority)", - ), - Text( - " 1. [Minimal torrent priority](#minimal-torrent-priority)", - ), - Text( - " 1. [Set file priority](#set-file-priority)", - ), - Text( - " 1. [Get torrent download limit](#get-torrent-download-limit)", - ), - Text( - " 1. [Set torrent download limit](#set-torrent-download-limit)", - ), - Text( - " 1. [Set torrent share limit](#set-torrent-share-limit)", - ), - Text( - " 1. [Get torrent upload limit](#get-torrent-upload-limit)", - ), - Text( - " 1. [Set torrent upload limit](#set-torrent-upload-limit)", - ), - Text( - " 1. [Set torrent location](#set-torrent-location)", - ), - Text( - " 1. [Set torrent name](#set-torrent-name)", - ), - Text( - " 1. [Set torrent category](#set-torrent-category)", - ), - Text( - " 1. [Get all categories](#get-all-categories)", - ), - Text( - " 1. [Add new category](#add-new-category)", - ), - Text( - " 1. [Edit category](#edit-category)", - ), - Text( - " 1. [Remove categories](#remove-categories)", - ), - Text( - " 1. [Add torrent tags](#add-torrent-tags)", - ), - Text( - " 1. [Remove torrent tags](#remove-torrent-tags)", - ), - Text( - " 1. [Get all tags](#get-all-tags)", - ), - Text( - " 1. [Create tags](#create-tags)", - ), - Text( - " 1. [Delete tags](#delete-tags)", - ), - Text( - " 1. [Set automatic torrent management](#set-automatic-torrent-management)", - ), - Text( - " 1. [Toggle sequential download](#toggle-sequential-download)", - ), - Text( - " 1. [Set first/last piece priority](#set-firstlast-piece-priority)", - ), - Text( - " 1. [Set force start](#set-force-start)", - ), - Text( - " 1. [Set super seeding](#set-super-seeding)", - ), - Text( - " 1. [Rename file](#rename-file)", - ), - Text( - " 1. [Rename folder](#rename-folder)", - ), - Text( - "1. [RSS (experimental)](#rss-experimental)", - ), - Text( - " 1. [Add folder](#add-folder)", - ), - Text( - " 1. [Add feed](#add-feed)", - ), - Text( - " 1. [Remove item](#remove-item)", - ), - Text( - " 1. [Move item](#move-item)", - ), - Text( - " 1. [Get all items](#get-all-items)", - ), - Text( - " 1. [Mark as read](#mark-as-read)", - ), - Text( - " 1. [Refresh item](#refresh-item)", - ), - Text( - " 1. [Set auto-downloading rule](#set-auto-downloading-rule)", - ), - Text( - " 1. [Rename auto-downloading rule](#rename-auto-downloading-rule)", - ), - Text( - " 1. [Remove auto-downloading rule](#remove-auto-downloading-rule)", - ), - Text( - " 1. [Get all auto-downloading rules](#get-all-auto-downloading-rules)", - ), - Text( - " 1. [Get all articles matching a rule](#get-all-articles-matching-a-rule)", - ), - Text( - "1. [Search](#search)", - ), - Text( - " 1. [Start search](#start-search)", - ), - Text( - " 1. [Stop search](#stop-search)", - ), - Text( - " 1. [Get search status](#get-search-status)", - ), - Text( - " 1. [Get search results](#get-search-results)", - ), - Text( - " 1. [Delete search](#delete-search)", - ), - Text( - " 1. [Get search plugins](#get-search-plugins)", - ), - Text( - " 1. [Install search plugin](#install-search-plugin)", - ), - Text( - " 1. [Uninstall search plugin](#uninstall-search-plugin)", - ), - Text( - " 1. [Enable search plugin](#enable-search-plugin)", - ), - Text( - " 1. [Update search plugins](#update-search-plugins)", - ), - Text( - "1. [WebAPI versioning](#webapi-versioning)", - ), - Text( - "", - ), - Asterix( - "", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Changes", - ), - content: [ - Text( - "", - ), - ], - children: [ - TokenTree { - title: Some( - "API v2.0", - ), - content: [ - Text( - "", - ), - Text( - "- New version naming scheme: X.Y.Z (where X - major version, Y - minor version, Z - release version)", - ), - Text( - "- New API paths. All API methods are under `api/vX/` (where X is API major version)", - ), - Text( - "- API methods are under new scopes", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "API v2.0.1", - ), - content: [ - Text( - "", - ), - Text( - "- Add `hashes` field to `/torrents/info` ([#8782](https://github.com/qbittorrent/qBittorrent/pull/8782))", - ), - Text( - "- Add `/torrents/setShareLimits/` method ([#8598](https://github.com/qbittorrent/qBittorrent/pull/8598))", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "API v2.0.2", - ), - content: [ - Text( - "", - ), - Text( - "- Add `/torrents/reannounce` method ([#9229](https://github.com/qbittorrent/qBittorrent/pull/9229))", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "API v2.1.0", - ), - content: [ - Text( - "", - ), - Text( - "- Change `/sync/maindata` `categories` field from `array` to `object` ([#9228](https://github.com/qbittorrent/qBittorrent/pull/9228))", - ), - Text( - "- Add `savePath` field to `/torrents/createCategory` ([#9228](https://github.com/qbittorrent/qBittorrent/pull/9228)). This method now requires the category to already exist and will not create new categories.", - ), - Text( - "- Add `/torrents/editCategory` method ([#9228](https://github.com/qbittorrent/qBittorrent/pull/9228))", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "API v2.1.1", - ), - content: [ - Text( - "", - ), - Text( - "- Add `/torrents/categories` method ([#9586](https://github.com/qbittorrent/qBittorrent/pull/9586))", - ), - Text( - "- Add `/search/` methods ([#8584](https://github.com/qbittorrent/qBittorrent/pull/8584))", - ), - Text( - "- Add `free_space_on_disk` field to `/sync/maindata` ([#8217](https://github.com/qbittorrent/qBittorrent/pull/8217))", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "API v2.2.0", - ), - content: [ - Text( - "", - ), - Text( - "- Add `/torrents/editTracker` and `/torrents/removeTracker` methods ([#9375](https://github.com/qbittorrent/qBittorrent/pull/9375))", - ), - Text( - "- Add `tier`, `num_seeds`, `num_leeches`, and `num_downloaded` fields to `/torrents/trackers` ([#9375](https://github.com/qbittorrent/qBittorrent/pull/9375))", - ), - Text( - "- Change `status` field from translated string to an integer for `/torrents/trackers` ([#9375](https://github.com/qbittorrent/qBittorrent/pull/9375))", - ), - Text( - "- Change `/torrents/filePrio` `id` field to accept multiple ids ([#9541](https://github.com/qbittorrent/qBittorrent/pull/9541))", - ), - Text( - "- Throw additional errors for failed requests to `/torrents/filePrio` ([#9541](https://github.com/qbittorrent/qBittorrent/pull/9541))", - ), - Text( - "- Add `autoTMM` field to `/torrents/add` ([#9752](https://github.com/qbittorrent/qBittorrent/pull/9752))", - ), - Text( - "- Add various fields to `/app/getPreferences` and `/app/setPreferences` (`create_subfolder_enabled`, `start_paused_enabled`, `auto_delete_mode`, `preallocate_all`, `incomplete_files_ext`, `auto_tmm_enabled`, `torrent_changed_tmm_enabled`, `save_path_changed_tmm_enabled`, `category_changed_tmm_enabled`, `mail_notification_sender`, `limit_lan_peers`, `slow_torrent_dl_rate_threshold`, `slow_torrent_ul_rate_threshold`, `slow_torrent_inactive_timer`, `alternative_webui_enabled`, `alternative_webui_path`) ([#9752](https://github.com/qbittorrent/qBittorrent/pull/9752))", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "API v2.2.1", - ), - content: [ - Text( - "", - ), - Text( - "- Add `rss/refreshItem` ([#11067](https://github.com/qbittorrent/qBittorrent/pull/11067))", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "API v2.3.0", - ), - content: [ - Text( - "", - ), - Text( - "- Remove `web_ui_password` field from `/app/preferences`, this field is still writable in `/app/setPreferences` method ([#9942](https://github.com/qbittorrent/qBittorrent/pull/9942))", - ), - Text( - "- Add `/app/buildInfo` method ([#10096](https://github.com/qbittorrent/qBittorrent/pull/10096))", - ), - Text( - "- Always use `/` as path separator in `/torrents/files` response ([#10153](https://github.com/qbittorrent/qBittorrent/pull/10153/))", - ), - Text( - "- Add `/torrents/addPeers` and `/transfer/banPeers` methods ([#10158](https://github.com/qbittorrent/qBittorrent/pull/10158))", - ), - Text( - "- Add `/torrents/addTags`, `/torrents/removeTags`, `/torrents/tags`, `/torrents/createTags`, `/torrents/deleteTags` methods ([#10527](https://github.com/qbittorrent/qBittorrent/pull/10527))", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "API v2.4.0", - ), - content: [ - Text( - "", - ), - Text( - "- Add `/torrents/renameFile` method ([#11029](https://github.com/qbittorrent/qBittorrent/pull/11029))", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "API v2.4.1", - ), - content: [ - Text( - "", - ), - Text( - "- Add `stalled`, `stalled_uploading` and `stalled_downloading` as possible values for the `filter` parameter in `/torrents/info` ([#11825](https://github.com/qbittorrent/qBittorrent/pull/11825))", - ), - Text( - "- Add various fields to `/app/preferences` and `/app/setPreferences` (`piece_extent_affinity`, `web_ui_secure_cookie_enabled`, `web_ui_max_auth_fail_count`, `web_ui_ban_duration`, `stop_tracker_timeout`) ([#11781](https://github.com/qbittorrent/qBittorrent/pull/11781), [#11726](https://github.com/qbittorrent/qBittorrent/pull/11726), [#12004](https://github.com/qbittorrent/qBittorrent/pull/12004), [#11834](https://github.com/qbittorrent/qBittorrent/pull/11834))", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "API v2.5.0", - ), - content: [ - Text( - "- Removes `enable_super_seeding` as fields from `/app/preferences` and `/app/setPreferences` ([#12423](https://github.com/qbittorrent/qBittorrent/pull/12423))", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "API v2.5.1", - ), - content: [ - Text( - "- Add `web_ui_use_custom_http_headers_enabled`, `web_ui_custom_http_headers`, `rss_download_repack_proper_episodes` and `rss_smart_episode_filters` as fields to `/app/preferences` and `/app/setPreferences` ([#12579](https://github.com/qbittorrent/qBittorrent/pull/12579), [#12549](https://github.com/qbittorrent/qBittorrent/pull/12549))", - ), - Text( - "- Add `/rss/markAsRead` and `/rss/matchingArticles` methods ([#12549](https://github.com/qbittorrent/qBittorrent/pull/12549))", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "API v2.6.0", - ), - content: [ - Text( - "- Removed `/search/categories` method and modified `/search/plugins` method's response ([#12705](https://github.com/qbittorrent/qBittorrent/pull/12705))", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "API v2.6.1", - ), - content: [ - Text( - "- Exposed `contentPath` via the `content_path` field in the response to `/torrents/info` ([#13625](https://github.com/qbittorrent/qBittorrent/pull/13625))", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "API v2.6.2", - ), - content: [ - Text( - "- Added `tags` optional field to `/torrents/add` ([#13882](https://github.com/qbittorrent/qBittorrent/pull/13882))", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "API v2.8.0", - ), - content: [ - Text( - "- Added `/torrents/renameFolder` method and modified `/torrents/renameFile` method's parameters ([#13995](https://github.com/qbittorrent/qBittorrent/pull/13995))", - ), - Text( - "", - ), - Text( - "Note that this change was released in qBittorrent v4.3.3, but the WebAPI version was incorrectly set to v2.7.0 (see [#14275](https://github.com/qbittorrent/qBittorrent/pull/14275#issuecomment-766310862) for details)", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "API v2.8.1", - ), - content: [ - Text( - "- Added `ratioLimit` and `seedingTimeLimit` optional fields to `/torrents/add` ([#14519](https://github.com/qbittorrent/qBittorrent/pull/14519))", - ), - Text( - "- Added `seeding_time` field to `/torrents/info` ([#14554](https://github.com/qbittorrent/qBittorrent/pull/14554))", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "API v2.8.2", - ), - content: [ - Text( - "- Added `indexes` optional parameter to `/torrents/files` ([#14795](https://github.com/qbittorrent/qBittorrent/pull/14795))", - ), - Text( - "- Added `index` field to `/torrents/files` response ([#14795](https://github.com/qbittorrent/qBittorrent/pull/14795))", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "API v2.8.3", - ), - content: [ - Text( - "- Added `tag` optional parameter to `/torrents/info` ([#15152](https://github.com/qbittorrent/qBittorrent/pull/15152))", - ), - Text( - "", - ), - ], - children: [], - }, - ], - }, - TokenTree { - title: Some( - "General Information", - ), - content: [ - Text( - "", - ), - Text( - "- All API methods are under `/api/v2/APIName/methodName`, where `APIName` is a certain subgroup of API methods whose functionality is related.", - ), - Text( - "- Either `GET` or `POST` can be used as the request type for all API methods.", - ), - Text( - "- All API methods require [authentication](#authentication) (except the `/api/v2/auth/login` method itself, obviously).", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Authentication", - ), - content: [ - Text( - "", - ), - Text( - "All Authentication API methods are under \"auth\", e.g.: `/api/v2/auth/methodName`.", - ), - Text( - "", - ), - Text( - "qBittorrent uses cookie-based authentication.", - ), - Text( - "", - ), - ], - children: [ - TokenTree { - title: Some( - "Login", - ), - content: [ - Text( - "", - ), - Text( - "Name: `login`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`username` | string | Username used to access the WebUI", - columns: [ - "username", - "string", - "Username used to access the WebUI", - ], - }, - TableRow { - raw: "`password` | string | Password used to access the WebUI", - columns: [ - "password", - "string", - "Password used to access the WebUI", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "403 | User's IP is banned for too many failed login attempts", - columns: [ - "403", - "User's IP is banned for too many failed login attempts", - ], - }, - TableRow { - raw: "200 | All other scenarios", - columns: [ - "200", - "All other scenarios", - ], - }, - ], - }, - ), - Text( - "Upon success, the response will contain a cookie with your SID. You must supply the cookie whenever you want to perform an operation that requires authentication.", - ), - Text( - "", - ), - Text( - "Example showing how to login and execute a command that requires authentication using `curl`:", - ), - Text( - "", - ), - Text( - "```sh", - ), - Text( - "$ curl -i --header 'Referer: http://localhost:8080' --data 'username=admin&password=adminadmin' http://localhost:8080/api/v2/auth/login", - ), - Text( - "HTTP/1.1 200 OK", - ), - Text( - "Content-Encoding:", - ), - Text( - "Content-Length: 3", - ), - Text( - "Content-Type: text/plain; charset=UTF-8", - ), - Text( - "Set-Cookie: SID=hBc7TxF76ERhvIw0jQQ4LZ7Z1jQUV0tQ; path=/", - ), - Text( - "$ curl http://localhost:8080/api/v2/torrents/info --cookie \"SID=hBc7TxF76ERhvIw0jQQ4LZ7Z1jQUV0tQ\"", - ), - Text( - "```", - ), - Text( - "", - ), - Text( - "Note: Set `Referer` or `Origin` header to the exact same domain and port as used in the HTTP query `Host` header.", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Logout", - ), - content: [ - Text( - "", - ), - Text( - "Name: `logout`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Text( - "None", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - ], - }, - TokenTree { - title: Some( - "Application", - ), - content: [ - Text( - "", - ), - Text( - "All Application API methods are under \"app\", e.g.: `/api/v2/app/methodName`.", - ), - Text( - "", - ), - ], - children: [ - TokenTree { - title: Some( - "Get application version", - ), - content: [ - Text( - "", - ), - Text( - "Name: `version`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Text( - "None", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - Text( - "The response is a string with the application version, e.g. `v4.1.3`", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Get API version", - ), - content: [ - Text( - "", - ), - Text( - "Name: `webapiVersion`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Text( - "None", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - Text( - "The response is a string with the WebAPI version, e.g. `2.0`", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Get build info", - ), - content: [ - Text( - "", - ), - Text( - "Name: `buildInfo`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Text( - "None", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios- see JSON below", - columns: [ - "200", - "All scenarios- see JSON below", - ], - }, - ], - }, - ), - Text( - "The response is a JSON object containing the following fields", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Property | Type | Description", - columns: [ - "Property", - "Type", - "Description", - ], - }, - split: "-------------|---------|------------", - rows: [ - TableRow { - raw: "`qt` | string | QT version", - columns: [ - "qt", - "string", - "QT version", - ], - }, - TableRow { - raw: "`libtorrent` | string | libtorrent version", - columns: [ - "libtorrent", - "string", - "libtorrent version", - ], - }, - TableRow { - raw: "`boost` | string | Boost version", - columns: [ - "boost", - "string", - "Boost version", - ], - }, - TableRow { - raw: "`openssl` | string | OpenSSL version", - columns: [ - "openssl", - "string", - "OpenSSL version", - ], - }, - TableRow { - raw: "`bitness` | int | Application bitness (e.g. 64-bit)", - columns: [ - "bitness", - "int", - "Application bitness (e.g. 64-bit)", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Shutdown application", - ), - content: [ - Text( - "", - ), - Text( - "Name: `shutdown`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Text( - "None", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Get application preferences", - ), - content: [ - Text( - "", - ), - Text( - "Name: `preferences`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Text( - "None", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios- see JSON below", - columns: [ - "200", - "All scenarios- see JSON below", - ], - }, - ], - }, - ), - Text( - "The response is a JSON object with several fields (key-value) pairs representing the application's settings. The contents may vary depending on which settings are present in qBittorrent.ini.", - ), - Text( - "", - ), - Text( - "Possible fields:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Property | Type | Description", - columns: [ - "Property", - "Type", - "Description", - ], - }, - split: "-----------------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`locale` | string | Currently selected language (e.g. en_GB for English)", - columns: [ - "locale", - "string", - "Currently selected language (e.g. en_GB for English)", - ], - }, - TableRow { - raw: "`create_subfolder_enabled` | bool | True if a subfolder should be created when adding a torrent", - columns: [ - "create_subfolder_enabled", - "bool", - "True if a subfolder should be created when adding a torrent", - ], - }, - TableRow { - raw: "`start_paused_enabled` | bool | True if torrents should be added in a Paused state", - columns: [ - "start_paused_enabled", - "bool", - "True if torrents should be added in a Paused state", - ], - }, - TableRow { - raw: "`auto_delete_mode` | integer | TODO", - columns: [ - "auto_delete_mode", - "integer", - "TODO", - ], - }, - TableRow { - raw: "`preallocate_all` | bool | True if disk space should be pre-allocated for all files", - columns: [ - "preallocate_all", - "bool", - "True if disk space should be pre-allocated for all files", - ], - }, - TableRow { - raw: "`incomplete_files_ext` | bool | True if \".!qB\" should be appended to incomplete files", - columns: [ - "incomplete_files_ext", - "bool", - "True if \".!qB\" should be appended to incomplete files", - ], - }, - TableRow { - raw: "`auto_tmm_enabled` | bool | True if Automatic Torrent Management is enabled by default", - columns: [ - "auto_tmm_enabled", - "bool", - "True if Automatic Torrent Management is enabled by default", - ], - }, - TableRow { - raw: "`torrent_changed_tmm_enabled` | bool | True if torrent should be relocated when its Category changes", - columns: [ - "torrent_changed_tmm_enabled", - "bool", - "True if torrent should be relocated when its Category changes", - ], - }, - TableRow { - raw: "`save_path_changed_tmm_enabled` | bool | True if torrent should be relocated when the default save path changes", - columns: [ - "save_path_changed_tmm_enabled", - "bool", - "True if torrent should be relocated when the default save path changes", - ], - }, - TableRow { - raw: "`category_changed_tmm_enabled` | bool | True if torrent should be relocated when its Category's save path changes", - columns: [ - "category_changed_tmm_enabled", - "bool", - "True if torrent should be relocated when its Category's save path changes", - ], - }, - TableRow { - raw: "`save_path` | string | Default save path for torrents, separated by slashes", - columns: [ - "save_path", - "string", - "Default save path for torrents, separated by slashes", - ], - }, - TableRow { - raw: "`temp_path_enabled` | bool | True if folder for incomplete torrents is enabled", - columns: [ - "temp_path_enabled", - "bool", - "True if folder for incomplete torrents is enabled", - ], - }, - TableRow { - raw: "`temp_path` | string | Path for incomplete torrents, separated by slashes", - columns: [ - "temp_path", - "string", - "Path for incomplete torrents, separated by slashes", - ], - }, - TableRow { - raw: "`scan_dirs` | object | Property: directory to watch for torrent files, value: where torrents loaded from this directory should be downloaded to (see list of possible values below). Slashes are used as path separators; multiple key/value pairs can be specified", - columns: [ - "scan_dirs", - "object", - "Property: directory to watch for torrent files, value: where torrents loaded from this directory should be downloaded to (see list of possible values below). Slashes are used as path separators; multiple key/value pairs can be specified", - ], - }, - TableRow { - raw: "`export_dir` | string | Path to directory to copy .torrent files to. Slashes are used as path separators", - columns: [ - "export_dir", - "string", - "Path to directory to copy .torrent files to. Slashes are used as path separators", - ], - }, - TableRow { - raw: "`export_dir_fin` | string | Path to directory to copy .torrent files of completed downloads to. Slashes are used as path separators", - columns: [ - "export_dir_fin", - "string", - "Path to directory to copy .torrent files of completed downloads to. Slashes are used as path separators", - ], - }, - TableRow { - raw: "`mail_notification_enabled` | bool | True if e-mail notification should be enabled", - columns: [ - "mail_notification_enabled", - "bool", - "True if e-mail notification should be enabled", - ], - }, - TableRow { - raw: "`mail_notification_sender` | string | e-mail where notifications should originate from", - columns: [ - "mail_notification_sender", - "string", - "e-mail where notifications should originate from", - ], - }, - TableRow { - raw: "`mail_notification_email` | string | e-mail to send notifications to", - columns: [ - "mail_notification_email", - "string", - "e-mail to send notifications to", - ], - }, - TableRow { - raw: "`mail_notification_smtp` | string | smtp server for e-mail notifications", - columns: [ - "mail_notification_smtp", - "string", - "smtp server for e-mail notifications", - ], - }, - TableRow { - raw: "`mail_notification_ssl_enabled` | bool | True if smtp server requires SSL connection", - columns: [ - "mail_notification_ssl_enabled", - "bool", - "True if smtp server requires SSL connection", - ], - }, - TableRow { - raw: "`mail_notification_auth_enabled` | bool | True if smtp server requires authentication", - columns: [ - "mail_notification_auth_enabled", - "bool", - "True if smtp server requires authentication", - ], - }, - TableRow { - raw: "`mail_notification_username` | string | Username for smtp authentication", - columns: [ - "mail_notification_username", - "string", - "Username for smtp authentication", - ], - }, - TableRow { - raw: "`mail_notification_password` | string | Password for smtp authentication", - columns: [ - "mail_notification_password", - "string", - "Password for smtp authentication", - ], - }, - TableRow { - raw: "`autorun_enabled` | bool | True if external program should be run after torrent has finished downloading", - columns: [ - "autorun_enabled", - "bool", - "True if external program should be run after torrent has finished downloading", - ], - }, - TableRow { - raw: "`autorun_program` | string | Program path/name/arguments to run if `autorun_enabled` is enabled; path is separated by slashes; you can use `%f` and `%n` arguments, which will be expanded by qBittorent as path_to_torrent_file and torrent_name (from the GUI; not the .torrent file name) respectively", - columns: [ - "autorun_program", - "string", - "Program path/name/arguments to run if autorun_enabled is enabled; path is separated by slashes; you can use %f and %n arguments, which will be expanded by qBittorent as path_to_torrent_file and torrent_name (from the GUI; not the .torrent file name) respectively", - ], - }, - TableRow { - raw: "`queueing_enabled` | bool | True if torrent queuing is enabled", - columns: [ - "queueing_enabled", - "bool", - "True if torrent queuing is enabled", - ], - }, - TableRow { - raw: "`max_active_downloads` | integer | Maximum number of active simultaneous downloads", - columns: [ - "max_active_downloads", - "integer", - "Maximum number of active simultaneous downloads", - ], - }, - TableRow { - raw: "`max_active_torrents` | integer | Maximum number of active simultaneous downloads and uploads", - columns: [ - "max_active_torrents", - "integer", - "Maximum number of active simultaneous downloads and uploads", - ], - }, - TableRow { - raw: "`max_active_uploads` | integer | Maximum number of active simultaneous uploads", - columns: [ - "max_active_uploads", - "integer", - "Maximum number of active simultaneous uploads", - ], - }, - TableRow { - raw: "`dont_count_slow_torrents` | bool | If true torrents w/o any activity (stalled ones) will not be counted towards `max_active_*` limits; see [dont_count_slow_torrents](https://www.libtorrent.org/reference-Settings.html#dont_count_slow_torrents) for more information", - columns: [ - "dont_count_slow_torrents", - "bool", - "If true torrents w/o any activity (stalled ones) will not be counted towards max_active_* limits; see [dont_count_slow_torrents](https://www.libtorrent.org/reference-Settings.html#dont_count_slow_torrents) for more information", - ], - }, - TableRow { - raw: "`slow_torrent_dl_rate_threshold` | integer | Download rate in KiB/s for a torrent to be considered \"slow\"", - columns: [ - "slow_torrent_dl_rate_threshold", - "integer", - "Download rate in KiB/s for a torrent to be considered \"slow\"", - ], - }, - TableRow { - raw: "`slow_torrent_ul_rate_threshold` | integer | Upload rate in KiB/s for a torrent to be considered \"slow\"", - columns: [ - "slow_torrent_ul_rate_threshold", - "integer", - "Upload rate in KiB/s for a torrent to be considered \"slow\"", - ], - }, - TableRow { - raw: "`slow_torrent_inactive_timer` | integer | Seconds a torrent should be inactive before considered \"slow\"", - columns: [ - "slow_torrent_inactive_timer", - "integer", - "Seconds a torrent should be inactive before considered \"slow\"", - ], - }, - TableRow { - raw: "`max_ratio_enabled` | bool | True if share ratio limit is enabled", - columns: [ - "max_ratio_enabled", - "bool", - "True if share ratio limit is enabled", - ], - }, - TableRow { - raw: "`max_ratio` | float | Get the global share ratio limit", - columns: [ - "max_ratio", - "float", - "Get the global share ratio limit", - ], - }, - TableRow { - raw: "`max_ratio_act` | integer | Action performed when a torrent reaches the maximum share ratio. See list of possible values here below.", - columns: [ - "max_ratio_act", - "integer", - "Action performed when a torrent reaches the maximum share ratio. See list of possible values here below.", - ], - }, - TableRow { - raw: "`listen_port` | integer | Port for incoming connections", - columns: [ - "listen_port", - "integer", - "Port for incoming connections", - ], - }, - TableRow { - raw: "`upnp` | bool | True if UPnP/NAT-PMP is enabled", - columns: [ - "upnp", - "bool", - "True if UPnP/NAT-PMP is enabled", - ], - }, - TableRow { - raw: "`random_port` | bool | True if the port is randomly selected", - columns: [ - "random_port", - "bool", - "True if the port is randomly selected", - ], - }, - TableRow { - raw: "`dl_limit` | integer | Global download speed limit in KiB/s; `-1` means no limit is applied", - columns: [ - "dl_limit", - "integer", - "Global download speed limit in KiB/s; -1 means no limit is applied", - ], - }, - TableRow { - raw: "`up_limit` | integer | Global upload speed limit in KiB/s; `-1` means no limit is applied", - columns: [ - "up_limit", - "integer", - "Global upload speed limit in KiB/s; -1 means no limit is applied", - ], - }, - TableRow { - raw: "`max_connec` | integer | Maximum global number of simultaneous connections", - columns: [ - "max_connec", - "integer", - "Maximum global number of simultaneous connections", - ], - }, - TableRow { - raw: "`max_connec_per_torrent` | integer | Maximum number of simultaneous connections per torrent", - columns: [ - "max_connec_per_torrent", - "integer", - "Maximum number of simultaneous connections per torrent", - ], - }, - TableRow { - raw: "`max_uploads` | integer | Maximum number of upload slots", - columns: [ - "max_uploads", - "integer", - "Maximum number of upload slots", - ], - }, - TableRow { - raw: "`max_uploads_per_torrent` | integer | Maximum number of upload slots per torrent", - columns: [ - "max_uploads_per_torrent", - "integer", - "Maximum number of upload slots per torrent", - ], - }, - TableRow { - raw: "`stop_tracker_timeout` | integer | Timeout in seconds for a `stopped` announce request to trackers", - columns: [ - "stop_tracker_timeout", - "integer", - "Timeout in seconds for a stopped announce request to trackers", - ], - }, - TableRow { - raw: "`enable_piece_extent_affinity` | bool | True if the advanced libtorrent option `piece_extent_affinity` is enabled", - columns: [ - "enable_piece_extent_affinity", - "bool", - "True if the advanced libtorrent option piece_extent_affinity is enabled", - ], - }, - TableRow { - raw: "`bittorrent_protocol` | integer | Bittorrent Protocol to use (see list of possible values below)", - columns: [ - "bittorrent_protocol", - "integer", - "Bittorrent Protocol to use (see list of possible values below)", - ], - }, - TableRow { - raw: "`limit_utp_rate` | bool | True if `[du]l_limit` should be applied to uTP connections; this option is only available in qBittorent built against libtorrent version 0.16.X and higher", - columns: [ - "limit_utp_rate", - "bool", - "True if [du]l_limit should be applied to uTP connections; this option is only available in qBittorent built against libtorrent version 0.16.X and higher", - ], - }, - TableRow { - raw: "`limit_tcp_overhead` | bool | True if `[du]l_limit` should be applied to estimated TCP overhead (service data: e.g. packet headers)", - columns: [ - "limit_tcp_overhead", - "bool", - "True if [du]l_limit should be applied to estimated TCP overhead (service data: e.g. packet headers)", - ], - }, - TableRow { - raw: "`limit_lan_peers` | bool | True if `[du]l_limit` should be applied to peers on the LAN", - columns: [ - "limit_lan_peers", - "bool", - "True if [du]l_limit should be applied to peers on the LAN", - ], - }, - TableRow { - raw: "`alt_dl_limit` | integer | Alternative global download speed limit in KiB/s", - columns: [ - "alt_dl_limit", - "integer", - "Alternative global download speed limit in KiB/s", - ], - }, - TableRow { - raw: "`alt_up_limit` | integer | Alternative global upload speed limit in KiB/s", - columns: [ - "alt_up_limit", - "integer", - "Alternative global upload speed limit in KiB/s", - ], - }, - TableRow { - raw: "`scheduler_enabled` | bool | True if alternative limits should be applied according to schedule", - columns: [ - "scheduler_enabled", - "bool", - "True if alternative limits should be applied according to schedule", - ], - }, - TableRow { - raw: "`schedule_from_hour` | integer | Scheduler starting hour", - columns: [ - "schedule_from_hour", - "integer", - "Scheduler starting hour", - ], - }, - TableRow { - raw: "`schedule_from_min` | integer | Scheduler starting minute", - columns: [ - "schedule_from_min", - "integer", - "Scheduler starting minute", - ], - }, - TableRow { - raw: "`schedule_to_hour` | integer | Scheduler ending hour", - columns: [ - "schedule_to_hour", - "integer", - "Scheduler ending hour", - ], - }, - TableRow { - raw: "`schedule_to_min` | integer | Scheduler ending minute", - columns: [ - "schedule_to_min", - "integer", - "Scheduler ending minute", - ], - }, - TableRow { - raw: "`scheduler_days` | integer | Scheduler days. See possible values here below", - columns: [ - "scheduler_days", - "integer", - "Scheduler days. See possible values here below", - ], - }, - TableRow { - raw: "`dht` | bool | True if DHT is enabled", - columns: [ - "dht", - "bool", - "True if DHT is enabled", - ], - }, - TableRow { - raw: "`pex` | bool | True if PeX is enabled", - columns: [ - "pex", - "bool", - "True if PeX is enabled", - ], - }, - TableRow { - raw: "`lsd` | bool | True if LSD is enabled", - columns: [ - "lsd", - "bool", - "True if LSD is enabled", - ], - }, - TableRow { - raw: "`encryption` | integer | See list of possible values here below", - columns: [ - "encryption", - "integer", - "See list of possible values here below", - ], - }, - TableRow { - raw: "`anonymous_mode` | bool | If true anonymous mode will be enabled; read more [here](Anonymous-Mode); this option is only available in qBittorent built against libtorrent version 0.16.X and higher", - columns: [ - "anonymous_mode", - "bool", - "If true anonymous mode will be enabled; read more [here](Anonymous-Mode); this option is only available in qBittorent built against libtorrent version 0.16.X and higher", - ], - }, - TableRow { - raw: "`proxy_type` | integer | See list of possible values here below", - columns: [ - "proxy_type", - "integer", - "See list of possible values here below", - ], - }, - TableRow { - raw: "`proxy_ip` | string | Proxy IP address or domain name", - columns: [ - "proxy_ip", - "string", - "Proxy IP address or domain name", - ], - }, - TableRow { - raw: "`proxy_port` | integer | Proxy port", - columns: [ - "proxy_port", - "integer", - "Proxy port", - ], - }, - TableRow { - raw: "`proxy_peer_connections` | bool | True if peer and web seed connections should be proxified; this option will have any effect only in qBittorent built against libtorrent version 0.16.X and higher", - columns: [ - "proxy_peer_connections", - "bool", - "True if peer and web seed connections should be proxified; this option will have any effect only in qBittorent built against libtorrent version 0.16.X and higher", - ], - }, - TableRow { - raw: "`proxy_auth_enabled` | bool | True proxy requires authentication; doesn't apply to SOCKS4 proxies", - columns: [ - "proxy_auth_enabled", - "bool", - "True proxy requires authentication; doesn't apply to SOCKS4 proxies", - ], - }, - TableRow { - raw: "`proxy_username` | string | Username for proxy authentication", - columns: [ - "proxy_username", - "string", - "Username for proxy authentication", - ], - }, - TableRow { - raw: "`proxy_password` | string | Password for proxy authentication", - columns: [ - "proxy_password", - "string", - "Password for proxy authentication", - ], - }, - TableRow { - raw: "`proxy_torrents_only` | bool | True if proxy is only used for torrents", - columns: [ - "proxy_torrents_only", - "bool", - "True if proxy is only used for torrents", - ], - }, - TableRow { - raw: "`ip_filter_enabled` | bool | True if external IP filter should be enabled", - columns: [ - "ip_filter_enabled", - "bool", - "True if external IP filter should be enabled", - ], - }, - TableRow { - raw: "`ip_filter_path` | string | Path to IP filter file (.dat, .p2p, .p2b files are supported); path is separated by slashes", - columns: [ - "ip_filter_path", - "string", - "Path to IP filter file (.dat, .p2p, .p2b files are supported); path is separated by slashes", - ], - }, - TableRow { - raw: "`ip_filter_trackers` | bool | True if IP filters are applied to trackers", - columns: [ - "ip_filter_trackers", - "bool", - "True if IP filters are applied to trackers", - ], - }, - TableRow { - raw: "`web_ui_domain_list` | string | Comma-separated list of domains to accept when performing Host header validation", - columns: [ - "web_ui_domain_list", - "string", - "Comma-separated list of domains to accept when performing Host header validation", - ], - }, - TableRow { - raw: "`web_ui_address` | string | IP address to use for the WebUI", - columns: [ - "web_ui_address", - "string", - "IP address to use for the WebUI", - ], - }, - TableRow { - raw: "`web_ui_port` | integer | WebUI port", - columns: [ - "web_ui_port", - "integer", - "WebUI port", - ], - }, - TableRow { - raw: "`web_ui_upnp` | bool | True if UPnP is used for the WebUI port", - columns: [ - "web_ui_upnp", - "bool", - "True if UPnP is used for the WebUI port", - ], - }, - TableRow { - raw: "`web_ui_username` | string | WebUI username", - columns: [ - "web_ui_username", - "string", - "WebUI username", - ], - }, - TableRow { - raw: "`web_ui_password` | string | For API ≥ v2.3.0: Plaintext WebUI password, not readable, write-only. For API < v2.3.0: MD5 hash of WebUI password, hash is generated from the following string: `username:Web UI Access:plain_text_web_ui_password`", - columns: [ - "web_ui_password", - "string", - "For API ≥ v2.3.0: Plaintext WebUI password, not readable, write-only. For API < v2.3.0: MD5 hash of WebUI password, hash is generated from the following string: username:Web UI Access:plain_text_web_ui_password", - ], - }, - TableRow { - raw: "`web_ui_csrf_protection_enabled` | bool | True if WebUI CSRF protection is enabled", - columns: [ - "web_ui_csrf_protection_enabled", - "bool", - "True if WebUI CSRF protection is enabled", - ], - }, - TableRow { - raw: "`web_ui_clickjacking_protection_enabled` | bool | True if WebUI clickjacking protection is enabled", - columns: [ - "web_ui_clickjacking_protection_enabled", - "bool", - "True if WebUI clickjacking protection is enabled", - ], - }, - TableRow { - raw: "`web_ui_secure_cookie_enabled` | bool | True if WebUI cookie `Secure` flag is enabled", - columns: [ - "web_ui_secure_cookie_enabled", - "bool", - "True if WebUI cookie Secure flag is enabled", - ], - }, - TableRow { - raw: "`web_ui_max_auth_fail_count` | integer | Maximum number of authentication failures before WebUI access ban", - columns: [ - "web_ui_max_auth_fail_count", - "integer", - "Maximum number of authentication failures before WebUI access ban", - ], - }, - TableRow { - raw: "`web_ui_ban_duration` | integer | WebUI access ban duration in seconds", - columns: [ - "web_ui_ban_duration", - "integer", - "WebUI access ban duration in seconds", - ], - }, - TableRow { - raw: "`web_ui_session_timeout` | integer | Seconds until WebUI is automatically signed off", - columns: [ - "web_ui_session_timeout", - "integer", - "Seconds until WebUI is automatically signed off", - ], - }, - TableRow { - raw: "`web_ui_host_header_validation_enabled` | bool | True if WebUI host header validation is enabled", - columns: [ - "web_ui_host_header_validation_enabled", - "bool", - "True if WebUI host header validation is enabled", - ], - }, - TableRow { - raw: "`bypass_local_auth` | bool | True if authentication challenge for loopback address (127.0.0.1) should be disabled", - columns: [ - "bypass_local_auth", - "bool", - "True if authentication challenge for loopback address (127.0.0.1) should be disabled", - ], - }, - TableRow { - raw: "`bypass_auth_subnet_whitelist_enabled` | bool | True if webui authentication should be bypassed for clients whose ip resides within (at least) one of the subnets on the whitelist", - columns: [ - "bypass_auth_subnet_whitelist_enabled", - "bool", - "True if webui authentication should be bypassed for clients whose ip resides within (at least) one of the subnets on the whitelist", - ], - }, - TableRow { - raw: "`bypass_auth_subnet_whitelist` | string | (White)list of ipv4/ipv6 subnets for which webui authentication should be bypassed; list entries are separated by commas", - columns: [ - "bypass_auth_subnet_whitelist", - "string", - "(White)list of ipv4/ipv6 subnets for which webui authentication should be bypassed; list entries are separated by commas", - ], - }, - TableRow { - raw: "`alternative_webui_enabled` | bool | True if an alternative WebUI should be used", - columns: [ - "alternative_webui_enabled", - "bool", - "True if an alternative WebUI should be used", - ], - }, - TableRow { - raw: "`alternative_webui_path` | string | File path to the alternative WebUI", - columns: [ - "alternative_webui_path", - "string", - "File path to the alternative WebUI", - ], - }, - TableRow { - raw: "`use_https` | bool | True if WebUI HTTPS access is enabled", - columns: [ - "use_https", - "bool", - "True if WebUI HTTPS access is enabled", - ], - }, - TableRow { - raw: "`ssl_key` | string | For API < v2.0.1: SSL keyfile contents (this is a not a path)", - columns: [ - "ssl_key", - "string", - "For API < v2.0.1: SSL keyfile contents (this is a not a path)", - ], - }, - TableRow { - raw: "`ssl_cert` | string | For API < v2.0.1: SSL certificate contents (this is a not a path)", - columns: [ - "ssl_cert", - "string", - "For API < v2.0.1: SSL certificate contents (this is a not a path)", - ], - }, - TableRow { - raw: "`web_ui_https_key_path` | string | For API ≥ v2.0.1: Path to SSL keyfile", - columns: [ - "web_ui_https_key_path", - "string", - "For API ≥ v2.0.1: Path to SSL keyfile", - ], - }, - TableRow { - raw: "`web_ui_https_cert_path` | string | For API ≥ v2.0.1: Path to SSL certificate", - columns: [ - "web_ui_https_cert_path", - "string", - "For API ≥ v2.0.1: Path to SSL certificate", - ], - }, - TableRow { - raw: "`dyndns_enabled` | bool | True if server DNS should be updated dynamically", - columns: [ - "dyndns_enabled", - "bool", - "True if server DNS should be updated dynamically", - ], - }, - TableRow { - raw: "`dyndns_service` | integer | See list of possible values here below", - columns: [ - "dyndns_service", - "integer", - "See list of possible values here below", - ], - }, - TableRow { - raw: "`dyndns_username` | string | Username for DDNS service", - columns: [ - "dyndns_username", - "string", - "Username for DDNS service", - ], - }, - TableRow { - raw: "`dyndns_password` | string | Password for DDNS service", - columns: [ - "dyndns_password", - "string", - "Password for DDNS service", - ], - }, - TableRow { - raw: "`dyndns_domain` | string | Your DDNS domain name", - columns: [ - "dyndns_domain", - "string", - "Your DDNS domain name", - ], - }, - TableRow { - raw: "`rss_refresh_interval` | integer | RSS refresh interval", - columns: [ - "rss_refresh_interval", - "integer", - "RSS refresh interval", - ], - }, - TableRow { - raw: "`rss_max_articles_per_feed` | integer | Max stored articles per RSS feed", - columns: [ - "rss_max_articles_per_feed", - "integer", - "Max stored articles per RSS feed", - ], - }, - TableRow { - raw: "`rss_processing_enabled` | bool | Enable processing of RSS feeds", - columns: [ - "rss_processing_enabled", - "bool", - "Enable processing of RSS feeds", - ], - }, - TableRow { - raw: "`rss_auto_downloading_enabled` | bool | Enable auto-downloading of torrents from the RSS feeds", - columns: [ - "rss_auto_downloading_enabled", - "bool", - "Enable auto-downloading of torrents from the RSS feeds", - ], - }, - TableRow { - raw: "`rss_download_repack_proper_episodes` | bool | For API ≥ v2.5.1: Enable downloading of repack/proper Episodes", - columns: [ - "rss_download_repack_proper_episodes", - "bool", - "For API ≥ v2.5.1: Enable downloading of repack/proper Episodes", - ], - }, - TableRow { - raw: "`rss_smart_episode_filters` | string | For API ≥ v2.5.1: List of RSS Smart Episode Filters", - columns: [ - "rss_smart_episode_filters", - "string", - "For API ≥ v2.5.1: List of RSS Smart Episode Filters", - ], - }, - TableRow { - raw: "`add_trackers_enabled` | bool | Enable automatic adding of trackers to new torrents", - columns: [ - "add_trackers_enabled", - "bool", - "Enable automatic adding of trackers to new torrents", - ], - }, - TableRow { - raw: "`add_trackers` | string | List of trackers to add to new torrent", - columns: [ - "add_trackers", - "string", - "List of trackers to add to new torrent", - ], - }, - TableRow { - raw: "`web_ui_use_custom_http_headers_enabled` | bool | For API ≥ v2.5.1: Enable custom http headers", - columns: [ - "web_ui_use_custom_http_headers_enabled", - "bool", - "For API ≥ v2.5.1: Enable custom http headers", - ], - }, - TableRow { - raw: "`web_ui_custom_http_headers` | string | For API ≥ v2.5.1: List of custom http headers", - columns: [ - "web_ui_custom_http_headers", - "string", - "For API ≥ v2.5.1: List of custom http headers", - ], - }, - TableRow { - raw: "`max_seeding_time_enabled` | bool | True enables max seeding time ", - columns: [ - "max_seeding_time_enabled", - "bool", - "True enables max seeding time", - ], - }, - TableRow { - raw: "`max_seeding_time` | integer | Number of minutes to seed a torrent", - columns: [ - "max_seeding_time", - "integer", - "Number of minutes to seed a torrent", - ], - }, - TableRow { - raw: "`announce_ip` | string | TODO", - columns: [ - "announce_ip", - "string", - "TODO", - ], - }, - TableRow { - raw: "`announce_to_all_tiers` | bool | True always announce to all tiers", - columns: [ - "announce_to_all_tiers", - "bool", - "True always announce to all tiers", - ], - }, - TableRow { - raw: "`announce_to_all_trackers` | bool | True always announce to all trackers in a tier", - columns: [ - "announce_to_all_trackers", - "bool", - "True always announce to all trackers in a tier", - ], - }, - TableRow { - raw: "`async_io_threads` | integer | Number of asynchronous I/O threads", - columns: [ - "async_io_threads", - "integer", - "Number of asynchronous I/O threads", - ], - }, - TableRow { - raw: "`banned_IPs` | string | List of banned IPs", - columns: [ - "banned_IPs", - "string", - "List of banned IPs", - ], - }, - TableRow { - raw: "`checking_memory_use` | integer | Outstanding memory when checking torrents in MiB", - columns: [ - "checking_memory_use", - "integer", - "Outstanding memory when checking torrents in MiB", - ], - }, - TableRow { - raw: "`current_interface_address` | string | IP Address to bind to. Empty String means All addresses", - columns: [ - "current_interface_address", - "string", - "IP Address to bind to. Empty String means All addresses", - ], - }, - TableRow { - raw: "`current_network_interface` | string | Network Interface used", - columns: [ - "current_network_interface", - "string", - "Network Interface used", - ], - }, - TableRow { - raw: "`disk_cache` | integer | Disk cache used in MiB", - columns: [ - "disk_cache", - "integer", - "Disk cache used in MiB", - ], - }, - TableRow { - raw: "`disk_cache_ttl` | integer | Disk cache expiry interval in seconds", - columns: [ - "disk_cache_ttl", - "integer", - "Disk cache expiry interval in seconds", - ], - }, - TableRow { - raw: "`embedded_tracker_port` | integer | Port used for embedded tracker", - columns: [ - "embedded_tracker_port", - "integer", - "Port used for embedded tracker", - ], - }, - TableRow { - raw: "`enable_coalesce_read_write` | bool | True enables coalesce reads & writes", - columns: [ - "enable_coalesce_read_write", - "bool", - "True enables coalesce reads & writes", - ], - }, - TableRow { - raw: "`enable_embedded_tracker` | bool | True enables embedded tracker", - columns: [ - "enable_embedded_tracker", - "bool", - "True enables embedded tracker", - ], - }, - TableRow { - raw: "`enable_multi_connections_from_same_ip` | bool | True allows multiple connections from the same IP address", - columns: [ - "enable_multi_connections_from_same_ip", - "bool", - "True allows multiple connections from the same IP address", - ], - }, - TableRow { - raw: "`enable_os_cache` | bool | True enables os cache", - columns: [ - "enable_os_cache", - "bool", - "True enables os cache", - ], - }, - TableRow { - raw: "`enable_upload_suggestions` | bool | True enables sending of upload piece suggestions", - columns: [ - "enable_upload_suggestions", - "bool", - "True enables sending of upload piece suggestions", - ], - }, - TableRow { - raw: "`file_pool_size` | integer | File pool size", - columns: [ - "file_pool_size", - "integer", - "File pool size", - ], - }, - TableRow { - raw: "`outgoing_ports_max` | integer | Maximal outgoing port (0: Disabled)", - columns: [ - "outgoing_ports_max", - "integer", - "Maximal outgoing port (0: Disabled)", - ], - }, - TableRow { - raw: "`outgoing_ports_min` | integer | Minimal outgoing port (0: Disabled)", - columns: [ - "outgoing_ports_min", - "integer", - "Minimal outgoing port (0: Disabled)", - ], - }, - TableRow { - raw: "`recheck_completed_torrents` | bool | True rechecks torrents on completion", - columns: [ - "recheck_completed_torrents", - "bool", - "True rechecks torrents on completion", - ], - }, - TableRow { - raw: "`resolve_peer_countries` | bool | True resolves peer countries", - columns: [ - "resolve_peer_countries", - "bool", - "True resolves peer countries", - ], - }, - TableRow { - raw: "`save_resume_data_interval` | integer | Save resume data interval in min", - columns: [ - "save_resume_data_interval", - "integer", - "Save resume data interval in min", - ], - }, - TableRow { - raw: "`send_buffer_low_watermark` | integer | Send buffer low watermark in KiB", - columns: [ - "send_buffer_low_watermark", - "integer", - "Send buffer low watermark in KiB", - ], - }, - TableRow { - raw: "`send_buffer_watermark` | integer | Send buffer watermark in KiB", - columns: [ - "send_buffer_watermark", - "integer", - "Send buffer watermark in KiB", - ], - }, - TableRow { - raw: "`send_buffer_watermark_factor` | integer | Send buffer watermark factor in percent", - columns: [ - "send_buffer_watermark_factor", - "integer", - "Send buffer watermark factor in percent", - ], - }, - TableRow { - raw: "`socket_backlog_size` | integer | Socket backlog size", - columns: [ - "socket_backlog_size", - "integer", - "Socket backlog size", - ], - }, - TableRow { - raw: "`upload_choking_algorithm` | integer | Upload choking algorithm used (see list of possible values below)", - columns: [ - "upload_choking_algorithm", - "integer", - "Upload choking algorithm used (see list of possible values below)", - ], - }, - TableRow { - raw: "`upload_slots_behavior` | integer | Upload slots behavior used (see list of possible values below)", - columns: [ - "upload_slots_behavior", - "integer", - "Upload slots behavior used (see list of possible values below)", - ], - }, - TableRow { - raw: "`upnp_lease_duration` | integer | UPnP lease duration (0: Permanent lease)", - columns: [ - "upnp_lease_duration", - "integer", - "UPnP lease duration (0: Permanent lease)", - ], - }, - TableRow { - raw: "`utp_tcp_mixed_mode` | integer | μTP-TCP mixed mode algorithm (see list of possible values below)", - columns: [ - "utp_tcp_mixed_mode", - "integer", - "μTP-TCP mixed mode algorithm (see list of possible values below)", - ], - }, - ], - }, - ), - Text( - "Possible values of `scan_dirs`:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Value | Description", - columns: [ - "Value", - "Description", - ], - }, - split: "----------------------------|------------", - rows: [ - TableRow { - raw: "`0` | Download to the monitored folder", - columns: [ - "0", - "Download to the monitored folder", - ], - }, - TableRow { - raw: "`1` | Download to the default save path", - columns: [ - "1", - "Download to the default save path", - ], - }, - TableRow { - raw: "`\"/path/to/download/to\"` | Download to this path", - columns: [ - "\"/path/to/download/to\"", - "Download to this path", - ], - }, - ], - }, - ), - Text( - "Possible values of `scheduler_days`:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Value | Description", - columns: [ - "Value", - "Description", - ], - }, - split: "-------|------------", - rows: [ - TableRow { - raw: "`0` | Every day", - columns: [ - "0", - "Every day", - ], - }, - TableRow { - raw: "`1` | Every weekday", - columns: [ - "1", - "Every weekday", - ], - }, - TableRow { - raw: "`2` | Every weekend", - columns: [ - "2", - "Every weekend", - ], - }, - TableRow { - raw: "`3` | Every Monday", - columns: [ - "3", - "Every Monday", - ], - }, - TableRow { - raw: "`4` | Every Tuesday", - columns: [ - "4", - "Every Tuesday", - ], - }, - TableRow { - raw: "`5` | Every Wednesday", - columns: [ - "5", - "Every Wednesday", - ], - }, - TableRow { - raw: "`6` | Every Thursday", - columns: [ - "6", - "Every Thursday", - ], - }, - TableRow { - raw: "`7` | Every Friday", - columns: [ - "7", - "Every Friday", - ], - }, - TableRow { - raw: "`8` | Every Saturday", - columns: [ - "8", - "Every Saturday", - ], - }, - TableRow { - raw: "`9` | Every Sunday", - columns: [ - "9", - "Every Sunday", - ], - }, - ], - }, - ), - Text( - "Possible values of `encryption`:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Value | Description", - columns: [ - "Value", - "Description", - ], - }, - split: "-------|------------", - rows: [ - TableRow { - raw: "`0` | Prefer encryption", - columns: [ - "0", - "Prefer encryption", - ], - }, - TableRow { - raw: "`1` | Force encryption on", - columns: [ - "1", - "Force encryption on", - ], - }, - TableRow { - raw: "`2` | Force encryption off", - columns: [ - "2", - "Force encryption off", - ], - }, - ], - }, - ), - Text( - "NB: the first options allows you to use both encrypted and unencrypted connections (this is the default); other options are mutually exclusive: e.g. by forcing encryption on you won't be able to use unencrypted connections and vice versa.", - ), - Text( - "", - ), - Text( - "Possible values of `proxy_type`:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Value | Description", - columns: [ - "Value", - "Description", - ], - }, - split: "------|------------", - rows: [ - TableRow { - raw: "`-1` | Proxy is disabled", - columns: [ - "-1", - "Proxy is disabled", - ], - }, - TableRow { - raw: "`1` | HTTP proxy without authentication", - columns: [ - "1", - "HTTP proxy without authentication", - ], - }, - TableRow { - raw: "`2` | SOCKS5 proxy without authentication", - columns: [ - "2", - "SOCKS5 proxy without authentication", - ], - }, - TableRow { - raw: "`3` | HTTP proxy with authentication", - columns: [ - "3", - "HTTP proxy with authentication", - ], - }, - TableRow { - raw: "`4` | SOCKS5 proxy with authentication", - columns: [ - "4", - "SOCKS5 proxy with authentication", - ], - }, - TableRow { - raw: "`5` | SOCKS4 proxy without authentication", - columns: [ - "5", - "SOCKS4 proxy without authentication", - ], - }, - ], - }, - ), - Text( - "Possible values of `dyndns_service`:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Value | Description", - columns: [ - "Value", - "Description", - ], - }, - split: "-------|------------", - rows: [ - TableRow { - raw: "`0` | Use DyDNS", - columns: [ - "0", - "Use DyDNS", - ], - }, - TableRow { - raw: "`1` | Use NOIP", - columns: [ - "1", - "Use NOIP", - ], - }, - ], - }, - ), - Text( - "Possible values of `max_ratio_act`:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Value | Description", - columns: [ - "Value", - "Description", - ], - }, - split: "------|------------", - rows: [ - TableRow { - raw: "`0` | Pause torrent", - columns: [ - "0", - "Pause torrent", - ], - }, - TableRow { - raw: "`1` | Remove torrent", - columns: [ - "1", - "Remove torrent", - ], - }, - ], - }, - ), - Text( - "Possible values of `bittorrent_protocol`:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Value | Description", - columns: [ - "Value", - "Description", - ], - }, - split: "-------|------------", - rows: [ - TableRow { - raw: "`0` | TCP and μTP", - columns: [ - "0", - "TCP and μTP", - ], - }, - TableRow { - raw: "`1` | TCP", - columns: [ - "1", - "TCP", - ], - }, - TableRow { - raw: "`2` | μTP", - columns: [ - "2", - "μTP", - ], - }, - ], - }, - ), - Text( - "Possible values of `upload_choking_algorithm`:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Value | Description", - columns: [ - "Value", - "Description", - ], - }, - split: "-------|------------", - rows: [ - TableRow { - raw: "`0` | Round-robin", - columns: [ - "0", - "Round-robin", - ], - }, - TableRow { - raw: "`1` | Fastest upload", - columns: [ - "1", - "Fastest upload", - ], - }, - TableRow { - raw: "`2` | Anti-leech", - columns: [ - "2", - "Anti-leech", - ], - }, - ], - }, - ), - Text( - "Possible values of `upload_slots_behavior`:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Value | Description", - columns: [ - "Value", - "Description", - ], - }, - split: "-------|------------", - rows: [ - TableRow { - raw: "`0` | Fixed slots", - columns: [ - "0", - "Fixed slots", - ], - }, - TableRow { - raw: "`1` | Upload rate based", - columns: [ - "1", - "Upload rate based", - ], - }, - ], - }, - ), - Text( - "Possible values of `utp_tcp_mixed_mode`:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Value | Description", - columns: [ - "Value", - "Description", - ], - }, - split: "-------|------------", - rows: [ - TableRow { - raw: "`0` | Prefer TCP", - columns: [ - "0", - "Prefer TCP", - ], - }, - TableRow { - raw: "`1` | Peer proportional", - columns: [ - "1", - "Peer proportional", - ], - }, - ], - }, - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```JSON", - ), - Text( - "{", - ), - Text( - " \"add_trackers\": \"\",", - ), - Text( - " \"add_trackers_enabled\": false,", - ), - Text( - " \"alt_dl_limit\": 10240,", - ), - Text( - " \"alt_up_limit\": 10240,", - ), - Text( - " \"alternative_webui_enabled\": false,", - ), - Text( - " \"alternative_webui_path\": \"/home/user/Documents/qbit-webui\",", - ), - Text( - " \"announce_ip\": \"\",", - ), - Text( - " \"announce_to_all_tiers\": true,", - ), - Text( - " \"announce_to_all_trackers\": false,", - ), - Text( - " \"anonymous_mode\": false,", - ), - Text( - " \"async_io_threads\": 4,", - ), - Text( - " \"auto_delete_mode\": 0,", - ), - Text( - " \"auto_tmm_enabled\": false,", - ), - Text( - " \"autorun_enabled\": false,", - ), - Text( - " \"autorun_program\": \"\",", - ), - Text( - " \"banned_IPs\": \"\",", - ), - Text( - " \"bittorrent_protocol\": 0,", - ), - Text( - " \"bypass_auth_subnet_whitelist\": \"\",", - ), - Text( - " \"bypass_auth_subnet_whitelist_enabled\": false,", - ), - Text( - " \"bypass_local_auth\": false,", - ), - Text( - " \"category_changed_tmm_enabled\": false,", - ), - Text( - " \"checking_memory_use\": 32,", - ), - Text( - " \"create_subfolder_enabled\": true,", - ), - Text( - " \"current_interface_address\": \"\",", - ), - Text( - " \"current_network_interface\": \"\",", - ), - Text( - " \"dht\": true,", - ), - Text( - " \"disk_cache\": -1,", - ), - Text( - " \"disk_cache_ttl\": 60,", - ), - Text( - " \"dl_limit\": 0,", - ), - Text( - " \"dont_count_slow_torrents\": false,", - ), - Text( - " \"dyndns_domain\": \"changeme.dyndns.org\",", - ), - Text( - " \"dyndns_enabled\": false,", - ), - Text( - " \"dyndns_password\": \"\",", - ), - Text( - " \"dyndns_service\": 0,", - ), - Text( - " \"dyndns_username\": \"\",", - ), - Text( - " \"embedded_tracker_port\": 9000,", - ), - Text( - " \"enable_coalesce_read_write\": false,", - ), - Text( - " \"enable_embedded_tracker\": false,", - ), - Text( - " \"enable_multi_connections_from_same_ip\": false,", - ), - Text( - " \"enable_os_cache\": true,", - ), - Text( - " \"enable_piece_extent_affinity\": false,", - ), - Text( - " \"enable_upload_suggestions\": false,", - ), - Text( - " \"encryption\": 0,", - ), - Text( - " \"export_dir\": \"/home/user/Downloads/all\",", - ), - Text( - " \"export_dir_fin\": \"/home/user/Downloads/completed\",", - ), - Text( - " \"file_pool_size\": 40,", - ), - Text( - " \"incomplete_files_ext\": false,", - ), - Text( - " \"ip_filter_enabled\": false,", - ), - Text( - " \"ip_filter_path\": \"\",", - ), - Text( - " \"ip_filter_trackers\": false,", - ), - Text( - " \"limit_lan_peers\": true,", - ), - Text( - " \"limit_tcp_overhead\": false,", - ), - Text( - " \"limit_utp_rate\": true,", - ), - Text( - " \"listen_port\": 58925,", - ), - Text( - " \"locale\": \"en\",", - ), - Text( - " \"lsd\": true,", - ), - Text( - " \"mail_notification_auth_enabled\": false,", - ), - Text( - " \"mail_notification_email\": \"\",", - ), - Text( - " \"mail_notification_enabled\": false,", - ), - Text( - " \"mail_notification_password\": \"\",", - ), - Text( - " \"mail_notification_sender\": \"qBittorrent_notification@example.com\",", - ), - Text( - " \"mail_notification_smtp\": \"smtp.changeme.com\",", - ), - Text( - " \"mail_notification_ssl_enabled\": false,", - ), - Text( - " \"mail_notification_username\": \"\",", - ), - Text( - " \"max_active_downloads\": 3,", - ), - Text( - " \"max_active_torrents\": 5,", - ), - Text( - " \"max_active_uploads\": 3,", - ), - Text( - " \"max_connec\": 500,", - ), - Text( - " \"max_connec_per_torrent\": 100,", - ), - Text( - " \"max_ratio\": -1,", - ), - Text( - " \"max_ratio_act\": 0,", - ), - Text( - " \"max_ratio_enabled\": false,", - ), - Text( - " \"max_seeding_time\": -1,", - ), - Text( - " \"max_seeding_time_enabled\": false,", - ), - Text( - " \"max_uploads\": -1,", - ), - Text( - " \"max_uploads_per_torrent\": -1,", - ), - Text( - " \"outgoing_ports_max\": 0,", - ), - Text( - " \"outgoing_ports_min\": 0,", - ), - Text( - " \"pex\": true,", - ), - Text( - " \"preallocate_all\": false,", - ), - Text( - " \"proxy_auth_enabled\": false,", - ), - Text( - " \"proxy_ip\": \"0.0.0.0\",", - ), - Text( - " \"proxy_password\": \"\",", - ), - Text( - " \"proxy_peer_connections\": false,", - ), - Text( - " \"proxy_port\": 8080,", - ), - Text( - " \"proxy_torrents_only\": false,", - ), - Text( - " \"proxy_type\": 0,", - ), - Text( - " \"proxy_username\": \"\",", - ), - Text( - " \"queueing_enabled\": false,", - ), - Text( - " \"random_port\": false,", - ), - Text( - " \"recheck_completed_torrents\": false,", - ), - Text( - " \"resolve_peer_countries\": true,", - ), - Text( - " \"rss_auto_downloading_enabled\":true,", - ), - Text( - " \"rss_download_repack_proper_episodes\":true,", - ), - Text( - " \"rss_max_articles_per_feed\":50,", - ), - Text( - " \"rss_processing_enabled\":true,", - ), - Text( - " \"rss_refresh_interval\":30,", - ), - Text( - " \"rss_smart_episode_filters\":\"s(\\\\d+)e(\\\\d+)\\n(\\\\d+)x(\\\\d+)\\n(\\\\d{4}[.\\\\-]\\\\d{1,2}[.\\\\-]\\\\d{1,2})\",", - ), - Text( - " \"save_path\": \"/home/user/Downloads/\",", - ), - Text( - " \"save_path_changed_tmm_enabled\": false,", - ), - Text( - " \"save_resume_data_interval\": 60,", - ), - Text( - " \"scan_dirs\":", - ), - Text( - " {", - ), - Text( - " \"/home/user/Downloads/incoming/games\": 0,", - ), - Text( - " \"/home/user/Downloads/incoming/movies\": 1,", - ), - Text( - " },", - ), - Text( - " \"schedule_from_hour\": 8,", - ), - Text( - " \"schedule_from_min\": 0,", - ), - Text( - " \"schedule_to_hour\": 20,", - ), - Text( - " \"schedule_to_min\": 0,", - ), - Text( - " \"scheduler_days\": 0,", - ), - Text( - " \"scheduler_enabled\": false,", - ), - Text( - " \"send_buffer_low_watermark\": 10,", - ), - Text( - " \"send_buffer_watermark\": 500,", - ), - Text( - " \"send_buffer_watermark_factor\": 50,", - ), - Text( - " \"slow_torrent_dl_rate_threshold\": 2,", - ), - Text( - " \"slow_torrent_inactive_timer\": 60,", - ), - Text( - " \"slow_torrent_ul_rate_threshold\": 2,", - ), - Text( - " \"socket_backlog_size\": 30,", - ), - Text( - " \"start_paused_enabled\": false,", - ), - Text( - " \"stop_tracker_timeout\": 1,", - ), - Text( - " \"temp_path\": \"/home/user/Downloads/temp\",", - ), - Text( - " \"temp_path_enabled\": false,", - ), - Text( - " \"torrent_changed_tmm_enabled\": true,", - ), - Text( - " \"up_limit\": 0,", - ), - Text( - " \"upload_choking_algorithm\": 1,", - ), - Text( - " \"upload_slots_behavior\": 0,", - ), - Text( - " \"upnp\": true,", - ), - Text( - " \"use_https\": false,", - ), - Text( - " \"utp_tcp_mixed_mode\": 0,", - ), - Text( - " \"web_ui_address\": \"*\",", - ), - Text( - " \"web_ui_ban_duration\": 3600,", - ), - Text( - " \"web_ui_clickjacking_protection_enabled\": true,", - ), - Text( - " \"web_ui_csrf_protection_enabled\": true,", - ), - Text( - " \"web_ui_custom_http_headers\": \"\",", - ), - Text( - " \"web_ui_domain_list\": \"*\",", - ), - Text( - " \"web_ui_host_header_validation_enabled\": true,", - ), - Text( - " \"web_ui_https_cert_path\": \"\",", - ), - Text( - " \"web_ui_https_key_path\": \"\",", - ), - Text( - " \"web_ui_max_auth_fail_count\": 5,", - ), - Text( - " \"web_ui_port\": 8080,", - ), - Text( - " \"web_ui_secure_cookie_enabled\": true,", - ), - Text( - " \"web_ui_session_timeout\": 3600,", - ), - Text( - " \"web_ui_upnp\": false,", - ), - Text( - " \"web_ui_use_custom_http_headers_enabled\": false,", - ), - Text( - " \"web_ui_username\": \"admin\"", - ), - Text( - "}", - ), - Text( - "```", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Set application preferences", - ), - content: [ - Text( - "", - ), - Text( - "Name: `setPreferences`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Text( - "A json object with key-value pairs of the settings you want to change and their new values.", - ), - Text( - "", - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```JSON", - ), - Text( - "json={\"save_path\":\"C:/Users/Dayman/Downloads\",\"queueing_enabled\":false,\"scan_dirs\":{\"C:/Games\": 0,\"D:/Downloads\": 1}}", - ), - Text( - "```", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - Asterix( - "Notes**:", - ), - Text( - "", - ), - Text( - " 1. There is no need to pass all possible preferences' `token:value` pairs if you only want to change one option", - ), - Text( - " 1. Paths in `scan_dirs` must exist, otherwise this option will have no effect", - ), - Text( - " 1. String values must be quoted; integer and boolean values must never be quoted", - ), - Text( - "", - ), - Text( - "For a list of possible preference options see [Get application preferences](#get-application-preferences)", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Get default save path", - ), - content: [ - Text( - "", - ), - Text( - "Name: `defaultSavePath`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Text( - "None", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - Text( - "The response is a string with the default save path, e.g. `C:/Users/Dayman/Downloads`.", - ), - Text( - "", - ), - ], - children: [], - }, - ], - }, - TokenTree { - title: Some( - "Log", - ), - content: [ - Text( - "", - ), - Text( - "All Log API methods are under \"log\", e.g.: `/api/v2/log/methodName`.", - ), - Text( - "", - ), - ], - children: [ - TokenTree { - title: Some( - "Get log", - ), - content: [ - Text( - "", - ), - Text( - "Name: `main`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------|---------|------------", - rows: [ - TableRow { - raw: "`normal` | bool | Include normal messages (default: `true`)", - columns: [ - "normal", - "bool", - "Include normal messages (default: true)", - ], - }, - TableRow { - raw: "`info` | bool | Include info messages (default: `true`)", - columns: [ - "info", - "bool", - "Include info messages (default: true)", - ], - }, - TableRow { - raw: "`warning` | bool | Include warning messages (default: `true`)", - columns: [ - "warning", - "bool", - "Include warning messages (default: true)", - ], - }, - TableRow { - raw: "`critical` | bool | Include critical messages (default: `true`)", - columns: [ - "critical", - "bool", - "Include critical messages (default: true)", - ], - }, - TableRow { - raw: "`last_known_id` | integer | Exclude messages with \"message id\" <= `last_known_id` (default: `-1`)", - columns: [ - "last_known_id", - "integer", - "Exclude messages with \"message id\" <= last_known_id (default: -1)", - ], - }, - ], - }, - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "/api/v2/log/main?normal=true&info=true&warning=true&critical=true&last_known_id=-1", - ), - Text( - "```", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios- see JSON below", - columns: [ - "200", - "All scenarios- see JSON below", - ], - }, - ], - }, - ), - Text( - "The response is a JSON array in which each element is an entry of the log.", - ), - Text( - "", - ), - Text( - "Each element of the array has the following properties:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Property | Type | Description", - columns: [ - "Property", - "Type", - "Description", - ], - }, - split: "------------|---------|------------", - rows: [ - TableRow { - raw: "`id` | integer | ID of the message", - columns: [ - "id", - "integer", - "ID of the message", - ], - }, - TableRow { - raw: "`message` | string | Text of the message", - columns: [ - "message", - "string", - "Text of the message", - ], - }, - TableRow { - raw: "`timestamp` | integer | Milliseconds since epoch", - columns: [ - "timestamp", - "integer", - "Milliseconds since epoch", - ], - }, - TableRow { - raw: "`type` | integer | Type of the message: Log::NORMAL: `1`, Log::INFO: `2`, Log::WARNING: `4`, Log::CRITICAL: `8`", - columns: [ - "type", - "integer", - "Type of the message: Log::NORMAL: 1, Log::INFO: 2, Log::WARNING: 4, Log::CRITICAL: 8", - ], - }, - ], - }, - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```JSON", - ), - Text( - "[", - ), - Text( - " {", - ), - Text( - " \"id\":0,", - ), - Text( - " \"message\":\"qBittorrent v3.4.0 started\",", - ), - Text( - " \"timestamp\":1507969127860,", - ), - Text( - " \"type\":1", - ), - Text( - " },", - ), - Text( - " {", - ), - Text( - " \"id\":1,", - ), - Text( - " \"message\":\"qBittorrent is trying to listen on any interface port: 19036\",", - ), - Text( - " \"timestamp\":1507969127869,", - ), - Text( - " \"type\":2", - ), - Text( - " },", - ), - Text( - " {", - ), - Text( - " \"id\":2,", - ), - Text( - " \"message\":\"Peer ID: -qB3400-\",", - ), - Text( - " \"timestamp\":1507969127870,", - ), - Text( - " \"type\":1", - ), - Text( - " },", - ), - Text( - " {", - ), - Text( - " \"id\":3,", - ), - Text( - " \"message\":\"HTTP User-Agent is 'qBittorrent/3.4.0'\",", - ), - Text( - " \"timestamp\":1507969127870,", - ), - Text( - " \"type\":1", - ), - Text( - " },", - ), - Text( - " {", - ), - Text( - " \"id\":4,", - ), - Text( - " \"message\":\"DHT support [ON]\",", - ), - Text( - " \"timestamp\":1507969127871,", - ), - Text( - " \"type\":2", - ), - Text( - " },", - ), - Text( - " {", - ), - Text( - " \"id\":5,", - ), - Text( - " \"message\":\"Local Peer Discovery support [ON]\",", - ), - Text( - " \"timestamp\":1507969127871,", - ), - Text( - " \"type\":2", - ), - Text( - " },", - ), - Text( - " {", - ), - Text( - " \"id\":6,", - ), - Text( - " \"message\":\"PeX support [ON]\",", - ), - Text( - " \"timestamp\":1507969127871,", - ), - Text( - " \"type\":2", - ), - Text( - " },", - ), - Text( - " {", - ), - Text( - " \"id\":7,", - ), - Text( - " \"message\":\"Anonymous mode [OFF]\",", - ), - Text( - " \"timestamp\":1507969127871,", - ), - Text( - " \"type\":2", - ), - Text( - " },", - ), - Text( - " {", - ), - Text( - " \"id\":8,", - ), - Text( - " \"message\":\"Encryption support [ON]\",", - ), - Text( - " \"timestamp\":1507969127871,", - ), - Text( - " \"type\":2", - ), - Text( - " },", - ), - Text( - " {", - ), - Text( - " \"id\":9,", - ), - Text( - " \"message\":\"Embedded Tracker [OFF]\",", - ), - Text( - " \"timestamp\":1507969127871,", - ), - Text( - " \"type\":2", - ), - Text( - " },", - ), - Text( - " {", - ), - Text( - " \"id\":10,", - ), - Text( - " \"message\":\"UPnP / NAT-PMP support [ON]\",", - ), - Text( - " \"timestamp\":1507969127873,", - ), - Text( - " \"type\":2", - ), - Text( - " },", - ), - Text( - " {", - ), - Text( - " \"id\":11,", - ), - Text( - " \"message\":\"Web UI: Now listening on port 8080\",", - ), - Text( - " \"timestamp\":1507969127883,", - ), - Text( - " \"type\":1", - ), - Text( - " },", - ), - Text( - " {", - ), - Text( - " \"id\":12,", - ), - Text( - " \"message\":\"Options were saved successfully.\",", - ), - Text( - " \"timestamp\":1507969128055,", - ), - Text( - " \"type\":1", - ), - Text( - " },", - ), - Text( - " {", - ), - Text( - " \"id\":13,", - ), - Text( - " \"message\":\"qBittorrent is successfully listening on interface :: port: TCP/19036\",", - ), - Text( - " \"timestamp\":1507969128270,", - ), - Text( - " \"type\":2", - ), - Text( - " },", - ), - Text( - " {", - ), - Text( - " \"id\":14,", - ), - Text( - " \"message\":\"qBittorrent is successfully listening on interface 0.0.0.0 port: TCP/19036\",", - ), - Text( - " \"timestamp\":1507969128271,", - ), - Text( - " \"type\":2", - ), - Text( - " },", - ), - Text( - " {", - ), - Text( - " \"id\":15,", - ), - Text( - " \"message\":\"qBittorrent is successfully listening on interface 0.0.0.0 port: UDP/19036\",", - ), - Text( - " \"timestamp\":1507969128272,", - ), - Text( - " \"type\":2", - ), - Text( - " }", - ), - Text( - "]", - ), - Text( - "```", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Get peer log", - ), - content: [ - Text( - "", - ), - Text( - "Name: `peers`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------|---------|------------", - rows: [ - TableRow { - raw: "`last_known_id` | integer | Exclude messages with \"message id\" <= `last_known_id` (default: `-1`)", - columns: [ - "last_known_id", - "integer", - "Exclude messages with \"message id\" <= last_known_id (default: -1)", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios- see JSON below", - columns: [ - "200", - "All scenarios- see JSON below", - ], - }, - ], - }, - ), - Text( - "The response a JSON array. Each element of the array of objects (each object is the information relative to a peer) containing the following fields", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Property | Type | Description", - columns: [ - "Property", - "Type", - "Description", - ], - }, - split: "------------|---------|------------", - rows: [ - TableRow { - raw: "`id` | integer | ID of the peer", - columns: [ - "id", - "integer", - "ID of the peer", - ], - }, - TableRow { - raw: "`ip` | string | IP of the peer", - columns: [ - "ip", - "string", - "IP of the peer", - ], - }, - TableRow { - raw: "`timestamp` | integer | Milliseconds since epoch", - columns: [ - "timestamp", - "integer", - "Milliseconds since epoch", - ], - }, - TableRow { - raw: "`blocked` | boolean | Whether or not the peer was blocked", - columns: [ - "blocked", - "boolean", - "Whether or not the peer was blocked", - ], - }, - TableRow { - raw: "`reason` | string | Reason of the block", - columns: [ - "reason", - "string", - "Reason of the block", - ], - }, - ], - }, - ), - ], - children: [], - }, - ], - }, - TokenTree { - title: Some( - "Sync", - ), - content: [ - Text( - "", - ), - Text( - "Sync API implements requests for obtaining changes since the last request.", - ), - Text( - "All Sync API methods are under \"sync\", e.g.: `/api/v2/sync/methodName`.", - ), - Text( - "", - ), - ], - children: [ - TokenTree { - title: Some( - "Get main data", - ), - content: [ - Text( - "", - ), - Text( - "Name: `maindata`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------|---------|------------", - rows: [ - TableRow { - raw: "`rid` | integer | Response ID. If not provided, `rid=0` will be assumed. If the given `rid` is different from the one of last server reply, `full_update` will be `true` (see the server reply details for more info)", - columns: [ - "rid", - "integer", - "Response ID. If not provided, rid=0 will be assumed. If the given rid is different from the one of last server reply, full_update will be true (see the server reply details for more info)", - ], - }, - ], - }, - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "/api/v2/sync/maindata?rid=14", - ), - Text( - "```", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios- see JSON below", - columns: [ - "200", - "All scenarios- see JSON below", - ], - }, - ], - }, - ), - Text( - "The response is a JSON object with the following possible fields", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Property | Type | Description", - columns: [ - "Property", - "Type", - "Description", - ], - }, - split: "------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`rid` | integer | Response ID", - columns: [ - "rid", - "integer", - "Response ID", - ], - }, - TableRow { - raw: "`full_update` | bool | Whether the response contains all the data or partial data", - columns: [ - "full_update", - "bool", - "Whether the response contains all the data or partial data", - ], - }, - TableRow { - raw: "`torrents` | object | Property: torrent hash, value: same as [torrent list](#get-torrent-list)", - columns: [ - "torrents", - "object", - "Property: torrent hash, value: same as [torrent list](#get-torrent-list)", - ], - }, - TableRow { - raw: "`torrents_removed` | array | List of hashes of torrents removed since last request", - columns: [ - "torrents_removed", - "array", - "List of hashes of torrents removed since last request", - ], - }, - TableRow { - raw: "`categories` | object | Info for categories added since last request", - columns: [ - "categories", - "object", - "Info for categories added since last request", - ], - }, - TableRow { - raw: "`categories_removed` | array | List of categories removed since last request", - columns: [ - "categories_removed", - "array", - "List of categories removed since last request", - ], - }, - TableRow { - raw: "`tags` | array | List of tags added since last request", - columns: [ - "tags", - "array", - "List of tags added since last request", - ], - }, - TableRow { - raw: "`tags_removed` | array | List of tags removed since last request", - columns: [ - "tags_removed", - "array", - "List of tags removed since last request", - ], - }, - TableRow { - raw: "`server_state` | object | Global transfer info", - columns: [ - "server_state", - "object", - "Global transfer info", - ], - }, - ], - }, - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```JSON", - ), - Text( - "{", - ), - Text( - " \"rid\":15,", - ), - Text( - " \"torrents\":", - ), - Text( - " {", - ), - Text( - " \"8c212779b4abde7c6bc608063a0d008b7e40ce32\":", - ), - Text( - " {", - ), - Text( - " \"state\":\"pausedUP\"", - ), - Text( - " }", - ), - Text( - " }", - ), - Text( - "}", - ), - Text( - "```", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Get torrent peers data", - ), - content: [ - Text( - "", - ), - Text( - "Name: `torrentPeers`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------|---------|------------", - rows: [ - TableRow { - raw: "`hash` | string | Torrent hash", - columns: [ - "hash", - "string", - "Torrent hash", - ], - }, - TableRow { - raw: "`rid` | integer | Response ID. If not provided, `rid=0` will be assumed. If the given `rid` is different from the one of last server reply, `full_update` will be `true` (see the server reply details for more info)", - columns: [ - "rid", - "integer", - "Response ID. If not provided, rid=0 will be assumed. If the given rid is different from the one of last server reply, full_update will be true (see the server reply details for more info)", - ], - }, - ], - }, - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "/api/v2/sync/torrentPeers?hash=8c212779b4abde7c6bc608063a0d008b7e40ce32?rid=14", - ), - Text( - "```", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "404 | Torrent hash was not found", - columns: [ - "404", - "Torrent hash was not found", - ], - }, - TableRow { - raw: "200 | All other scenarios- see JSON below", - columns: [ - "200", - "All other scenarios- see JSON below", - ], - }, - ], - }, - ), - Text( - "The response is TODO", - ), - Text( - "", - ), - ], - children: [], - }, - ], - }, - TokenTree { - title: Some( - "Transfer info", - ), - content: [ - Text( - "", - ), - Text( - "All Transfer info API methods are under \"transfer\", e.g.: `/api/v2/transfer/methodName`.", - ), - Text( - "", - ), - ], - children: [ - TokenTree { - title: Some( - "Get global transfer info", - ), - content: [ - Text( - "", - ), - Text( - "This method returns info you usually see in qBt status bar.", - ), - Text( - "", - ), - Text( - "Name: `info`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Text( - "None", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios- see JSON below", - columns: [ - "200", - "All scenarios- see JSON below", - ], - }, - ], - }, - ), - Text( - "The response is a JSON object with the following fields", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Property | Type | Description", - columns: [ - "Property", - "Type", - "Description", - ], - }, - split: "--------------------|---------|------------", - rows: [ - TableRow { - raw: "`dl_info_speed` | integer | Global download rate (bytes/s)", - columns: [ - "dl_info_speed", - "integer", - "Global download rate (bytes/s)", - ], - }, - TableRow { - raw: "`dl_info_data` | integer | Data downloaded this session (bytes)", - columns: [ - "dl_info_data", - "integer", - "Data downloaded this session (bytes)", - ], - }, - TableRow { - raw: "`up_info_speed` | integer | Global upload rate (bytes/s)", - columns: [ - "up_info_speed", - "integer", - "Global upload rate (bytes/s)", - ], - }, - TableRow { - raw: "`up_info_data` | integer | Data uploaded this session (bytes)", - columns: [ - "up_info_data", - "integer", - "Data uploaded this session (bytes)", - ], - }, - TableRow { - raw: "`dl_rate_limit` | integer | Download rate limit (bytes/s)", - columns: [ - "dl_rate_limit", - "integer", - "Download rate limit (bytes/s)", - ], - }, - TableRow { - raw: "`up_rate_limit` | integer | Upload rate limit (bytes/s)", - columns: [ - "up_rate_limit", - "integer", - "Upload rate limit (bytes/s)", - ], - }, - TableRow { - raw: "`dht_nodes` | integer | DHT nodes connected to", - columns: [ - "dht_nodes", - "integer", - "DHT nodes connected to", - ], - }, - TableRow { - raw: "`connection_status` | string | Connection status. See possible values here below", - columns: [ - "connection_status", - "string", - "Connection status. See possible values here below", - ], - }, - ], - }, - ), - Text( - "In addition to the above in partial data requests (see [Get partial data](#get-partial-data) for more info):", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Property | Type | Description", - columns: [ - "Property", - "Type", - "Description", - ], - }, - split: "-----------------------|---------|------------", - rows: [ - TableRow { - raw: "`queueing` | bool | True if torrent queueing is enabled", - columns: [ - "queueing", - "bool", - "True if torrent queueing is enabled", - ], - }, - TableRow { - raw: "`use_alt_speed_limits` | bool | True if alternative speed limits are enabled", - columns: [ - "use_alt_speed_limits", - "bool", - "True if alternative speed limits are enabled", - ], - }, - TableRow { - raw: "`refresh_interval` | integer | Transfer list refresh interval (milliseconds)", - columns: [ - "refresh_interval", - "integer", - "Transfer list refresh interval (milliseconds)", - ], - }, - ], - }, - ), - Text( - "Possible values of `connection_status`:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Value |", - columns: [ - "Value", - "", - ], - }, - split: "--------------------|", - rows: [ - TableRow { - raw: "`connected` |", - columns: [ - "connected", - "", - ], - }, - TableRow { - raw: "`firewalled` |", - columns: [ - "firewalled", - "", - ], - }, - TableRow { - raw: "`disconnected` |", - columns: [ - "disconnected", - "", - ], - }, - ], - }, - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```JSON", - ), - Text( - "{", - ), - Text( - " \"connection_status\":\"connected\",", - ), - Text( - " \"dht_nodes\":386,", - ), - Text( - " \"dl_info_data\":681521119,", - ), - Text( - " \"dl_info_speed\":0,", - ), - Text( - " \"dl_rate_limit\":0,", - ), - Text( - " \"up_info_data\":10747904,", - ), - Text( - " \"up_info_speed\":0,", - ), - Text( - " \"up_rate_limit\":1048576", - ), - Text( - "}", - ), - Text( - "```", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Get alternative speed limits state", - ), - content: [ - Text( - "", - ), - Text( - "Name: `speedLimitsMode`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Text( - "None", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - Text( - "The response is `1` if alternative speed limits are enabled, `0` otherwise.", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Toggle alternative speed limits", - ), - content: [ - Text( - "", - ), - Text( - "Name: `toggleSpeedLimitsMode`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Text( - "None", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Get global download limit", - ), - content: [ - Text( - "", - ), - Text( - "Name: `downloadLimit`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Text( - "None", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - Text( - "The response is the value of current global download speed limit in bytes/second; this value will be zero if no limit is applied.", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Set global download limit", - ), - content: [ - Text( - "", - ), - Text( - "Name: `setDownloadLimit`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`limit` | integer | The global download speed limit to set in bytes/second", - columns: [ - "limit", - "integer", - "The global download speed limit to set in bytes/second", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Get global upload limit", - ), - content: [ - Text( - "", - ), - Text( - "Name: `uploadLimit`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Text( - "None", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - Text( - "The response is the value of current global upload speed limit in bytes/second; this value will be zero if no limit is applied.", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Set global upload limit", - ), - content: [ - Text( - "", - ), - Text( - "Name: `setUploadLimit`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`limit` | integer | The global upload speed limit to set in bytes/second", - columns: [ - "limit", - "integer", - "The global upload speed limit to set in bytes/second", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Ban peers", - ), - content: [ - Text( - "", - ), - Text( - "Name: `banPeers`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`peers` | string | The peer to ban, or multiple peers separated by a pipe `\\|`. Each peer is a colon-separated `host:port`", - columns: [ - "peers", - "string", - "The peer to ban, or multiple peers separated by a pipe \\", - ". Each peer is a colon-separated host:port", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - ], - }, - TokenTree { - title: Some( - "Torrent management", - ), - content: [ - Text( - "", - ), - Text( - "All Torrent management API methods are under \"torrents\", e.g.: `/api/v2/torrents/methodName`.", - ), - Text( - "", - ), - ], - children: [ - TokenTree { - title: Some( - "Get torrent list", - ), - content: [ - Text( - "", - ), - Text( - "Name: `info`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------------|---------|------------", - rows: [ - TableRow { - raw: "`filter` _optional_ | string | Filter torrent list by state. Allowed state filters: `all`, `downloading`, `seeding`, `completed`, `paused`, `active`, `inactive`, `resumed`, `stalled`, `stalled_uploading`, `stalled_downloading`, `errored`", - columns: [ - "filter _optional_", - "string", - "Filter torrent list by state. Allowed state filters: all, downloading, seeding, completed, paused, active, inactive, resumed, stalled, stalled_uploading, stalled_downloading, errored", - ], - }, - TableRow { - raw: "`category` _optional_ | string | Get torrents with the given category (empty string means \"without category\"; no \"category\" parameter means \"any category\" <- broken until [#11748](https://github.com/qbittorrent/qBittorrent/issues/11748) is resolved). Remember to URL-encode the category name. For example, `My category` becomes `My%20category`", - columns: [ - "category _optional_", - "string", - "Get torrents with the given category (empty string means \"without category\"; no \"category\" parameter means \"any category\" <- broken until [#11748](https://github.com/qbittorrent/qBittorrent/issues/11748) is resolved). Remember to URL-encode the category name. For example, My category becomes My%20category", - ], - }, - TableRow { - raw: "`tag` _optional_ since 2.8.3 | string | Get torrents with the given tag (empty string means \"without tag\"; no \"tag\" parameter means \"any tag\". Remember to URL-encode the category name. For example, `My tag` becomes `My%20tag`", - columns: [ - "tag _optional_ since 2.8.3", - "string", - "Get torrents with the given tag (empty string means \"without tag\"; no \"tag\" parameter means \"any tag\". Remember to URL-encode the category name. For example, My tag becomes My%20tag", - ], - }, - TableRow { - raw: "`sort` _optional_ | string | Sort torrents by given key. They can be sorted using any field of the response's JSON array (which are documented below) as the sort key.", - columns: [ - "sort _optional_", - "string", - "Sort torrents by given key. They can be sorted using any field of the response's JSON array (which are documented below) as the sort key.", - ], - }, - TableRow { - raw: "`reverse` _optional_ | bool | Enable reverse sorting. Defaults to `false`", - columns: [ - "reverse _optional_", - "bool", - "Enable reverse sorting. Defaults to false", - ], - }, - TableRow { - raw: "`limit` _optional_ | integer | Limit the number of torrents returned", - columns: [ - "limit _optional_", - "integer", - "Limit the number of torrents returned", - ], - }, - TableRow { - raw: "`offset` _optional_ | integer | Set offset (if less than 0, offset from end)", - columns: [ - "offset _optional_", - "integer", - "Set offset (if less than 0, offset from end)", - ], - }, - TableRow { - raw: "`hashes` _optional_ | string | Filter by hashes. Can contain multiple hashes separated by `\\|`", - columns: [ - "hashes _optional_", - "string", - "Filter by hashes. Can contain multiple hashes separated by \\", - "", - ], - }, - ], - }, - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "/api/v2/torrents/info?filter=downloading&category=sample%20category&sort=ratio", - ), - Text( - "```", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios- see JSON below", - columns: [ - "200", - "All scenarios- see JSON below", - ], - }, - ], - }, - ), - Text( - "The response is a JSON array with the following fields", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Property | Type | Description", - columns: [ - "Property", - "Type", - "Description", - ], - }, - split: "---------------------|---------|------------", - rows: [ - TableRow { - raw: "`added_on` | integer | Time (Unix Epoch) when the torrent was added to the client", - columns: [ - "added_on", - "integer", - "Time (Unix Epoch) when the torrent was added to the client", - ], - }, - TableRow { - raw: "`amount_left` | integer | Amount of data left to download (bytes)", - columns: [ - "amount_left", - "integer", - "Amount of data left to download (bytes)", - ], - }, - TableRow { - raw: "`auto_tmm` | bool | Whether this torrent is managed by Automatic Torrent Management", - columns: [ - "auto_tmm", - "bool", - "Whether this torrent is managed by Automatic Torrent Management", - ], - }, - TableRow { - raw: "`availability` | float | Percentage of file pieces currently available", - columns: [ - "availability", - "float", - "Percentage of file pieces currently available", - ], - }, - TableRow { - raw: "`category` | string | Category of the torrent", - columns: [ - "category", - "string", - "Category of the torrent", - ], - }, - TableRow { - raw: "`completed` | integer | Amount of transfer data completed (bytes)", - columns: [ - "completed", - "integer", - "Amount of transfer data completed (bytes)", - ], - }, - TableRow { - raw: "`completion_on` | integer | Time (Unix Epoch) when the torrent completed", - columns: [ - "completion_on", - "integer", - "Time (Unix Epoch) when the torrent completed", - ], - }, - TableRow { - raw: "`content_path` | string | Absolute path of torrent content (root path for multifile torrents, absolute file path for singlefile torrents)", - columns: [ - "content_path", - "string", - "Absolute path of torrent content (root path for multifile torrents, absolute file path for singlefile torrents)", - ], - }, - TableRow { - raw: "`dl_limit` | integer | Torrent download speed limit (bytes/s). `-1` if ulimited.", - columns: [ - "dl_limit", - "integer", - "Torrent download speed limit (bytes/s). -1 if ulimited.", - ], - }, - TableRow { - raw: "`dlspeed` | integer | Torrent download speed (bytes/s)", - columns: [ - "dlspeed", - "integer", - "Torrent download speed (bytes/s)", - ], - }, - TableRow { - raw: "`downloaded` | integer | Amount of data downloaded", - columns: [ - "downloaded", - "integer", - "Amount of data downloaded", - ], - }, - TableRow { - raw: "`downloaded_session` | integer | Amount of data downloaded this session", - columns: [ - "downloaded_session", - "integer", - "Amount of data downloaded this session", - ], - }, - TableRow { - raw: "`eta` | integer | Torrent ETA (seconds)", - columns: [ - "eta", - "integer", - "Torrent ETA (seconds)", - ], - }, - TableRow { - raw: "`f_l_piece_prio` | bool | True if first last piece are prioritized", - columns: [ - "f_l_piece_prio", - "bool", - "True if first last piece are prioritized", - ], - }, - TableRow { - raw: "`force_start` | bool | True if force start is enabled for this torrent", - columns: [ - "force_start", - "bool", - "True if force start is enabled for this torrent", - ], - }, - TableRow { - raw: "`hash` | string | Torrent hash", - columns: [ - "hash", - "string", - "Torrent hash", - ], - }, - TableRow { - raw: "`last_activity` | integer | Last time (Unix Epoch) when a chunk was downloaded/uploaded", - columns: [ - "last_activity", - "integer", - "Last time (Unix Epoch) when a chunk was downloaded/uploaded", - ], - }, - TableRow { - raw: "`magnet_uri` | string | Magnet URI corresponding to this torrent", - columns: [ - "magnet_uri", - "string", - "Magnet URI corresponding to this torrent", - ], - }, - TableRow { - raw: "`max_ratio` | float | Maximum share ratio until torrent is stopped from seeding/uploading", - columns: [ - "max_ratio", - "float", - "Maximum share ratio until torrent is stopped from seeding/uploading", - ], - }, - TableRow { - raw: "`max_seeding_time` | integer | Maximum seeding time (seconds) until torrent is stopped from seeding", - columns: [ - "max_seeding_time", - "integer", - "Maximum seeding time (seconds) until torrent is stopped from seeding", - ], - }, - TableRow { - raw: "`name` | string | Torrent name", - columns: [ - "name", - "string", - "Torrent name", - ], - }, - TableRow { - raw: "`num_complete` | integer | Number of seeds in the swarm", - columns: [ - "num_complete", - "integer", - "Number of seeds in the swarm", - ], - }, - TableRow { - raw: "`num_incomplete` | integer | Number of leechers in the swarm", - columns: [ - "num_incomplete", - "integer", - "Number of leechers in the swarm", - ], - }, - TableRow { - raw: "`num_leechs` | integer | Number of leechers connected to", - columns: [ - "num_leechs", - "integer", - "Number of leechers connected to", - ], - }, - TableRow { - raw: "`num_seeds` | integer | Number of seeds connected to", - columns: [ - "num_seeds", - "integer", - "Number of seeds connected to", - ], - }, - TableRow { - raw: "`priority` | integer | Torrent priority. Returns -1 if queuing is disabled or torrent is in seed mode", - columns: [ - "priority", - "integer", - "Torrent priority. Returns -1 if queuing is disabled or torrent is in seed mode", - ], - }, - TableRow { - raw: "`progress` | float | Torrent progress (percentage/100)", - columns: [ - "progress", - "float", - "Torrent progress (percentage/100)", - ], - }, - TableRow { - raw: "`ratio` | float | Torrent share ratio. Max ratio value: 9999.", - columns: [ - "ratio", - "float", - "Torrent share ratio. Max ratio value: 9999.", - ], - }, - TableRow { - raw: "`ratio_limit` | float | TODO (what is different from `max_ratio`?)", - columns: [ - "ratio_limit", - "float", - "TODO (what is different from max_ratio?)", - ], - }, - TableRow { - raw: "`save_path` | string | Path where this torrent's data is stored", - columns: [ - "save_path", - "string", - "Path where this torrent's data is stored", - ], - }, - TableRow { - raw: "`seeding_time` | integer | Torrent elapsed time while complete (seconds)", - columns: [ - "seeding_time", - "integer", - "Torrent elapsed time while complete (seconds)", - ], - }, - TableRow { - raw: "`seeding_time_limit` | integer | TODO (what is different from `max_seeding_time`?) seeding_time_limit is a per torrent setting, when Automatic Torrent Management is disabled, furthermore then max_seeding_time is set to seeding_time_limit for this torrent. If Automatic Torrent Management is enabled, the value is -2. And if max_seeding_time is unset it have a default value -1.", - columns: [ - "seeding_time_limit", - "integer", - "TODO (what is different from max_seeding_time?) seeding_time_limit is a per torrent setting, when Automatic Torrent Management is disabled, furthermore then max_seeding_time is set to seeding_time_limit for this torrent. If Automatic Torrent Management is enabled, the value is -2. And if max_seeding_time is unset it have a default value -1.", - ], - }, - TableRow { - raw: "`seen_complete` | integer | Time (Unix Epoch) when this torrent was last seen complete", - columns: [ - "seen_complete", - "integer", - "Time (Unix Epoch) when this torrent was last seen complete", - ], - }, - TableRow { - raw: "`seq_dl` | bool | True if sequential download is enabled", - columns: [ - "seq_dl", - "bool", - "True if sequential download is enabled", - ], - }, - TableRow { - raw: "`size` | integer | Total size (bytes) of files selected for download", - columns: [ - "size", - "integer", - "Total size (bytes) of files selected for download", - ], - }, - TableRow { - raw: "`state` | string | Torrent state. See table here below for the possible values", - columns: [ - "state", - "string", - "Torrent state. See table here below for the possible values", - ], - }, - TableRow { - raw: "`super_seeding` | bool | True if super seeding is enabled", - columns: [ - "super_seeding", - "bool", - "True if super seeding is enabled", - ], - }, - TableRow { - raw: "`tags` | string | Comma-concatenated tag list of the torrent", - columns: [ - "tags", - "string", - "Comma-concatenated tag list of the torrent", - ], - }, - TableRow { - raw: "`time_active` | integer | Total active time (seconds)", - columns: [ - "time_active", - "integer", - "Total active time (seconds)", - ], - }, - TableRow { - raw: "`total_size` | integer | Total size (bytes) of all file in this torrent (including unselected ones)", - columns: [ - "total_size", - "integer", - "Total size (bytes) of all file in this torrent (including unselected ones)", - ], - }, - TableRow { - raw: "`tracker` | string | The first tracker with working status. Returns empty string if no tracker is working.", - columns: [ - "tracker", - "string", - "The first tracker with working status. Returns empty string if no tracker is working.", - ], - }, - TableRow { - raw: "`up_limit` | integer | Torrent upload speed limit (bytes/s). `-1` if ulimited.", - columns: [ - "up_limit", - "integer", - "Torrent upload speed limit (bytes/s). -1 if ulimited.", - ], - }, - TableRow { - raw: "`uploaded` | integer | Amount of data uploaded", - columns: [ - "uploaded", - "integer", - "Amount of data uploaded", - ], - }, - TableRow { - raw: "`uploaded_session` | integer | Amount of data uploaded this session", - columns: [ - "uploaded_session", - "integer", - "Amount of data uploaded this session", - ], - }, - TableRow { - raw: "`upspeed` | integer | Torrent upload speed (bytes/s)", - columns: [ - "upspeed", - "integer", - "Torrent upload speed (bytes/s)", - ], - }, - ], - }, - ), - Text( - "Possible values of `state`:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Value | Description", - columns: [ - "Value", - "Description", - ], - }, - split: "--------------|------------", - rows: [ - TableRow { - raw: "`error` | Some error occurred, applies to paused torrents", - columns: [ - "error", - "Some error occurred, applies to paused torrents", - ], - }, - TableRow { - raw: "`missingFiles`| Torrent data files is missing", - columns: [ - "missingFiles", - "Torrent data files is missing", - ], - }, - TableRow { - raw: "`uploading` | Torrent is being seeded and data is being transferred", - columns: [ - "uploading", - "Torrent is being seeded and data is being transferred", - ], - }, - TableRow { - raw: "`pausedUP` | Torrent is paused and has finished downloading", - columns: [ - "pausedUP", - "Torrent is paused and has finished downloading", - ], - }, - TableRow { - raw: "`queuedUP` | Queuing is enabled and torrent is queued for upload", - columns: [ - "queuedUP", - "Queuing is enabled and torrent is queued for upload", - ], - }, - TableRow { - raw: "`stalledUP` | Torrent is being seeded, but no connection were made", - columns: [ - "stalledUP", - "Torrent is being seeded, but no connection were made", - ], - }, - TableRow { - raw: "`checkingUP` | Torrent has finished downloading and is being checked", - columns: [ - "checkingUP", - "Torrent has finished downloading and is being checked", - ], - }, - TableRow { - raw: "`forcedUP` | Torrent is forced to uploading and ignore queue limit", - columns: [ - "forcedUP", - "Torrent is forced to uploading and ignore queue limit", - ], - }, - TableRow { - raw: "`allocating` | Torrent is allocating disk space for download", - columns: [ - "allocating", - "Torrent is allocating disk space for download", - ], - }, - TableRow { - raw: "`downloading` | Torrent is being downloaded and data is being transferred", - columns: [ - "downloading", - "Torrent is being downloaded and data is being transferred", - ], - }, - TableRow { - raw: "`metaDL` | Torrent has just started downloading and is fetching metadata", - columns: [ - "metaDL", - "Torrent has just started downloading and is fetching metadata", - ], - }, - TableRow { - raw: "`pausedDL` | Torrent is paused and has NOT finished downloading", - columns: [ - "pausedDL", - "Torrent is paused and has NOT finished downloading", - ], - }, - TableRow { - raw: "`queuedDL` | Queuing is enabled and torrent is queued for download", - columns: [ - "queuedDL", - "Queuing is enabled and torrent is queued for download", - ], - }, - TableRow { - raw: "`stalledDL` | Torrent is being downloaded, but no connection were made", - columns: [ - "stalledDL", - "Torrent is being downloaded, but no connection were made", - ], - }, - TableRow { - raw: "`checkingDL` | Same as checkingUP, but torrent has NOT finished downloading", - columns: [ - "checkingDL", - "Same as checkingUP, but torrent has NOT finished downloading", - ], - }, - TableRow { - raw: "`forcedDL` | Torrent is forced to downloading to ignore queue limit", - columns: [ - "forcedDL", - "Torrent is forced to downloading to ignore queue limit", - ], - }, - TableRow { - raw: "`checkingResumeData`| Checking resume data on qBt startup", - columns: [ - "checkingResumeData", - "Checking resume data on qBt startup", - ], - }, - TableRow { - raw: "`moving` | Torrent is moving to another location", - columns: [ - "moving", - "Torrent is moving to another location", - ], - }, - TableRow { - raw: "`unknown` | Unknown status", - columns: [ - "unknown", - "Unknown status", - ], - }, - ], - }, - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```JSON", - ), - Text( - "[", - ), - Text( - " {", - ), - Text( - " \"dlspeed\":9681262,", - ), - Text( - " \"eta\":87,", - ), - Text( - " \"f_l_piece_prio\":false,", - ), - Text( - " \"force_start\":false,", - ), - Text( - " \"hash\":\"8c212779b4abde7c6bc608063a0d008b7e40ce32\",", - ), - Text( - " \"category\":\"\",", - ), - Text( - " \"tags\": \"\",", - ), - Text( - " \"name\":\"debian-8.1.0-amd64-CD-1.iso\",", - ), - Text( - " \"num_complete\":-1,", - ), - Text( - " \"num_incomplete\":-1,", - ), - Text( - " \"num_leechs\":2,", - ), - Text( - " \"num_seeds\":54,", - ), - Text( - " \"priority\":1,", - ), - Text( - " \"progress\":0.16108787059783936,", - ), - Text( - " \"ratio\":0,", - ), - Text( - " \"seq_dl\":false,", - ), - Text( - " \"size\":657457152,", - ), - Text( - " \"state\":\"downloading\",", - ), - Text( - " \"super_seeding\":false,", - ), - Text( - " \"upspeed\":0", - ), - Text( - " },", - ), - Text( - " {", - ), - Text( - " another_torrent_info", - ), - Text( - " }", - ), - Text( - "]", - ), - Text( - "```", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Get torrent generic properties", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hash. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `properties`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------|--------|------------", - rows: [ - TableRow { - raw: "`hash` | string | The hash of the torrent you want to get the generic properties of", - columns: [ - "hash", - "string", - "The hash of the torrent you want to get the generic properties of", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "404 | Torrent hash was not found", - columns: [ - "404", - "Torrent hash was not found", - ], - }, - TableRow { - raw: "200 | All other scenarios- see JSON below", - columns: [ - "200", - "All other scenarios- see JSON below", - ], - }, - ], - }, - ), - Text( - "The response is:", - ), - Text( - "", - ), - Text( - "- empty, if the torrent hash is invalid", - ), - Text( - "- otherwise, a JSON object with the following fields", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Property | Type | Description", - columns: [ - "Property", - "Type", - "Description", - ], - }, - split: "--------------------------|---------|------------", - rows: [ - TableRow { - raw: "`save_path` | string | Torrent save path", - columns: [ - "save_path", - "string", - "Torrent save path", - ], - }, - TableRow { - raw: "`creation_date` | integer | Torrent creation date (Unix timestamp)", - columns: [ - "creation_date", - "integer", - "Torrent creation date (Unix timestamp)", - ], - }, - TableRow { - raw: "`piece_size` | integer | Torrent piece size (bytes)", - columns: [ - "piece_size", - "integer", - "Torrent piece size (bytes)", - ], - }, - TableRow { - raw: "`comment` | string | Torrent comment", - columns: [ - "comment", - "string", - "Torrent comment", - ], - }, - TableRow { - raw: "`total_wasted` | integer | Total data wasted for torrent (bytes)", - columns: [ - "total_wasted", - "integer", - "Total data wasted for torrent (bytes)", - ], - }, - TableRow { - raw: "`total_uploaded` | integer | Total data uploaded for torrent (bytes)", - columns: [ - "total_uploaded", - "integer", - "Total data uploaded for torrent (bytes)", - ], - }, - TableRow { - raw: "`total_uploaded_session` | integer | Total data uploaded this session (bytes)", - columns: [ - "total_uploaded_session", - "integer", - "Total data uploaded this session (bytes)", - ], - }, - TableRow { - raw: "`total_downloaded` | integer | Total data downloaded for torrent (bytes)", - columns: [ - "total_downloaded", - "integer", - "Total data downloaded for torrent (bytes)", - ], - }, - TableRow { - raw: "`total_downloaded_session`| integer | Total data downloaded this session (bytes)", - columns: [ - "total_downloaded_session", - "integer", - "Total data downloaded this session (bytes)", - ], - }, - TableRow { - raw: "`up_limit` | integer | Torrent upload limit (bytes/s)", - columns: [ - "up_limit", - "integer", - "Torrent upload limit (bytes/s)", - ], - }, - TableRow { - raw: "`dl_limit` | integer | Torrent download limit (bytes/s)", - columns: [ - "dl_limit", - "integer", - "Torrent download limit (bytes/s)", - ], - }, - TableRow { - raw: "`time_elapsed` | integer | Torrent elapsed time (seconds)", - columns: [ - "time_elapsed", - "integer", - "Torrent elapsed time (seconds)", - ], - }, - TableRow { - raw: "`seeding_time` | integer | Torrent elapsed time while complete (seconds)", - columns: [ - "seeding_time", - "integer", - "Torrent elapsed time while complete (seconds)", - ], - }, - TableRow { - raw: "`nb_connections` | integer | Torrent connection count", - columns: [ - "nb_connections", - "integer", - "Torrent connection count", - ], - }, - TableRow { - raw: "`nb_connections_limit` | integer | Torrent connection count limit", - columns: [ - "nb_connections_limit", - "integer", - "Torrent connection count limit", - ], - }, - TableRow { - raw: "`share_ratio` | float | Torrent share ratio", - columns: [ - "share_ratio", - "float", - "Torrent share ratio", - ], - }, - TableRow { - raw: "`addition_date` | integer | When this torrent was added (unix timestamp)", - columns: [ - "addition_date", - "integer", - "When this torrent was added (unix timestamp)", - ], - }, - TableRow { - raw: "`completion_date` | integer | Torrent completion date (unix timestamp)", - columns: [ - "completion_date", - "integer", - "Torrent completion date (unix timestamp)", - ], - }, - TableRow { - raw: "`created_by` | string | Torrent creator", - columns: [ - "created_by", - "string", - "Torrent creator", - ], - }, - TableRow { - raw: "`dl_speed_avg` | integer | Torrent average download speed (bytes/second)", - columns: [ - "dl_speed_avg", - "integer", - "Torrent average download speed (bytes/second)", - ], - }, - TableRow { - raw: "`dl_speed` | integer | Torrent download speed (bytes/second)", - columns: [ - "dl_speed", - "integer", - "Torrent download speed (bytes/second)", - ], - }, - TableRow { - raw: "`eta` | integer | Torrent ETA (seconds)", - columns: [ - "eta", - "integer", - "Torrent ETA (seconds)", - ], - }, - TableRow { - raw: "`last_seen` | integer | Last seen complete date (unix timestamp)", - columns: [ - "last_seen", - "integer", - "Last seen complete date (unix timestamp)", - ], - }, - TableRow { - raw: "`peers` | integer | Number of peers connected to", - columns: [ - "peers", - "integer", - "Number of peers connected to", - ], - }, - TableRow { - raw: "`peers_total` | integer | Number of peers in the swarm", - columns: [ - "peers_total", - "integer", - "Number of peers in the swarm", - ], - }, - TableRow { - raw: "`pieces_have` | integer | Number of pieces owned", - columns: [ - "pieces_have", - "integer", - "Number of pieces owned", - ], - }, - TableRow { - raw: "`pieces_num` | integer | Number of pieces of the torrent", - columns: [ - "pieces_num", - "integer", - "Number of pieces of the torrent", - ], - }, - TableRow { - raw: "`reannounce` | integer | Number of seconds until the next announce", - columns: [ - "reannounce", - "integer", - "Number of seconds until the next announce", - ], - }, - TableRow { - raw: "`seeds` | integer | Number of seeds connected to", - columns: [ - "seeds", - "integer", - "Number of seeds connected to", - ], - }, - TableRow { - raw: "`seeds_total` | integer | Number of seeds in the swarm", - columns: [ - "seeds_total", - "integer", - "Number of seeds in the swarm", - ], - }, - TableRow { - raw: "`total_size` | integer | Torrent total size (bytes)", - columns: [ - "total_size", - "integer", - "Torrent total size (bytes)", - ], - }, - TableRow { - raw: "`up_speed_avg` | integer | Torrent average upload speed (bytes/second)", - columns: [ - "up_speed_avg", - "integer", - "Torrent average upload speed (bytes/second)", - ], - }, - TableRow { - raw: "`up_speed` | integer | Torrent upload speed (bytes/second)", - columns: [ - "up_speed", - "integer", - "Torrent upload speed (bytes/second)", - ], - }, - ], - }, - ), - Text( - "NB: `-1` is returned if the type of the property is integer but its value is not known.", - ), - Text( - "", - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```JSON", - ), - Text( - "{", - ), - Text( - " \"addition_date\":1438429165,", - ), - Text( - " \"comment\":\"\\\"Debian CD from cdimage.debian.org\\\"\",", - ), - Text( - " \"completion_date\":1438429234,", - ), - Text( - " \"created_by\":\"\",", - ), - Text( - " \"creation_date\":1433605214,", - ), - Text( - " \"dl_limit\":-1,", - ), - Text( - " \"dl_speed\":0,", - ), - Text( - " \"dl_speed_avg\":9736015,", - ), - Text( - " \"eta\":8640000,", - ), - Text( - " \"last_seen\":1438430354,", - ), - Text( - " \"nb_connections\":3,", - ), - Text( - " \"nb_connections_limit\":250,", - ), - Text( - " \"peers\":1,", - ), - Text( - " \"peers_total\":89,", - ), - Text( - " \"piece_size\":524288,", - ), - Text( - " \"pieces_have\":1254,", - ), - Text( - " \"pieces_num\":1254,", - ), - Text( - " \"reannounce\":672,", - ), - Text( - " \"save_path\":\"/Downloads/debian-8.1.0-amd64-CD-1.iso\",", - ), - Text( - " \"seeding_time\":1128,", - ), - Text( - " \"seeds\":1,", - ), - Text( - " \"seeds_total\":254,", - ), - Text( - " \"share_ratio\":0.00072121022562178299,", - ), - Text( - " \"time_elapsed\":1197,", - ), - Text( - " \"total_downloaded\":681521119,", - ), - Text( - " \"total_downloaded_session\":681521119,", - ), - Text( - " \"total_size\":657457152,", - ), - Text( - " \"total_uploaded\":491520,", - ), - Text( - " \"total_uploaded_session\":491520,", - ), - Text( - " \"total_wasted\":23481724,", - ), - Text( - " \"up_limit\":-1,", - ), - Text( - " \"up_speed\":0,", - ), - Text( - " \"up_speed_avg\":410", - ), - Text( - "}", - ), - Text( - "```", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Get torrent trackers", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hash. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `trackers`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------|--------|------------", - rows: [ - TableRow { - raw: "`hash` | string | The hash of the torrent you want to get the trackers of", - columns: [ - "hash", - "string", - "The hash of the torrent you want to get the trackers of", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "404 | Torrent hash was not found", - columns: [ - "404", - "Torrent hash was not found", - ], - }, - TableRow { - raw: "200 | All other scenarios- see JSON below", - columns: [ - "200", - "All other scenarios- see JSON below", - ], - }, - ], - }, - ), - Text( - "The response is a JSON array, where each element contains info about one tracker, with the following fields", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Property | Type | Description", - columns: [ - "Property", - "Type", - "Description", - ], - }, - split: "-----------------|----------|-------------", - rows: [ - TableRow { - raw: "`url` | string | Tracker url", - columns: [ - "url", - "string", - "Tracker url", - ], - }, - TableRow { - raw: "`status` | integer | Tracker status. See the table below for possible values", - columns: [ - "status", - "integer", - "Tracker status. See the table below for possible values", - ], - }, - TableRow { - raw: "`tier` | integer | Tracker priority tier. Lower tier trackers are tried before higher tiers. Tier numbers are valid when `>= 0`, `< 0` is used as placeholder when `tier` does not exist for special entries (such as DHT).", - columns: [ - "tier", - "integer", - "Tracker priority tier. Lower tier trackers are tried before higher tiers. Tier numbers are valid when >= 0, < 0 is used as placeholder when tier does not exist for special entries (such as DHT).", - ], - }, - TableRow { - raw: "`num_peers` | integer | Number of peers for current torrent, as reported by the tracker", - columns: [ - "num_peers", - "integer", - "Number of peers for current torrent, as reported by the tracker", - ], - }, - TableRow { - raw: "`num_seeds` | integer | Number of seeds for current torrent, asreported by the tracker", - columns: [ - "num_seeds", - "integer", - "Number of seeds for current torrent, asreported by the tracker", - ], - }, - TableRow { - raw: "`num_leeches` | integer | Number of leeches for current torrent, as reported by the tracker", - columns: [ - "num_leeches", - "integer", - "Number of leeches for current torrent, as reported by the tracker", - ], - }, - TableRow { - raw: "`num_downloaded` | integer | Number of completed downlods for current torrent, as reported by the tracker", - columns: [ - "num_downloaded", - "integer", - "Number of completed downlods for current torrent, as reported by the tracker", - ], - }, - TableRow { - raw: "`msg` | string | Tracker message (there is no way of knowing what this message is - it's up to tracker admins)", - columns: [ - "msg", - "string", - "Tracker message (there is no way of knowing what this message is - it's up to tracker admins)", - ], - }, - ], - }, - ), - Text( - "Possible values of `status`:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Value | Description", - columns: [ - "Value", - "Description", - ], - }, - split: "-------|------------", - rows: [ - TableRow { - raw: "0 | Tracker is disabled (used for DHT, PeX, and LSD)", - columns: [ - "0", - "Tracker is disabled (used for DHT, PeX, and LSD)", - ], - }, - TableRow { - raw: "1 | Tracker has not been contacted yet", - columns: [ - "1", - "Tracker has not been contacted yet", - ], - }, - TableRow { - raw: "2 | Tracker has been contacted and is working", - columns: [ - "2", - "Tracker has been contacted and is working", - ], - }, - TableRow { - raw: "3 | Tracker is updating", - columns: [ - "3", - "Tracker is updating", - ], - }, - TableRow { - raw: "4 | Tracker has been contacted, but it is not working (or doesn't send proper replies)", - columns: [ - "4", - "Tracker has been contacted, but it is not working (or doesn't send proper replies)", - ], - }, - ], - }, - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```JSON", - ), - Text( - "[", - ), - Text( - " {", - ), - Text( - " \"msg\":\"\",", - ), - Text( - " \"num_peers\":100,", - ), - Text( - " \"status\":2,", - ), - Text( - " \"url\":\"http://bttracker.debian.org:6969/announce\"", - ), - Text( - " },", - ), - Text( - " {", - ), - Text( - " another_tracker_info", - ), - Text( - " }", - ), - Text( - "]", - ), - Text( - "```", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Get torrent web seeds", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hash. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `webseeds`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------|--------|------------", - rows: [ - TableRow { - raw: "`hash` | string | The hash of the torrent you want to get the webseeds of", - columns: [ - "hash", - "string", - "The hash of the torrent you want to get the webseeds of", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "404 | Torrent hash was not found", - columns: [ - "404", - "Torrent hash was not found", - ], - }, - TableRow { - raw: "200 | All other scenarios- see JSON below", - columns: [ - "200", - "All other scenarios- see JSON below", - ], - }, - ], - }, - ), - Text( - "The response is a JSON array, where each element is information about one webseed, with the following fields", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Property | Type | Description", - columns: [ - "Property", - "Type", - "Description", - ], - }, - split: "--------------|----------|------------", - rows: [ - TableRow { - raw: "`url` | string | URL of the web seed", - columns: [ - "url", - "string", - "URL of the web seed", - ], - }, - ], - }, - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```JSON", - ), - Text( - "[", - ), - Text( - " {", - ), - Text( - " \"url\":\"http://some_url/\"", - ), - Text( - " },", - ), - Text( - " {", - ), - Text( - " \"url\":\"http://some_other_url/\"", - ), - Text( - " }", - ), - Text( - "]", - ), - Text( - "```", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Get torrent contents", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hash. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `files`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------|--------|------------", - rows: [ - TableRow { - raw: "`hash` | string | The hash of the torrent you want to get the contents of", - columns: [ - "hash", - "string", - "The hash of the torrent you want to get the contents of", - ], - }, - TableRow { - raw: "`indexes` _optional_ since 2.8.2 | string | The indexes of the files you want to retrieve. `indexes` can contain multiple values separated by `\\|`.", - columns: [ - "indexes _optional_ since 2.8.2", - "string", - "The indexes of the files you want to retrieve. indexes can contain multiple values separated by \\", - ".", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "404 | Torrent hash was not found", - columns: [ - "404", - "Torrent hash was not found", - ], - }, - TableRow { - raw: "200 | All other scenarios- see JSON below", - columns: [ - "200", - "All other scenarios- see JSON below", - ], - }, - ], - }, - ), - Text( - "The response is:", - ), - Text( - "", - ), - Text( - "- empty, if the torrent hash is invalid", - ), - Text( - "- otherwise, a JSON array, where each element contains info about one file, with the following fields", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Property | Type | Description", - columns: [ - "Property", - "Type", - "Description", - ], - }, - split: "---------------|---------------|-------------", - rows: [ - TableRow { - raw: "`index` since 2.8.2 | integer | File index", - columns: [ - "index since 2.8.2", - "integer", - "File index", - ], - }, - TableRow { - raw: "`name` | string | File name (including relative path)", - columns: [ - "name", - "string", - "File name (including relative path)", - ], - }, - TableRow { - raw: "`size` | integer | File size (bytes)", - columns: [ - "size", - "integer", - "File size (bytes)", - ], - }, - TableRow { - raw: "`progress` | float | File progress (percentage/100)", - columns: [ - "progress", - "float", - "File progress (percentage/100)", - ], - }, - TableRow { - raw: "`priority` | integer | File priority. See possible values here below", - columns: [ - "priority", - "integer", - "File priority. See possible values here below", - ], - }, - TableRow { - raw: "`is_seed` | bool | True if file is seeding/complete", - columns: [ - "is_seed", - "bool", - "True if file is seeding/complete", - ], - }, - TableRow { - raw: "`piece_range` | integer array | The first number is the starting piece index and the second number is the ending piece index (inclusive)", - columns: [ - "piece_range", - "integer array", - "The first number is the starting piece index and the second number is the ending piece index (inclusive)", - ], - }, - TableRow { - raw: "`availability` | float | Percentage of file pieces currently available (percentage/100)", - columns: [ - "availability", - "float", - "Percentage of file pieces currently available (percentage/100)", - ], - }, - ], - }, - ), - Text( - "Possible values of `priority`:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Value | Description", - columns: [ - "Value", - "Description", - ], - }, - split: "-----------|------------", - rows: [ - TableRow { - raw: "`0` | Do not download", - columns: [ - "0", - "Do not download", - ], - }, - TableRow { - raw: "`1` | Normal priority", - columns: [ - "1", - "Normal priority", - ], - }, - TableRow { - raw: "`6` | High priority", - columns: [ - "6", - "High priority", - ], - }, - TableRow { - raw: "`7` | Maximal priority", - columns: [ - "7", - "Maximal priority", - ], - }, - ], - }, - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```JSON", - ), - Text( - "", - ), - Text( - "[", - ), - Text( - " {", - ), - Text( - " \"index\":0,", - ), - Text( - " \"is_seed\":false,", - ), - Text( - " \"name\":\"debian-8.1.0-amd64-CD-1.iso\",", - ), - Text( - " \"piece_range\":[0,1253],", - ), - Text( - " \"priority\":1,", - ), - Text( - " \"progress\":0,", - ), - Text( - " \"size\":657457152,", - ), - Text( - " \"availability\":0.5,", - ), - Text( - " }", - ), - Text( - "]", - ), - Text( - "```", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Get torrent pieces' states", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hash. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `pieceStates`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------|--------|------------", - rows: [ - TableRow { - raw: "`hash` | string | The hash of the torrent you want to get the pieces' states of", - columns: [ - "hash", - "string", - "The hash of the torrent you want to get the pieces' states of", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "404 | Torrent hash was not found", - columns: [ - "404", - "Torrent hash was not found", - ], - }, - TableRow { - raw: "200 | All other scenarios- see JSON below", - columns: [ - "200", - "All other scenarios- see JSON below", - ], - }, - ], - }, - ), - Text( - "The response is:", - ), - Text( - "", - ), - Text( - "- empty, if the torrent hash is invalid", - ), - Text( - "- otherwise, an array of states (integers) of all pieces (in order) of a specific torrent.", - ), - Text( - "", - ), - Text( - "Value meanings are defined as below:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Value | Description", - columns: [ - "Value", - "Description", - ], - }, - split: "-----------|------------", - rows: [ - TableRow { - raw: "`0` | Not downloaded yet", - columns: [ - "0", - "Not downloaded yet", - ], - }, - TableRow { - raw: "`1` | Now downloading", - columns: [ - "1", - "Now downloading", - ], - }, - TableRow { - raw: "`2` | Already downloaded", - columns: [ - "2", - "Already downloaded", - ], - }, - ], - }, - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```JSON", - ), - Text( - "[0,0,2,1,0,0,2,1]", - ), - Text( - "```", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Get torrent pieces' hashes", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hash. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `pieceHashes`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------|--------|------------", - rows: [ - TableRow { - raw: "`hash` | string | The hash of the torrent you want to get the pieces' hashes of", - columns: [ - "hash", - "string", - "The hash of the torrent you want to get the pieces' hashes of", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "404 | Torrent hash was not found", - columns: [ - "404", - "Torrent hash was not found", - ], - }, - TableRow { - raw: "200 | All other scenarios- see JSON below", - columns: [ - "200", - "All other scenarios- see JSON below", - ], - }, - ], - }, - ), - Text( - "The response is:", - ), - Text( - "", - ), - Text( - "- empty, if the torrent hash is invalid", - ), - Text( - "- otherwise, an array of hashes (strings) of all pieces (in order) of a specific torrent.", - ), - Text( - "", - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```JSON", - ), - Text( - "[\"54eddd830a5b58480a6143d616a97e3a6c23c439\",\"f8a99d225aa4241db100f88407fc3bdaead583ab\",\"928fb615b9bd4dd8f9e9022552c8f8f37ef76f58\"]", - ), - Text( - "```", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Pause torrents", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hashes. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `pause`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "------------|----------|------------", - rows: [ - TableRow { - raw: "`hashes` | string | The hashes of the torrents you want to pause. `hashes` can contain multiple hashes separated by `\\|`, to pause multiple torrents, or set to `all`, to pause all torrents.", - columns: [ - "hashes", - "string", - "The hashes of the torrents you want to pause. hashes can contain multiple hashes separated by \\", - ", to pause multiple torrents, or set to all, to pause all torrents.", - ], - }, - ], - }, - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```http", - ), - Table( - Table { - header: TableRow { - raw: "/api/v2/torrents/pause?hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32|54eddd830a5b58480a6143d616a97e3a6c23c439", - columns: [ - "/api/v2/torrents/pause?hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32", - "54eddd830a5b58480a6143d616a97e3a6c23c439", - ], - }, - split: "```", - rows: [], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Resume torrents", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hashes. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `resume`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "------------|----------|------------", - rows: [ - TableRow { - raw: "`hashes` | string | The hashes of the torrents you want to resume. `hashes` can contain multiple hashes separated by `\\|`, to resume multiple torrents, or set to `all`, to resume all torrents.", - columns: [ - "hashes", - "string", - "The hashes of the torrents you want to resume. hashes can contain multiple hashes separated by \\", - ", to resume multiple torrents, or set to all, to resume all torrents.", - ], - }, - ], - }, - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```http", - ), - Table( - Table { - header: TableRow { - raw: "/api/v2/torrents/resume?hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32|54eddd830a5b58480a6143d616a97e3a6c23c439", - columns: [ - "/api/v2/torrents/resume?hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32", - "54eddd830a5b58480a6143d616a97e3a6c23c439", - ], - }, - split: "```", - rows: [], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Delete torrents", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hashes. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `delete`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "------------|----------|------------", - rows: [ - TableRow { - raw: "`hashes` | string | The hashes of the torrents you want to delete. `hashes` can contain multiple hashes separated by `\\|`, to delete multiple torrents, or set to `all`, to delete all torrents.", - columns: [ - "hashes", - "string", - "The hashes of the torrents you want to delete. hashes can contain multiple hashes separated by \\", - ", to delete multiple torrents, or set to all, to delete all torrents.", - ], - }, - TableRow { - raw: "`deleteFiles` | If set to `true`, the downloaded data will also be deleted, otherwise has no effect.", - columns: [ - "deleteFiles", - "If set to true, the downloaded data will also be deleted, otherwise has no effect.", - ], - }, - ], - }, - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "/api/v2/torrents/delete?hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32&deleteFiles=false", - ), - Text( - "```", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Recheck torrents", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hashes. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `recheck`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "------------|----------|------------", - rows: [ - TableRow { - raw: "`hashes` | string | The hashes of the torrents you want to recheck. `hashes` can contain multiple hashes separated by `\\|`, to recheck multiple torrents, or set to `all`, to recheck all torrents.", - columns: [ - "hashes", - "string", - "The hashes of the torrents you want to recheck. hashes can contain multiple hashes separated by \\", - ", to recheck multiple torrents, or set to all, to recheck all torrents.", - ], - }, - ], - }, - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```http", - ), - Table( - Table { - header: TableRow { - raw: "/api/v2/torrents/recheck?hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32|54eddd830a5b58480a6143d616a97e3a6c23c439", - columns: [ - "/api/v2/torrents/recheck?hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32", - "54eddd830a5b58480a6143d616a97e3a6c23c439", - ], - }, - split: "```", - rows: [], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Reannounce torrents", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hashes. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `reannounce`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "------------|----------|------------", - rows: [ - TableRow { - raw: "`hashes` | string | The hashes of the torrents you want to reannounce. `hashes` can contain multiple hashes separated by `\\|`, to reannounce multiple torrents, or set to `all`, to reannounce all torrents.", - columns: [ - "hashes", - "string", - "The hashes of the torrents you want to reannounce. hashes can contain multiple hashes separated by \\", - ", to reannounce multiple torrents, or set to all, to reannounce all torrents.", - ], - }, - ], - }, - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```http", - ), - Table( - Table { - header: TableRow { - raw: "/api/v2/torrents/reannounce?hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32|54eddd830a5b58480a6143d616a97e3a6c23c439", - columns: [ - "/api/v2/torrents/reannounce?hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32", - "54eddd830a5b58480a6143d616a97e3a6c23c439", - ], - }, - split: "```", - rows: [], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Add new torrent", - ), - content: [ - Text( - "", - ), - Text( - "This method can add torrents from server local file or from URLs. `http://`, `https://`, `magnet:` and `bc://bt/` links are supported.", - ), - Text( - "", - ), - Text( - "Name: `add`", - ), - Text( - "", - ), - Text( - "Add torrent from URLs example:", - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "POST /api/v2/torrents/add HTTP/1.1", - ), - Text( - "User-Agent: Fiddler", - ), - Text( - "Host: 127.0.0.1", - ), - Text( - "Cookie: SID=your_sid", - ), - Text( - "Content-Type: multipart/form-data; boundary=---------------------------6688794727912", - ), - Text( - "Content-Length: length", - ), - Text( - "", - ), - Text( - "-----------------------------6688794727912", - ), - Text( - "Content-Disposition: form-data; name=\"urls\"", - ), - Text( - "", - ), - Text( - "https://torcache.net/torrent/3B1A1469C180F447B77021074DBBCCAEF62611E7.torrent", - ), - Text( - "https://torcache.net/torrent/3B1A1469C180F447B77021074DBBCCAEF62611E8.torrent", - ), - Text( - "-----------------------------6688794727912", - ), - Text( - "Content-Disposition: form-data; name=\"savepath\"", - ), - Text( - "", - ), - Text( - "C:/Users/qBit/Downloads", - ), - Text( - "-----------------------------6688794727912", - ), - Text( - "Content-Disposition: form-data; name=\"cookie\"", - ), - Text( - "", - ), - Text( - "ui=28979218048197", - ), - Text( - "-----------------------------6688794727912", - ), - Text( - "Content-Disposition: form-data; name=\"category\"", - ), - Text( - "", - ), - Text( - "movies", - ), - Text( - "-----------------------------6688794727912", - ), - Text( - "Content-Disposition: form-data; name=\"skip_checking\"", - ), - Text( - "", - ), - Text( - "true", - ), - Text( - "-----------------------------6688794727912", - ), - Text( - "Content-Disposition: form-data; name=\"paused\"", - ), - Text( - "", - ), - Text( - "true", - ), - Text( - "-----------------------------6688794727912", - ), - Text( - "Content-Disposition: form-data; name=\"root_folder\"", - ), - Text( - "", - ), - Text( - "true", - ), - Text( - "-----------------------------6688794727912--", - ), - Text( - "```", - ), - Text( - "", - ), - Text( - "Add torrents from files example:", - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "POST /api/v2/torrents/add HTTP/1.1", - ), - Text( - "Content-Type: multipart/form-data; boundary=-------------------------acebdf13572468", - ), - Text( - "User-Agent: Fiddler", - ), - Text( - "Host: 127.0.0.1", - ), - Text( - "Cookie: SID=your_sid", - ), - Text( - "Content-Length: length", - ), - Text( - "", - ), - Text( - "---------------------------acebdf13572468", - ), - Text( - "Content-Disposition: form-data; name=\"torrents\"; filename=\"8f18036b7a205c9347cb84a253975e12f7adddf2.torrent\"", - ), - Text( - "Content-Type: application/x-bittorrent", - ), - Text( - "", - ), - Text( - "file_binary_data_goes_here", - ), - Text( - "---------------------------acebdf13572468", - ), - Text( - "Content-Disposition: form-data; name=\"torrents\"; filename=\"UFS.torrent\"", - ), - Text( - "Content-Type: application/x-bittorrent", - ), - Text( - "", - ), - Text( - "file_binary_data_goes_here", - ), - Text( - "---------------------------acebdf13572468--", - ), - Text( - "", - ), - Text( - "```", - ), - Text( - "", - ), - Text( - "The above example will add two torrent files. `file_binary_data_goes_here` represents raw data of torrent file (basically a byte array).", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Property | Type | Description", - columns: [ - "Property", - "Type", - "Description", - ], - }, - split: "--------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`urls` | string | URLs separated with newlines", - columns: [ - "urls", - "string", - "URLs separated with newlines", - ], - }, - TableRow { - raw: "`torrents` | raw | Raw data of torrent file. `torrents` can be presented multiple times.", - columns: [ - "torrents", - "raw", - "Raw data of torrent file. torrents can be presented multiple times.", - ], - }, - TableRow { - raw: "`savepath` _optional_ | string | Download folder", - columns: [ - "savepath _optional_", - "string", - "Download folder", - ], - }, - TableRow { - raw: "`cookie` _optional_ | string | Cookie sent to download the .torrent file", - columns: [ - "cookie _optional_", - "string", - "Cookie sent to download the .torrent file", - ], - }, - TableRow { - raw: "`category` _optional_ | string | Category for the torrent", - columns: [ - "category _optional_", - "string", - "Category for the torrent", - ], - }, - TableRow { - raw: "`tags` _optional_ | string | Tags for the torrent, split by ','", - columns: [ - "tags _optional_", - "string", - "Tags for the torrent, split by ','", - ], - }, - TableRow { - raw: "`skip_checking` _optional_ | string | Skip hash checking. Possible values are `true`, `false` (default)", - columns: [ - "skip_checking _optional_", - "string", - "Skip hash checking. Possible values are true, false (default)", - ], - }, - TableRow { - raw: "`paused` _optional_ | string | Add torrents in the paused state. Possible values are `true`, `false` (default)", - columns: [ - "paused _optional_", - "string", - "Add torrents in the paused state. Possible values are true, false (default)", - ], - }, - TableRow { - raw: "`root_folder` _optional_ | string | Create the root folder. Possible values are `true`, `false`, unset (default)", - columns: [ - "root_folder _optional_", - "string", - "Create the root folder. Possible values are true, false, unset (default)", - ], - }, - TableRow { - raw: "`rename` _optional_ | string | Rename torrent", - columns: [ - "rename _optional_", - "string", - "Rename torrent", - ], - }, - TableRow { - raw: "`upLimit` _optional_ | integer | Set torrent upload speed limit. Unit in bytes/second", - columns: [ - "upLimit _optional_", - "integer", - "Set torrent upload speed limit. Unit in bytes/second", - ], - }, - TableRow { - raw: "`dlLimit` _optional_ | integer | Set torrent download speed limit. Unit in bytes/second", - columns: [ - "dlLimit _optional_", - "integer", - "Set torrent download speed limit. Unit in bytes/second", - ], - }, - TableRow { - raw: "`ratioLimit` _optional_ since 2.8.1 | float | Set torrent share ratio limit", - columns: [ - "ratioLimit _optional_ since 2.8.1", - "float", - "Set torrent share ratio limit", - ], - }, - TableRow { - raw: "`seedingTimeLimit` _optional_ since 2.8.1 | integer | Set torrent seeding time limit. Unit in seconds", - columns: [ - "seedingTimeLimit _optional_ since 2.8.1", - "integer", - "Set torrent seeding time limit. Unit in seconds", - ], - }, - TableRow { - raw: "`autoTMM` _optional_ | bool | Whether Automatic Torrent Management should be used", - columns: [ - "autoTMM _optional_", - "bool", - "Whether Automatic Torrent Management should be used", - ], - }, - TableRow { - raw: "`sequentialDownload` _optional_ | string | Enable sequential download. Possible values are `true`, `false` (default)", - columns: [ - "sequentialDownload _optional_", - "string", - "Enable sequential download. Possible values are true, false (default)", - ], - }, - TableRow { - raw: "`firstLastPiecePrio` _optional_ | string | Prioritize download first last piece. Possible values are `true`, `false` (default)", - columns: [ - "firstLastPiecePrio _optional_", - "string", - "Prioritize download first last piece. Possible values are true, false (default)", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "415 | Torrent file is not valid", - columns: [ - "415", - "Torrent file is not valid", - ], - }, - TableRow { - raw: "200 | All other scenarios", - columns: [ - "200", - "All other scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Add trackers to torrent", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hash. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `addTrackers`", - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "POST /api/v2/torrents/addTrackers HTTP/1.1", - ), - Text( - "User-Agent: Fiddler", - ), - Text( - "Host: 127.0.0.1", - ), - Text( - "Cookie: SID=your_sid", - ), - Text( - "Content-Type: application/x-www-form-urlencoded", - ), - Text( - "Content-Length: length", - ), - Text( - "", - ), - Text( - "hash=8c212779b4abde7c6bc608063a0d008b7e40ce32&urls=http://192.168.0.1/announce%0Audp://192.168.0.1:3333/dummyAnnounce", - ), - Text( - "```", - ), - Text( - "", - ), - Text( - "This adds two trackers to torrent with hash `8c212779b4abde7c6bc608063a0d008b7e40ce32`. Note `%0A` (aka LF newline) between trackers. Ampersand in tracker urls **MUST** be escaped.", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "404 | Torrent hash was not found", - columns: [ - "404", - "Torrent hash was not found", - ], - }, - TableRow { - raw: "200 | All other scenarios", - columns: [ - "200", - "All other scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Edit trackers", - ), - content: [ - Text( - "", - ), - Text( - "Name: `editTracker`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`hash` | string | The hash of the torrent", - columns: [ - "hash", - "string", - "The hash of the torrent", - ], - }, - TableRow { - raw: "`origUrl` | string | The tracker URL you want to edit", - columns: [ - "origUrl", - "string", - "The tracker URL you want to edit", - ], - }, - TableRow { - raw: "`newUrl` | string | The new URL to replace the `origUrl`", - columns: [ - "newUrl", - "string", - "The new URL to replace the origUrl", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "400 | `newUrl` is not a valid URL", - columns: [ - "400", - "newUrl is not a valid URL", - ], - }, - TableRow { - raw: "404 | Torrent hash was not found", - columns: [ - "404", - "Torrent hash was not found", - ], - }, - TableRow { - raw: "409 | `newUrl` already exists for the torrent", - columns: [ - "409", - "newUrl already exists for the torrent", - ], - }, - TableRow { - raw: "409 | `origUrl` was not found", - columns: [ - "409", - "origUrl was not found", - ], - }, - TableRow { - raw: "200 | All other scenarios", - columns: [ - "200", - "All other scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Remove trackers", - ), - content: [ - Text( - "", - ), - Text( - "Name: `removeTrackers`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`hash` | string | The hash of the torrent", - columns: [ - "hash", - "string", - "The hash of the torrent", - ], - }, - TableRow { - raw: "`urls` | string | URLs to remove, separated by `\\|`", - columns: [ - "urls", - "string", - "URLs to remove, separated by \\", - "", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "404 | Torrent hash was not found", - columns: [ - "404", - "Torrent hash was not found", - ], - }, - TableRow { - raw: "409 | All `urls` were not found", - columns: [ - "409", - "All urls were not found", - ], - }, - TableRow { - raw: "200 | All other scenarios", - columns: [ - "200", - "All other scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Add peers", - ), - content: [ - Text( - "", - ), - Text( - "Name: `addPeers`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`hashes` | string | The hash of the torrent, or multiple hashes separated by a pipe `\\|`", - columns: [ - "hashes", - "string", - "The hash of the torrent, or multiple hashes separated by a pipe \\", - "", - ], - }, - TableRow { - raw: "`peers` | string | The peer to add, or multiple peers separated by a pipe `\\|`. Each peer is a colon-separated `host:port`", - columns: [ - "peers", - "string", - "The peer to add, or multiple peers separated by a pipe \\", - ". Each peer is a colon-separated host:port", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "400 | None of the supplied peers are valid", - columns: [ - "400", - "None of the supplied peers are valid", - ], - }, - TableRow { - raw: "200 | All other scenarios", - columns: [ - "200", - "All other scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Increase torrent priority", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hash. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `increasePrio`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "------------|----------|------------", - rows: [ - TableRow { - raw: "`hashes` | string | The hashes of the torrents you want to increase the priority of. `hashes` can contain multiple hashes separated by `\\|`, to increase the priority of multiple torrents, or set to `all`, to increase the priority of all torrents.", - columns: [ - "hashes", - "string", - "The hashes of the torrents you want to increase the priority of. hashes can contain multiple hashes separated by \\", - ", to increase the priority of multiple torrents, or set to all, to increase the priority of all torrents.", - ], - }, - ], - }, - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```http", - ), - Table( - Table { - header: TableRow { - raw: "/api/v2/torrents/increasePrio?hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32|54eddd830a5b58480a6143d616a97e3a6c23c439", - columns: [ - "/api/v2/torrents/increasePrio?hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32", - "54eddd830a5b58480a6143d616a97e3a6c23c439", - ], - }, - split: "```", - rows: [], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "409 | Torrent queueing is not enabled", - columns: [ - "409", - "Torrent queueing is not enabled", - ], - }, - TableRow { - raw: "200 | All other scenarios", - columns: [ - "200", - "All other scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Decrease torrent priority", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hash. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `decreasePrio`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "------------|----------|------------", - rows: [ - TableRow { - raw: "`hashes` | string | The hashes of the torrents you want to decrease the priority of. `hashes` can contain multiple hashes separated by `\\|`, to decrease the priority of multiple torrents, or set to `all`, to decrease the priority of all torrents.", - columns: [ - "hashes", - "string", - "The hashes of the torrents you want to decrease the priority of. hashes can contain multiple hashes separated by \\", - ", to decrease the priority of multiple torrents, or set to all, to decrease the priority of all torrents.", - ], - }, - ], - }, - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```http", - ), - Table( - Table { - header: TableRow { - raw: "/api/v2/torrents/decreasePrio?hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32|54eddd830a5b58480a6143d616a97e3a6c23c439", - columns: [ - "/api/v2/torrents/decreasePrio?hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32", - "54eddd830a5b58480a6143d616a97e3a6c23c439", - ], - }, - split: "```", - rows: [], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "409 | Torrent queueing is not enabled", - columns: [ - "409", - "Torrent queueing is not enabled", - ], - }, - TableRow { - raw: "200 | All other scenarios", - columns: [ - "200", - "All other scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Maximal torrent priority", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hash. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `topPrio`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "------------|----------|------------", - rows: [ - TableRow { - raw: "`hashes` | string | The hashes of the torrents you want to set to the maximum priority. `hashes` can contain multiple hashes separated by `\\|`, to set multiple torrents to the maximum priority, or set to `all`, to set all torrents to the maximum priority.", - columns: [ - "hashes", - "string", - "The hashes of the torrents you want to set to the maximum priority. hashes can contain multiple hashes separated by \\", - ", to set multiple torrents to the maximum priority, or set to all, to set all torrents to the maximum priority.", - ], - }, - ], - }, - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```http", - ), - Table( - Table { - header: TableRow { - raw: "/api/v2/torrents/topPrio?hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32|54eddd830a5b58480a6143d616a97e3a6c23c439", - columns: [ - "/api/v2/torrents/topPrio?hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32", - "54eddd830a5b58480a6143d616a97e3a6c23c439", - ], - }, - split: "```", - rows: [], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "409 | Torrent queueing is not enabled", - columns: [ - "409", - "Torrent queueing is not enabled", - ], - }, - TableRow { - raw: "200 | All other scenarios", - columns: [ - "200", - "All other scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Minimal torrent priority", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hash. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `bottomPrio`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "------------|----------|------------", - rows: [ - TableRow { - raw: "`hashes` | string | The hashes of the torrents you want to set to the minimum priority. `hashes` can contain multiple hashes separated by `\\|`, to set multiple torrents to the minimum priority, or set to `all`, to set all torrents to the minimum priority.", - columns: [ - "hashes", - "string", - "The hashes of the torrents you want to set to the minimum priority. hashes can contain multiple hashes separated by \\", - ", to set multiple torrents to the minimum priority, or set to all, to set all torrents to the minimum priority.", - ], - }, - ], - }, - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```http", - ), - Table( - Table { - header: TableRow { - raw: "/api/v2/torrents/bottomPrio?hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32|54eddd830a5b58480a6143d616a97e3a6c23c439", - columns: [ - "/api/v2/torrents/bottomPrio?hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32", - "54eddd830a5b58480a6143d616a97e3a6c23c439", - ], - }, - split: "```", - rows: [], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "409 | Torrent queueing is not enabled", - columns: [ - "409", - "Torrent queueing is not enabled", - ], - }, - TableRow { - raw: "200 | All other scenarios", - columns: [ - "200", - "All other scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Set file priority", - ), - content: [ - Text( - "", - ), - Text( - "Name: `filePrio`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`hash` | string | The hash of the torrent", - columns: [ - "hash", - "string", - "The hash of the torrent", - ], - }, - TableRow { - raw: "`id` | string | File ids, separated by `\\|`", - columns: [ - "id", - "string", - "File ids, separated by \\", - "", - ], - }, - TableRow { - raw: "`priority` | number | File priority to set (consult [torrent contents API](#get-torrent-contents) for possible values)", - columns: [ - "priority", - "number", - "File priority to set (consult [torrent contents API](#get-torrent-contents) for possible values)", - ], - }, - ], - }, - ), - Text( - "`id` values correspond to file position inside the array returned by [torrent contents API](#get-torrent-contents), e.g. `id=0` for first file, `id=1` for second file, etc.", - ), - Text( - "", - ), - Text( - "Since 2.8.2 it is reccomended to use `index` field returned by [torrent contents API](#get-torrent-contents) (since the files can be filtered and the `index` value may differ from the position inside the response array).", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "400 | Priority is invalid", - columns: [ - "400", - "Priority is invalid", - ], - }, - TableRow { - raw: "400 | At least one file `id` is not a valid integer", - columns: [ - "400", - "At least one file id is not a valid integer", - ], - }, - TableRow { - raw: "404 | Torrent hash was not found", - columns: [ - "404", - "Torrent hash was not found", - ], - }, - TableRow { - raw: "409 | Torrent metadata hasn't downloaded yet", - columns: [ - "409", - "Torrent metadata hasn't downloaded yet", - ], - }, - TableRow { - raw: "409 | At least one file `id` was not found", - columns: [ - "409", - "At least one file id was not found", - ], - }, - TableRow { - raw: "200 | All other scenarios", - columns: [ - "200", - "All other scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Get torrent download limit", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hash. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `downloadLimit`", - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "POST /api/v2/torrents/downloadLimit HTTP/1.1", - ), - Text( - "User-Agent: Fiddler", - ), - Text( - "Host: 127.0.0.1", - ), - Text( - "Cookie: SID=your_sid", - ), - Text( - "Content-Type: application/x-www-form-urlencoded", - ), - Text( - "Content-Length: length", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32|284b83c9c7935002391129fd97f43db5d7cc2ba0", - columns: [ - "hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32", - "284b83c9c7935002391129fd97f43db5d7cc2ba0", - ], - }, - split: "```", - rows: [], - }, - ), - Table( - Table { - header: TableRow { - raw: "`hashes` can contain multiple hashes separated by `|` or set to `all`", - columns: [ - "hashes can contain multiple hashes separated by", - "or set to all", - ], - }, - split: "", - rows: [], - }, - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "HTTP/1.1 200 OK", - ), - Text( - "content-type: application/json", - ), - Text( - "content-length: length", - ), - Text( - "", - ), - Text( - "{\"8c212779b4abde7c6bc608063a0d008b7e40ce32\":338944,\"284b83c9c7935002391129fd97f43db5d7cc2ba0\":123}", - ), - Text( - "```", - ), - Text( - "", - ), - Text( - "`8c212779b4abde7c6bc608063a0d008b7e40ce32` is the hash of the torrent and `338944` its download speed limit in bytes per second; this value will be zero if no limit is applied.", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Set torrent download limit", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hash. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "POST /api/v2/torrents/setDownloadLimit HTTP/1.1", - ), - Text( - "User-Agent: Fiddler", - ), - Text( - "Host: 127.0.0.1", - ), - Text( - "Cookie: SID=your_sid", - ), - Text( - "Content-Type: application/x-www-form-urlencoded", - ), - Text( - "Content-Length: length", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32|284b83c9c7935002391129fd97f43db5d7cc2ba0&limit=131072", - columns: [ - "hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32", - "284b83c9c7935002391129fd97f43db5d7cc2ba0&limit=131072", - ], - }, - split: "```", - rows: [], - }, - ), - Table( - Table { - header: TableRow { - raw: "`hashes` can contain multiple hashes separated by `|` or set to `all`", - columns: [ - "hashes can contain multiple hashes separated by", - "or set to all", - ], - }, - split: "`limit` is the download speed limit in bytes per second you want to set.", - rows: [], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Set torrent share limit", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hash. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `setShareLimits`", - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "POST /api/v2/torrents/setShareLimits HTTP/1.1", - ), - Text( - "User-Agent: Fiddler", - ), - Text( - "Host: 127.0.0.1", - ), - Text( - "Cookie: SID=your_sid", - ), - Text( - "Content-Type: application/x-www-form-urlencoded", - ), - Text( - "Content-Length: length", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32|284b83c9c7935002391129fd97f43db5d7cc2ba0&ratioLimit=1.0&seedingTimeLimit=60", - columns: [ - "hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32", - "284b83c9c7935002391129fd97f43db5d7cc2ba0&ratioLimit=1.0&seedingTimeLimit=60", - ], - }, - split: "```", - rows: [], - }, - ), - Table( - Table { - header: TableRow { - raw: "`hashes` can contain multiple hashes separated by `|` or set to `all`", - columns: [ - "hashes can contain multiple hashes separated by", - "or set to all", - ], - }, - split: "`ratioLimit` is the max ratio the torrent should be seeded until. `-2` means the global limit should be used, `-1` means no limit.", - rows: [], - }, - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Get torrent upload limit", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hash. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `uploadLimit`", - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "POST /api/v2/torrents/uploadLimit HTTP/1.1", - ), - Text( - "User-Agent: Fiddler", - ), - Text( - "Host: 127.0.0.1", - ), - Text( - "Cookie: SID=your_sid", - ), - Text( - "Content-Type: application/x-www-form-urlencoded", - ), - Text( - "Content-Length: length", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32|284b83c9c7935002391129fd97f43db5d7cc2ba0", - columns: [ - "hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32", - "284b83c9c7935002391129fd97f43db5d7cc2ba0", - ], - }, - split: "```", - rows: [], - }, - ), - Table( - Table { - header: TableRow { - raw: "`hashes` can contain multiple hashes separated by `|` or set to `all`", - columns: [ - "hashes can contain multiple hashes separated by", - "or set to all", - ], - }, - split: "", - rows: [], - }, - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "HTTP/1.1 200 OK", - ), - Text( - "content-type: application/json", - ), - Text( - "content-length: length", - ), - Text( - "", - ), - Text( - "{\"8c212779b4abde7c6bc608063a0d008b7e40ce32\":338944,\"284b83c9c7935002391129fd97f43db5d7cc2ba0\":123}", - ), - Text( - "```", - ), - Text( - "", - ), - Text( - "`8c212779b4abde7c6bc608063a0d008b7e40ce32` is the hash of the torrent in the request and `338944` its upload speed limit in bytes per second; this value will be zero if no limit is applied.", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Set torrent upload limit", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hash. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `setUploadLimit`", - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "POST /api/v2/torrents/setUploadLimit HTTP/1.1", - ), - Text( - "User-Agent: Fiddler", - ), - Text( - "Host: 127.0.0.1", - ), - Text( - "Cookie: SID=your_sid", - ), - Text( - "Content-Type: application/x-www-form-urlencoded", - ), - Text( - "Content-Length: length", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32|284b83c9c7935002391129fd97f43db5d7cc2ba0&limit=131072", - columns: [ - "hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32", - "284b83c9c7935002391129fd97f43db5d7cc2ba0&limit=131072", - ], - }, - split: "```", - rows: [], - }, - ), - Table( - Table { - header: TableRow { - raw: "`hashes` can contain multiple hashes separated by `|` or set to `all`", - columns: [ - "hashes can contain multiple hashes separated by", - "or set to all", - ], - }, - split: "`limit` is the upload speed limit in bytes per second you want to set.", - rows: [], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Set torrent location", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hash. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `setLocation`", - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "POST /api/v2/torrents/setLocation HTTP/1.1", - ), - Text( - "User-Agent: Fiddler", - ), - Text( - "Host: 127.0.0.1", - ), - Text( - "Cookie: SID=your_sid", - ), - Text( - "Content-Type: application/x-www-form-urlencoded", - ), - Text( - "Content-Length: length", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32|284b83c9c7935002391129fd97f43db5d7cc2ba0&location=/mnt/nfs/media", - columns: [ - "hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32", - "284b83c9c7935002391129fd97f43db5d7cc2ba0&location=/mnt/nfs/media", - ], - }, - split: "```", - rows: [], - }, - ), - Table( - Table { - header: TableRow { - raw: "`hashes` can contain multiple hashes separated by `|` or set to `all`", - columns: [ - "hashes can contain multiple hashes separated by", - "or set to all", - ], - }, - split: "`location` is the location to download the torrent to. If the location doesn't exist, the torrent's location is unchanged.", - rows: [], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "400 | Save path is empty", - columns: [ - "400", - "Save path is empty", - ], - }, - TableRow { - raw: "403 | User does not have write access to directory", - columns: [ - "403", - "User does not have write access to directory", - ], - }, - TableRow { - raw: "409 | Unable to create save path directory", - columns: [ - "409", - "Unable to create save path directory", - ], - }, - TableRow { - raw: "200 | All other scenarios", - columns: [ - "200", - "All other scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Set torrent name", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hash. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `rename`", - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "POST /api/v2/torrents/rename HTTP/1.1", - ), - Text( - "User-Agent: Fiddler", - ), - Text( - "Host: 127.0.0.1", - ), - Text( - "Cookie: SID=your_sid", - ), - Text( - "Content-Type: application/x-www-form-urlencoded", - ), - Text( - "Content-Length: length", - ), - Text( - "", - ), - Text( - "hash=8c212779b4abde7c6bc608063a0d008b7e40ce32&name=This%20is%20a%20test", - ), - Text( - "```", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "404 | Torrent hash is invalid", - columns: [ - "404", - "Torrent hash is invalid", - ], - }, - TableRow { - raw: "409 | Torrent name is empty", - columns: [ - "409", - "Torrent name is empty", - ], - }, - TableRow { - raw: "200 | All other scenarios", - columns: [ - "200", - "All other scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Set torrent category", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hash. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `setCategory`", - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "POST /api/v2/torrents/setCategory HTTP/1.1", - ), - Text( - "User-Agent: Fiddler", - ), - Text( - "Host: 127.0.0.1", - ), - Text( - "Cookie: SID=your_sid", - ), - Text( - "Content-Type: application/x-www-form-urlencoded", - ), - Text( - "Content-Length: length", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32|284b83c9c7935002391129fd97f43db5d7cc2ba0&category=CategoryName", - columns: [ - "hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32", - "284b83c9c7935002391129fd97f43db5d7cc2ba0&category=CategoryName", - ], - }, - split: "```", - rows: [], - }, - ), - Table( - Table { - header: TableRow { - raw: "`hashes` can contain multiple hashes separated by `|` or set to `all`", - columns: [ - "hashes can contain multiple hashes separated by", - "or set to all", - ], - }, - split: "", - rows: [], - }, - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "409 | Category name does not exist", - columns: [ - "409", - "Category name does not exist", - ], - }, - TableRow { - raw: "200 | All other scenarios", - columns: [ - "200", - "All other scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Get all categories", - ), - content: [ - Text( - "", - ), - Text( - "Name: `categories`", - ), - Text( - "", - ), - Text( - "Parameters:", - ), - Text( - "", - ), - Text( - "None", - ), - Text( - "", - ), - Text( - "Returns all categories in JSON format, e.g.:", - ), - Text( - "", - ), - Text( - "```JSON", - ), - Text( - "{", - ), - Text( - " \"Video\": {", - ), - Text( - " \"name\": \"Video\",", - ), - Text( - " \"savePath\": \"/home/user/torrents/video/\"", - ), - Text( - " },", - ), - Text( - " \"eBooks\": {", - ), - Text( - " \"name\": \"eBooks\",", - ), - Text( - " \"savePath\": \"/home/user/torrents/eBooks/\"", - ), - Text( - " }", - ), - Text( - "}", - ), - Text( - "```", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Add new category", - ), - content: [ - Text( - "", - ), - Text( - "Name: `createCategory`", - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "POST /api/v2/torrents/createCategory HTTP/1.1", - ), - Text( - "User-Agent: Fiddler", - ), - Text( - "Host: 127.0.0.1", - ), - Text( - "Cookie: SID=your_sid", - ), - Text( - "Content-Type: application/x-www-form-urlencoded", - ), - Text( - "Content-Length: length", - ), - Text( - "", - ), - Text( - "category=CategoryName&savePath=/path/to/dir", - ), - Text( - "```", - ), - Text( - "", - ), - Text( - "`category` is the category you want to create.", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "400 | Category name is empty", - columns: [ - "400", - "Category name is empty", - ], - }, - TableRow { - raw: "409 | Category name is invalid", - columns: [ - "409", - "Category name is invalid", - ], - }, - TableRow { - raw: "200 | All other scenarios", - columns: [ - "200", - "All other scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Edit category", - ), - content: [ - Text( - "", - ), - Text( - "Name: `editCategory`", - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "POST /api/v2/torrents/editCategory HTTP/1.1", - ), - Text( - "User-Agent: Fiddler", - ), - Text( - "Host: 127.0.0.1", - ), - Text( - "Cookie: SID=your_sid", - ), - Text( - "Content-Type: application/x-www-form-urlencoded", - ), - Text( - "Content-Length: length", - ), - Text( - "", - ), - Text( - "category=CategoryName&savePath=/path/to/save/torrents/to", - ), - Text( - "```", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "400 | Category name is empty", - columns: [ - "400", - "Category name is empty", - ], - }, - TableRow { - raw: "409 | Category editing failed", - columns: [ - "409", - "Category editing failed", - ], - }, - TableRow { - raw: "200 | All other scenarios", - columns: [ - "200", - "All other scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Remove categories", - ), - content: [ - Text( - "", - ), - Text( - "Name: `removeCategories`", - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "POST /api/v2/torrents/removeCategories HTTP/1.1", - ), - Text( - "User-Agent: Fiddler", - ), - Text( - "Host: 127.0.0.1", - ), - Text( - "Cookie: SID=your_sid", - ), - Text( - "Content-Type: application/x-www-form-urlencoded", - ), - Text( - "Content-Length: length", - ), - Text( - "", - ), - Text( - "categories=Category1%0ACategory2", - ), - Text( - "```", - ), - Text( - "", - ), - Text( - "`categories` can contain multiple cateogies separated by `\\n` (%0A urlencoded)", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Add torrent tags", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hash. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `addTags`", - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "POST /api/v2/torrents/addTags HTTP/1.1", - ), - Text( - "User-Agent: Fiddler", - ), - Text( - "Host: 127.0.0.1", - ), - Text( - "Cookie: SID=your_sid", - ), - Text( - "Content-Type: application/x-www-form-urlencoded", - ), - Text( - "Content-Length: length", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32|284b83c9c7935002391129fd97f43db5d7cc2ba0&tags=TagName1,TagName2", - columns: [ - "hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32", - "284b83c9c7935002391129fd97f43db5d7cc2ba0&tags=TagName1,TagName2", - ], - }, - split: "```", - rows: [], - }, - ), - Table( - Table { - header: TableRow { - raw: "`hashes` can contain multiple hashes separated by `|` or set to `all`", - columns: [ - "hashes can contain multiple hashes separated by", - "or set to all", - ], - }, - split: "", - rows: [], - }, - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Remove torrent tags", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hash. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `removeTags`", - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "POST /api/v2/torrents/removeTags HTTP/1.1", - ), - Text( - "User-Agent: Fiddler", - ), - Text( - "Host: 127.0.0.1", - ), - Text( - "Cookie: SID=your_sid", - ), - Text( - "Content-Type: application/x-www-form-urlencoded", - ), - Text( - "Content-Length: length", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32|284b83c9c7935002391129fd97f43db5d7cc2ba0&tags=TagName1,TagName2", - columns: [ - "hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32", - "284b83c9c7935002391129fd97f43db5d7cc2ba0&tags=TagName1,TagName2", - ], - }, - split: "```", - rows: [], - }, - ), - Table( - Table { - header: TableRow { - raw: "`hashes` can contain multiple hashes separated by `|` or set to `all`", - columns: [ - "hashes can contain multiple hashes separated by", - "or set to all", - ], - }, - split: "", - rows: [], - }, - ), - Text( - "Empty list removes all tags from relevant torrents.", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Get all tags", - ), - content: [ - Text( - "", - ), - Text( - "Name: `tags`", - ), - Text( - "", - ), - Text( - "Parameters:", - ), - Text( - "", - ), - Text( - "None", - ), - Text( - "", - ), - Text( - "Returns all tags in JSON format, e.g.:", - ), - Text( - "", - ), - Text( - "```JSON", - ), - Text( - "[", - ), - Text( - " \"Tag 1\",", - ), - Text( - " \"Tag 2\"", - ), - Text( - "]", - ), - Text( - "```", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Create tags", - ), - content: [ - Text( - "", - ), - Text( - "Name: `createTags`", - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "POST /api/v2/torrents/createTags HTTP/1.1", - ), - Text( - "User-Agent: Fiddler", - ), - Text( - "Host: 127.0.0.1", - ), - Text( - "Cookie: SID=your_sid", - ), - Text( - "Content-Type: application/x-www-form-urlencoded", - ), - Text( - "Content-Length: length", - ), - Text( - "", - ), - Text( - "tags=TagName1,TagName2", - ), - Text( - "```", - ), - Text( - "`tags` is a list of tags you want to create.", - ), - Text( - "Can contain multiple tags separated by `,`.", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Delete tags", - ), - content: [ - Text( - "", - ), - Text( - "Name: `deleteTags`", - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "POST /api/v2/torrents/deleteTags HTTP/1.1", - ), - Text( - "User-Agent: Fiddler", - ), - Text( - "Host: 127.0.0.1", - ), - Text( - "Cookie: SID=your_sid", - ), - Text( - "Content-Type: application/x-www-form-urlencoded", - ), - Text( - "Content-Length: length", - ), - Text( - "", - ), - Text( - "tags=TagName1,TagName2", - ), - Text( - "```", - ), - Text( - "", - ), - Text( - "`tags` is a list of tags you want to delete.", - ), - Text( - "Can contain multiple tags separated by `,`.", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Set automatic torrent management", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hash. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `setAutoManagement`", - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "POST /api/v2/torrents/setAutoManagement HTTP/1.1", - ), - Text( - "User-Agent: Fiddler", - ), - Text( - "Host: 127.0.0.1", - ), - Text( - "Cookie: SID=your_sid", - ), - Text( - "Content-Type: application/x-www-form-urlencoded", - ), - Text( - "Content-Length: length", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32|284b83c9c7935002391129fd97f43db5d7cc2ba0&enable=true", - columns: [ - "hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32", - "284b83c9c7935002391129fd97f43db5d7cc2ba0&enable=true", - ], - }, - split: "```", - rows: [], - }, - ), - Table( - Table { - header: TableRow { - raw: "`hashes` can contain multiple hashes separated by `|` or set to `all`", - columns: [ - "hashes can contain multiple hashes separated by", - "or set to all", - ], - }, - split: "`enable` is a boolean, affects the torrents listed in `hashes`, default is `false`", - rows: [], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Toggle sequential download", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hash. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `toggleSequentialDownload`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "------------|----------|------------", - rows: [ - TableRow { - raw: "`hashes` | string | The hashes of the torrents you want to toggle sequential download for. `hashes` can contain multiple hashes separated by `\\|`, to toggle sequential download for multiple torrents, or set to `all`, to toggle sequential download for all torrents.", - columns: [ - "hashes", - "string", - "The hashes of the torrents you want to toggle sequential download for. hashes can contain multiple hashes separated by \\", - ", to toggle sequential download for multiple torrents, or set to all, to toggle sequential download for all torrents.", - ], - }, - ], - }, - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```http", - ), - Table( - Table { - header: TableRow { - raw: "/api/v2/torrents/toggleSequentialDownload?hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32|54eddd830a5b58480a6143d616a97e3a6c23c439", - columns: [ - "/api/v2/torrents/toggleSequentialDownload?hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32", - "54eddd830a5b58480a6143d616a97e3a6c23c439", - ], - }, - split: "```", - rows: [], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Set first/last piece priority", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hash. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `toggleFirstLastPiecePrio`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "------------|----------|------------", - rows: [ - TableRow { - raw: "`hashes` | string | The hashes of the torrents you want to toggle the first/last piece priority for. `hashes` can contain multiple hashes separated by `\\|`, to toggle the first/last piece priority for multiple torrents, or set to `all`, to toggle the first/last piece priority for all torrents.", - columns: [ - "hashes", - "string", - "The hashes of the torrents you want to toggle the first/last piece priority for. hashes can contain multiple hashes separated by \\", - ", to toggle the first/last piece priority for multiple torrents, or set to all, to toggle the first/last piece priority for all torrents.", - ], - }, - ], - }, - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```http", - ), - Table( - Table { - header: TableRow { - raw: "/api/v2/torrents/toggleFirstLastPiecePrio?hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32|54eddd830a5b58480a6143d616a97e3a6c23c439", - columns: [ - "/api/v2/torrents/toggleFirstLastPiecePrio?hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32", - "54eddd830a5b58480a6143d616a97e3a6c23c439", - ], - }, - split: "```", - rows: [], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Set force start", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hash. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `setForceStart`", - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "POST /api/v2/torrents/setForceStart HTTP/1.1", - ), - Text( - "User-Agent: Fiddler", - ), - Text( - "Host: 127.0.0.1", - ), - Text( - "Cookie: SID=your_sid", - ), - Text( - "Content-Type: application/x-www-form-urlencoded", - ), - Text( - "Content-Length: length", - ), - Text( - "", - ), - Text( - "hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32?value=true", - ), - Text( - "```", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "`hashes` can contain multiple hashes separated by `|` or set to `all`", - columns: [ - "hashes can contain multiple hashes separated by", - "or set to all", - ], - }, - split: "`value` is a boolean, affects the torrents listed in `hashes`, default is `false`", - rows: [], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Set super seeding", - ), - content: [ - Text( - "", - ), - Text( - "Requires knowing the torrent hash. You can get it from [torrent list](#get-torrent-list).", - ), - Text( - "", - ), - Text( - "Name: `setSuperSeeding`", - ), - Text( - "", - ), - Text( - "```http", - ), - Text( - "POST /api/v2/torrents/setSuperSeeding HTTP/1.1", - ), - Text( - "User-Agent: Fiddler", - ), - Text( - "Host: 127.0.0.1", - ), - Text( - "Cookie: SID=your_sid", - ), - Text( - "Content-Type: application/x-www-form-urlencoded", - ), - Text( - "Content-Length: length", - ), - Text( - "", - ), - Text( - "hashes=8c212779b4abde7c6bc608063a0d008b7e40ce32?value=true", - ), - Text( - "```", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "`hashes` can contain multiple hashes separated by `|` or set to `all`", - columns: [ - "hashes can contain multiple hashes separated by", - "or set to all", - ], - }, - split: "`value` is a boolean, affects the torrents listed in `hashes`, default is `false`", - rows: [], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Rename file", - ), - content: [ - Text( - "", - ), - Text( - "Name: `renameFile`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------------------------|----------|------------", - rows: [ - TableRow { - raw: "`hash` | string | The hash of the torrent", - columns: [ - "hash", - "string", - "The hash of the torrent", - ], - }, - TableRow { - raw: "`oldPath` | string | The old path of the torrent", - columns: [ - "oldPath", - "string", - "The old path of the torrent", - ], - }, - TableRow { - raw: "`newPath` | string | The new path to use for the file", - columns: [ - "newPath", - "string", - "The new path to use for the file", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "400 | Missing `newPath` parameter", - columns: [ - "400", - "Missing newPath parameter", - ], - }, - TableRow { - raw: "409 | Invalid `newPath` or `oldPath`, or `newPath` already in use", - columns: [ - "409", - "Invalid newPath or oldPath, or newPath already in use", - ], - }, - TableRow { - raw: "200 | All other scenarios", - columns: [ - "200", - "All other scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Rename folder", - ), - content: [ - Text( - "", - ), - Text( - "Name: `renameFolder`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------------------------|----------|------------", - rows: [ - TableRow { - raw: "`hash` | string | The hash of the torrent", - columns: [ - "hash", - "string", - "The hash of the torrent", - ], - }, - TableRow { - raw: "`oldPath` | string | The old path of the torrent", - columns: [ - "oldPath", - "string", - "The old path of the torrent", - ], - }, - TableRow { - raw: "`newPath` | string | The new path to use for the file", - columns: [ - "newPath", - "string", - "The new path to use for the file", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "400 | Missing `newPath` parameter", - columns: [ - "400", - "Missing newPath parameter", - ], - }, - TableRow { - raw: "409 | Invalid `newPath` or `oldPath`, or `newPath` already in use", - columns: [ - "409", - "Invalid newPath or oldPath, or newPath already in use", - ], - }, - TableRow { - raw: "200 | All other scenarios", - columns: [ - "200", - "All other scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - ], - }, - TokenTree { - title: Some( - "RSS (experimental)", - ), - content: [ - Text( - "", - ), - Text( - "All RSS API methods are under \"rss\", e.g.: `/api/v2/rss/methodName`.", - ), - Text( - "", - ), - ], - children: [ - TokenTree { - title: Some( - "Add folder", - ), - content: [ - Text( - "", - ), - Text( - "Name: `addFolder`", - ), - Text( - "", - ), - Text( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`path` | string | Full path of added folder (e.g. \"The Pirate Bay\\Top100\")", - columns: [ - "path", - "string", - "Full path of added folder (e.g. \"The Pirate Bay\\Top100\")", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "409 | Failure to add folder", - columns: [ - "409", - "Failure to add folder", - ], - }, - TableRow { - raw: "200 | All other scenarios", - columns: [ - "200", - "All other scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Add feed", - ), - content: [ - Text( - "", - ), - Text( - "Name: `addFeed`", - ), - Text( - "", - ), - Text( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`url` | string | URL of RSS feed (e.g. \"[http://thepiratebay.org/rss//top100/200](http://thepiratebay.org/rss//top100/200)\")", - columns: [ - "url", - "string", - "URL of RSS feed (e.g. \"[http://thepiratebay.org/rss//top100/200](http://thepiratebay.org/rss//top100/200)\")", - ], - }, - TableRow { - raw: "`path` _optional_ | string | Full path of added folder (e.g. \"The Pirate Bay\\Top100\\Video\")", - columns: [ - "path _optional_", - "string", - "Full path of added folder (e.g. \"The Pirate Bay\\Top100\\Video\")", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "409 | Failure to add feed", - columns: [ - "409", - "Failure to add feed", - ], - }, - TableRow { - raw: "200 | All other scenarios", - columns: [ - "200", - "All other scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Remove item", - ), - content: [ - Text( - "", - ), - Text( - "Removes folder or feed.", - ), - Text( - "", - ), - Text( - "Name: `removeItem`", - ), - Text( - "", - ), - Text( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`path` | string | Full path of removed item (e.g. \"The Pirate Bay\\Top100\")", - columns: [ - "path", - "string", - "Full path of removed item (e.g. \"The Pirate Bay\\Top100\")", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "409 | Failure to remove item", - columns: [ - "409", - "Failure to remove item", - ], - }, - TableRow { - raw: "200 | All other scenarios", - columns: [ - "200", - "All other scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Move item", - ), - content: [ - Text( - "", - ), - Text( - "Moves/renames folder or feed.", - ), - Text( - "", - ), - Text( - "Name: `moveItem`", - ), - Text( - "", - ), - Text( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`itemPath` | string | Current full path of item (e.g. \"The Pirate Bay\\Top100\")", - columns: [ - "itemPath", - "string", - "Current full path of item (e.g. \"The Pirate Bay\\Top100\")", - ], - }, - TableRow { - raw: "`destPath` | string | New full path of item (e.g. \"The Pirate Bay\")", - columns: [ - "destPath", - "string", - "New full path of item (e.g. \"The Pirate Bay\")", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "409 | Failure to move item", - columns: [ - "409", - "Failure to move item", - ], - }, - TableRow { - raw: "200 | All other scenarios", - columns: [ - "200", - "All other scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Get all items", - ), - content: [ - Text( - "", - ), - Text( - "Name: `items`", - ), - Text( - "", - ), - Text( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`withData` _optional_ | bool | True if you need current feed articles", - columns: [ - "withData _optional_", - "bool", - "True if you need current feed articles", - ], - }, - ], - }, - ), - Text( - "Returns all RSS items in JSON format, e.g.:", - ), - Text( - "", - ), - Text( - "```JSON", - ), - Text( - "{", - ), - Text( - " \"HD-Torrents.org\": \"https://hd-torrents.org/rss.php\",", - ), - Text( - " \"PowerfulJRE\": \"https://www.youtube.com/feeds/videos.xml?channel_id=UCzQUP1qoWDoEbmsQxvdjxgQ\",", - ), - Text( - " \"The Pirate Bay\": {", - ), - Text( - " \"Audio\": \"https://thepiratebay.org/rss//top100/100\",", - ), - Text( - " \"Video\": \"https://thepiratebay.org/rss//top100/200\"", - ), - Text( - " }", - ), - Text( - "}", - ), - Text( - "```", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Mark as read", - ), - content: [ - Text( - "", - ), - Text( - "If `articleId` is provided only the article is marked as read otherwise the whole feed is going to be marked as read.", - ), - Text( - "", - ), - Text( - "Name: `markAsRead`", - ), - Text( - "", - ), - Text( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`itemPath` | string | Current full path of item (e.g. \"The Pirate Bay\\Top100\")", - columns: [ - "itemPath", - "string", - "Current full path of item (e.g. \"The Pirate Bay\\Top100\")", - ], - }, - TableRow { - raw: "`articleId` _optional_ | string | ID of article", - columns: [ - "articleId _optional_", - "string", - "ID of article", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Refresh item", - ), - content: [ - Text( - "", - ), - Text( - "Refreshes folder or feed.", - ), - Text( - "", - ), - Text( - "Name: `refreshItem`", - ), - Text( - "", - ), - Text( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`itemPath` | string | Current full path of item (e.g. \"The Pirate Bay\\Top100\")", - columns: [ - "itemPath", - "string", - "Current full path of item (e.g. \"The Pirate Bay\\Top100\")", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Set auto-downloading rule", - ), - content: [ - Text( - "", - ), - Text( - "Name: `setRule`", - ), - Text( - "", - ), - Text( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`ruleName` | string | Rule name (e.g. \"Punisher\")", - columns: [ - "ruleName", - "string", - "Rule name (e.g. \"Punisher\")", - ], - }, - TableRow { - raw: "`ruleDef` | string | JSON encoded rule definition", - columns: [ - "ruleDef", - "string", - "JSON encoded rule definition", - ], - }, - ], - }, - ), - Text( - "Rule definition is JSON encoded dictionary with the following fields:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Field | Type | Description", - columns: [ - "Field", - "Type", - "Description", - ], - }, - split: "----------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`enabled` | bool | Whether the rule is enabled", - columns: [ - "enabled", - "bool", - "Whether the rule is enabled", - ], - }, - TableRow { - raw: "`mustContain` | string | The substring that the torrent name must contain", - columns: [ - "mustContain", - "string", - "The substring that the torrent name must contain", - ], - }, - TableRow { - raw: "`mustNotContain` | string | The substring that the torrent name must not contain", - columns: [ - "mustNotContain", - "string", - "The substring that the torrent name must not contain", - ], - }, - TableRow { - raw: "`useRegex` | bool | Enable regex mode in \"mustContain\" and \"mustNotContain\"", - columns: [ - "useRegex", - "bool", - "Enable regex mode in \"mustContain\" and \"mustNotContain\"", - ], - }, - TableRow { - raw: "`episodeFilter` | string | Episode filter definition", - columns: [ - "episodeFilter", - "string", - "Episode filter definition", - ], - }, - TableRow { - raw: "`smartFilter` | bool | Enable smart episode filter", - columns: [ - "smartFilter", - "bool", - "Enable smart episode filter", - ], - }, - TableRow { - raw: "`previouslyMatchedEpisodes` | list | The list of episode IDs already matched by smart filter", - columns: [ - "previouslyMatchedEpisodes", - "list", - "The list of episode IDs already matched by smart filter", - ], - }, - TableRow { - raw: "`affectedFeeds` | list | The feed URLs the rule applied to", - columns: [ - "affectedFeeds", - "list", - "The feed URLs the rule applied to", - ], - }, - TableRow { - raw: "`ignoreDays` | number | Ignore sunsequent rule matches", - columns: [ - "ignoreDays", - "number", - "Ignore sunsequent rule matches", - ], - }, - TableRow { - raw: "`lastMatch` | string | The rule last match time", - columns: [ - "lastMatch", - "string", - "The rule last match time", - ], - }, - TableRow { - raw: "`addPaused` | bool | Add matched torrent in paused mode", - columns: [ - "addPaused", - "bool", - "Add matched torrent in paused mode", - ], - }, - TableRow { - raw: "`assignedCategory` | string | Assign category to the torrent", - columns: [ - "assignedCategory", - "string", - "Assign category to the torrent", - ], - }, - TableRow { - raw: "`savePath` | string | Save torrent to the given directory", - columns: [ - "savePath", - "string", - "Save torrent to the given directory", - ], - }, - ], - }, - ), - Text( - "E.g.:", - ), - Text( - "", - ), - Text( - "```JSON", - ), - Text( - "{", - ), - Text( - " \"enabled\": false,", - ), - Text( - " \"mustContain\": \"The *Punisher*\",", - ), - Text( - " \"mustNotContain\": \"\",", - ), - Text( - " \"useRegex\": false,", - ), - Text( - " \"episodeFilter\": \"1x01-;\",", - ), - Text( - " \"smartFilter\": false,", - ), - Text( - " \"previouslyMatchedEpisodes\": [", - ), - Text( - " ],", - ), - Text( - " \"affectedFeeds\": [", - ), - Text( - " \"http://showrss.info/user/134567.rss?magnets=true\"", - ), - Text( - " ],", - ), - Text( - " \"ignoreDays\": 0,", - ), - Text( - " \"lastMatch\": \"20 Nov 2017 09:05:11\",", - ), - Text( - " \"addPaused\": true,", - ), - Text( - " \"assignedCategory\": \"\",", - ), - Text( - " \"savePath\": \"C:/Users/JohnDoe/Downloads/Punisher\"", - ), - Text( - "}", - ), - Text( - "```", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Rename auto-downloading rule", - ), - content: [ - Text( - "", - ), - Text( - "Name: `renameRule`", - ), - Text( - "", - ), - Text( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`ruleName` | string | Rule name (e.g. \"Punisher\")", - columns: [ - "ruleName", - "string", - "Rule name (e.g. \"Punisher\")", - ], - }, - TableRow { - raw: "`newRuleName` | string | New rule name (e.g. \"The Punisher\")", - columns: [ - "newRuleName", - "string", - "New rule name (e.g. \"The Punisher\")", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Remove auto-downloading rule", - ), - content: [ - Text( - "", - ), - Text( - "Name: `removeRule`", - ), - Text( - "", - ), - Text( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`ruleName` | string | Rule name (e.g. \"Punisher\")", - columns: [ - "ruleName", - "string", - "Rule name (e.g. \"Punisher\")", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Get all auto-downloading rules", - ), - content: [ - Text( - "", - ), - Text( - "Name: `rules`", - ), - Text( - "", - ), - Text( - "Returns all auto-downloading rules in JSON format, e.g.:", - ), - Text( - "", - ), - Text( - "```JSON", - ), - Text( - "{", - ), - Text( - " \"The Punisher\": {", - ), - Text( - " \"enabled\": false,", - ), - Text( - " \"mustContain\": \"The *Punisher*\",", - ), - Text( - " \"mustNotContain\": \"\",", - ), - Text( - " \"useRegex\": false,", - ), - Text( - " \"episodeFilter\": \"1x01-;\",", - ), - Text( - " \"smartFilter\": false,", - ), - Text( - " \"previouslyMatchedEpisodes\": [", - ), - Text( - " ],", - ), - Text( - " \"affectedFeeds\": [", - ), - Text( - " \"http://showrss.info/user/134567.rss?magnets=true\"", - ), - Text( - " ],", - ), - Text( - " \"ignoreDays\": 0,", - ), - Text( - " \"lastMatch\": \"20 Nov 2017 09:05:11\",", - ), - Text( - " \"addPaused\": true,", - ), - Text( - " \"assignedCategory\": \"\",", - ), - Text( - " \"savePath\": \"C:/Users/JohnDoe/Downloads/Punisher\"", - ), - Text( - " }", - ), - Text( - "}", - ), - Text( - "```", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Get all articles matching a rule", - ), - content: [ - Text( - "", - ), - Text( - "Name: `matchingArticles`", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`ruleName` | string | Rule name (e.g. \"Linux\")", - columns: [ - "ruleName", - "string", - "Rule name (e.g. \"Linux\")", - ], - }, - ], - }, - ), - Text( - "", - ), - Text( - "Returns all articles that match a rule by feed name in JSON format, e.g.:", - ), - Text( - "", - ), - Text( - "```JSON", - ), - Text( - "{", - ), - Text( - " \"DistroWatch\":[", - ), - Text( - " \"sparkylinux-5.11-i686-minimalgui.iso.torrent\",", - ), - Text( - " \"sparkylinux-5.11-x86_64-minimalgui.iso.torrent\",", - ), - Text( - " \"sparkylinux-5.11-i686-xfce.iso.torrent\",", - ), - Text( - " \"bluestar-linux-5.6.3-2020.04.09-x86_64.iso.torrent\",", - ), - Text( - " \"robolinux64-mate3d-v10.10.iso.torrent\",", - ), - Text( - " ],", - ), - Text( - " \"Linuxtracker\":[", - ), - Text( - " \"[Alpine Linux] alpine-extended-3.11.6\",", - ), - Text( - " \"[Alpine Linux] alpine-standard-3.11.6\",", - ), - Text( - " \"[Linuxfx] linuxfx10-wxs-lts-beta5.iso\",", - ), - Text( - " \"[Linux Lite] linux-lite-5.0-rc1-64bit.iso (MULTI)\",", - ), - Text( - " \"[Scientific Linux] SL-7.8-x86_64-Pack\",", - ), - Text( - " \"[NixOS] nixos-plasma5-20.03.1418.5272327b81e-x86_64-linux.iso\"", - ), - Text( - " ]", - ), - Text( - "}", - ), - Text( - "```", - ), - Text( - "", - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "200 | All scenarios", - columns: [ - "200", - "All scenarios", - ], - }, - ], - }, - ), - Text( - "", - ), - ], - children: [], - }, - ], - }, - TokenTree { - title: Some( - "Search", - ), - content: [ - Text( - "", - ), - Text( - "All Search API methods are under \"search\", e.g.: `/api/v2/search/methodName`.", - ), - Text( - "", - ), - ], - children: [ - TokenTree { - title: Some( - "Start search", - ), - content: [ - Text( - "", - ), - Text( - "Name: `start`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`pattern` | string | Pattern to search for (e.g. \"Ubuntu 18.04\")", - columns: [ - "pattern", - "string", - "Pattern to search for (e.g. \"Ubuntu 18.04\")", - ], - }, - TableRow { - raw: "`plugins` | string | Plugins to use for searching (e.g. \"legittorrents\"). Supports multiple plugins separated by `\\|`. Also supports `all` and `enabled`", - columns: [ - "plugins", - "string", - "Plugins to use for searching (e.g. \"legittorrents\"). Supports multiple plugins separated by \\", - ". Also supports all and enabled", - ], - }, - TableRow { - raw: "`category` | string | Categories to limit your search to (e.g. \"legittorrents\"). Available categories depend on the specified `plugins`. Also supports `all`", - columns: [ - "category", - "string", - "Categories to limit your search to (e.g. \"legittorrents\"). Available categories depend on the specified plugins. Also supports all", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "409 | User has reached the limit of max `Running` searches (currently set to 5)", - columns: [ - "409", - "User has reached the limit of max Running searches (currently set to 5)", - ], - }, - TableRow { - raw: "200 | All other scenarios- see JSON below", - columns: [ - "200", - "All other scenarios- see JSON below", - ], - }, - ], - }, - ), - Text( - "The response is a JSON object with the following fields", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Field | Type | Description", - columns: [ - "Field", - "Type", - "Description", - ], - }, - split: "----------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`id` | number | ID of the search job", - columns: [ - "id", - "number", - "ID of the search job", - ], - }, - ], - }, - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```JSON", - ), - Text( - "{", - ), - Text( - " \"id\": 12345", - ), - Text( - "}", - ), - Text( - "```", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Stop search", - ), - content: [ - Text( - "", - ), - Text( - "Name: `stop`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`id` | number | ID of the search job", - columns: [ - "id", - "number", - "ID of the search job", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "404 | Search job was not found", - columns: [ - "404", - "Search job was not found", - ], - }, - TableRow { - raw: "200 | All other scenarios", - columns: [ - "200", - "All other scenarios", - ], - }, - ], - }, - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Get search status", - ), - content: [ - Text( - "", - ), - Text( - "Name: `status`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`id` _optional_ | number | ID of the search job. If not specified, all search jobs are returned", - columns: [ - "id _optional_", - "number", - "ID of the search job. If not specified, all search jobs are returned", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "404 | Search job was not found", - columns: [ - "404", - "Search job was not found", - ], - }, - TableRow { - raw: "200 | All other scenarios- see JSON below", - columns: [ - "200", - "All other scenarios- see JSON below", - ], - }, - ], - }, - ), - Text( - "The response is a JSON array of objects containing the following fields", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Field | Type | Description", - columns: [ - "Field", - "Type", - "Description", - ], - }, - split: "----------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`id` | number | ID of the search job", - columns: [ - "id", - "number", - "ID of the search job", - ], - }, - TableRow { - raw: "`status` | string | Current status of the search job (either `Running` or `Stopped`)", - columns: [ - "status", - "string", - "Current status of the search job (either Running or Stopped)", - ], - }, - TableRow { - raw: "`total` | number | Total number of results. If the status is `Running` this number may contineu to increase", - columns: [ - "total", - "number", - "Total number of results. If the status is Running this number may contineu to increase", - ], - }, - ], - }, - ), - Text( - "Example:", - ), - Text( - "", - ), - Text( - "```JSON", - ), - Text( - "[", - ), - Text( - " {", - ), - Text( - " \"id\": 12345,", - ), - Text( - " \"status\": \"Running\",", - ), - Text( - " \"total\": 170", - ), - Text( - " }", - ), - Text( - "]", - ), - Text( - "```", - ), - Text( - "", - ), - ], - children: [], - }, - TokenTree { - title: Some( - "Get search results", - ), - content: [ - Text( - "", - ), - Text( - "Name: `results`", - ), - Text( - "", - ), - Asterix( - "Parameters:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Parameter | Type | Description", - columns: [ - "Parameter", - "Type", - "Description", - ], - }, - split: "----------------------------------|---------|------------", - rows: [ - TableRow { - raw: "`id` | number | ID of the search job", - columns: [ - "id", - "number", - "ID of the search job", - ], - }, - TableRow { - raw: "`limit` _optional_ | number | max number of results to return. 0 or negative means no limit", - columns: [ - "limit _optional_", - "number", - "max number of results to return. 0 or negative means no limit", - ], - }, - TableRow { - raw: "`offset` _optional_ | number | result to start at. A negative number means count backwards (e.g. `-2` returns the 2 most recent results)", - columns: [ - "offset _optional_", - "number", - "result to start at. A negative number means count backwards (e.g. -2 returns the 2 most recent results)", - ], - }, - ], - }, - ), - Asterix( - "Returns:", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "HTTP Status Code | Scenario", - columns: [ - "HTTP Status Code", - "Scenario", - ], - }, - split: "----------------------------------|---------------------", - rows: [ - TableRow { - raw: "404 | Search job was not found", - columns: [ - "404", - "Search job was not found", - ], - }, - TableRow { - raw: "409 | Offset is too large, or too small (e.g. absolute value of negative number is greater than # results)", - columns: [ - "409", - "Offset is too large, or too small (e.g. absolute value of negative number is greater than # results)", - ], - }, - TableRow { - raw: "200 | All other scenarios- see JSON below", - columns: [ - "200", - "All other scenarios- see JSON below", - ], - }, - ], - }, - ), - Text( - "The response is a JSON object with the following fields", - ), - Text( - "", - ), - Table( - Table { - header: TableRow { - raw: "Field | Type | Description", - columns: [ - "Field", - "Type", - "Description", - ], - }, - split: "----------------------------------|---------|------------", - rows: [], - }, - ), - ], - children: [], - }, - ], - }, - ], -} \ No newline at end of file