{"service":"mymusic-api","auth":{"google":"/auth/google","emailSendCode":"POST /auth/email/send-code  JSON { email }","emailVerifyCode":"POST /auth/email/verify-code  JSON { email, code }","me":"/auth/me","nativeToken":"/auth/native-token  (JWT para ?session= en APK / streaming)","logout":"/auth/logout"},"me":{"summary":"/me/summary","profileGet":"GET /me/profile  (tu perfil completo)","profile":"PATCH /me/profile  JSON { listPublic?, displayName? }","playlists":"/me/playlists"},"social":{"follow":"POST /social/follow/:followeeId","unfollow":"DELETE /social/follow/:followeeId","myFollowers":"GET /social/followers","myFollowing":"GET /social/following"},"profiles":{"searchUsers":"GET /profiles/search?q=  (solo list_public=true)","byId":"GET /profiles/:userId","publicPlaylists":"GET /profiles/:userId/playlists","publicPlaylistDetail":"GET /profiles/:userId/playlists/:playlistId","followers":"GET /profiles/:userId/followers","following":"GET /profiles/:userId/following"},"feed":{"activity":"GET /feed/activity?cursor="},"catalog":{"artists":"GET /catalog/artists  (carpetas en disco; legado)","artistIndex":"GET /catalog/artist-index?tags=1  (artistas únicos por metadatos de cada pista)","artistIndexTracks":"GET /catalog/artist-index/:artistKey/tracks?tags=1","tracks":"GET /catalog/artists/:artist/tracks  (?tags=1 lee ID3; sugerencias por nombre siempre)","allTracks":"GET /catalog/all-tracks  (?tags=1 — todas las carpetas; ?deezer=1 portadas vía API)","enrich":"GET /catalog/enrich?streamKey=  POST /catalog/enrich { streamKeys }  (requiere DEEZER_ENRICH)","resolveKey":"GET /catalog/resolve-key?key=<streamKey>","top":"GET /catalog/top?limit=10  (más escuchadas globales)","playEvent":"POST /catalog/play-event  JSON { streamKey, title?, artist? }","play":"GET /catalog/play?key=<streamKey>  (Range soportado)","flatRoot":"MP3 en la raíz de MUSICA_ROOT → artista virtual __flat__"},"adminYtdlp":{"who":"Sesión + email = ADMIN_DOWNLOAD_EMAIL (defecto fpintos.gx@gmail.com)","check":"GET /admin/ytdlp/check","download":"POST /admin/ytdlp/download  JSON { url }  → 202 { jobId }; yt-dlp en segundo plano","downloadStatus":"GET /admin/ytdlp/download/:jobId  (polling hasta status=done; evita timeout de proxy)"},"adminCatalog":{"anomalies":"GET /admin/catalog/anomalies  (duplicados por nombre de archivo y por título+artista ID3)","track":"GET /admin/catalog/track?key=<streamKey>  (metadatos actuales; edición solo MP3)","trackTags":"POST /admin/catalog/track-tags  JSON { streamKey, title, artist, album? }  (ID3 en .mp3)"},"adminUsers":{"list":"GET /admin/users","create":"POST /admin/users  JSON { email, displayName?, listPublic? }  (listPublic default true)"},"database":"/health/db","sql":["apps/api/sql/001_allowed_users.sql","apps/api/sql/002_playlists_and_social.sql","apps/api/sql/003_social_prisma_layer.sql","apps/api/sql/004_import_system.sql","apps/api/sql/005_email_login_codes.sql","apps/api/sql/006_track_play_stats.sql"],"import":{"search":"GET /import/search?q=  (biblioteca + auto-import YouTube)","requestStatus":"GET /import/requests/:requestId","queue":"GET /import/queue  (importaciones activas del usuario)","syncCatalog":"POST /import/sync-catalog  (admin)"}}