{
  "version": 1,
  "method": "GET",
  "source_ids": [
    "FANQIE", "KUWO", "XIMALAYA", "LAIREN",
    "MEKUI", "BILIBILI", "TINGYOU", "YUETINGBA"
  ],
  "operations": [
    { "path": "/", "operation": "apiIndex", "response": "HTML API route index" },
    { "path": "/status", "operation": "serviceStatus", "response": "JSON service, source_count, and operation_route_count" },
    { "path": "/booksource", "operation": "legadoAudioSources", "response": "array<BookSource>" },
    { "path": "/audio/link", "operation": "resolveLegadoAudioUrl", "required": ["source_id", "album_id", "item_id"], "optional": ["section", "extras"], "response": "text/plain absolute /audio/file URL" },
    { "path": "/audio/file", "operation": "proxyAudioStream", "required": ["source_id", "album_id", "item_id"], "optional": ["section", "extras", "Range header"], "response": "audio bytes or 206 partial content" },
    { "path": "/api/v1/sources", "operation": "listSources" },
    { "path": "/api/v1/{source}/search", "operation": "search", "required": ["query"], "optional": ["page"] },
    { "path": "/api/v1/{source}/detail", "operation": "getDetail", "required": ["album_id"], "optional": ["entity_type"] },
    { "path": "/api/v1/{source}/latest", "operation": "getLatestChapters", "required": ["album_id"] },
    { "path": "/api/v1/{source}/chapters", "operation": "getChapters", "required": ["album_id", "page"], "optional": ["entity_type", "pt", "page_size", "extras"] },
    { "path": "/api/v1/{source}/audio", "operation": "getAudioUrl", "required": ["album_id", "item_id", "section"], "optional": ["extras", "tone_id"] },
    { "path": "/api/v1/{source}/play", "operation": "legadoAudioPlayback", "required": ["album_id", "item_id"], "optional": ["section", "extras", "tone_id"] },
    { "path": "/api/v1/{source}/page-by-track", "operation": "getPageByTrackId", "required": ["album_id", "track_id"] },
    { "path": "/api/v1/{source}/categories", "operation": "getCategories", "optional": ["parent_id", "extras"] },
    { "path": "/api/v1/{source}/categories/root", "operation": "getRootCategories" },
    { "path": "/api/v1/{source}/categories/sub", "operation": "getSubCategories", "required": ["parent_id"], "optional": ["extras"] },
    { "path": "/api/v1/{source}/category-albums", "operation": "getCategoryAlbums", "required": ["category_id", "page"], "optional": ["list_id", "first", "extras"] },
    { "path": "/api/v1/{source}/rank-categories", "operation": "getRankCategories" },
    { "path": "/api/v1/{source}/rank-list", "operation": "getRankList", "required": ["category_id", "page"], "optional": ["page_size", "range_type"] }
  ]
}
