[{"data":1,"prerenderedAt":2190},["ShallowReactive",2],{"docs:\u002Fdocs\u002Flow-level-http":3,"i-lucide:moon":2181,"i-lucide:github":2186,"i-lucide:menu":2188},{"id":4,"title":5,"body":6,"description":2174,"extension":2175,"meta":2176,"navigation":394,"path":2177,"seo":2178,"stem":2179,"__hash__":2180},"docs\u002Fdocs\u002Flow-level-http.md","Low-level HTTP",{"type":7,"value":8,"toc":2165},"minimark",[9,18,28,35,44,163,245,259,264,267,457,494,503,634,789,793,805,970,1061,1064,1068,1075,1251,1284,1293,1304,1311,1377,1381,1384,1500,1583,1590,1594,1603,1689,1778,1782,1788,1877,1947,1951,1960,2051,2116,2122,2161],[10,11,12,13,17],"p",{},"Nuxt Endpoints is strongest for JSON REST APIs. Use ",[14,15,16],"code",{},"responses"," when the route returns typed JSON bodies.",[10,19,20,21,23,24,27],{},"For lower-level HTTP behavior, omit ",[14,22,16],{},". The route can still use request validation and the generated path client, but callers should use ",[14,25,26],{},".raw()"," because the response body is no longer a schema-shaped JSON value.",[10,29,30,31,34],{},"Response type checking only applies when a route opts into a response contract. If a route needs to return a redirect, a proxy response, or another native ",[14,32,33],{},"Response"," that should not be modelled as a status at all, leave the response contract out and handle the client side as raw HTTP.",[10,36,37,38,43],{},"Non-JSON bodies are not a reason to leave, though: files, streams, XML, CSV, and event streams all have a ",[39,40,42],"a",{"href":41},"\u002Fdocs\u002Fendpoints#non-json-responses","first-class declaration"," that keeps them in the contract without pretending their payload is validated.",[45,46,51],"pre",{"className":47,"code":48,"language":49,"meta":50,"style":50},"language-ts shiki shiki-themes github-light-default github-dark-default","export default defineEndpoint({\n  params: z.object({ id: z.string() }),\n  handler: ({ params }) => {\n    return new Response(`raw response for ${params.id}`)\n  },\n})\n","ts","",[14,52,53,73,95,116,149,157],{"__ignoreMap":50},[54,55,58,62,65,69],"span",{"class":56,"line":57},"line",1,[54,59,61],{"class":60},"swxxe","export",[54,63,64],{"class":60}," default",[54,66,68],{"class":67},"s9HWX"," defineEndpoint",[54,70,72],{"class":71},"sVS1I","({\n",[54,74,76,80,83,86,89,92],{"class":56,"line":75},2,[54,77,79],{"class":78},"saQ_J","  params: z.",[54,81,82],{"class":67},"object",[54,84,85],{"class":78},"({ id: z.",[54,87,88],{"class":67},"string",[54,90,91],{"class":78},"() })",[54,93,94],{"class":71},",\n",[54,96,98,101,104,107,110,113],{"class":56,"line":97},3,[54,99,100],{"class":67},"  handler",[54,102,103],{"class":78},": ({ ",[54,105,106],{"class":71},"params",[54,108,109],{"class":78}," }) ",[54,111,112],{"class":60},"=>",[54,114,115],{"class":78}," {\n",[54,117,119,122,125,128,131,135,137,140,143,146],{"class":56,"line":118},4,[54,120,121],{"class":60},"    return",[54,123,124],{"class":60}," new",[54,126,127],{"class":67}," Response",[54,129,130],{"class":78},"(",[54,132,134],{"class":133},"sZItA","`raw response for ${",[54,136,106],{"class":78},[54,138,139],{"class":133},".",[54,141,142],{"class":78},"id",[54,144,145],{"class":133},"}`",[54,147,148],{"class":78},")\n",[54,150,152,155],{"class":56,"line":151},5,[54,153,154],{"class":78},"  }",[54,156,94],{"class":71},[54,158,160],{"class":56,"line":159},6,[54,161,162],{"class":71},"})\n",[45,164,166],{"className":47,"code":165,"language":49,"meta":50,"style":50},"const response = await $endpoint('\u002Fapi\u002Fraw\u002F:id', {\n  method: 'get',\n  params: { id: 'abc' },\n}).raw()\nconst text = await response.text()\n",[14,167,168,194,204,215,226],{"__ignoreMap":50},[54,169,170,173,177,180,183,186,188,191],{"class":56,"line":57},[54,171,172],{"class":60},"const",[54,174,176],{"class":175},"sOOdx"," response",[54,178,179],{"class":60}," =",[54,181,182],{"class":60}," await",[54,184,185],{"class":67}," $endpoint",[54,187,130],{"class":78},[54,189,190],{"class":133},"'\u002Fapi\u002Fraw\u002F:id'",[54,192,193],{"class":78},", {\n",[54,195,196,199,202],{"class":56,"line":75},[54,197,198],{"class":78},"  method: ",[54,200,201],{"class":133},"'get'",[54,203,94],{"class":78},[54,205,206,209,212],{"class":56,"line":97},[54,207,208],{"class":78},"  params: { id: ",[54,210,211],{"class":133},"'abc'",[54,213,214],{"class":78}," },\n",[54,216,217,220,223],{"class":56,"line":118},[54,218,219],{"class":78},"}).",[54,221,222],{"class":67},"raw",[54,224,225],{"class":78},"()\n",[54,227,228,230,233,235,237,240,243],{"class":56,"line":151},[54,229,172],{"class":60},[54,231,232],{"class":175}," text",[54,234,179],{"class":60},[54,236,182],{"class":60},[54,238,239],{"class":78}," response.",[54,241,242],{"class":67},"text",[54,244,225],{"class":78},[10,246,247,248,251,252,254,255,258],{},"There is intentionally no ",[14,249,250],{},"useEndpointRaw",". Native ",[14,253,33],{},", ",[14,256,257],{},"Headers",", and streams do not serialize cleanly into Nuxt async-data payloads.",[260,261,263],"h2",{"id":262},"file-downloads","File downloads",[10,265,266],{},"A download is a media response like any other, so it can stay in the contract:",[45,268,270],{"className":47,"code":269,"language":49,"meta":50,"style":50},"\u002F\u002F server\u002Fapi\u002Ffiles\u002F[id].get.ts\nexport default defineEndpoint({\n  operation: 'downloadFile',\n  params: z.object({ id: z.string() }),\n  responses: {\n    200: { media: 'application\u002Fpdf', description: 'Invoice PDF' },\n  },\n  handler: async ({ params, respond }) => {\n    const file = await loadFile(params.id)\n\n    return respond(200, file.bytes, {\n      headers: { 'content-disposition': `attachment; filename=\"${file.name}\"` },\n    })\n  },\n})\n",[14,271,272,278,288,298,312,317,336,343,370,389,396,412,439,445,452],{"__ignoreMap":50},[54,273,274],{"class":56,"line":57},[54,275,277],{"class":276},"sA0OV","\u002F\u002F server\u002Fapi\u002Ffiles\u002F[id].get.ts\n",[54,279,280,282,284,286],{"class":56,"line":75},[54,281,61],{"class":60},[54,283,64],{"class":60},[54,285,68],{"class":67},[54,287,72],{"class":71},[54,289,290,293,296],{"class":56,"line":97},[54,291,292],{"class":78},"  operation: ",[54,294,295],{"class":133},"'downloadFile'",[54,297,94],{"class":71},[54,299,300,302,304,306,308,310],{"class":56,"line":118},[54,301,79],{"class":78},[54,303,82],{"class":67},[54,305,85],{"class":78},[54,307,88],{"class":67},[54,309,91],{"class":78},[54,311,94],{"class":71},[54,313,314],{"class":56,"line":151},[54,315,316],{"class":78},"  responses: {\n",[54,318,319,322,325,328,331,334],{"class":56,"line":159},[54,320,321],{"class":175},"    200",[54,323,324],{"class":78},": { media: ",[54,326,327],{"class":133},"'application\u002Fpdf'",[54,329,330],{"class":78},", description: ",[54,332,333],{"class":133},"'Invoice PDF'",[54,335,214],{"class":78},[54,337,339,341],{"class":56,"line":338},7,[54,340,154],{"class":78},[54,342,94],{"class":71},[54,344,346,348,351,354,357,359,361,364,366,368],{"class":56,"line":345},8,[54,347,100],{"class":67},[54,349,350],{"class":78},": ",[54,352,353],{"class":60},"async",[54,355,356],{"class":78}," ({ ",[54,358,106],{"class":71},[54,360,254],{"class":78},[54,362,363],{"class":71},"respond",[54,365,109],{"class":78},[54,367,112],{"class":60},[54,369,115],{"class":78},[54,371,373,376,379,381,383,386],{"class":56,"line":372},9,[54,374,375],{"class":60},"    const",[54,377,378],{"class":175}," file",[54,380,179],{"class":60},[54,382,182],{"class":60},[54,384,385],{"class":67}," loadFile",[54,387,388],{"class":78},"(params.id)\n",[54,390,392],{"class":56,"line":391},10,[54,393,395],{"emptyLinePlaceholder":394},true,"\n",[54,397,399,401,404,406,409],{"class":56,"line":398},11,[54,400,121],{"class":60},[54,402,403],{"class":67}," respond",[54,405,130],{"class":78},[54,407,408],{"class":175},"200",[54,410,411],{"class":78},", file.bytes, {\n",[54,413,415,418,421,423,426,429,431,434,437],{"class":56,"line":414},12,[54,416,417],{"class":78},"      headers: { ",[54,419,420],{"class":133},"'content-disposition'",[54,422,350],{"class":78},[54,424,425],{"class":133},"`attachment; filename=\"${",[54,427,428],{"class":78},"file",[54,430,139],{"class":133},[54,432,433],{"class":78},"name",[54,435,436],{"class":133},"}\"`",[54,438,214],{"class":78},[54,440,442],{"class":56,"line":441},13,[54,443,444],{"class":78},"    })\n",[54,446,448,450],{"class":56,"line":447},14,[54,449,154],{"class":78},[54,451,94],{"class":71},[54,453,455],{"class":56,"line":454},15,[54,456,162],{"class":71},[45,458,460],{"className":47,"code":459,"language":49,"meta":50,"style":50},"const blob = await $endpoint('downloadFile', { params: { id: 'invoice-1' }, responseType: 'blob' })\n",[14,461,462],{"__ignoreMap":50},[54,463,464,466,469,471,473,475,477,479,482,485,488,491],{"class":56,"line":57},[54,465,172],{"class":60},[54,467,468],{"class":175}," blob",[54,470,179],{"class":60},[54,472,182],{"class":60},[54,474,185],{"class":67},[54,476,130],{"class":78},[54,478,295],{"class":133},[54,480,481],{"class":78},", { params: { id: ",[54,483,484],{"class":133},"'invoice-1'",[54,486,487],{"class":78}," }, responseType: ",[54,489,490],{"class":133},"'blob'",[54,492,493],{"class":78}," })\n",[10,495,496,497,499,500,502],{},"When the content type varies per file and cannot be declared, drop the response contract and return a native ",[14,498,33],{}," instead, reading the body from ",[14,501,26],{}," on the client.",[45,504,506],{"className":47,"code":505,"language":49,"meta":50,"style":50},"\u002F\u002F server\u002Fapi\u002Ffiles\u002F[id].get.ts\nexport default defineEndpoint({\n  params: z.object({ id: z.string() }),\n  handler: async ({ params }) => {\n    const file = await loadFile(params.id)\n\n    return new Response(file.bytes, {\n      headers: {\n        'content-type': file.contentType,\n        'content-disposition': `attachment; filename=\"${file.name}\"`,\n      },\n    })\n  },\n})\n",[14,507,508,512,522,536,554,568,572,583,588,596,615,620,624,630],{"__ignoreMap":50},[54,509,510],{"class":56,"line":57},[54,511,277],{"class":276},[54,513,514,516,518,520],{"class":56,"line":75},[54,515,61],{"class":60},[54,517,64],{"class":60},[54,519,68],{"class":67},[54,521,72],{"class":71},[54,523,524,526,528,530,532,534],{"class":56,"line":97},[54,525,79],{"class":78},[54,527,82],{"class":67},[54,529,85],{"class":78},[54,531,88],{"class":67},[54,533,91],{"class":78},[54,535,94],{"class":71},[54,537,538,540,542,544,546,548,550,552],{"class":56,"line":118},[54,539,100],{"class":67},[54,541,350],{"class":78},[54,543,353],{"class":60},[54,545,356],{"class":78},[54,547,106],{"class":71},[54,549,109],{"class":78},[54,551,112],{"class":60},[54,553,115],{"class":78},[54,555,556,558,560,562,564,566],{"class":56,"line":151},[54,557,375],{"class":60},[54,559,378],{"class":175},[54,561,179],{"class":60},[54,563,182],{"class":60},[54,565,385],{"class":67},[54,567,388],{"class":78},[54,569,570],{"class":56,"line":159},[54,571,395],{"emptyLinePlaceholder":394},[54,573,574,576,578,580],{"class":56,"line":338},[54,575,121],{"class":60},[54,577,124],{"class":60},[54,579,127],{"class":67},[54,581,582],{"class":78},"(file.bytes, {\n",[54,584,585],{"class":56,"line":345},[54,586,587],{"class":78},"      headers: {\n",[54,589,590,593],{"class":56,"line":372},[54,591,592],{"class":133},"        'content-type'",[54,594,595],{"class":78},": file.contentType,\n",[54,597,598,601,603,605,607,609,611,613],{"class":56,"line":391},[54,599,600],{"class":133},"        'content-disposition'",[54,602,350],{"class":78},[54,604,425],{"class":133},[54,606,428],{"class":78},[54,608,139],{"class":133},[54,610,433],{"class":78},[54,612,436],{"class":133},[54,614,94],{"class":78},[54,616,617],{"class":56,"line":398},[54,618,619],{"class":78},"      },\n",[54,621,622],{"class":56,"line":414},[54,623,444],{"class":78},[54,625,626,628],{"class":56,"line":441},[54,627,154],{"class":78},[54,629,94],{"class":71},[54,631,632],{"class":56,"line":447},[54,633,162],{"class":71},[45,635,637],{"className":47,"code":636,"language":49,"meta":50,"style":50},"const response = await $endpoint('\u002Fapi\u002Ffiles\u002F:id', {\n  method: 'get',\n  params: { id: 'invoice-1' },\n}).raw()\nconst blob = await response.blob()\nconst url = URL.createObjectURL(blob)\n\nconst link = document.createElement('a')\nlink.href = url\nlink.download = 'invoice.pdf'\nlink.click()\nURL.revokeObjectURL(url)\n",[14,638,639,658,666,674,682,699,719,723,745,756,766,776],{"__ignoreMap":50},[54,640,641,643,645,647,649,651,653,656],{"class":56,"line":57},[54,642,172],{"class":60},[54,644,176],{"class":175},[54,646,179],{"class":60},[54,648,182],{"class":60},[54,650,185],{"class":67},[54,652,130],{"class":78},[54,654,655],{"class":133},"'\u002Fapi\u002Ffiles\u002F:id'",[54,657,193],{"class":78},[54,659,660,662,664],{"class":56,"line":75},[54,661,198],{"class":78},[54,663,201],{"class":133},[54,665,94],{"class":78},[54,667,668,670,672],{"class":56,"line":97},[54,669,208],{"class":78},[54,671,484],{"class":133},[54,673,214],{"class":78},[54,675,676,678,680],{"class":56,"line":118},[54,677,219],{"class":78},[54,679,222],{"class":67},[54,681,225],{"class":78},[54,683,684,686,688,690,692,694,697],{"class":56,"line":151},[54,685,172],{"class":60},[54,687,468],{"class":175},[54,689,179],{"class":60},[54,691,182],{"class":60},[54,693,239],{"class":78},[54,695,696],{"class":67},"blob",[54,698,225],{"class":78},[54,700,701,703,706,708,711,713,716],{"class":56,"line":159},[54,702,172],{"class":60},[54,704,705],{"class":175}," url",[54,707,179],{"class":60},[54,709,710],{"class":175}," URL",[54,712,139],{"class":78},[54,714,715],{"class":67},"createObjectURL",[54,717,718],{"class":78},"(blob)\n",[54,720,721],{"class":56,"line":338},[54,722,395],{"emptyLinePlaceholder":394},[54,724,725,727,730,732,735,738,740,743],{"class":56,"line":345},[54,726,172],{"class":60},[54,728,729],{"class":175}," link",[54,731,179],{"class":60},[54,733,734],{"class":78}," document.",[54,736,737],{"class":67},"createElement",[54,739,130],{"class":78},[54,741,742],{"class":133},"'a'",[54,744,148],{"class":78},[54,746,747,750,753],{"class":56,"line":372},[54,748,749],{"class":78},"link.href ",[54,751,752],{"class":60},"=",[54,754,755],{"class":78}," url\n",[54,757,758,761,763],{"class":56,"line":391},[54,759,760],{"class":78},"link.download ",[54,762,752],{"class":60},[54,764,765],{"class":133}," 'invoice.pdf'\n",[54,767,768,771,774],{"class":56,"line":398},[54,769,770],{"class":78},"link.",[54,772,773],{"class":67},"click",[54,775,225],{"class":78},[54,777,778,781,783,786],{"class":56,"line":414},[54,779,780],{"class":175},"URL",[54,782,139],{"class":78},[54,784,785],{"class":67},"revokeObjectURL",[54,787,788],{"class":78},"(url)\n",[260,790,792],{"id":791},"multipart-uploads","Multipart uploads",[10,794,795,796,799,800,804],{},"Multipart requests are now a first-class contract shape — declare a\n",[14,797,798],{},"multipart\u002Fform-data"," member in a ",[39,801,803],{"href":802},"\u002Fdocs\u002Fendpoints#media-type-request-bodies","media-type body map","\nto get validation, typing, and OpenAPI output. Drop down to the raw Nuxt event\nonly when you need streaming part-by-part processing instead of a parsed form.",[45,806,808],{"className":47,"code":807,"language":49,"meta":50,"style":50},"\u002F\u002F server\u002Fapi\u002Fuploads.post.ts\nexport default defineEventHandler(async (event) => {\n  const parts = await readMultipartFormData(event)\n  const file = parts?.find((part) => part.name === 'file')\n\n  if (!file?.data) {\n    throw createError({ statusCode: 400, statusMessage: 'Missing file' })\n  }\n\n  const uploaded = await saveUpload(file)\n  return { id: uploaded.id }\n})\n",[14,809,810,815,835,853,889,893,907,929,934,938,955,963],{"__ignoreMap":50},[54,811,812],{"class":56,"line":57},[54,813,814],{"class":276},"\u002F\u002F server\u002Fapi\u002Fuploads.post.ts\n",[54,816,817,819,821,824,826,828,831,833],{"class":56,"line":75},[54,818,61],{"class":60},[54,820,64],{"class":60},[54,822,823],{"class":67}," defineEventHandler",[54,825,130],{"class":71},[54,827,353],{"class":60},[54,829,830],{"class":71}," (event) ",[54,832,112],{"class":60},[54,834,115],{"class":78},[54,836,837,840,843,845,847,850],{"class":56,"line":97},[54,838,839],{"class":60},"  const",[54,841,842],{"class":175}," parts",[54,844,179],{"class":60},[54,846,182],{"class":60},[54,848,849],{"class":67}," readMultipartFormData",[54,851,852],{"class":78},"(event)\n",[54,854,855,857,859,861,864,867,870,873,876,878,881,884,887],{"class":56,"line":118},[54,856,839],{"class":60},[54,858,378],{"class":175},[54,860,179],{"class":60},[54,862,863],{"class":78}," parts?.",[54,865,866],{"class":67},"find",[54,868,869],{"class":78},"((",[54,871,872],{"class":71},"part",[54,874,875],{"class":78},") ",[54,877,112],{"class":60},[54,879,880],{"class":78}," part.name ",[54,882,883],{"class":60},"===",[54,885,886],{"class":133}," 'file'",[54,888,148],{"class":78},[54,890,891],{"class":56,"line":151},[54,892,395],{"emptyLinePlaceholder":394},[54,894,895,898,901,904],{"class":56,"line":159},[54,896,897],{"class":60},"  if",[54,899,900],{"class":78}," (",[54,902,903],{"class":60},"!",[54,905,906],{"class":78},"file?.data) {\n",[54,908,909,912,915,918,921,924,927],{"class":56,"line":338},[54,910,911],{"class":60},"    throw",[54,913,914],{"class":67}," createError",[54,916,917],{"class":78},"({ statusCode: ",[54,919,920],{"class":175},"400",[54,922,923],{"class":78},", statusMessage: ",[54,925,926],{"class":133},"'Missing file'",[54,928,493],{"class":78},[54,930,931],{"class":56,"line":345},[54,932,933],{"class":78},"  }\n",[54,935,936],{"class":56,"line":372},[54,937,395],{"emptyLinePlaceholder":394},[54,939,940,942,945,947,949,952],{"class":56,"line":391},[54,941,839],{"class":60},[54,943,944],{"class":175}," uploaded",[54,946,179],{"class":60},[54,948,182],{"class":60},[54,950,951],{"class":67}," saveUpload",[54,953,954],{"class":78},"(file)\n",[54,956,957,960],{"class":56,"line":398},[54,958,959],{"class":60},"  return",[54,961,962],{"class":78}," { id: uploaded.id }\n",[54,964,965,968],{"class":56,"line":414},[54,966,967],{"class":78},"}",[54,969,148],{"class":71},[45,971,973],{"className":47,"code":972,"language":49,"meta":50,"style":50},"const form = new FormData()\nform.append('file', file)\n\nconst uploaded = await $fetch\u003C{ id: string }>('\u002Fapi\u002Fuploads', {\n  method: 'POST',\n  body: form,\n})\n",[14,974,975,991,1007,1011,1043,1052,1057],{"__ignoreMap":50},[54,976,977,979,982,984,986,989],{"class":56,"line":57},[54,978,172],{"class":60},[54,980,981],{"class":175}," form",[54,983,179],{"class":60},[54,985,124],{"class":60},[54,987,988],{"class":67}," FormData",[54,990,225],{"class":78},[54,992,993,996,999,1001,1004],{"class":56,"line":75},[54,994,995],{"class":78},"form.",[54,997,998],{"class":67},"append",[54,1000,130],{"class":78},[54,1002,1003],{"class":133},"'file'",[54,1005,1006],{"class":78},", file)\n",[54,1008,1009],{"class":56,"line":97},[54,1010,395],{"emptyLinePlaceholder":394},[54,1012,1013,1015,1017,1019,1021,1024,1027,1029,1032,1035,1038,1041],{"class":56,"line":118},[54,1014,172],{"class":60},[54,1016,944],{"class":175},[54,1018,179],{"class":60},[54,1020,182],{"class":60},[54,1022,1023],{"class":67}," $fetch",[54,1025,1026],{"class":78},"\u003C{ ",[54,1028,142],{"class":71},[54,1030,1031],{"class":60},":",[54,1033,1034],{"class":175}," string",[54,1036,1037],{"class":78}," }>(",[54,1039,1040],{"class":133},"'\u002Fapi\u002Fuploads'",[54,1042,193],{"class":78},[54,1044,1045,1047,1050],{"class":56,"line":151},[54,1046,198],{"class":78},[54,1048,1049],{"class":133},"'POST'",[54,1051,94],{"class":78},[54,1053,1054],{"class":56,"line":159},[54,1055,1056],{"class":78},"  body: form,\n",[54,1058,1059],{"class":56,"line":338},[54,1060,162],{"class":78},[10,1062,1063],{},"This route is outside the generated endpoint client until multipart request contracts become first-class.",[260,1065,1067],{"id":1066},"streaming-and-sse","Streaming and SSE",[10,1069,1070,1071,1074],{},"Streaming is no longer a reason to leave the contract. Declare the status by\nits ",[39,1072,1073],{"href":41},"media type"," and the route keeps its\nplace in OpenAPI and in the generated client, which stops parsing that route's\nbody so callers receive the live stream.",[45,1076,1078],{"className":47,"code":1077,"language":49,"meta":50,"style":50},"\u002F\u002F server\u002Fapi\u002Fevents.get.ts\nexport default defineEndpoint({\n  operation: 'streamEvents',\n  responses: {\n    200: { media: 'text\u002Fevent-stream' },\n  },\n  handler: ({ respond }) => {\n    const stream = new ReadableStream({\n      start(controller) {\n        controller.enqueue(new TextEncoder().encode('data: ready\\n\\n'))\n      },\n    })\n\n    return respond(200, stream, { headers: { 'cache-control': 'no-cache' } })\n  },\n})\n",[14,1079,1080,1085,1095,1104,1108,1119,1125,1139,1155,1168,1204,1208,1212,1216,1240,1246],{"__ignoreMap":50},[54,1081,1082],{"class":56,"line":57},[54,1083,1084],{"class":276},"\u002F\u002F server\u002Fapi\u002Fevents.get.ts\n",[54,1086,1087,1089,1091,1093],{"class":56,"line":75},[54,1088,61],{"class":60},[54,1090,64],{"class":60},[54,1092,68],{"class":67},[54,1094,72],{"class":71},[54,1096,1097,1099,1102],{"class":56,"line":97},[54,1098,292],{"class":78},[54,1100,1101],{"class":133},"'streamEvents'",[54,1103,94],{"class":71},[54,1105,1106],{"class":56,"line":118},[54,1107,316],{"class":78},[54,1109,1110,1112,1114,1117],{"class":56,"line":151},[54,1111,321],{"class":175},[54,1113,324],{"class":78},[54,1115,1116],{"class":133},"'text\u002Fevent-stream'",[54,1118,214],{"class":78},[54,1120,1121,1123],{"class":56,"line":159},[54,1122,154],{"class":78},[54,1124,94],{"class":71},[54,1126,1127,1129,1131,1133,1135,1137],{"class":56,"line":338},[54,1128,100],{"class":67},[54,1130,103],{"class":78},[54,1132,363],{"class":71},[54,1134,109],{"class":78},[54,1136,112],{"class":60},[54,1138,115],{"class":78},[54,1140,1141,1143,1146,1148,1150,1153],{"class":56,"line":345},[54,1142,375],{"class":60},[54,1144,1145],{"class":175}," stream",[54,1147,179],{"class":60},[54,1149,124],{"class":60},[54,1151,1152],{"class":67}," ReadableStream",[54,1154,72],{"class":78},[54,1156,1157,1160,1162,1165],{"class":56,"line":372},[54,1158,1159],{"class":67},"      start",[54,1161,130],{"class":78},[54,1163,1164],{"class":71},"controller",[54,1166,1167],{"class":78},") {\n",[54,1169,1170,1173,1176,1178,1181,1184,1187,1190,1192,1195,1198,1201],{"class":56,"line":391},[54,1171,1172],{"class":78},"        controller.",[54,1174,1175],{"class":67},"enqueue",[54,1177,130],{"class":78},[54,1179,1180],{"class":60},"new",[54,1182,1183],{"class":67}," TextEncoder",[54,1185,1186],{"class":78},"().",[54,1188,1189],{"class":67},"encode",[54,1191,130],{"class":78},[54,1193,1194],{"class":133},"'data: ready",[54,1196,1197],{"class":60},"\\n\\n",[54,1199,1200],{"class":133},"'",[54,1202,1203],{"class":78},"))\n",[54,1205,1206],{"class":56,"line":398},[54,1207,619],{"class":78},[54,1209,1210],{"class":56,"line":414},[54,1211,444],{"class":78},[54,1213,1214],{"class":56,"line":441},[54,1215,395],{"emptyLinePlaceholder":394},[54,1217,1218,1220,1222,1224,1226,1229,1232,1234,1237],{"class":56,"line":447},[54,1219,121],{"class":60},[54,1221,403],{"class":67},[54,1223,130],{"class":78},[54,1225,408],{"class":175},[54,1227,1228],{"class":78},", stream, { headers: { ",[54,1230,1231],{"class":133},"'cache-control'",[54,1233,350],{"class":78},[54,1235,1236],{"class":133},"'no-cache'",[54,1238,1239],{"class":78}," } })\n",[54,1241,1242,1244],{"class":56,"line":454},[54,1243,154],{"class":78},[54,1245,94],{"class":71},[54,1247,1249],{"class":56,"line":1248},16,[54,1250,162],{"class":71},[45,1252,1254],{"className":47,"code":1253,"language":49,"meta":50,"style":50},"const reader = (await $endpoint('streamEvents')).getReader()\n",[14,1255,1256],{"__ignoreMap":50},[54,1257,1258,1260,1263,1265,1267,1270,1272,1274,1276,1279,1282],{"class":56,"line":57},[54,1259,172],{"class":60},[54,1261,1262],{"class":175}," reader",[54,1264,179],{"class":60},[54,1266,900],{"class":78},[54,1268,1269],{"class":60},"await",[54,1271,185],{"class":67},[54,1273,130],{"class":78},[54,1275,1101],{"class":133},[54,1277,1278],{"class":78},")).",[54,1280,1281],{"class":67},"getReader",[54,1283,225],{"class":78},[10,1285,1286,1287,1289,1290,1292],{},"An undeclared streaming route still works — return a native ",[14,1288,33],{}," and use\n",[14,1291,26],{},". What it gives up is the OpenAPI entry and the client's knowledge that\nthe body should not be parsed.",[10,1294,1295,1296,1299,1300,1303],{},"The chunks themselves stay untyped. Declaring their shape would need a complete\nchunk, cancellation, and error contract, and the demand in the ecosystem is for\nstreaming to work at all rather than for typed chunks — so ",[14,1297,1298],{},"media"," declares\nwhat is sent, and ",[14,1301,1302],{},"schema"," documents it, without either claiming to check it.",[10,1305,1306,1307,1310],{},"For browser SSE, ",[14,1308,1309],{},"EventSource"," is usually simpler:",[45,1312,1314],{"className":47,"code":1313,"language":49,"meta":50,"style":50},"const events = new EventSource('\u002Fapi\u002Fevents')\nevents.addEventListener('message', (event) => {\n  console.log(event.data)\n})\n",[14,1315,1316,1337,1362,1373],{"__ignoreMap":50},[54,1317,1318,1320,1323,1325,1327,1330,1332,1335],{"class":56,"line":57},[54,1319,172],{"class":60},[54,1321,1322],{"class":175}," events",[54,1324,179],{"class":60},[54,1326,124],{"class":60},[54,1328,1329],{"class":67}," EventSource",[54,1331,130],{"class":78},[54,1333,1334],{"class":133},"'\u002Fapi\u002Fevents'",[54,1336,148],{"class":78},[54,1338,1339,1342,1345,1347,1350,1353,1356,1358,1360],{"class":56,"line":75},[54,1340,1341],{"class":78},"events.",[54,1343,1344],{"class":67},"addEventListener",[54,1346,130],{"class":78},[54,1348,1349],{"class":133},"'message'",[54,1351,1352],{"class":78},", (",[54,1354,1355],{"class":71},"event",[54,1357,875],{"class":78},[54,1359,112],{"class":60},[54,1361,115],{"class":78},[54,1363,1364,1367,1370],{"class":56,"line":97},[54,1365,1366],{"class":78},"  console.",[54,1368,1369],{"class":67},"log",[54,1371,1372],{"class":78},"(event.data)\n",[54,1374,1375],{"class":56,"line":118},[54,1376,162],{"class":78},[260,1378,1380],{"id":1379},"redirects","Redirects",[10,1382,1383],{},"For API redirects, return a native redirect response. Browser fetch follows redirects by default, so client code usually sees the final response.",[45,1385,1387],{"className":47,"code":1386,"language":49,"meta":50,"style":50},"\u002F\u002F server\u002Fapi\u002Fauth\u002Fcallback.get.ts\nexport default defineEndpoint({\n  query: z.object({ next: z.string().optional() }),\n  handler: ({ query }) => {\n    return new Response(null, {\n      status: 302,\n      headers: {\n        location: query.next ?? '\u002Fdashboard',\n      },\n    })\n  },\n})\n",[14,1388,1389,1394,1404,1425,1440,1455,1465,1469,1482,1486,1490,1496],{"__ignoreMap":50},[54,1390,1391],{"class":56,"line":57},[54,1392,1393],{"class":276},"\u002F\u002F server\u002Fapi\u002Fauth\u002Fcallback.get.ts\n",[54,1395,1396,1398,1400,1402],{"class":56,"line":75},[54,1397,61],{"class":60},[54,1399,64],{"class":60},[54,1401,68],{"class":67},[54,1403,72],{"class":71},[54,1405,1406,1409,1411,1414,1416,1418,1421,1423],{"class":56,"line":97},[54,1407,1408],{"class":78},"  query: z.",[54,1410,82],{"class":67},[54,1412,1413],{"class":78},"({ next: z.",[54,1415,88],{"class":67},[54,1417,1186],{"class":78},[54,1419,1420],{"class":67},"optional",[54,1422,91],{"class":78},[54,1424,94],{"class":71},[54,1426,1427,1429,1431,1434,1436,1438],{"class":56,"line":118},[54,1428,100],{"class":67},[54,1430,103],{"class":78},[54,1432,1433],{"class":71},"query",[54,1435,109],{"class":78},[54,1437,112],{"class":60},[54,1439,115],{"class":78},[54,1441,1442,1444,1446,1448,1450,1453],{"class":56,"line":151},[54,1443,121],{"class":60},[54,1445,124],{"class":60},[54,1447,127],{"class":67},[54,1449,130],{"class":78},[54,1451,1452],{"class":175},"null",[54,1454,193],{"class":78},[54,1456,1457,1460,1463],{"class":56,"line":159},[54,1458,1459],{"class":78},"      status: ",[54,1461,1462],{"class":175},"302",[54,1464,94],{"class":78},[54,1466,1467],{"class":56,"line":338},[54,1468,587],{"class":78},[54,1470,1471,1474,1477,1480],{"class":56,"line":345},[54,1472,1473],{"class":78},"        location: query.next ",[54,1475,1476],{"class":60},"??",[54,1478,1479],{"class":133}," '\u002Fdashboard'",[54,1481,94],{"class":78},[54,1483,1484],{"class":56,"line":372},[54,1485,619],{"class":78},[54,1487,1488],{"class":56,"line":391},[54,1489,444],{"class":78},[54,1491,1492,1494],{"class":56,"line":398},[54,1493,154],{"class":78},[54,1495,94],{"class":71},[54,1497,1498],{"class":56,"line":414},[54,1499,162],{"class":71},[45,1501,1503],{"className":47,"code":1502,"language":49,"meta":50,"style":50},"const response = await $endpoint('\u002Fapi\u002Fauth\u002Fcallback', {\n  method: 'get',\n  query: { next: '\u002Fdashboard' },\n}).raw()\n\nif (response.redirected) {\n  await navigateTo(response.url, { external: true })\n}\n",[14,1504,1505,1524,1532,1542,1550,1554,1562,1578],{"__ignoreMap":50},[54,1506,1507,1509,1511,1513,1515,1517,1519,1522],{"class":56,"line":57},[54,1508,172],{"class":60},[54,1510,176],{"class":175},[54,1512,179],{"class":60},[54,1514,182],{"class":60},[54,1516,185],{"class":67},[54,1518,130],{"class":78},[54,1520,1521],{"class":133},"'\u002Fapi\u002Fauth\u002Fcallback'",[54,1523,193],{"class":78},[54,1525,1526,1528,1530],{"class":56,"line":75},[54,1527,198],{"class":78},[54,1529,201],{"class":133},[54,1531,94],{"class":78},[54,1533,1534,1537,1540],{"class":56,"line":97},[54,1535,1536],{"class":78},"  query: { next: ",[54,1538,1539],{"class":133},"'\u002Fdashboard'",[54,1541,214],{"class":78},[54,1543,1544,1546,1548],{"class":56,"line":118},[54,1545,219],{"class":78},[54,1547,222],{"class":67},[54,1549,225],{"class":78},[54,1551,1552],{"class":56,"line":151},[54,1553,395],{"emptyLinePlaceholder":394},[54,1555,1556,1559],{"class":56,"line":159},[54,1557,1558],{"class":60},"if",[54,1560,1561],{"class":78}," (response.redirected) {\n",[54,1563,1564,1567,1570,1573,1576],{"class":56,"line":338},[54,1565,1566],{"class":60},"  await",[54,1568,1569],{"class":67}," navigateTo",[54,1571,1572],{"class":78},"(response.url, { external: ",[54,1574,1575],{"class":175},"true",[54,1577,493],{"class":78},[54,1579,1580],{"class":56,"line":345},[54,1581,1582],{"class":78},"}\n",[10,1584,1585,1586,1589],{},"For UI navigation, prefer ",[14,1587,1588],{},"navigateTo"," directly from the page or middleware instead of hiding navigation behind an API request.",[260,1591,1593],{"id":1592},"proxy-routes","Proxy routes",[10,1595,1596,1597,1599,1600,1602],{},"Proxy routes are also raw HTTP routes. Return the upstream ",[14,1598,33],{}," and call ",[14,1601,26],{}," from the client.",[45,1604,1606],{"className":47,"code":1605,"language":49,"meta":50,"style":50},"\u002F\u002F server\u002Fapi\u002Fproxy\u002F[id].get.ts\nexport default defineEndpoint({\n  params: z.object({ id: z.string() }),\n  handler: async ({ params }) => {\n    return await fetch(`https:\u002F\u002Fapi.example.com\u002Ffiles\u002F${params.id}`)\n  },\n})\n",[14,1607,1608,1613,1623,1637,1655,1679,1685],{"__ignoreMap":50},[54,1609,1610],{"class":56,"line":57},[54,1611,1612],{"class":276},"\u002F\u002F server\u002Fapi\u002Fproxy\u002F[id].get.ts\n",[54,1614,1615,1617,1619,1621],{"class":56,"line":75},[54,1616,61],{"class":60},[54,1618,64],{"class":60},[54,1620,68],{"class":67},[54,1622,72],{"class":71},[54,1624,1625,1627,1629,1631,1633,1635],{"class":56,"line":97},[54,1626,79],{"class":78},[54,1628,82],{"class":67},[54,1630,85],{"class":78},[54,1632,88],{"class":67},[54,1634,91],{"class":78},[54,1636,94],{"class":71},[54,1638,1639,1641,1643,1645,1647,1649,1651,1653],{"class":56,"line":118},[54,1640,100],{"class":67},[54,1642,350],{"class":78},[54,1644,353],{"class":60},[54,1646,356],{"class":78},[54,1648,106],{"class":71},[54,1650,109],{"class":78},[54,1652,112],{"class":60},[54,1654,115],{"class":78},[54,1656,1657,1659,1661,1664,1666,1669,1671,1673,1675,1677],{"class":56,"line":151},[54,1658,121],{"class":60},[54,1660,182],{"class":60},[54,1662,1663],{"class":67}," fetch",[54,1665,130],{"class":78},[54,1667,1668],{"class":133},"`https:\u002F\u002Fapi.example.com\u002Ffiles\u002F${",[54,1670,106],{"class":78},[54,1672,139],{"class":133},[54,1674,142],{"class":78},[54,1676,145],{"class":133},[54,1678,148],{"class":78},[54,1680,1681,1683],{"class":56,"line":159},[54,1682,154],{"class":78},[54,1684,94],{"class":71},[54,1686,1687],{"class":56,"line":338},[54,1688,162],{"class":71},[45,1690,1692],{"className":47,"code":1691,"language":49,"meta":50,"style":50},"const response = await $endpoint('\u002Fapi\u002Fproxy\u002F:id', {\n  method: 'get',\n  params: { id: 'asset-1' },\n}).raw()\nconst contentType = response.headers.get('content-type')\nconst data = await response.arrayBuffer()\n",[14,1693,1694,1713,1721,1730,1738,1760],{"__ignoreMap":50},[54,1695,1696,1698,1700,1702,1704,1706,1708,1711],{"class":56,"line":57},[54,1697,172],{"class":60},[54,1699,176],{"class":175},[54,1701,179],{"class":60},[54,1703,182],{"class":60},[54,1705,185],{"class":67},[54,1707,130],{"class":78},[54,1709,1710],{"class":133},"'\u002Fapi\u002Fproxy\u002F:id'",[54,1712,193],{"class":78},[54,1714,1715,1717,1719],{"class":56,"line":75},[54,1716,198],{"class":78},[54,1718,201],{"class":133},[54,1720,94],{"class":78},[54,1722,1723,1725,1728],{"class":56,"line":97},[54,1724,208],{"class":78},[54,1726,1727],{"class":133},"'asset-1'",[54,1729,214],{"class":78},[54,1731,1732,1734,1736],{"class":56,"line":118},[54,1733,219],{"class":78},[54,1735,222],{"class":67},[54,1737,225],{"class":78},[54,1739,1740,1742,1745,1747,1750,1753,1755,1758],{"class":56,"line":151},[54,1741,172],{"class":60},[54,1743,1744],{"class":175}," contentType",[54,1746,179],{"class":60},[54,1748,1749],{"class":78}," response.headers.",[54,1751,1752],{"class":67},"get",[54,1754,130],{"class":78},[54,1756,1757],{"class":133},"'content-type'",[54,1759,148],{"class":78},[54,1761,1762,1764,1767,1769,1771,1773,1776],{"class":56,"line":159},[54,1763,172],{"class":60},[54,1765,1766],{"class":175}," data",[54,1768,179],{"class":60},[54,1770,182],{"class":60},[54,1772,239],{"class":78},[54,1774,1775],{"class":67},"arrayBuffer",[54,1777,225],{"class":78},[260,1779,1781],{"id":1780},"raw-web-responses","Raw Web Responses",[10,1783,1784,1785,1787],{},"Use raw ",[14,1786,33],{}," returns when the route owns status, headers, cookies, or a body shape that should not be modeled as JSON.",[45,1789,1791],{"className":47,"code":1790,"language":49,"meta":50,"style":50},"\u002F\u002F server\u002Fapi\u002Freport.get.ts\nexport default defineEndpoint({\n  handler: () => {\n    return new Response('created', {\n      status: 201,\n      headers: {\n        'x-report-id': 'report_123',\n      },\n    })\n  },\n})\n",[14,1792,1793,1798,1808,1819,1834,1843,1847,1859,1863,1867,1873],{"__ignoreMap":50},[54,1794,1795],{"class":56,"line":57},[54,1796,1797],{"class":276},"\u002F\u002F server\u002Fapi\u002Freport.get.ts\n",[54,1799,1800,1802,1804,1806],{"class":56,"line":75},[54,1801,61],{"class":60},[54,1803,64],{"class":60},[54,1805,68],{"class":67},[54,1807,72],{"class":71},[54,1809,1810,1812,1815,1817],{"class":56,"line":97},[54,1811,100],{"class":67},[54,1813,1814],{"class":78},": () ",[54,1816,112],{"class":60},[54,1818,115],{"class":78},[54,1820,1821,1823,1825,1827,1829,1832],{"class":56,"line":118},[54,1822,121],{"class":60},[54,1824,124],{"class":60},[54,1826,127],{"class":67},[54,1828,130],{"class":78},[54,1830,1831],{"class":133},"'created'",[54,1833,193],{"class":78},[54,1835,1836,1838,1841],{"class":56,"line":151},[54,1837,1459],{"class":78},[54,1839,1840],{"class":175},"201",[54,1842,94],{"class":78},[54,1844,1845],{"class":56,"line":159},[54,1846,587],{"class":78},[54,1848,1849,1852,1854,1857],{"class":56,"line":338},[54,1850,1851],{"class":133},"        'x-report-id'",[54,1853,350],{"class":78},[54,1855,1856],{"class":133},"'report_123'",[54,1858,94],{"class":78},[54,1860,1861],{"class":56,"line":345},[54,1862,619],{"class":78},[54,1864,1865],{"class":56,"line":372},[54,1866,444],{"class":78},[54,1868,1869,1871],{"class":56,"line":391},[54,1870,154],{"class":78},[54,1872,94],{"class":71},[54,1874,1875],{"class":56,"line":398},[54,1876,162],{"class":71},[45,1878,1880],{"className":47,"code":1879,"language":49,"meta":50,"style":50},"const response = await $endpoint('\u002Fapi\u002Freport', { method: 'get' }).raw()\nconst reportId = response.headers.get('x-report-id')\nconst text = await response.text()\n",[14,1881,1882,1911,1931],{"__ignoreMap":50},[54,1883,1884,1886,1888,1890,1892,1894,1896,1899,1902,1904,1907,1909],{"class":56,"line":57},[54,1885,172],{"class":60},[54,1887,176],{"class":175},[54,1889,179],{"class":60},[54,1891,182],{"class":60},[54,1893,185],{"class":67},[54,1895,130],{"class":78},[54,1897,1898],{"class":133},"'\u002Fapi\u002Freport'",[54,1900,1901],{"class":78},", { method: ",[54,1903,201],{"class":133},[54,1905,1906],{"class":78}," }).",[54,1908,222],{"class":67},[54,1910,225],{"class":78},[54,1912,1913,1915,1918,1920,1922,1924,1926,1929],{"class":56,"line":75},[54,1914,172],{"class":60},[54,1916,1917],{"class":175}," reportId",[54,1919,179],{"class":60},[54,1921,1749],{"class":78},[54,1923,1752],{"class":67},[54,1925,130],{"class":78},[54,1927,1928],{"class":133},"'x-report-id'",[54,1930,148],{"class":78},[54,1932,1933,1935,1937,1939,1941,1943,1945],{"class":56,"line":97},[54,1934,172],{"class":60},[54,1936,232],{"class":175},[54,1938,179],{"class":60},[54,1940,182],{"class":60},[54,1942,239],{"class":78},[54,1944,242],{"class":67},[54,1946,225],{"class":78},[260,1948,1950],{"id":1949},"_204-no-content","204 No Content",[10,1952,1953,1954,1957,1958,139],{},"For no-content JSON API routes, keep the response contract. Declare ",[14,1955,1956],{},"204"," and return it with ",[14,1959,363],{},[45,1961,1963],{"className":47,"code":1962,"language":49,"meta":50,"style":50},"\u002F\u002F server\u002Fapi\u002Fsessions\u002Fcurrent.delete.ts\nexport default defineEndpoint({\n  responses: {\n    204: z.undefined(),\n  },\n  handler: ({ respond }) => {\n    clearSession()\n    return respond(204, undefined)\n  },\n})\n",[14,1964,1965,1970,1980,1984,1998,2004,2018,2025,2041,2047],{"__ignoreMap":50},[54,1966,1967],{"class":56,"line":57},[54,1968,1969],{"class":276},"\u002F\u002F server\u002Fapi\u002Fsessions\u002Fcurrent.delete.ts\n",[54,1971,1972,1974,1976,1978],{"class":56,"line":75},[54,1973,61],{"class":60},[54,1975,64],{"class":60},[54,1977,68],{"class":67},[54,1979,72],{"class":71},[54,1981,1982],{"class":56,"line":97},[54,1983,316],{"class":78},[54,1985,1986,1989,1992,1995],{"class":56,"line":118},[54,1987,1988],{"class":175},"    204",[54,1990,1991],{"class":78},": z.",[54,1993,1994],{"class":67},"undefined",[54,1996,1997],{"class":78},"(),\n",[54,1999,2000,2002],{"class":56,"line":151},[54,2001,154],{"class":78},[54,2003,94],{"class":71},[54,2005,2006,2008,2010,2012,2014,2016],{"class":56,"line":159},[54,2007,100],{"class":67},[54,2009,103],{"class":78},[54,2011,363],{"class":71},[54,2013,109],{"class":78},[54,2015,112],{"class":60},[54,2017,115],{"class":78},[54,2019,2020,2023],{"class":56,"line":338},[54,2021,2022],{"class":67},"    clearSession",[54,2024,225],{"class":78},[54,2026,2027,2029,2031,2033,2035,2037,2039],{"class":56,"line":345},[54,2028,121],{"class":60},[54,2030,403],{"class":67},[54,2032,130],{"class":78},[54,2034,1956],{"class":175},[54,2036,254],{"class":78},[54,2038,1994],{"class":175},[54,2040,148],{"class":78},[54,2042,2043,2045],{"class":56,"line":372},[54,2044,154],{"class":78},[54,2046,94],{"class":71},[54,2048,2049],{"class":56,"line":391},[54,2050,162],{"class":71},[45,2052,2054],{"className":47,"code":2053,"language":49,"meta":50,"style":50},"const result = await $endpoint('\u002Fapi\u002Fsessions\u002Fcurrent', { method: 'delete' }).result()\n\nif (result.status === 204) {\n  result.body \u002F\u002F undefined\n}\n",[14,2055,2056,2086,2090,2104,2112],{"__ignoreMap":50},[54,2057,2058,2060,2063,2065,2067,2069,2071,2074,2076,2079,2081,2084],{"class":56,"line":57},[54,2059,172],{"class":60},[54,2061,2062],{"class":175}," result",[54,2064,179],{"class":60},[54,2066,182],{"class":60},[54,2068,185],{"class":67},[54,2070,130],{"class":78},[54,2072,2073],{"class":133},"'\u002Fapi\u002Fsessions\u002Fcurrent'",[54,2075,1901],{"class":78},[54,2077,2078],{"class":133},"'delete'",[54,2080,1906],{"class":78},[54,2082,2083],{"class":67},"result",[54,2085,225],{"class":78},[54,2087,2088],{"class":56,"line":75},[54,2089,395],{"emptyLinePlaceholder":394},[54,2091,2092,2094,2097,2099,2102],{"class":56,"line":97},[54,2093,1558],{"class":60},[54,2095,2096],{"class":78}," (result.status ",[54,2098,883],{"class":60},[54,2100,2101],{"class":175}," 204",[54,2103,1167],{"class":78},[54,2105,2106,2109],{"class":56,"line":118},[54,2107,2108],{"class":78},"  result.body ",[54,2110,2111],{"class":276},"\u002F\u002F undefined\n",[54,2113,2114],{"class":56,"line":151},[54,2115,1582],{"class":78},[10,2117,2118,2119,2121],{},"Use ",[14,2120,26],{}," when the caller only needs the native status:",[45,2123,2125],{"className":47,"code":2124,"language":49,"meta":50,"style":50},"const response = await $endpoint('\u002Fapi\u002Fsessions\u002Fcurrent', { method: 'delete' }).raw()\nresponse.status \u002F\u002F 204\n",[14,2126,2127,2153],{"__ignoreMap":50},[54,2128,2129,2131,2133,2135,2137,2139,2141,2143,2145,2147,2149,2151],{"class":56,"line":57},[54,2130,172],{"class":60},[54,2132,176],{"class":175},[54,2134,179],{"class":60},[54,2136,182],{"class":60},[54,2138,185],{"class":67},[54,2140,130],{"class":78},[54,2142,2073],{"class":133},[54,2144,1901],{"class":78},[54,2146,2078],{"class":133},[54,2148,1906],{"class":78},[54,2150,222],{"class":67},[54,2152,225],{"class":78},[54,2154,2155,2158],{"class":56,"line":75},[54,2156,2157],{"class":78},"response.status ",[54,2159,2160],{"class":276},"\u002F\u002F 204\n",[2162,2163,2164],"style",{},"html pre.shiki code .swxxe, html code.shiki .swxxe{--shiki-light:#CF222E;--shiki-dark:#FF7B72}html pre.shiki code .s9HWX, html code.shiki .s9HWX{--shiki-light:#8250DF;--shiki-dark:#D2A8FF}html pre.shiki code .sVS1I, html code.shiki .sVS1I{--shiki-light:#953800;--shiki-dark:#FFA657}html pre.shiki code .saQ_J, html code.shiki .saQ_J{--shiki-light:#1F2328;--shiki-dark:#E6EDF3}html pre.shiki code .sZItA, html code.shiki .sZItA{--shiki-light:#0A3069;--shiki-dark:#A5D6FF}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 .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);}html pre.shiki code .sOOdx, html code.shiki .sOOdx{--shiki-light:#0550AE;--shiki-dark:#79C0FF}html pre.shiki code .sA0OV, html code.shiki .sA0OV{--shiki-light:#6E7781;--shiki-dark:#8B949E}",{"title":50,"searchDepth":75,"depth":75,"links":2166},[2167,2168,2169,2170,2171,2172,2173],{"id":262,"depth":75,"text":263},{"id":791,"depth":75,"text":792},{"id":1066,"depth":75,"text":1067},{"id":1379,"depth":75,"text":1380},{"id":1592,"depth":75,"text":1593},{"id":1780,"depth":75,"text":1781},{"id":1949,"depth":75,"text":1950},"Handle files, streams, redirects, proxies, raw Responses, and 204 routes.","md",{},"\u002Fdocs\u002Flow-level-http",{"title":5,"description":2174},"docs\u002Flow-level-http","8muVpvnrOdJ1xcFBbDXbzU_UT9IndZGf5cO6W3k1XB0",{"left":2182,"top":2182,"width":2183,"height":2183,"rotate":2182,"vFlip":2184,"hFlip":2184,"body":2185},0,24,false,"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\"\u002F>",{"left":2182,"top":2182,"width":2183,"height":2183,"rotate":2182,"vFlip":2184,"hFlip":2184,"body":2187,"hidden":394},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5c.08-1.25-.27-2.48-1-3.5c.28-1.15.28-2.35 0-3.5c0 0-1 0-3 1.5c-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.4 5.4 0 0 0 4 9c0 3.5 3 5.5 6 5.5c-.39.49-.68 1.05-.85 1.65S8.93 17.38 9 18v4\"\u002F>\u003Cpath d=\"M9 18c-4.51 2-5-2-7-2\"\u002F>\u003C\u002Fg>",{"left":2182,"top":2182,"width":2183,"height":2183,"rotate":2182,"vFlip":2184,"hFlip":2184,"body":2189},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 5h16M4 12h16M4 19h16\"\u002F>",1787723882352]