[{"data":1,"prerenderedAt":526},["ShallowReactive",2],{"navigation_docs":3,"-api-movie-search":100,"-api-movie-search-surround":521},[4,35,80,90],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"\u002Fgetting-started","1.getting-started",[10,15,20,25,30],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F2.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F3.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Project Structure","\u002Fgetting-started\u002Fproject-structure","1.getting-started\u002F4.project-structure","i-lucide-folder-tree",{"title":26,"path":27,"stem":28,"icon":29},"Backend Server","\u002Fgetting-started\u002Fbackend","1.getting-started\u002F6.backend","i-lucide-server",{"title":31,"path":32,"stem":33,"icon":34},"Troubleshooting","\u002Fgetting-started\u002Ftroubleshooting","1.getting-started\u002F8.troubleshooting","i-lucide-wrench",{"title":36,"icon":6,"path":37,"stem":38,"children":39,"page":6},"API","\u002Fapi","2.api",[40,45,50,55,60,65,70,75],{"title":41,"path":42,"stem":43,"icon":44},"API Overview","\u002Fapi\u002Foverview","2.api\u002F1.overview","i-lucide-zap",{"title":46,"path":47,"stem":48,"icon":49},"TMDB Integration","\u002Fapi\u002Ftmdb-proxy","2.api\u002F2.tmdb-proxy","i-si-movie-line",{"title":51,"path":52,"stem":53,"icon":54},"Watched and My List APIs","\u002Fapi\u002Fwatched-movies","2.api\u002F3.watched-movies","i-lucide-eye",{"title":56,"path":57,"stem":58,"icon":59},"Recommendation Generation","\u002Fapi\u002Fgemini-recommendations","2.api\u002F4.gemini-recommendations","i-lucide-sparkles",{"title":61,"path":62,"stem":63,"icon":64},"Movie Search API","\u002Fapi\u002Fmovie-search","2.api\u002F5.movie-search","i-lucide-search",{"title":66,"path":67,"stem":68,"icon":69},"TMDB Import","\u002Fapi\u002Ftmdb-import","2.api\u002F6.tmdb-import","i-lucide-database",{"title":71,"path":72,"stem":73,"icon":74},"Movie Details & Caching","\u002Fapi\u002Fmovie-details","2.api\u002F7.movie-details","i-lucide-film",{"title":76,"path":77,"stem":78,"icon":79},"Recommendations (Cached)","\u002Fapi\u002Frecommendations-cache","2.api\u002F8.recommendations-cache","i-lucide-brain",{"title":81,"icon":6,"path":82,"stem":83,"children":84,"page":6},"Frontend","\u002Ffrontend","4.frontend",[85],{"title":86,"path":87,"stem":88,"icon":89},"Components","\u002Ffrontend\u002Fcomponents","4.frontend\u002F1.components","i-lucide-layout",{"title":91,"icon":6,"path":92,"stem":93,"children":94,"page":6},"Reference","\u002Freference","5.reference",[95],{"title":96,"path":97,"stem":98,"icon":99},"Rate Limiting","\u002Freference\u002Frate-limiting","5.reference\u002F2.rate-limiting","i-lucide-shield",{"id":101,"title":61,"body":102,"description":514,"extension":515,"links":516,"meta":517,"navigation":518,"path":62,"seo":519,"stem":63,"__hash__":520},"docs\u002F2.api\u002F5.movie-search.md",{"type":103,"value":104,"toc":505},"minimark",[105,117,122,132,136,139,143,187,197,201,406,410,439,442,445,470,474,501],[106,107,108,112,113,116],"p",{},[109,110,111],"code",{},"GET \u002Fapi\u002Fmovies\u002Fsearch"," is used by the Search page to fetch movies by title. It returns lightweight result rows for list rendering. Use ",[109,114,115],{},"\u002Fapi\u002Fmovies\u002F:id"," for full movie details.",[118,119,121],"h2",{"id":120},"endpoint","Endpoint",[123,124,130],"pre",{"className":125,"code":127,"language":128,"meta":129},[126],"language-text","GET \u002Fapi\u002Fmovies\u002Fsearch?q=\u003Cquery>\n","text","",[109,131,127],{"__ignoreMap":129},[118,133,135],{"id":134},"auth","Auth",[106,137,138],{},"No authentication required.",[118,140,142],{"id":141},"query-parameters","Query Parameters",[144,145,146,165],"table",{},[147,148,149],"thead",{},[150,151,152,156,159,162],"tr",{},[153,154,155],"th",{},"Parameter",[153,157,158],{},"Type",[153,160,161],{},"Required",[153,163,164],{},"Description",[166,167,168],"tbody",{},[150,169,170,176,181,184],{},[171,172,173],"td",{},[109,174,175],{},"q",[171,177,178],{},[109,179,180],{},"string",[171,182,183],{},"Yes",[171,185,186],{},"Search query text",[106,188,189,190,192,193,196],{},"If ",[109,191,175],{}," is missing, not a string, or empty after trimming, the endpoint returns ",[109,194,195],{},"400",".",[118,198,200],{"id":199},"response-shape","Response Shape",[123,202,206],{"className":203,"code":204,"language":205,"meta":129,"style":129},"language-json shiki shiki-themes material-theme-lighter github-light github-dark","{\n  \"results\": [\n    {\n      \"id\": 550,\n      \"title\": \"Fight Club\",\n      \"original_title\": \"Fight Club\",\n      \"poster_path\": \"\u002Fpath.jpg\",\n      \"release_date\": \"1999-10-15\",\n      \"vote_average\": 8.4,\n      \"genre_ids\": [18]\n    }\n  ]\n}\n","json",[109,207,208,217,237,243,264,288,308,329,350,367,388,394,400],{"__ignoreMap":129},[209,210,213],"span",{"class":211,"line":212},"line",1,[209,214,216],{"class":215},"sP7_E","{\n",[209,218,220,224,228,231,234],{"class":211,"line":219},2,[209,221,223],{"class":222},"s39Yj","  \"",[209,225,227],{"class":226},"sseR_","results",[209,229,230],{"class":222},"\"",[209,232,233],{"class":215},":",[209,235,236],{"class":215}," [\n",[209,238,240],{"class":211,"line":239},3,[209,241,242],{"class":215},"    {\n",[209,244,246,249,253,255,257,261],{"class":211,"line":245},4,[209,247,248],{"class":222},"      \"",[209,250,252],{"class":251},"sZMiF","id",[209,254,230],{"class":222},[209,256,233],{"class":215},[209,258,260],{"class":259},"srdBf"," 550",[209,262,263],{"class":215},",\n",[209,265,267,269,272,274,276,280,284,286],{"class":211,"line":266},5,[209,268,248],{"class":222},[209,270,271],{"class":251},"title",[209,273,230],{"class":222},[209,275,233],{"class":215},[209,277,279],{"class":278},"sjJ54"," \"",[209,281,283],{"class":282},"s_sjI","Fight Club",[209,285,230],{"class":278},[209,287,263],{"class":215},[209,289,291,293,296,298,300,302,304,306],{"class":211,"line":290},6,[209,292,248],{"class":222},[209,294,295],{"class":251},"original_title",[209,297,230],{"class":222},[209,299,233],{"class":215},[209,301,279],{"class":278},[209,303,283],{"class":282},[209,305,230],{"class":278},[209,307,263],{"class":215},[209,309,311,313,316,318,320,322,325,327],{"class":211,"line":310},7,[209,312,248],{"class":222},[209,314,315],{"class":251},"poster_path",[209,317,230],{"class":222},[209,319,233],{"class":215},[209,321,279],{"class":278},[209,323,324],{"class":282},"\u002Fpath.jpg",[209,326,230],{"class":278},[209,328,263],{"class":215},[209,330,332,334,337,339,341,343,346,348],{"class":211,"line":331},8,[209,333,248],{"class":222},[209,335,336],{"class":251},"release_date",[209,338,230],{"class":222},[209,340,233],{"class":215},[209,342,279],{"class":278},[209,344,345],{"class":282},"1999-10-15",[209,347,230],{"class":278},[209,349,263],{"class":215},[209,351,353,355,358,360,362,365],{"class":211,"line":352},9,[209,354,248],{"class":222},[209,356,357],{"class":251},"vote_average",[209,359,230],{"class":222},[209,361,233],{"class":215},[209,363,364],{"class":259}," 8.4",[209,366,263],{"class":215},[209,368,370,372,375,377,379,382,385],{"class":211,"line":369},10,[209,371,248],{"class":222},[209,373,374],{"class":251},"genre_ids",[209,376,230],{"class":222},[209,378,233],{"class":215},[209,380,381],{"class":215}," [",[209,383,384],{"class":259},"18",[209,386,387],{"class":215},"]\n",[209,389,391],{"class":211,"line":390},11,[209,392,393],{"class":215},"    }\n",[209,395,397],{"class":211,"line":396},12,[209,398,399],{"class":215},"  ]\n",[209,401,403],{"class":211,"line":402},13,[209,404,405],{"class":215},"}\n",[118,407,409],{"id":408},"behavior","Behavior",[411,412,413,420,430,436],"ol",{},[414,415,416,417,419],"li",{},"Reads ",[109,418,175],{}," from the query string",[414,421,422,423,426,427],{},"Calls TMDB ",[109,424,425],{},"search\u002Fmovie"," through ",[109,428,429],{},"fetchTmdb(...)",[414,431,432,433],{},"Filters out rows with no poster, no release date, or ",[109,434,435],{},"vote_average === 0",[414,437,438],{},"Returns normalized lightweight movie rows for the client grid",[118,440,96],{"id":441},"rate-limiting",[106,443,444],{},"This route uses the shared TMDB helper, so it inherits the current TMDB limit:",[446,447,448,451,457],"ul",{},[414,449,450],{},"40 requests per 1-second fixed window",[414,452,453,454],{},"shared server-side limiter key: ",[109,455,456],{},"tmdb:global",[414,458,459,460,463,464,463,467],{},"response headers: ",[109,461,462],{},"X-RateLimit-Limit",", ",[109,465,466],{},"X-RateLimit-Remaining",[109,468,469],{},"X-RateLimit-Reset",[118,471,473],{"id":472},"error-codes","Error Codes",[446,475,476,483,489,495],{},[414,477,478,480,481],{},[109,479,195],{}," invalid or missing ",[109,482,175],{},[414,484,485,488],{},[109,486,487],{},"429"," TMDB rate limit exceeded",[414,490,491,494],{},[109,492,493],{},"500"," missing TMDB API key or upstream\u002Finternal failure",[414,496,497,500],{},[109,498,499],{},"502"," unexpected TMDB response format",[502,503,504],"style",{},"html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s39Yj, html code.shiki .s39Yj{--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sseR_, html code.shiki .sseR_{--shiki-light:#9C3EDA;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZMiF, html code.shiki .sZMiF{--shiki-light:#E2931D;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":129,"searchDepth":219,"depth":219,"links":506},[507,508,509,510,511,512,513],{"id":120,"depth":219,"text":121},{"id":134,"depth":219,"text":135},{"id":141,"depth":219,"text":142},{"id":199,"depth":219,"text":200},{"id":408,"depth":219,"text":409},{"id":441,"depth":219,"text":96},{"id":472,"depth":219,"text":473},"Search movies through the current TMDB-backed search endpoint","md",null,{},{"icon":64},{"title":61,"description":514},"wgpUTbq9r3gkuPUqMVGxi0uiJP6jb6MxPoDB84eBcKs",[522,524],{"title":56,"path":57,"stem":58,"description":523,"icon":59,"children":-1},"Recommendation generation used by the recommendation endpoint",{"title":66,"path":67,"stem":68,"description":525,"icon":69,"children":-1},"Admin API-driven TMDB import that populates the Supabase movies table",1782138812489]