{"components":{"responses":{"unprocessable_entity":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Unprocessable Entity"}},"schemas":{"ErrorResponse":{"description":"Standard error response","properties":{"details":{"items":{"type":"object"},"type":"array"},"error":{"type":"string"},"message":{"type":"string"}},"required":["error","message"],"title":"ErrorResponse","type":"object"},"FilesResponseModel":{"properties":{"data":{"items":{"properties":{"name":{"type":"string"},"size":{"minimum":0,"type":"integer"}},"required":["name","size"],"type":"object"},"type":"array"},"infohash":{"maxLength":40,"minLength":40,"pattern":"^[a-fA-F0-9]{40}$","title":"Infohash","type":"string"},"status":{"type":"string"}},"required":["data","infohash","status"],"title":"FilesResponseModel","type":"object"},"Filter":{"example":{"key":"size","op":"<","type":"numeric","value":10000000},"properties":{"key":{"enum":["size","seeders","downloads"],"title":"Filter Key","type":"string"},"op":{"enum":["<",">","==","<=",">="],"title":"Filter Op","type":"string"},"type":{"default":"numeric","enum":["numeric"],"title":"Filter Type","type":"string"},"value":{"title":"Filter Value","type":"integer"}},"required":["op","key","value"],"title":"Filter","type":"object"},"Filter Key":{"enum":["size","seeders","downloads"],"title":"Filter Key","type":"string"},"Filter Op":{"enum":["<",">","==","<=",">="],"title":"Filter Op","type":"string"},"Filter Type":{"default":"numeric","enum":["numeric"],"title":"Filter Type","type":"string"},"Filter Value":{"title":"Filter Value","type":"integer"},"Infohash":{"maxLength":40,"minLength":40,"pattern":"^[a-fA-F0-9]{40}$","title":"Infohash","type":"string"},"InfohashQueryModel":{"properties":{"offset":{"default":0,"minimum":0,"type":"integer"},"pagesize":{"default":10,"maximum":25,"minimum":1,"type":"integer"},"query":{"maxLength":40,"minLength":40,"pattern":"^[a-fA-F0-9]{40}$","title":"Infohash","type":"string"}},"required":["query"],"title":"InfohashQueryModel","type":"object"},"MagnetResponseModel":{"properties":{"infohash":{"maxLength":40,"minLength":40,"pattern":"^[a-fA-F0-9]{40}$","title":"Infohash","type":"string"},"magnet_link":{"type":"string"},"status":{"type":"string"}},"required":["magnet_link","infohash","status"],"title":"MagnetResponseModel","type":"object"},"Order by":{"default":"dd","description":"- `da` — downloads ASC\n- `dd` — downloads DESC\n- `ia` — index date ASC\n- `id` — index date DESC\n- `rd` — relevance DESC\n- `sa` — seeders ASC\n- `sd` — seeders DESC\n- `za` — size ASC\n- `zd` — size DESC\n","enum":["dd","da","id","ia","rd","sd","sa","zd","za"],"title":"Order by","type":"string"},"SearchQueryModel":{"example":{"offset":0,"order_by":"dd","pagesize":3,"query":"linux","trackers":["rutracker"]},"properties":{"filters":{"default":[],"items":{"example":{"key":"size","op":"<","type":"numeric","value":10000000},"properties":{"key":{"enum":["size","seeders","downloads"],"title":"Filter Key","type":"string"},"op":{"enum":["<",">","==","<=",">="],"title":"Filter Op","type":"string"},"type":{"default":"numeric","enum":["numeric"],"title":"Filter Type","type":"string"},"value":{"title":"Filter Value","type":"integer"}},"required":["op","key","value"],"title":"Filter","type":"object"},"type":"array"},"offset":{"default":0,"minimum":0,"type":"integer"},"order_by":{"default":"dd","description":"- `da` — downloads ASC\n- `dd` — downloads DESC\n- `ia` — index date ASC\n- `id` — index date DESC\n- `rd` — relevance DESC\n- `sa` — seeders ASC\n- `sd` — seeders DESC\n- `za` — size ASC\n- `zd` — size DESC\n","enum":["dd","da","id","ia","rd","sd","sa","zd","za"],"title":"Order by","type":"string"},"pagesize":{"default":10,"maximum":25,"minimum":1,"type":"integer"},"query":{"maxLength":100,"minLength":3,"type":"string"},"trackers":{"default":[],"items":{"enum":["rutracker","nnmclub","kinozal","rutor","tapochek","piratebay","booktracker","eztv","rustorka","pmi2p","greentea","nyaa","l337x","rarbg","tby","newteamorg","pravtor"],"title":"Tracker ID","type":"string"},"type":"array"}},"required":["query"],"title":"SearchQueryModel","type":"object"},"SearchResponseItem":{"properties":{"cached":{"type":"string"},"category":{"type":"string"},"downloads":{"minimum":0,"type":"integer"},"index_date":{"example":"2025-01-15T14:20:10Z","format":"date-time","type":"string"},"is_alive":{"type":"boolean"},"leechers":{"minimum":0,"type":"integer"},"magnet_key":{"description":"ID for access to magnet link info","maxLength":12,"minLength":12,"pattern":"^[A-F0-9]{12}$","type":"string"},"metric":{"type":"integer"},"rank":{"minimum":1,"type":"integer"},"seeders":{"minimum":0,"type":"integer"},"size":{"minimum":0,"type":"integer"},"status":{"type":"string"},"title":{"type":"string"},"tracker":{"enum":["rutracker","nnmclub","kinozal","rutor","tapochek","piratebay","booktracker","eztv","rustorka","pmi2p","greentea","nyaa","l337x","rarbg","tby","newteamorg","pravtor"],"title":"Tracker ID","type":"string"}},"required":["rank","metric","category","title","tracker","seeders","leechers","downloads","size","index_date","magnet_key","status","cached","is_alive"],"title":"SearchResponseItem","type":"object"},"SearchResponseModel":{"properties":{"data":{"description":"Search result items","items":{"properties":{"cached":{"type":"string"},"category":{"type":"string"},"downloads":{"minimum":0,"type":"integer"},"index_date":{"example":"2025-01-15T14:20:10Z","format":"date-time","type":"string"},"is_alive":{"type":"boolean"},"leechers":{"minimum":0,"type":"integer"},"magnet_key":{"description":"ID for access to magnet link info","maxLength":12,"minLength":12,"pattern":"^[A-F0-9]{12}$","type":"string"},"metric":{"type":"integer"},"rank":{"minimum":1,"type":"integer"},"seeders":{"minimum":0,"type":"integer"},"size":{"minimum":0,"type":"integer"},"status":{"type":"string"},"title":{"type":"string"},"tracker":{"enum":["rutracker","nnmclub","kinozal","rutor","tapochek","piratebay","booktracker","eztv","rustorka","pmi2p","greentea","nyaa","l337x","rarbg","tby","newteamorg","pravtor"],"title":"Tracker ID","type":"string"}},"required":["rank","metric","category","title","tracker","seeders","leechers","downloads","size","index_date","magnet_key","status","cached","is_alive"],"title":"SearchResponseItem","type":"object"},"type":"array"},"status":{"description":"Search status message","type":"string"},"total":{"description":"Total search results","type":"integer"}},"required":["data","total","status"],"title":"SearchResponseModel","type":"object"},"Tracker ID":{"enum":["rutracker","nnmclub","kinozal","rutor","tapochek","piratebay","booktracker","eztv","rustorka","pmi2p","greentea","nyaa","l337x","rarbg","tby","newteamorg","pravtor"],"title":"Tracker ID","type":"string"}},"securitySchemes":{"api_key_header":{"description":"Put your API key into header X-API-Key","in":"header","name":"x-api-key","type":"apiKey"},"api_key_query":{"description":"Append API key to query parameter ?token=<token>","in":"query","name":"token","type":"apiKey"}}},"info":{"contact":{"email":"mail@exfreedomist.com","name":"Support"},"description":"API documentation for search engines and downloader services.","title":"[Ex]Freedomist API","version":"0.2.0"},"openapi":"3.0.0","paths":{"/api/files/{infohash}":{"get":{"callbacks":{},"operationId":"04_files","parameters":[{"in":"path","name":"infohash","required":true}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FilesResponseModel"}}},"description":"User response"},"401":{"content":{"application/json":{"example":{"error":"expired_token","message":"Expired token"},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Auth error"},"404":{"content":{"application/json":{"example":{"error":"not_found","message":"No file data for infohash <infohash>"},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Files not found"},"422":{"content":{"application/json":{"example":{"details":[{"infohash":"<infohash>"}],"error":"invalid_infohash","message":"Invalid infohash"},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Validation error"},"500":{"content":{"application/json":{"example":{"error":"internal_server_error","message":"Internal server error"},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error"}},"summary":"Files by infohash","tags":["search"]}},"/api/magnet/{magnet_key}":{"get":{"callbacks":{},"operationId":"03_magnet","parameters":[{"in":"path","name":"magnet_key","required":true}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MagnetResponseModel"}}},"description":"User response"},"401":{"content":{"application/json":{"example":{"error":"expired_token","message":"Expired token"},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Auth error"},"404":{"content":{"application/json":{"example":{"details":[{"query":"57929DBB6019"}],"error":"not_found","message":"Magnet key has no value"},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Magnet not found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Validation error"},"500":{"content":{"application/json":{"example":{"error":"internal_server_error","message":"Internal server error"},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error"}},"summary":"Magnet by magnet key","tags":["search"]}},"/api/search":{"post":{"callbacks":{},"operationId":"01_search","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchQueryModel"}}},"description":"Search query model","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchResponseModel"}}},"description":"User response"},"401":{"content":{"application/json":{"example":{"error":"expired_token","message":"Expired token"},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Auth error"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Validation error"},"500":{"content":{"application/json":{"example":{"error":"internal_server_error","message":"Internal server error"},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error"}},"summary":"Search","tags":["search"]}},"/api/search_by_infohash":{"post":{"callbacks":{},"operationId":"02_infohash","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InfohashQueryModel"}}},"description":"infohash query model","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchResponseModel"}}},"description":"User response"},"401":{"content":{"application/json":{"example":{"error":"expired_token","message":"Expired token"},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Auth error"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Validation error"},"500":{"content":{"application/json":{"example":{"error":"internal_server_error","message":"Internal server error"},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error"}},"summary":"Search by infohash","tags":["search"]}}},"security":[{"api_key_header":[]},{"api_key_query":[]}],"servers":[{"url":"https://download.exfreedomist.com","variables":{}}],"tags":[]}
