[{"data":1,"prerenderedAt":1990},["ShallowReactive",2],{"navigation":3,"docs-path-index":208,"-docs-modules-schema-decorators":272,"-docs-modules-schema-decorators-surround":1985},[4],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":52},"Docs","i-lucide-book-marked","\u002Fdocs","docs",[10,26,53,169,190],{"title":11,"path":12,"stem":13,"children":14,"icon":25},"Getting Started","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started\u002F1.index",[15,17,21],{"title":16,"path":12,"stem":13},"Introduction",{"title":18,"path":19,"stem":20},"Installation","\u002Fdocs\u002Fgetting-started\u002Finstallation","docs\u002F1.getting-started\u002F2.installation",{"title":22,"path":23,"stem":24},"Examples","\u002Fdocs\u002Fgetting-started\u002Fexamples","docs\u002F1.getting-started\u002F3.examples","i-lucide-rocket",{"title":27,"icon":28,"path":29,"stem":30,"children":31,"page":52},"Core features","i-lucide-square-function","\u002Fdocs\u002Fcore-features","docs\u002F2.core-features",[32,36,40,44,48],{"title":33,"path":34,"stem":35},"Configuration","\u002Fdocs\u002Fcore-features\u002Fconfiguration","docs\u002F2.core-features\u002F0.configuration",{"title":37,"path":38,"stem":39},"Dependency Injection","\u002Fdocs\u002Fcore-features\u002Fcontainer","docs\u002F2.core-features\u002F1.container",{"title":41,"path":42,"stem":43},"Controllers","\u002Fdocs\u002Fcore-features\u002Fcontrollers","docs\u002F2.core-features\u002F2.controllers",{"title":45,"path":46,"stem":47},"Middlewares","\u002Fdocs\u002Fcore-features\u002Fmiddlewares","docs\u002F2.core-features\u002F3.middlewares",{"title":49,"path":50,"stem":51},"Validation","\u002Fdocs\u002Fcore-features\u002Fvalidation","docs\u002F2.core-features\u002F4.validation",false,{"title":54,"icon":55,"defaultOpen":56,"path":57,"stem":58,"children":59,"page":52},"Modules","i-lucide-boxes",true,"\u002Fdocs\u002Fmodules","docs\u002F3.modules",[60,77,93,101,116,127,142,161],{"title":61,"icon":52,"defaultOpen":52,"path":62,"stem":63,"children":64,"page":52},"Auth","\u002Fdocs\u002Fmodules\u002Fauth","docs\u002F3.modules\u002F1.auth",[65,69,73],{"title":66,"path":67,"stem":68},"Overview","\u002Fdocs\u002Fmodules\u002Fauth\u002Foverview","docs\u002F3.modules\u002F1.auth\u002F0.overview",{"title":70,"path":71,"stem":72},"Decorators","\u002Fdocs\u002Fmodules\u002Fauth\u002Fdecorators","docs\u002F3.modules\u002F1.auth\u002F1.decorators",{"title":74,"path":75,"stem":76},"API Reference","\u002Fdocs\u002Fmodules\u002Fauth\u002Fapi","docs\u002F3.modules\u002F1.auth\u002F2.api",{"title":78,"icon":52,"defaultOpen":52,"path":79,"stem":80,"children":81,"page":52},"Logger","\u002Fdocs\u002Fmodules\u002Flogger","docs\u002F3.modules\u002F2.logger",[82,85,89],{"title":66,"path":83,"stem":84},"\u002Fdocs\u002Fmodules\u002Flogger\u002Foverview","docs\u002F3.modules\u002F2.logger\u002F0.overview",{"title":86,"path":87,"stem":88},"Drains & Adapters","\u002Fdocs\u002Fmodules\u002Flogger\u002Fdrivers","docs\u002F3.modules\u002F2.logger\u002F1.drivers",{"title":90,"path":91,"stem":92},"API","\u002Fdocs\u002Fmodules\u002Flogger\u002Fapi","docs\u002F3.modules\u002F2.logger\u002F2.api",{"title":94,"icon":52,"defaultOpen":52,"path":95,"stem":96,"children":97,"page":52},"Serverless","\u002Fdocs\u002Fmodules\u002Fserverless","docs\u002F3.modules\u002F3.serverless",[98],{"title":66,"path":99,"stem":100},"\u002Fdocs\u002Fmodules\u002Fserverless\u002Foverview","docs\u002F3.modules\u002F3.serverless\u002F0.overview",{"title":102,"icon":52,"defaultOpen":52,"path":103,"stem":104,"children":105,"page":52},"Storage","\u002Fdocs\u002Fmodules\u002Fstorage","docs\u002F3.modules\u002F4.storage",[106,109,113],{"title":66,"path":107,"stem":108},"\u002Fdocs\u002Fmodules\u002Fstorage\u002Foverview","docs\u002F3.modules\u002F4.storage\u002F0.overview",{"title":110,"path":111,"stem":112},"Drivers","\u002Fdocs\u002Fmodules\u002Fstorage\u002Fdrivers","docs\u002F3.modules\u002F4.storage\u002F1.drivers",{"title":90,"path":114,"stem":115},"\u002Fdocs\u002Fmodules\u002Fstorage\u002Fapi","docs\u002F3.modules\u002F4.storage\u002F2.api",{"title":117,"icon":52,"defaultOpen":52,"path":118,"stem":119,"children":120,"page":52},"Web Sockets","\u002Fdocs\u002Fmodules\u002Fweb-sockets","docs\u002F3.modules\u002F5.web-sockets",[121,124],{"title":66,"path":122,"stem":123},"\u002Fdocs\u002Fmodules\u002Fweb-sockets\u002Foverview","docs\u002F3.modules\u002F5.web-sockets\u002F0.overview",{"title":90,"path":125,"stem":126},"\u002Fdocs\u002Fmodules\u002Fweb-sockets\u002Fapi","docs\u002F3.modules\u002F5.web-sockets\u002F1.api",{"title":128,"icon":52,"defaultOpen":52,"path":129,"stem":130,"children":131,"page":52},"Schema","\u002Fdocs\u002Fmodules\u002Fschema","docs\u002F3.modules\u002F6.schema",[132,135,138],{"title":66,"path":133,"stem":134},"\u002Fdocs\u002Fmodules\u002Fschema\u002Foverview","docs\u002F3.modules\u002F6.schema\u002F0.overview",{"title":70,"path":136,"stem":137},"\u002Fdocs\u002Fmodules\u002Fschema\u002Fdecorators","docs\u002F3.modules\u002F6.schema\u002F1.decorators",{"title":139,"path":140,"stem":141},"Scalar","\u002Fdocs\u002Fmodules\u002Fschema\u002Fscalar","docs\u002F3.modules\u002F6.schema\u002F2.scalar",{"title":143,"icon":52,"defaultOpen":52,"path":144,"stem":145,"children":146,"page":52},"Nitro","\u002Fdocs\u002Fmodules\u002Fnitro","docs\u002F3.modules\u002F7.nitro",[147,150,153,157],{"title":66,"path":148,"stem":149},"\u002Fdocs\u002Fmodules\u002Fnitro\u002Foverview","docs\u002F3.modules\u002F7.nitro\u002F0.overview",{"title":102,"path":151,"stem":152},"\u002Fdocs\u002Fmodules\u002Fnitro\u002Fstorage","docs\u002F3.modules\u002F7.nitro\u002F1.storage",{"title":154,"path":155,"stem":156},"File-Based Routes","\u002Fdocs\u002Fmodules\u002Fnitro\u002Ffile-based-routes","docs\u002F3.modules\u002F7.nitro\u002F2.file-based-routes",{"title":158,"path":159,"stem":160},"Middleware","\u002Fdocs\u002Fmodules\u002Fnitro\u002Fmiddleware","docs\u002F3.modules\u002F7.nitro\u002F3.middleware",{"title":162,"icon":52,"defaultOpen":52,"path":163,"stem":164,"children":165,"page":52},"Vite","\u002Fdocs\u002Fmodules\u002Fvite","docs\u002F3.modules\u002F8.vite",[166],{"title":66,"path":167,"stem":168},"\u002Fdocs\u002Fmodules\u002Fvite\u002Foverview","docs\u002F3.modules\u002F8.vite\u002F0.overview",{"title":170,"icon":171,"path":172,"stem":173,"children":174,"page":52},"Deployment","i-lucide-cloud-upload","\u002Fdocs\u002Fdeployment","docs\u002F4.deployment",[175,178,182,186],{"title":66,"path":176,"stem":177},"\u002Fdocs\u002Fdeployment\u002Foverview","docs\u002F4.deployment\u002F0.overview",{"title":179,"path":180,"stem":181},"Vercel","\u002Fdocs\u002Fdeployment\u002Fvercel","docs\u002F4.deployment\u002F1.vercel",{"title":183,"path":184,"stem":185},"AWS Lambda","\u002Fdocs\u002Fdeployment\u002Faws-lambda","docs\u002F4.deployment\u002F2.aws-lambda",{"title":187,"path":188,"stem":189},"Azure Functions","\u002Fdocs\u002Fdeployment\u002Fazure-functions","docs\u002F4.deployment\u002F3.azure-functions",{"title":191,"icon":192,"path":193,"stem":194,"children":195,"page":52},"Advanced","i-lucide-brain","\u002Fdocs\u002Fadvanced","docs\u002F99.advanced",[196,200,204],{"title":197,"path":198,"stem":199},"Custom Decorator","\u002Fdocs\u002Fadvanced\u002Fcustom-decorator","docs\u002F99.advanced\u002F1.custom-decorator",{"title":201,"path":202,"stem":203},"Plugins","\u002Fdocs\u002Fadvanced\u002Fcustom-plugin","docs\u002F99.advanced\u002F2.custom-plugin",{"title":205,"path":206,"stem":207},"Custom CLI Command","\u002Fdocs\u002Fadvanced\u002Fcustom-cli-command","docs\u002F99.advanced\u002F3.custom-cli-command",[209,211,213,214,215,216,218,219,220,221,222,223,225,227,228,229,230,232,233,234,235,237,238,240,241,242,243,245,246,247,249,250,251,252,254,255,256,257,258,260,261,263,264,265,266,267,269,270,271],{"path":210},"\u002Fdocs\u002F.navigation",{"path":212},"\u002Fdocs\u002Fgetting-started\u002F.navigation",{"path":12},{"path":19},{"path":23},{"path":217},"\u002Fdocs\u002Fcore-features\u002F.navigation",{"path":34},{"path":38},{"path":42},{"path":46},{"path":50},{"path":224},"\u002Fdocs\u002Fmodules\u002F.navigation",{"path":226},"\u002Fdocs\u002Fmodules\u002Fauth\u002F.navigation",{"path":67},{"path":71},{"path":75},{"path":231},"\u002Fdocs\u002Fmodules\u002Flogger\u002F.navigation",{"path":83},{"path":87},{"path":91},{"path":236},"\u002Fdocs\u002Fmodules\u002Fserverless\u002F.navigation",{"path":99},{"path":239},"\u002Fdocs\u002Fmodules\u002Fstorage\u002F.navigation",{"path":107},{"path":111},{"path":114},{"path":244},"\u002Fdocs\u002Fmodules\u002Fweb-sockets\u002F.navigation",{"path":122},{"path":125},{"path":248},"\u002Fdocs\u002Fmodules\u002Fschema\u002F.navigation",{"path":133},{"path":136},{"path":140},{"path":253},"\u002Fdocs\u002Fmodules\u002Fnitro\u002F.navigation",{"path":148},{"path":151},{"path":155},{"path":159},{"path":259},"\u002Fdocs\u002Fmodules\u002Fvite\u002F.navigation",{"path":167},{"path":262},"\u002Fdocs\u002Fdeployment\u002F.navigation",{"path":176},{"path":180},{"path":184},{"path":188},{"path":268},"\u002Fdocs\u002Fadvanced\u002F.navigation",{"path":198},{"path":202},{"path":206},{"id":273,"title":70,"body":274,"description":1979,"extension":1980,"links":1981,"meta":1982,"navigation":56,"path":136,"seo":1983,"stem":137,"__hash__":1984},"docs\u002Fdocs\u002F3.modules\u002F6.schema\u002F1.decorators.md",{"type":275,"value":276,"toc":1962},"minimark",[277,311,317,335,778,783,833,844,848,859,936,1072,1076,1084,1091,1101,1316,1326,1333,1342,1551,1566,1570,1583,1587,1597,1891,1898,1904,1933,1943,1947,1958],[278,279,280,281,288,289,298,299,302,303,306,307,310],"p",{},"The Schema module exposes a single route decorator, ",[282,283,284],"strong",{},[285,286,287],"code",{},"@Schema",", which registers OpenAPI path metadata for a controller method. It is built on ",[290,291,295],"a",{"href":292,"rel":293},"https:\u002F\u002Fgithub.com\u002Fasteasolutions\u002Fzod-to-openapi",[294],"nofollow",[285,296,297],{},"@asteasolutions\u002Fzod-to-openapi"," ",[285,300,301],{},"RouteConfig"," (without ",[285,304,305],{},"method"," and ",[285,308,309],{},"path",", which are inferred from the route).",[312,313,315],"h2",{"id":314},"schema",[285,316,287],{},[278,318,319,320,322,323,326,327,330,331,334],{},"Apply ",[285,321,287],{}," to a method that already has an HTTP verb decorator (",[285,324,325],{},"@Get",", ",[285,328,329],{},"@Post",", etc.) and ",[285,332,333],{},"@Controller"," base path.",[336,337,342],"pre",{"className":338,"code":339,"language":340,"meta":341,"style":341},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { Controller, Get } from '@vercube\u002Fcore';\nimport { Schema, z } from '@vercube\u002Fschema';\n\n@Controller('\u002Fitems')\nexport class ItemsController {\n  @Get('\u002F:id')\n  @Schema({\n    summary: 'Get item by ID',\n    tags: ['Items'],\n    responses: {\n      200: {\n        description: 'Item found',\n        content: {\n          'application\u002Fjson': {\n            schema: z.object({ id: z.string(), title: z.string() }),\n          },\n        },\n      },\n      404: {\n        description: 'Not found',\n      },\n    },\n  })\n  getOne() {\n    return { id: '1', title: 'Example' };\n  }\n}\n","ts","",[285,343,344,386,414,420,443,460,480,492,512,535,545,556,573,583,598,658,664,670,676,686,702,707,713,721,731,766,772],{"__ignoreMap":341},[345,346,349,353,357,361,364,367,370,373,376,380,383],"span",{"class":347,"line":348},"line",1,[345,350,352],{"class":351},"s7zQu","import",[345,354,356],{"class":355},"sMK4o"," {",[345,358,360],{"class":359},"sTEyZ"," Controller",[345,362,363],{"class":355},",",[345,365,366],{"class":359}," Get",[345,368,369],{"class":355}," }",[345,371,372],{"class":351}," from",[345,374,375],{"class":355}," '",[345,377,379],{"class":378},"sfazB","@vercube\u002Fcore",[345,381,382],{"class":355},"'",[345,384,385],{"class":355},";\n",[345,387,389,391,393,396,398,401,403,405,407,410,412],{"class":347,"line":388},2,[345,390,352],{"class":351},[345,392,356],{"class":355},[345,394,395],{"class":359}," Schema",[345,397,363],{"class":355},[345,399,400],{"class":359}," z",[345,402,369],{"class":355},[345,404,372],{"class":351},[345,406,375],{"class":355},[345,408,409],{"class":378},"@vercube\u002Fschema",[345,411,382],{"class":355},[345,413,385],{"class":355},[345,415,417],{"class":347,"line":416},3,[345,418,419],{"emptyLinePlaceholder":56},"\n",[345,421,423,426,430,433,435,438,440],{"class":347,"line":422},4,[345,424,425],{"class":355},"@",[345,427,429],{"class":428},"s2Zo4","Controller",[345,431,432],{"class":359},"(",[345,434,382],{"class":355},[345,436,437],{"class":378},"\u002Fitems",[345,439,382],{"class":355},[345,441,442],{"class":359},")\n",[345,444,446,449,453,457],{"class":347,"line":445},5,[345,447,448],{"class":351},"export",[345,450,452],{"class":451},"spNyl"," class",[345,454,456],{"class":455},"sBMFI"," ItemsController",[345,458,459],{"class":355}," {\n",[345,461,463,466,469,471,473,476,478],{"class":347,"line":462},6,[345,464,465],{"class":355},"  @",[345,467,468],{"class":428},"Get",[345,470,432],{"class":359},[345,472,382],{"class":355},[345,474,475],{"class":378},"\u002F:id",[345,477,382],{"class":355},[345,479,442],{"class":359},[345,481,483,485,487,489],{"class":347,"line":482},7,[345,484,465],{"class":355},[345,486,128],{"class":428},[345,488,432],{"class":359},[345,490,491],{"class":355},"{\n",[345,493,495,499,502,504,507,509],{"class":347,"line":494},8,[345,496,498],{"class":497},"swJcz","    summary",[345,500,501],{"class":355},":",[345,503,375],{"class":355},[345,505,506],{"class":378},"Get item by ID",[345,508,382],{"class":355},[345,510,511],{"class":355},",\n",[345,513,515,518,520,523,525,528,530,533],{"class":347,"line":514},9,[345,516,517],{"class":497},"    tags",[345,519,501],{"class":355},[345,521,522],{"class":359}," [",[345,524,382],{"class":355},[345,526,527],{"class":378},"Items",[345,529,382],{"class":355},[345,531,532],{"class":359},"]",[345,534,511],{"class":355},[345,536,538,541,543],{"class":347,"line":537},10,[345,539,540],{"class":497},"    responses",[345,542,501],{"class":355},[345,544,459],{"class":355},[345,546,548,552,554],{"class":347,"line":547},11,[345,549,551],{"class":550},"sbssI","      200",[345,553,501],{"class":355},[345,555,459],{"class":355},[345,557,559,562,564,566,569,571],{"class":347,"line":558},12,[345,560,561],{"class":497},"        description",[345,563,501],{"class":355},[345,565,375],{"class":355},[345,567,568],{"class":378},"Item found",[345,570,382],{"class":355},[345,572,511],{"class":355},[345,574,576,579,581],{"class":347,"line":575},13,[345,577,578],{"class":497},"        content",[345,580,501],{"class":355},[345,582,459],{"class":355},[345,584,586,589,592,594,596],{"class":347,"line":585},14,[345,587,588],{"class":355},"          '",[345,590,591],{"class":497},"application\u002Fjson",[345,593,382],{"class":355},[345,595,501],{"class":355},[345,597,459],{"class":355},[345,599,601,604,606,608,611,614,616,619,622,624,626,628,631,634,636,639,641,643,645,647,650,653,656],{"class":347,"line":600},15,[345,602,603],{"class":497},"            schema",[345,605,501],{"class":355},[345,607,400],{"class":359},[345,609,610],{"class":355},".",[345,612,613],{"class":428},"object",[345,615,432],{"class":359},[345,617,618],{"class":355},"{",[345,620,621],{"class":497}," id",[345,623,501],{"class":355},[345,625,400],{"class":359},[345,627,610],{"class":355},[345,629,630],{"class":428},"string",[345,632,633],{"class":359},"()",[345,635,363],{"class":355},[345,637,638],{"class":497}," title",[345,640,501],{"class":355},[345,642,400],{"class":359},[345,644,610],{"class":355},[345,646,630],{"class":428},[345,648,649],{"class":359},"() ",[345,651,652],{"class":355},"}",[345,654,655],{"class":359},")",[345,657,511],{"class":355},[345,659,661],{"class":347,"line":660},16,[345,662,663],{"class":355},"          },\n",[345,665,667],{"class":347,"line":666},17,[345,668,669],{"class":355},"        },\n",[345,671,673],{"class":347,"line":672},18,[345,674,675],{"class":355},"      },\n",[345,677,679,682,684],{"class":347,"line":678},19,[345,680,681],{"class":550},"      404",[345,683,501],{"class":355},[345,685,459],{"class":355},[345,687,689,691,693,695,698,700],{"class":347,"line":688},20,[345,690,561],{"class":497},[345,692,501],{"class":355},[345,694,375],{"class":355},[345,696,697],{"class":378},"Not found",[345,699,382],{"class":355},[345,701,511],{"class":355},[345,703,705],{"class":347,"line":704},21,[345,706,675],{"class":355},[345,708,710],{"class":347,"line":709},22,[345,711,712],{"class":355},"    },\n",[345,714,716,719],{"class":347,"line":715},23,[345,717,718],{"class":355},"  }",[345,720,442],{"class":359},[345,722,724,727,729],{"class":347,"line":723},24,[345,725,726],{"class":497},"  getOne",[345,728,633],{"class":355},[345,730,459],{"class":355},[345,732,734,737,739,741,743,745,748,750,752,754,756,758,761,763],{"class":347,"line":733},25,[345,735,736],{"class":351},"    return",[345,738,356],{"class":355},[345,740,621],{"class":497},[345,742,501],{"class":355},[345,744,375],{"class":355},[345,746,747],{"class":378},"1",[345,749,382],{"class":355},[345,751,363],{"class":355},[345,753,638],{"class":497},[345,755,501],{"class":355},[345,757,375],{"class":355},[345,759,760],{"class":378},"Example",[345,762,382],{"class":355},[345,764,765],{"class":355}," };\n",[345,767,769],{"class":347,"line":768},26,[345,770,771],{"class":355},"  }\n",[345,773,775],{"class":347,"line":774},27,[345,776,777],{"class":355},"}\n",[779,780,782],"h3",{"id":781},"inferred-fields","Inferred fields",[784,785,786,799],"table",{},[787,788,789],"thead",{},[790,791,792,796],"tr",{},[793,794,795],"th",{},"Field",[793,797,798],{},"Source",[800,801,802,819],"tbody",{},[790,803,804,809],{},[805,806,807],"td",{},[285,808,305],{},[805,810,811,812,326,815,818],{},"HTTP decorator on the same method (",[285,813,814],{},"get",[285,816,817],{},"post",", …)",[790,820,821,825],{},[805,822,823],{},[285,824,309],{},[805,826,827,829,830,655],{},[285,828,333],{}," path + route path (e.g. ",[285,831,832],{},"\u002Fitems\u002F:id",[278,834,835,836,838,839,841,842,610],{},"You do not pass ",[285,837,305],{}," or ",[285,840,309],{}," to ",[285,843,287],{},[779,845,847],{"id":846},"options","Options",[278,849,850,852,853,858],{},[285,851,287],{}," accepts any other ",[290,854,856],{"href":292,"rel":855},[294],[285,857,301],{}," field, for example:",[784,860,861,870],{},[787,862,863],{},[790,864,865,867],{},[793,866,795],{},[793,868,869],{},"Purpose",[800,871,872,886,896,906,916,926],{},[790,873,874,883],{},[805,875,876,879,880],{},[285,877,878],{},"summary"," \u002F ",[285,881,882],{},"description",[805,884,885],{},"Human-readable route text",[790,887,888,893],{},[805,889,890],{},[285,891,892],{},"tags",[805,894,895],{},"Grouping in Scalar \u002F OpenAPI UIs",[790,897,898,903],{},[805,899,900],{},[285,901,902],{},"request",[805,904,905],{},"Request body, query, headers (often auto-filled - see below)",[790,907,908,913],{},[805,909,910],{},[285,911,912],{},"responses",[805,914,915],{},"Status codes and response schemas",[790,917,918,923],{},[805,919,920],{},[285,921,922],{},"security",[805,924,925],{},"Auth requirements in the spec",[790,927,928,933],{},[805,929,930],{},[285,931,932],{},"deprecated",[805,934,935],{},"Mark route as deprecated",[336,937,939],{"className":338,"code":938,"language":340,"meta":341,"style":341},"@Schema({\n  summary: 'Upload file',\n  description: 'Accepts multipart uploads up to 10MB',\n  tags: ['Files'],\n  security: [{ bearerAuth: [] }],\n  responses: {\n    200: { description: 'Upload accepted' },\n  },\n})\n",[285,940,941,951,967,983,1003,1028,1037,1061,1066],{"__ignoreMap":341},[345,942,943,945,947,949],{"class":347,"line":348},[345,944,425],{"class":355},[345,946,128],{"class":428},[345,948,432],{"class":359},[345,950,491],{"class":355},[345,952,953,956,958,960,963,965],{"class":347,"line":388},[345,954,955],{"class":497},"  summary",[345,957,501],{"class":355},[345,959,375],{"class":355},[345,961,962],{"class":378},"Upload file",[345,964,382],{"class":355},[345,966,511],{"class":355},[345,968,969,972,974,976,979,981],{"class":347,"line":416},[345,970,971],{"class":497},"  description",[345,973,501],{"class":355},[345,975,375],{"class":355},[345,977,978],{"class":378},"Accepts multipart uploads up to 10MB",[345,980,382],{"class":355},[345,982,511],{"class":355},[345,984,985,988,990,992,994,997,999,1001],{"class":347,"line":422},[345,986,987],{"class":497},"  tags",[345,989,501],{"class":355},[345,991,522],{"class":359},[345,993,382],{"class":355},[345,995,996],{"class":378},"Files",[345,998,382],{"class":355},[345,1000,532],{"class":359},[345,1002,511],{"class":355},[345,1004,1005,1008,1010,1012,1014,1017,1019,1022,1024,1026],{"class":347,"line":445},[345,1006,1007],{"class":497},"  security",[345,1009,501],{"class":355},[345,1011,522],{"class":359},[345,1013,618],{"class":355},[345,1015,1016],{"class":497}," bearerAuth",[345,1018,501],{"class":355},[345,1020,1021],{"class":359}," [] ",[345,1023,652],{"class":355},[345,1025,532],{"class":359},[345,1027,511],{"class":355},[345,1029,1030,1033,1035],{"class":347,"line":462},[345,1031,1032],{"class":497},"  responses",[345,1034,501],{"class":355},[345,1036,459],{"class":355},[345,1038,1039,1042,1044,1046,1049,1051,1053,1056,1058],{"class":347,"line":482},[345,1040,1041],{"class":550},"    200",[345,1043,501],{"class":355},[345,1045,356],{"class":355},[345,1047,1048],{"class":497}," description",[345,1050,501],{"class":355},[345,1052,375],{"class":355},[345,1054,1055],{"class":378},"Upload accepted",[345,1057,382],{"class":355},[345,1059,1060],{"class":355}," },\n",[345,1062,1063],{"class":347,"line":494},[345,1064,1065],{"class":355},"  },\n",[345,1067,1068,1070],{"class":347,"line":514},[345,1069,652],{"class":355},[345,1071,442],{"class":359},[312,1073,1075],{"id":1074},"automatic-request-schemas","Automatic request schemas",[278,1077,1078,1079,1081,1082,610],{},"When a route uses validation on parameters, the Schema module merges those schemas into the OpenAPI ",[285,1080,902],{}," object. You usually do not duplicate them in ",[285,1083,287],{},[779,1085,1087,1088,655],{"id":1086},"request-body-body","Request body (",[285,1089,1090],{},"@Body",[278,1092,1093,1094,1097,1098,1100],{},"If the method has ",[285,1095,1096],{},"@Body({ validationSchema: SomeSchema })",", the body is documented as ",[285,1099,591],{}," with that schema:",[336,1102,1104],{"className":338,"code":1103,"language":340,"meta":341,"style":341},"const CreateItemSchema = z.object({\n  title: z.string(),\n  quantity: z.number().int().positive(),\n});\n\n@Post('\u002F')\n@Schema({\n  responses: {\n    201: { description: 'Created' },\n  },\n})\ncreate(@Body({ validationSchema: CreateItemSchema }) body: z.infer\u003Ctypeof CreateItemSchema>) {\n  return body;\n}\n",[285,1105,1106,1127,1144,1176,1184,1188,1206,1216,1224,1246,1250,1256,1302,1312],{"__ignoreMap":341},[345,1107,1108,1111,1114,1117,1119,1121,1123,1125],{"class":347,"line":348},[345,1109,1110],{"class":451},"const",[345,1112,1113],{"class":359}," CreateItemSchema ",[345,1115,1116],{"class":355},"=",[345,1118,400],{"class":359},[345,1120,610],{"class":355},[345,1122,613],{"class":428},[345,1124,432],{"class":359},[345,1126,491],{"class":355},[345,1128,1129,1132,1134,1136,1138,1140,1142],{"class":347,"line":388},[345,1130,1131],{"class":497},"  title",[345,1133,501],{"class":355},[345,1135,400],{"class":359},[345,1137,610],{"class":355},[345,1139,630],{"class":428},[345,1141,633],{"class":359},[345,1143,511],{"class":355},[345,1145,1146,1149,1151,1153,1155,1158,1160,1162,1165,1167,1169,1172,1174],{"class":347,"line":416},[345,1147,1148],{"class":497},"  quantity",[345,1150,501],{"class":355},[345,1152,400],{"class":359},[345,1154,610],{"class":355},[345,1156,1157],{"class":428},"number",[345,1159,633],{"class":359},[345,1161,610],{"class":355},[345,1163,1164],{"class":428},"int",[345,1166,633],{"class":359},[345,1168,610],{"class":355},[345,1170,1171],{"class":428},"positive",[345,1173,633],{"class":359},[345,1175,511],{"class":355},[345,1177,1178,1180,1182],{"class":347,"line":422},[345,1179,652],{"class":355},[345,1181,655],{"class":359},[345,1183,385],{"class":355},[345,1185,1186],{"class":347,"line":445},[345,1187,419],{"emptyLinePlaceholder":56},[345,1189,1190,1192,1195,1197,1199,1202,1204],{"class":347,"line":462},[345,1191,425],{"class":355},[345,1193,1194],{"class":428},"Post",[345,1196,432],{"class":359},[345,1198,382],{"class":355},[345,1200,1201],{"class":378},"\u002F",[345,1203,382],{"class":355},[345,1205,442],{"class":359},[345,1207,1208,1210,1212,1214],{"class":347,"line":482},[345,1209,425],{"class":355},[345,1211,128],{"class":428},[345,1213,432],{"class":359},[345,1215,491],{"class":355},[345,1217,1218,1220,1222],{"class":347,"line":494},[345,1219,1032],{"class":497},[345,1221,501],{"class":355},[345,1223,459],{"class":355},[345,1225,1226,1229,1231,1233,1235,1237,1239,1242,1244],{"class":347,"line":514},[345,1227,1228],{"class":550},"    201",[345,1230,501],{"class":355},[345,1232,356],{"class":355},[345,1234,1048],{"class":497},[345,1236,501],{"class":355},[345,1238,375],{"class":355},[345,1240,1241],{"class":378},"Created",[345,1243,382],{"class":355},[345,1245,1060],{"class":355},[345,1247,1248],{"class":347,"line":537},[345,1249,1065],{"class":355},[345,1251,1252,1254],{"class":347,"line":547},[345,1253,652],{"class":355},[345,1255,442],{"class":359},[345,1257,1258,1261,1264,1267,1269,1271,1274,1276,1278,1280,1283,1285,1288,1291,1294,1297,1300],{"class":347,"line":558},[345,1259,1260],{"class":428},"create",[345,1262,1263],{"class":359},"(@",[345,1265,1266],{"class":428},"Body",[345,1268,432],{"class":359},[345,1270,618],{"class":355},[345,1272,1273],{"class":497}," validationSchema",[345,1275,501],{"class":355},[345,1277,1113],{"class":359},[345,1279,652],{"class":355},[345,1281,1282],{"class":359},") body: z",[345,1284,610],{"class":355},[345,1286,1287],{"class":359},"infer",[345,1289,1290],{"class":355},"\u003Ctypeof",[345,1292,1293],{"class":359}," CreateItemSchema",[345,1295,1296],{"class":355},">",[345,1298,1299],{"class":359},") ",[345,1301,491],{"class":355},[345,1303,1304,1307,1310],{"class":347,"line":575},[345,1305,1306],{"class":351},"  return",[345,1308,1309],{"class":359}," body",[345,1311,385],{"class":355},[345,1313,1314],{"class":347,"line":585},[345,1315,777],{"class":355},[278,1317,1318,1319,1322,1323,610],{},"Generated OpenAPI includes ",[285,1320,1321],{},"request.body.content['application\u002Fjson'].schema"," from ",[285,1324,1325],{},"CreateItemSchema",[779,1327,1329,1330,655],{"id":1328},"query-parameters-queryparams","Query parameters (",[285,1331,1332],{},"@QueryParams",[278,1334,1093,1335,1338,1339,501],{},[285,1336,1337],{},"@QueryParams({ validationSchema: QuerySchema })",", the query object is merged into ",[285,1340,1341],{},"request.query",[336,1343,1345],{"className":338,"code":1344,"language":340,"meta":341,"style":341},"const SearchSchema = z.object({\n  q: z.string().optional(),\n  limit: z.coerce.number().optional(),\n});\n\n@Get('\u002Fsearch')\n@Schema({\n  responses: {\n    200: { description: 'Search results' },\n  },\n})\nsearch(@QueryParams({ validationSchema: SearchSchema }) query: z.infer\u003Ctypeof SearchSchema>) {\n  return { query };\n}\n",[285,1346,1347,1366,1390,1418,1426,1430,1447,1457,1465,1486,1490,1496,1536,1547],{"__ignoreMap":341},[345,1348,1349,1351,1354,1356,1358,1360,1362,1364],{"class":347,"line":348},[345,1350,1110],{"class":451},[345,1352,1353],{"class":359}," SearchSchema ",[345,1355,1116],{"class":355},[345,1357,400],{"class":359},[345,1359,610],{"class":355},[345,1361,613],{"class":428},[345,1363,432],{"class":359},[345,1365,491],{"class":355},[345,1367,1368,1371,1373,1375,1377,1379,1381,1383,1386,1388],{"class":347,"line":388},[345,1369,1370],{"class":497},"  q",[345,1372,501],{"class":355},[345,1374,400],{"class":359},[345,1376,610],{"class":355},[345,1378,630],{"class":428},[345,1380,633],{"class":359},[345,1382,610],{"class":355},[345,1384,1385],{"class":428},"optional",[345,1387,633],{"class":359},[345,1389,511],{"class":355},[345,1391,1392,1395,1397,1399,1401,1404,1406,1408,1410,1412,1414,1416],{"class":347,"line":416},[345,1393,1394],{"class":497},"  limit",[345,1396,501],{"class":355},[345,1398,400],{"class":359},[345,1400,610],{"class":355},[345,1402,1403],{"class":359},"coerce",[345,1405,610],{"class":355},[345,1407,1157],{"class":428},[345,1409,633],{"class":359},[345,1411,610],{"class":355},[345,1413,1385],{"class":428},[345,1415,633],{"class":359},[345,1417,511],{"class":355},[345,1419,1420,1422,1424],{"class":347,"line":422},[345,1421,652],{"class":355},[345,1423,655],{"class":359},[345,1425,385],{"class":355},[345,1427,1428],{"class":347,"line":445},[345,1429,419],{"emptyLinePlaceholder":56},[345,1431,1432,1434,1436,1438,1440,1443,1445],{"class":347,"line":462},[345,1433,425],{"class":355},[345,1435,468],{"class":428},[345,1437,432],{"class":359},[345,1439,382],{"class":355},[345,1441,1442],{"class":378},"\u002Fsearch",[345,1444,382],{"class":355},[345,1446,442],{"class":359},[345,1448,1449,1451,1453,1455],{"class":347,"line":482},[345,1450,425],{"class":355},[345,1452,128],{"class":428},[345,1454,432],{"class":359},[345,1456,491],{"class":355},[345,1458,1459,1461,1463],{"class":347,"line":494},[345,1460,1032],{"class":497},[345,1462,501],{"class":355},[345,1464,459],{"class":355},[345,1466,1467,1469,1471,1473,1475,1477,1479,1482,1484],{"class":347,"line":514},[345,1468,1041],{"class":550},[345,1470,501],{"class":355},[345,1472,356],{"class":355},[345,1474,1048],{"class":497},[345,1476,501],{"class":355},[345,1478,375],{"class":355},[345,1480,1481],{"class":378},"Search results",[345,1483,382],{"class":355},[345,1485,1060],{"class":355},[345,1487,1488],{"class":347,"line":537},[345,1489,1065],{"class":355},[345,1491,1492,1494],{"class":347,"line":547},[345,1493,652],{"class":355},[345,1495,442],{"class":359},[345,1497,1498,1501,1503,1506,1508,1510,1512,1514,1516,1518,1521,1523,1525,1527,1530,1532,1534],{"class":347,"line":558},[345,1499,1500],{"class":428},"search",[345,1502,1263],{"class":359},[345,1504,1505],{"class":428},"QueryParams",[345,1507,432],{"class":359},[345,1509,618],{"class":355},[345,1511,1273],{"class":497},[345,1513,501],{"class":355},[345,1515,1353],{"class":359},[345,1517,652],{"class":355},[345,1519,1520],{"class":359},") query: z",[345,1522,610],{"class":355},[345,1524,1287],{"class":359},[345,1526,1290],{"class":355},[345,1528,1529],{"class":359}," SearchSchema",[345,1531,1296],{"class":355},[345,1533,1299],{"class":359},[345,1535,491],{"class":355},[345,1537,1538,1540,1542,1545],{"class":347,"line":575},[345,1539,1306],{"class":351},[345,1541,356],{"class":355},[345,1543,1544],{"class":359}," query",[345,1546,765],{"class":355},[345,1548,1549],{"class":347,"line":585},[345,1550,777],{"class":355},[1552,1553,1554],"tip",{},[278,1555,1556,1559,1560,1562,1563,610],{},[285,1557,1558],{},"@QueryParam"," (single param) is not auto-mapped today - use ",[285,1561,1332],{}," with a Zod object for documented query strings, or describe query manually in ",[285,1564,1565],{},"@Schema({ request: { query: … } })",[779,1567,1569],{"id":1568},"combining-manual-and-automatic-request-metadata","Combining manual and automatic request metadata",[278,1571,1572,1573,1575,1576,1578,1579,1582],{},"Manual ",[285,1574,902],{}," fields in ",[285,1577,287],{}," are deep-merged with auto-resolved body\u002Fquery via ",[285,1580,1581],{},"defu",". Prefer validation schemas as the source of truth when both exist.",[312,1584,1586],{"id":1585},"response-schemas","Response schemas",[278,1588,1589,1590,1592,1593,1596],{},"Document responses explicitly in ",[285,1591,287],{},". Use Zod schemas (with optional ",[285,1594,1595],{},".openapi()"," metadata):",[336,1598,1600],{"className":338,"code":1599,"language":340,"meta":341,"style":341},"const ErrorSchema = z.object({ message: z.string() }).openapi('Error');\n\n@Get('\u002Frisky')\n@Schema({\n  responses: {\n    200: {\n      description: 'OK',\n      content: {\n        'application\u002Fjson': {\n          schema: z.object({ ok: z.boolean() }),\n        },\n      },\n    },\n    500: {\n      description: 'Server error',\n      content: {\n        'application\u002Fjson': { schema: ErrorSchema },\n      },\n    },\n  },\n})\nrisky() {\n  return { ok: true };\n}\n",[285,1601,1602,1656,1660,1677,1687,1695,1703,1719,1728,1741,1778,1782,1786,1790,1799,1814,1822,1844,1848,1852,1856,1862,1871,1887],{"__ignoreMap":341},[345,1603,1604,1606,1609,1611,1613,1615,1617,1619,1621,1624,1626,1628,1630,1632,1634,1636,1638,1640,1643,1645,1647,1650,1652,1654],{"class":347,"line":348},[345,1605,1110],{"class":451},[345,1607,1608],{"class":359}," ErrorSchema ",[345,1610,1116],{"class":355},[345,1612,400],{"class":359},[345,1614,610],{"class":355},[345,1616,613],{"class":428},[345,1618,432],{"class":359},[345,1620,618],{"class":355},[345,1622,1623],{"class":497}," message",[345,1625,501],{"class":355},[345,1627,400],{"class":359},[345,1629,610],{"class":355},[345,1631,630],{"class":428},[345,1633,649],{"class":359},[345,1635,652],{"class":355},[345,1637,655],{"class":359},[345,1639,610],{"class":355},[345,1641,1642],{"class":428},"openapi",[345,1644,432],{"class":359},[345,1646,382],{"class":355},[345,1648,1649],{"class":378},"Error",[345,1651,382],{"class":355},[345,1653,655],{"class":359},[345,1655,385],{"class":355},[345,1657,1658],{"class":347,"line":388},[345,1659,419],{"emptyLinePlaceholder":56},[345,1661,1662,1664,1666,1668,1670,1673,1675],{"class":347,"line":416},[345,1663,425],{"class":355},[345,1665,468],{"class":428},[345,1667,432],{"class":359},[345,1669,382],{"class":355},[345,1671,1672],{"class":378},"\u002Frisky",[345,1674,382],{"class":355},[345,1676,442],{"class":359},[345,1678,1679,1681,1683,1685],{"class":347,"line":422},[345,1680,425],{"class":355},[345,1682,128],{"class":428},[345,1684,432],{"class":359},[345,1686,491],{"class":355},[345,1688,1689,1691,1693],{"class":347,"line":445},[345,1690,1032],{"class":497},[345,1692,501],{"class":355},[345,1694,459],{"class":355},[345,1696,1697,1699,1701],{"class":347,"line":462},[345,1698,1041],{"class":550},[345,1700,501],{"class":355},[345,1702,459],{"class":355},[345,1704,1705,1708,1710,1712,1715,1717],{"class":347,"line":482},[345,1706,1707],{"class":497},"      description",[345,1709,501],{"class":355},[345,1711,375],{"class":355},[345,1713,1714],{"class":378},"OK",[345,1716,382],{"class":355},[345,1718,511],{"class":355},[345,1720,1721,1724,1726],{"class":347,"line":494},[345,1722,1723],{"class":497},"      content",[345,1725,501],{"class":355},[345,1727,459],{"class":355},[345,1729,1730,1733,1735,1737,1739],{"class":347,"line":514},[345,1731,1732],{"class":355},"        '",[345,1734,591],{"class":497},[345,1736,382],{"class":355},[345,1738,501],{"class":355},[345,1740,459],{"class":355},[345,1742,1743,1746,1748,1750,1752,1754,1756,1758,1761,1763,1765,1767,1770,1772,1774,1776],{"class":347,"line":537},[345,1744,1745],{"class":497},"          schema",[345,1747,501],{"class":355},[345,1749,400],{"class":359},[345,1751,610],{"class":355},[345,1753,613],{"class":428},[345,1755,432],{"class":359},[345,1757,618],{"class":355},[345,1759,1760],{"class":497}," ok",[345,1762,501],{"class":355},[345,1764,400],{"class":359},[345,1766,610],{"class":355},[345,1768,1769],{"class":428},"boolean",[345,1771,649],{"class":359},[345,1773,652],{"class":355},[345,1775,655],{"class":359},[345,1777,511],{"class":355},[345,1779,1780],{"class":347,"line":547},[345,1781,669],{"class":355},[345,1783,1784],{"class":347,"line":558},[345,1785,675],{"class":355},[345,1787,1788],{"class":347,"line":575},[345,1789,712],{"class":355},[345,1791,1792,1795,1797],{"class":347,"line":585},[345,1793,1794],{"class":550},"    500",[345,1796,501],{"class":355},[345,1798,459],{"class":355},[345,1800,1801,1803,1805,1807,1810,1812],{"class":347,"line":600},[345,1802,1707],{"class":497},[345,1804,501],{"class":355},[345,1806,375],{"class":355},[345,1808,1809],{"class":378},"Server error",[345,1811,382],{"class":355},[345,1813,511],{"class":355},[345,1815,1816,1818,1820],{"class":347,"line":660},[345,1817,1723],{"class":497},[345,1819,501],{"class":355},[345,1821,459],{"class":355},[345,1823,1824,1826,1828,1830,1832,1834,1837,1839,1841],{"class":347,"line":666},[345,1825,1732],{"class":355},[345,1827,591],{"class":497},[345,1829,382],{"class":355},[345,1831,501],{"class":355},[345,1833,356],{"class":355},[345,1835,1836],{"class":497}," schema",[345,1838,501],{"class":355},[345,1840,1608],{"class":359},[345,1842,1843],{"class":355},"},\n",[345,1845,1846],{"class":347,"line":672},[345,1847,675],{"class":355},[345,1849,1850],{"class":347,"line":678},[345,1851,712],{"class":355},[345,1853,1854],{"class":347,"line":688},[345,1855,1065],{"class":355},[345,1857,1858,1860],{"class":347,"line":704},[345,1859,652],{"class":355},[345,1861,442],{"class":359},[345,1863,1864,1867,1869],{"class":347,"line":709},[345,1865,1866],{"class":428},"risky",[345,1868,649],{"class":359},[345,1870,491],{"class":355},[345,1872,1873,1875,1877,1879,1881,1885],{"class":347,"line":715},[345,1874,1306],{"class":351},[345,1876,356],{"class":355},[345,1878,1760],{"class":497},[345,1880,501],{"class":355},[345,1882,1884],{"class":1883},"sfNiH"," true",[345,1886,765],{"class":355},[345,1888,1889],{"class":347,"line":723},[345,1890,777],{"class":355},[312,1892,1894,1895],{"id":1893},"importing-z","Importing ",[285,1896,1897],{},"z",[278,1899,1900,1901,1903],{},"Always import from ",[285,1902,409],{}," when using OpenAPI helpers:",[336,1905,1907],{"className":338,"code":1906,"language":340,"meta":341,"style":341},"import { Schema, z } from '@vercube\u002Fschema';\n",[285,1908,1909],{"__ignoreMap":341},[345,1910,1911,1913,1915,1917,1919,1921,1923,1925,1927,1929,1931],{"class":347,"line":348},[345,1912,352],{"class":351},[345,1914,356],{"class":355},[345,1916,395],{"class":359},[345,1918,363],{"class":355},[345,1920,400],{"class":359},[345,1922,369],{"class":355},[345,1924,372],{"class":351},[345,1926,375],{"class":355},[345,1928,409],{"class":378},[345,1930,382],{"class":355},[345,1932,385],{"class":355},[278,1934,1935,1936,1939,1940,1942],{},"The package calls ",[285,1937,1938],{},"extendZodWithOpenApi(z)"," on load so ",[285,1941,1595],{}," is available on Zod types.",[312,1944,1946],{"id":1945},"registration-timing","Registration timing",[278,1948,1949,1951,1952,1957],{},[285,1950,287],{}," registers paths asynchronously after the controller metadata is ready (next event-loop tick). Ensure ",[282,1953,1954],{},[285,1955,1956],{},"SchemaPlugin"," is added before controllers are bound and the app is initialized, same as other Vercube plugins.",[1959,1960,1961],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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);}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":341,"searchDepth":348,"depth":388,"links":1963},[1964,1968,1975,1976,1978],{"id":314,"depth":388,"text":287,"children":1965},[1966,1967],{"id":781,"depth":416,"text":782},{"id":846,"depth":416,"text":847},{"id":1074,"depth":388,"text":1075,"children":1969},[1970,1972,1974],{"id":1086,"depth":416,"text":1971},"Request body (@Body)",{"id":1328,"depth":416,"text":1973},"Query parameters (@QueryParams)",{"id":1568,"depth":416,"text":1569},{"id":1585,"depth":388,"text":1586},{"id":1893,"depth":388,"text":1977},"Importing z",{"id":1945,"depth":388,"text":1946},"OpenAPI metadata with the @Schema decorator","md",null,{},{"title":70,"description":1979},"jZhIkGy12N2U694yc3lZ9W08jkVyOw1jO3rJ-78HvPc",[1986,1988],{"title":66,"path":133,"stem":134,"description":1987,"children":-1},"OpenAPI generation and interactive API docs for Vercube",{"title":139,"path":140,"stem":141,"description":1989,"children":-1},"Interactive API documentation with Scalar API Reference",1782807889161]