[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-encore-encore-api":3,"mdc-zc2ovr-key":34,"related-repo-encore-encore-api":4558,"related-org-encore-encore-api":4655},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":21,"repoUrl":22,"updatedAt":23,"license":24,"forks":25,"topics":26,"repo":29,"sourceUrl":32,"mdContent":33},"encore-api","build type-safe APIs with Encore","Define typed API endpoints in Encore.ts using `api(...)` from `encore.dev\u002Fapi`. Covers typed request\u002Fresponse interfaces, path\u002Fquery\u002Fheader\u002Fcookie params, request validation, and `APIError`. For raw endpoints (`api.raw()`) and inbound webhooks, use `encore-webhook` instead.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"encore","Encore","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fencore.png","encoredev",[13,17,18],{"name":14,"slug":15,"type":16},"TypeScript","typescript","tag",{"name":9,"slug":8,"type":16},{"name":19,"slug":20,"type":16},"API Development","api-development",26,"https:\u002F\u002Fgithub.com\u002Fencoredev\u002Fskills","2026-04-06T18:09:46.044101",null,5,[27,28],"claude-code","skills",{"repoUrl":22,"stars":21,"forks":25,"topics":30,"description":31},[27,28],"Agent Skills for development with Encore.","https:\u002F\u002Fgithub.com\u002Fencoredev\u002Fskills\u002Ftree\u002FHEAD\u002Fencore\u002Fapi","---\nname: encore-api\ndescription: Define typed API endpoints in Encore.ts using `api(...)` from `encore.dev\u002Fapi`. Covers typed request\u002Fresponse interfaces, path\u002Fquery\u002Fheader\u002Fcookie params, request validation, and `APIError`. For raw endpoints (`api.raw()`) and inbound webhooks, use `encore-webhook` instead.\nwhen_to_use: >-\n  User wants to define an endpoint, route, or REST handler in their own service — anything with a typed JSON request\u002Fresponse shape. Mentions of an endpoint, GET\u002FPOST\u002FPUT\u002FPATCH\u002FDELETE, paths like `\u002Forders` or `\u002Fusers\u002F:id`, request body, query parameters (`Query\u003C>`), path parameters, headers (`Header\u003C>`), cookies (`Cookie\u003C>`), HTTP status codes (`HttpStatus`), request validation (`Min`, `MaxLen`, `IsEmail`, `IsURL`), `APIError.notFound` \u002F 4xx-5xx errors, or `expose: true`. Trigger phrases: \"POST endpoint at \u002Forders\", \"typed endpoint\", \"GET \u002Fusers\u002F:id\", \"request validation\", \"return 404\", \"JSON response shape\".\n---\n\n# Encore API Endpoints\n\n## Instructions\n\nWhen creating API endpoints with Encore.ts, follow these patterns:\n\n### 1. Import the API module\n\n```typescript\nimport { api } from \"encore.dev\u002Fapi\";\n```\n\n### 2. Define typed request\u002Fresponse interfaces\n\nAlways define explicit TypeScript interfaces for request and response types:\n\n```typescript\ninterface CreateUserRequest {\n  email: string;\n  name: string;\n}\n\ninterface CreateUserResponse {\n  id: string;\n  email: string;\n  name: string;\n}\n```\n\n### 3. Create the endpoint\n\n```typescript\nexport const createUser = api(\n  { method: \"POST\", path: \"\u002Fusers\", expose: true },\n  async (req: CreateUserRequest): Promise\u003CCreateUserResponse> => {\n    \u002F\u002F Implementation\n  }\n);\n```\n\n## API Options\n\n| Option | Type | Description |\n|--------|------|-------------|\n| `method` | string | HTTP method: GET, POST, PUT, PATCH, DELETE |\n| `path` | string | URL path, supports `:param` and `*wildcard` |\n| `expose` | boolean | If true, accessible from outside (default: false) |\n| `auth` | boolean | If true, requires authentication |\n| `sensitive` | boolean | If true, redacts request\u002Fresponse payloads from traces |\n\n## Request\u002FResponse Patterns\n\nEncore supports four endpoint configurations:\n\n```typescript\n\u002F\u002F Both request and response\nexport const createUser = api(\n  { method: \"POST\", path: \"\u002Fusers\", expose: true },\n  async (req: CreateRequest): Promise\u003CCreateResponse> => { ... }\n);\n\n\u002F\u002F Response only (no request body)\nexport const listUsers = api(\n  { method: \"GET\", path: \"\u002Fusers\", expose: true },\n  async (): Promise\u003CListResponse> => { ... }\n);\n\n\u002F\u002F Request only (no response body)\nexport const deleteUser = api(\n  { method: \"DELETE\", path: \"\u002Fusers\u002F:id\", expose: true },\n  async (req: DeleteRequest): Promise\u003Cvoid> => { ... }\n);\n\n\u002F\u002F Neither request nor response\nexport const ping = api(\n  { method: \"GET\", path: \"\u002Fping\", expose: true },\n  async (): Promise\u003Cvoid> => { ... }\n);\n```\n\n## Custom HTTP Status Codes\n\nInclude an `HttpStatus` field in your response to return custom status codes:\n\n```typescript\nimport { api, HttpStatus } from \"encore.dev\u002Fapi\";\n\ninterface CreateResponse {\n  id: string;\n  status: HttpStatus;\n}\n\nexport const create = api(\n  { method: \"POST\", path: \"\u002Fitems\", expose: true },\n  async (req: CreateRequest): Promise\u003CCreateResponse> => {\n    const item = await createItem(req);\n    return { id: item.id, status: HttpStatus.Created };  \u002F\u002F Returns 201\n  }\n);\n```\n\n## Parameter Types\n\n### Path Parameters\n\n```typescript\n\u002F\u002F Path: \"\u002Fusers\u002F:id\"\ninterface GetUserRequest {\n  id: string;  \u002F\u002F Automatically mapped from :id\n}\n```\n\n### Query Parameters\n\n```typescript\nimport { Query } from \"encore.dev\u002Fapi\";\n\ninterface ListUsersRequest {\n  limit?: Query\u003Cnumber>;\n  offset?: Query\u003Cnumber>;\n}\n```\n\n### Headers\n\n```typescript\nimport { Header } from \"encore.dev\u002Fapi\";\n\ninterface WebhookRequest {\n  signature: Header\u003C\"X-Webhook-Signature\">;\n  payload: string;\n}\n```\n\n### Cookies\n\n```typescript\nimport { Cookie } from \"encore.dev\u002Fapi\";\n\ninterface SessionRequest {\n  session?: Cookie\u003C\"session\">;\n  settings?: Cookie\u003C\"user-settings\">;\n}\n```\n\n## Request Validation\n\nEncore validates requests at runtime using TypeScript types. Add constraints for stricter validation:\n\n```typescript\nimport { api } from \"encore.dev\u002Fapi\";\nimport { Min, Max, MinLen, MaxLen, IsEmail, IsURL } from \"encore.dev\u002Fvalidate\";\n\ninterface CreateUserRequest {\n  email: string & IsEmail;                    \u002F\u002F Must be valid email\n  username: string & MinLen\u003C3> & MaxLen\u003C20>;  \u002F\u002F 3-20 characters\n  age: number & Min\u003C13> & Max\u003C120>;           \u002F\u002F Between 13 and 120\n  website?: string & IsURL;                   \u002F\u002F Optional, must be URL if provided\n}\n```\n\n### Combining Validation Rules\n\nUse `&` for AND logic (must pass all rules) and `|` for OR logic (must pass at least one):\n\n```typescript\nimport { IsEmail, IsURL, MinLen, MaxLen } from \"encore.dev\u002Fvalidate\";\n\ninterface ContactRequest {\n  \u002F\u002F Must be valid email OR valid URL\n  contact: string & (IsEmail | IsURL);\n  \u002F\u002F Must be 5-100 chars AND be a valid URL\n  website: string & MinLen\u003C5> & MaxLen\u003C100> & IsURL;\n}\n```\n\n### Available Validators\n\n| Validator | Applies To | Example |\n|-----------|-----------|---------|\n| `Min\u003CN>` | number | `age: number & Min\u003C18>` |\n| `Max\u003CN>` | number | `count: number & Max\u003C100>` |\n| `MinLen\u003CN>` | string, array | `name: string & MinLen\u003C1>` |\n| `MaxLen\u003CN>` | string, array | `tags: string[] & MaxLen\u003C10>` |\n| `IsEmail` | string | `email: string & IsEmail` |\n| `IsURL` | string | `link: string & IsURL` |\n| `StartsWith\u003CS>` | string | `id: string & StartsWith\u003C\"usr_\">` |\n| `EndsWith\u003CS>` | string | `file: string & EndsWith\u003C\".json\">` |\n| `MatchesRegexp\u003CR>` | string | `code: string & MatchesRegexp\u003C\"^[A-Z]{3}$\">` |\n\n### Validation Error Response\n\nInvalid requests return 400 with details:\n\n```json\n{\n  \"code\": \"invalid_argument\",\n  \"message\": \"validation failed\",\n  \"details\": { \"field\": \"email\", \"error\": \"must be a valid email\" }\n}\n```\n\n## Error Handling\n\nUse `APIError` for proper HTTP error responses:\n\n```typescript\nimport { APIError, ErrCode } from \"encore.dev\u002Fapi\";\n\n\u002F\u002F Throw with error code\nthrow new APIError(ErrCode.NotFound, \"user not found\");\n\n\u002F\u002F Or use shorthand\nthrow APIError.notFound(\"user not found\");\nthrow APIError.invalidArgument(\"email is required\");\nthrow APIError.unauthenticated(\"invalid token\");\n```\n\n## Common Error Codes\n\n| Code | HTTP Status | Usage |\n|------|-------------|-------|\n| `NotFound` | 404 | Resource doesn't exist |\n| `InvalidArgument` | 400 | Bad input |\n| `Unauthenticated` | 401 | Missing\u002Finvalid auth |\n| `PermissionDenied` | 403 | Not allowed |\n| `AlreadyExists` | 409 | Duplicate resource |\n\n## Static Assets\n\nServe static files (HTML, CSS, JS, images) with `api.static`:\n\n```typescript\nimport { api } from \"encore.dev\u002Fapi\";\n\n\u002F\u002F Serve files from .\u002Fassets under \u002Fstatic\u002F*\nexport const assets = api.static(\n  { expose: true, path: \"\u002Fstatic\u002F*path\", dir: \".\u002Fassets\" }\n);\n\n\u002F\u002F Serve at root (use !path for fallback routing)\nexport const frontend = api.static(\n  { expose: true, path: \"\u002F!path\", dir: \".\u002Fdist\" }\n);\n\n\u002F\u002F Custom 404 page\nexport const app = api.static(\n  { expose: true, path: \"\u002F!path\", dir: \".\u002Fpublic\", notFound: \".\u002F404.html\" }\n);\n```\n\n### Path Syntax\n\n- `*path` - Standard wildcard: matches all paths under the prefix (e.g., `\u002Fstatic\u002F*path`)\n- `!path` - Fallback routing: serves static files at domain root without conflicting with other API endpoints. Use this for SPAs where unmatched routes should serve `index.html`\n\n## Guidelines\n\n- Always use `import` not `require`\n- Define explicit interfaces for type safety\n- Use `expose: true` only for public endpoints\n- Throw `APIError` instead of returning error objects\n- For inbound webhooks (Stripe, GitHub, etc.) use `api.raw` — see the `encore-webhook` skill\n- Path parameters are automatically extracted from the path pattern\n- Use validation constraints (`Min`, `MaxLen`, etc.) for user input\n",{"data":35,"body":37},{"name":4,"description":6,"when_to_use":36},"User wants to define an endpoint, route, or REST handler in their own service — anything with a typed JSON request\u002Fresponse shape. Mentions of an endpoint, GET\u002FPOST\u002FPUT\u002FPATCH\u002FDELETE, paths like `\u002Forders` or `\u002Fusers\u002F:id`, request body, query parameters (`Query\u003C>`), path parameters, headers (`Header\u003C>`), cookies (`Cookie\u003C>`), HTTP status codes (`HttpStatus`), request validation (`Min`, `MaxLen`, `IsEmail`, `IsURL`), `APIError.notFound` \u002F 4xx-5xx errors, or `expose: true`. Trigger phrases: \"POST endpoint at \u002Forders\", \"typed endpoint\", \"GET \u002Fusers\u002F:id\", \"request validation\", \"return 404\", \"JSON response shape\".",{"type":38,"children":39},"root",[40,49,56,62,69,135,141,146,322,328,539,545,699,705,710,1438,1444,1457,1873,1879,1885,1948,1954,2090,2096,2230,2236,2387,2393,2398,2754,2760,2781,3012,3018,3270,3276,3281,3472,3478,3490,3766,3772,3908,3914,3926,4404,4410,4449,4455,4552],{"type":41,"tag":42,"props":43,"children":45},"element","h1",{"id":44},"encore-api-endpoints",[46],{"type":47,"value":48},"text","Encore API Endpoints",{"type":41,"tag":50,"props":51,"children":53},"h2",{"id":52},"instructions",[54],{"type":47,"value":55},"Instructions",{"type":41,"tag":57,"props":58,"children":59},"p",{},[60],{"type":47,"value":61},"When creating API endpoints with Encore.ts, follow these patterns:",{"type":41,"tag":63,"props":64,"children":66},"h3",{"id":65},"_1-import-the-api-module",[67],{"type":47,"value":68},"1. Import the API module",{"type":41,"tag":70,"props":71,"children":75},"pre",{"className":72,"code":73,"language":15,"meta":74,"style":74},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { api } from \"encore.dev\u002Fapi\";\n","",[76],{"type":41,"tag":77,"props":78,"children":79},"code",{"__ignoreMap":74},[80],{"type":41,"tag":81,"props":82,"children":85},"span",{"class":83,"line":84},"line",1,[86,92,98,104,109,114,119,125,130],{"type":41,"tag":81,"props":87,"children":89},{"style":88},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[90],{"type":47,"value":91},"import",{"type":41,"tag":81,"props":93,"children":95},{"style":94},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[96],{"type":47,"value":97}," {",{"type":41,"tag":81,"props":99,"children":101},{"style":100},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[102],{"type":47,"value":103}," api",{"type":41,"tag":81,"props":105,"children":106},{"style":94},[107],{"type":47,"value":108}," }",{"type":41,"tag":81,"props":110,"children":111},{"style":88},[112],{"type":47,"value":113}," from",{"type":41,"tag":81,"props":115,"children":116},{"style":94},[117],{"type":47,"value":118}," \"",{"type":41,"tag":81,"props":120,"children":122},{"style":121},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[123],{"type":47,"value":124},"encore.dev\u002Fapi",{"type":41,"tag":81,"props":126,"children":127},{"style":94},[128],{"type":47,"value":129},"\"",{"type":41,"tag":81,"props":131,"children":132},{"style":94},[133],{"type":47,"value":134},";\n",{"type":41,"tag":63,"props":136,"children":138},{"id":137},"_2-define-typed-requestresponse-interfaces",[139],{"type":47,"value":140},"2. Define typed request\u002Fresponse interfaces",{"type":41,"tag":57,"props":142,"children":143},{},[144],{"type":47,"value":145},"Always define explicit TypeScript interfaces for request and response types:",{"type":41,"tag":70,"props":147,"children":149},{"className":72,"code":148,"language":15,"meta":74,"style":74},"interface CreateUserRequest {\n  email: string;\n  name: string;\n}\n\ninterface CreateUserResponse {\n  id: string;\n  email: string;\n  name: string;\n}\n",[150],{"type":41,"tag":77,"props":151,"children":152},{"__ignoreMap":74},[153,173,197,218,227,236,253,274,294,314],{"type":41,"tag":81,"props":154,"children":155},{"class":83,"line":84},[156,162,168],{"type":41,"tag":81,"props":157,"children":159},{"style":158},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[160],{"type":47,"value":161},"interface",{"type":41,"tag":81,"props":163,"children":165},{"style":164},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[166],{"type":47,"value":167}," CreateUserRequest",{"type":41,"tag":81,"props":169,"children":170},{"style":94},[171],{"type":47,"value":172}," {\n",{"type":41,"tag":81,"props":174,"children":176},{"class":83,"line":175},2,[177,183,188,193],{"type":41,"tag":81,"props":178,"children":180},{"style":179},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[181],{"type":47,"value":182},"  email",{"type":41,"tag":81,"props":184,"children":185},{"style":94},[186],{"type":47,"value":187},":",{"type":41,"tag":81,"props":189,"children":190},{"style":164},[191],{"type":47,"value":192}," string",{"type":41,"tag":81,"props":194,"children":195},{"style":94},[196],{"type":47,"value":134},{"type":41,"tag":81,"props":198,"children":200},{"class":83,"line":199},3,[201,206,210,214],{"type":41,"tag":81,"props":202,"children":203},{"style":179},[204],{"type":47,"value":205},"  name",{"type":41,"tag":81,"props":207,"children":208},{"style":94},[209],{"type":47,"value":187},{"type":41,"tag":81,"props":211,"children":212},{"style":164},[213],{"type":47,"value":192},{"type":41,"tag":81,"props":215,"children":216},{"style":94},[217],{"type":47,"value":134},{"type":41,"tag":81,"props":219,"children":221},{"class":83,"line":220},4,[222],{"type":41,"tag":81,"props":223,"children":224},{"style":94},[225],{"type":47,"value":226},"}\n",{"type":41,"tag":81,"props":228,"children":229},{"class":83,"line":25},[230],{"type":41,"tag":81,"props":231,"children":233},{"emptyLinePlaceholder":232},true,[234],{"type":47,"value":235},"\n",{"type":41,"tag":81,"props":237,"children":239},{"class":83,"line":238},6,[240,244,249],{"type":41,"tag":81,"props":241,"children":242},{"style":158},[243],{"type":47,"value":161},{"type":41,"tag":81,"props":245,"children":246},{"style":164},[247],{"type":47,"value":248}," CreateUserResponse",{"type":41,"tag":81,"props":250,"children":251},{"style":94},[252],{"type":47,"value":172},{"type":41,"tag":81,"props":254,"children":256},{"class":83,"line":255},7,[257,262,266,270],{"type":41,"tag":81,"props":258,"children":259},{"style":179},[260],{"type":47,"value":261},"  id",{"type":41,"tag":81,"props":263,"children":264},{"style":94},[265],{"type":47,"value":187},{"type":41,"tag":81,"props":267,"children":268},{"style":164},[269],{"type":47,"value":192},{"type":41,"tag":81,"props":271,"children":272},{"style":94},[273],{"type":47,"value":134},{"type":41,"tag":81,"props":275,"children":277},{"class":83,"line":276},8,[278,282,286,290],{"type":41,"tag":81,"props":279,"children":280},{"style":179},[281],{"type":47,"value":182},{"type":41,"tag":81,"props":283,"children":284},{"style":94},[285],{"type":47,"value":187},{"type":41,"tag":81,"props":287,"children":288},{"style":164},[289],{"type":47,"value":192},{"type":41,"tag":81,"props":291,"children":292},{"style":94},[293],{"type":47,"value":134},{"type":41,"tag":81,"props":295,"children":297},{"class":83,"line":296},9,[298,302,306,310],{"type":41,"tag":81,"props":299,"children":300},{"style":179},[301],{"type":47,"value":205},{"type":41,"tag":81,"props":303,"children":304},{"style":94},[305],{"type":47,"value":187},{"type":41,"tag":81,"props":307,"children":308},{"style":164},[309],{"type":47,"value":192},{"type":41,"tag":81,"props":311,"children":312},{"style":94},[313],{"type":47,"value":134},{"type":41,"tag":81,"props":315,"children":317},{"class":83,"line":316},10,[318],{"type":41,"tag":81,"props":319,"children":320},{"style":94},[321],{"type":47,"value":226},{"type":41,"tag":63,"props":323,"children":325},{"id":324},"_3-create-the-endpoint",[326],{"type":47,"value":327},"3. Create the endpoint",{"type":41,"tag":70,"props":329,"children":331},{"className":72,"code":330,"language":15,"meta":74,"style":74},"export const createUser = api(\n  { method: \"POST\", path: \"\u002Fusers\", expose: true },\n  async (req: CreateUserRequest): Promise\u003CCreateUserResponse> => {\n    \u002F\u002F Implementation\n  }\n);\n",[332],{"type":41,"tag":77,"props":333,"children":334},{"__ignoreMap":74},[335,368,449,510,519,527],{"type":41,"tag":81,"props":336,"children":337},{"class":83,"line":84},[338,343,348,353,358,363],{"type":41,"tag":81,"props":339,"children":340},{"style":88},[341],{"type":47,"value":342},"export",{"type":41,"tag":81,"props":344,"children":345},{"style":158},[346],{"type":47,"value":347}," const",{"type":41,"tag":81,"props":349,"children":350},{"style":100},[351],{"type":47,"value":352}," createUser ",{"type":41,"tag":81,"props":354,"children":355},{"style":94},[356],{"type":47,"value":357},"=",{"type":41,"tag":81,"props":359,"children":361},{"style":360},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[362],{"type":47,"value":103},{"type":41,"tag":81,"props":364,"children":365},{"style":100},[366],{"type":47,"value":367},"(\n",{"type":41,"tag":81,"props":369,"children":370},{"class":83,"line":175},[371,376,381,385,389,394,398,403,408,412,416,421,425,429,434,438,444],{"type":41,"tag":81,"props":372,"children":373},{"style":94},[374],{"type":47,"value":375},"  {",{"type":41,"tag":81,"props":377,"children":378},{"style":179},[379],{"type":47,"value":380}," method",{"type":41,"tag":81,"props":382,"children":383},{"style":94},[384],{"type":47,"value":187},{"type":41,"tag":81,"props":386,"children":387},{"style":94},[388],{"type":47,"value":118},{"type":41,"tag":81,"props":390,"children":391},{"style":121},[392],{"type":47,"value":393},"POST",{"type":41,"tag":81,"props":395,"children":396},{"style":94},[397],{"type":47,"value":129},{"type":41,"tag":81,"props":399,"children":400},{"style":94},[401],{"type":47,"value":402},",",{"type":41,"tag":81,"props":404,"children":405},{"style":179},[406],{"type":47,"value":407}," path",{"type":41,"tag":81,"props":409,"children":410},{"style":94},[411],{"type":47,"value":187},{"type":41,"tag":81,"props":413,"children":414},{"style":94},[415],{"type":47,"value":118},{"type":41,"tag":81,"props":417,"children":418},{"style":121},[419],{"type":47,"value":420},"\u002Fusers",{"type":41,"tag":81,"props":422,"children":423},{"style":94},[424],{"type":47,"value":129},{"type":41,"tag":81,"props":426,"children":427},{"style":94},[428],{"type":47,"value":402},{"type":41,"tag":81,"props":430,"children":431},{"style":179},[432],{"type":47,"value":433}," expose",{"type":41,"tag":81,"props":435,"children":436},{"style":94},[437],{"type":47,"value":187},{"type":41,"tag":81,"props":439,"children":441},{"style":440},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[442],{"type":47,"value":443}," true",{"type":41,"tag":81,"props":445,"children":446},{"style":94},[447],{"type":47,"value":448}," },\n",{"type":41,"tag":81,"props":450,"children":451},{"class":83,"line":199},[452,457,462,468,472,476,481,486,491,496,501,506],{"type":41,"tag":81,"props":453,"children":454},{"style":158},[455],{"type":47,"value":456},"  async",{"type":41,"tag":81,"props":458,"children":459},{"style":94},[460],{"type":47,"value":461}," (",{"type":41,"tag":81,"props":463,"children":465},{"style":464},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic",[466],{"type":47,"value":467},"req",{"type":41,"tag":81,"props":469,"children":470},{"style":94},[471],{"type":47,"value":187},{"type":41,"tag":81,"props":473,"children":474},{"style":164},[475],{"type":47,"value":167},{"type":41,"tag":81,"props":477,"children":478},{"style":94},[479],{"type":47,"value":480},"):",{"type":41,"tag":81,"props":482,"children":483},{"style":164},[484],{"type":47,"value":485}," Promise",{"type":41,"tag":81,"props":487,"children":488},{"style":94},[489],{"type":47,"value":490},"\u003C",{"type":41,"tag":81,"props":492,"children":493},{"style":164},[494],{"type":47,"value":495},"CreateUserResponse",{"type":41,"tag":81,"props":497,"children":498},{"style":94},[499],{"type":47,"value":500},">",{"type":41,"tag":81,"props":502,"children":503},{"style":158},[504],{"type":47,"value":505}," =>",{"type":41,"tag":81,"props":507,"children":508},{"style":94},[509],{"type":47,"value":172},{"type":41,"tag":81,"props":511,"children":512},{"class":83,"line":220},[513],{"type":41,"tag":81,"props":514,"children":516},{"style":515},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[517],{"type":47,"value":518},"    \u002F\u002F Implementation\n",{"type":41,"tag":81,"props":520,"children":521},{"class":83,"line":25},[522],{"type":41,"tag":81,"props":523,"children":524},{"style":94},[525],{"type":47,"value":526},"  }\n",{"type":41,"tag":81,"props":528,"children":529},{"class":83,"line":238},[530,535],{"type":41,"tag":81,"props":531,"children":532},{"style":100},[533],{"type":47,"value":534},")",{"type":41,"tag":81,"props":536,"children":537},{"style":94},[538],{"type":47,"value":134},{"type":41,"tag":50,"props":540,"children":542},{"id":541},"api-options",[543],{"type":47,"value":544},"API Options",{"type":41,"tag":546,"props":547,"children":548},"table",{},[549,573],{"type":41,"tag":550,"props":551,"children":552},"thead",{},[553],{"type":41,"tag":554,"props":555,"children":556},"tr",{},[557,563,568],{"type":41,"tag":558,"props":559,"children":560},"th",{},[561],{"type":47,"value":562},"Option",{"type":41,"tag":558,"props":564,"children":565},{},[566],{"type":47,"value":567},"Type",{"type":41,"tag":558,"props":569,"children":570},{},[571],{"type":47,"value":572},"Description",{"type":41,"tag":574,"props":575,"children":576},"tbody",{},[577,600,635,657,678],{"type":41,"tag":554,"props":578,"children":579},{},[580,590,595],{"type":41,"tag":581,"props":582,"children":583},"td",{},[584],{"type":41,"tag":77,"props":585,"children":587},{"className":586},[],[588],{"type":47,"value":589},"method",{"type":41,"tag":581,"props":591,"children":592},{},[593],{"type":47,"value":594},"string",{"type":41,"tag":581,"props":596,"children":597},{},[598],{"type":47,"value":599},"HTTP method: GET, POST, PUT, PATCH, DELETE",{"type":41,"tag":554,"props":601,"children":602},{},[603,612,616],{"type":41,"tag":581,"props":604,"children":605},{},[606],{"type":41,"tag":77,"props":607,"children":609},{"className":608},[],[610],{"type":47,"value":611},"path",{"type":41,"tag":581,"props":613,"children":614},{},[615],{"type":47,"value":594},{"type":41,"tag":581,"props":617,"children":618},{},[619,621,627,629],{"type":47,"value":620},"URL path, supports ",{"type":41,"tag":77,"props":622,"children":624},{"className":623},[],[625],{"type":47,"value":626},":param",{"type":47,"value":628}," and ",{"type":41,"tag":77,"props":630,"children":632},{"className":631},[],[633],{"type":47,"value":634},"*wildcard",{"type":41,"tag":554,"props":636,"children":637},{},[638,647,652],{"type":41,"tag":581,"props":639,"children":640},{},[641],{"type":41,"tag":77,"props":642,"children":644},{"className":643},[],[645],{"type":47,"value":646},"expose",{"type":41,"tag":581,"props":648,"children":649},{},[650],{"type":47,"value":651},"boolean",{"type":41,"tag":581,"props":653,"children":654},{},[655],{"type":47,"value":656},"If true, accessible from outside (default: false)",{"type":41,"tag":554,"props":658,"children":659},{},[660,669,673],{"type":41,"tag":581,"props":661,"children":662},{},[663],{"type":41,"tag":77,"props":664,"children":666},{"className":665},[],[667],{"type":47,"value":668},"auth",{"type":41,"tag":581,"props":670,"children":671},{},[672],{"type":47,"value":651},{"type":41,"tag":581,"props":674,"children":675},{},[676],{"type":47,"value":677},"If true, requires authentication",{"type":41,"tag":554,"props":679,"children":680},{},[681,690,694],{"type":41,"tag":581,"props":682,"children":683},{},[684],{"type":41,"tag":77,"props":685,"children":687},{"className":686},[],[688],{"type":47,"value":689},"sensitive",{"type":41,"tag":581,"props":691,"children":692},{},[693],{"type":47,"value":651},{"type":41,"tag":581,"props":695,"children":696},{},[697],{"type":47,"value":698},"If true, redacts request\u002Fresponse payloads from traces",{"type":41,"tag":50,"props":700,"children":702},{"id":701},"requestresponse-patterns",[703],{"type":47,"value":704},"Request\u002FResponse Patterns",{"type":41,"tag":57,"props":706,"children":707},{},[708],{"type":47,"value":709},"Encore supports four endpoint configurations:",{"type":41,"tag":70,"props":711,"children":713},{"className":72,"code":712,"language":15,"meta":74,"style":74},"\u002F\u002F Both request and response\nexport const createUser = api(\n  { method: \"POST\", path: \"\u002Fusers\", expose: true },\n  async (req: CreateRequest): Promise\u003CCreateResponse> => { ... }\n);\n\n\u002F\u002F Response only (no request body)\nexport const listUsers = api(\n  { method: \"GET\", path: \"\u002Fusers\", expose: true },\n  async (): Promise\u003CListResponse> => { ... }\n);\n\n\u002F\u002F Request only (no response body)\nexport const deleteUser = api(\n  { method: \"DELETE\", path: \"\u002Fusers\u002F:id\", expose: true },\n  async (req: DeleteRequest): Promise\u003Cvoid> => { ... }\n);\n\n\u002F\u002F Neither request nor response\nexport const ping = api(\n  { method: \"GET\", path: \"\u002Fping\", expose: true },\n  async (): Promise\u003Cvoid> => { ... }\n);\n",[714],{"type":41,"tag":77,"props":715,"children":716},{"__ignoreMap":74},[717,725,752,823,886,897,904,912,940,1012,1057,1069,1077,1086,1115,1189,1251,1263,1271,1280,1309,1382,1426],{"type":41,"tag":81,"props":718,"children":719},{"class":83,"line":84},[720],{"type":41,"tag":81,"props":721,"children":722},{"style":515},[723],{"type":47,"value":724},"\u002F\u002F Both request and response\n",{"type":41,"tag":81,"props":726,"children":727},{"class":83,"line":175},[728,732,736,740,744,748],{"type":41,"tag":81,"props":729,"children":730},{"style":88},[731],{"type":47,"value":342},{"type":41,"tag":81,"props":733,"children":734},{"style":158},[735],{"type":47,"value":347},{"type":41,"tag":81,"props":737,"children":738},{"style":100},[739],{"type":47,"value":352},{"type":41,"tag":81,"props":741,"children":742},{"style":94},[743],{"type":47,"value":357},{"type":41,"tag":81,"props":745,"children":746},{"style":360},[747],{"type":47,"value":103},{"type":41,"tag":81,"props":749,"children":750},{"style":100},[751],{"type":47,"value":367},{"type":41,"tag":81,"props":753,"children":754},{"class":83,"line":199},[755,759,763,767,771,775,779,783,787,791,795,799,803,807,811,815,819],{"type":41,"tag":81,"props":756,"children":757},{"style":94},[758],{"type":47,"value":375},{"type":41,"tag":81,"props":760,"children":761},{"style":179},[762],{"type":47,"value":380},{"type":41,"tag":81,"props":764,"children":765},{"style":94},[766],{"type":47,"value":187},{"type":41,"tag":81,"props":768,"children":769},{"style":94},[770],{"type":47,"value":118},{"type":41,"tag":81,"props":772,"children":773},{"style":121},[774],{"type":47,"value":393},{"type":41,"tag":81,"props":776,"children":777},{"style":94},[778],{"type":47,"value":129},{"type":41,"tag":81,"props":780,"children":781},{"style":94},[782],{"type":47,"value":402},{"type":41,"tag":81,"props":784,"children":785},{"style":179},[786],{"type":47,"value":407},{"type":41,"tag":81,"props":788,"children":789},{"style":94},[790],{"type":47,"value":187},{"type":41,"tag":81,"props":792,"children":793},{"style":94},[794],{"type":47,"value":118},{"type":41,"tag":81,"props":796,"children":797},{"style":121},[798],{"type":47,"value":420},{"type":41,"tag":81,"props":800,"children":801},{"style":94},[802],{"type":47,"value":129},{"type":41,"tag":81,"props":804,"children":805},{"style":94},[806],{"type":47,"value":402},{"type":41,"tag":81,"props":808,"children":809},{"style":179},[810],{"type":47,"value":433},{"type":41,"tag":81,"props":812,"children":813},{"style":94},[814],{"type":47,"value":187},{"type":41,"tag":81,"props":816,"children":817},{"style":440},[818],{"type":47,"value":443},{"type":41,"tag":81,"props":820,"children":821},{"style":94},[822],{"type":47,"value":448},{"type":41,"tag":81,"props":824,"children":825},{"class":83,"line":220},[826,830,834,838,842,847,851,855,859,864,868,872,876,881],{"type":41,"tag":81,"props":827,"children":828},{"style":158},[829],{"type":47,"value":456},{"type":41,"tag":81,"props":831,"children":832},{"style":94},[833],{"type":47,"value":461},{"type":41,"tag":81,"props":835,"children":836},{"style":464},[837],{"type":47,"value":467},{"type":41,"tag":81,"props":839,"children":840},{"style":94},[841],{"type":47,"value":187},{"type":41,"tag":81,"props":843,"children":844},{"style":164},[845],{"type":47,"value":846}," CreateRequest",{"type":41,"tag":81,"props":848,"children":849},{"style":94},[850],{"type":47,"value":480},{"type":41,"tag":81,"props":852,"children":853},{"style":164},[854],{"type":47,"value":485},{"type":41,"tag":81,"props":856,"children":857},{"style":94},[858],{"type":47,"value":490},{"type":41,"tag":81,"props":860,"children":861},{"style":164},[862],{"type":47,"value":863},"CreateResponse",{"type":41,"tag":81,"props":865,"children":866},{"style":94},[867],{"type":47,"value":500},{"type":41,"tag":81,"props":869,"children":870},{"style":158},[871],{"type":47,"value":505},{"type":41,"tag":81,"props":873,"children":874},{"style":94},[875],{"type":47,"value":97},{"type":41,"tag":81,"props":877,"children":878},{"style":94},[879],{"type":47,"value":880}," ...",{"type":41,"tag":81,"props":882,"children":883},{"style":94},[884],{"type":47,"value":885}," }\n",{"type":41,"tag":81,"props":887,"children":888},{"class":83,"line":25},[889,893],{"type":41,"tag":81,"props":890,"children":891},{"style":100},[892],{"type":47,"value":534},{"type":41,"tag":81,"props":894,"children":895},{"style":94},[896],{"type":47,"value":134},{"type":41,"tag":81,"props":898,"children":899},{"class":83,"line":238},[900],{"type":41,"tag":81,"props":901,"children":902},{"emptyLinePlaceholder":232},[903],{"type":47,"value":235},{"type":41,"tag":81,"props":905,"children":906},{"class":83,"line":255},[907],{"type":41,"tag":81,"props":908,"children":909},{"style":515},[910],{"type":47,"value":911},"\u002F\u002F Response only (no request body)\n",{"type":41,"tag":81,"props":913,"children":914},{"class":83,"line":276},[915,919,923,928,932,936],{"type":41,"tag":81,"props":916,"children":917},{"style":88},[918],{"type":47,"value":342},{"type":41,"tag":81,"props":920,"children":921},{"style":158},[922],{"type":47,"value":347},{"type":41,"tag":81,"props":924,"children":925},{"style":100},[926],{"type":47,"value":927}," listUsers ",{"type":41,"tag":81,"props":929,"children":930},{"style":94},[931],{"type":47,"value":357},{"type":41,"tag":81,"props":933,"children":934},{"style":360},[935],{"type":47,"value":103},{"type":41,"tag":81,"props":937,"children":938},{"style":100},[939],{"type":47,"value":367},{"type":41,"tag":81,"props":941,"children":942},{"class":83,"line":296},[943,947,951,955,959,964,968,972,976,980,984,988,992,996,1000,1004,1008],{"type":41,"tag":81,"props":944,"children":945},{"style":94},[946],{"type":47,"value":375},{"type":41,"tag":81,"props":948,"children":949},{"style":179},[950],{"type":47,"value":380},{"type":41,"tag":81,"props":952,"children":953},{"style":94},[954],{"type":47,"value":187},{"type":41,"tag":81,"props":956,"children":957},{"style":94},[958],{"type":47,"value":118},{"type":41,"tag":81,"props":960,"children":961},{"style":121},[962],{"type":47,"value":963},"GET",{"type":41,"tag":81,"props":965,"children":966},{"style":94},[967],{"type":47,"value":129},{"type":41,"tag":81,"props":969,"children":970},{"style":94},[971],{"type":47,"value":402},{"type":41,"tag":81,"props":973,"children":974},{"style":179},[975],{"type":47,"value":407},{"type":41,"tag":81,"props":977,"children":978},{"style":94},[979],{"type":47,"value":187},{"type":41,"tag":81,"props":981,"children":982},{"style":94},[983],{"type":47,"value":118},{"type":41,"tag":81,"props":985,"children":986},{"style":121},[987],{"type":47,"value":420},{"type":41,"tag":81,"props":989,"children":990},{"style":94},[991],{"type":47,"value":129},{"type":41,"tag":81,"props":993,"children":994},{"style":94},[995],{"type":47,"value":402},{"type":41,"tag":81,"props":997,"children":998},{"style":179},[999],{"type":47,"value":433},{"type":41,"tag":81,"props":1001,"children":1002},{"style":94},[1003],{"type":47,"value":187},{"type":41,"tag":81,"props":1005,"children":1006},{"style":440},[1007],{"type":47,"value":443},{"type":41,"tag":81,"props":1009,"children":1010},{"style":94},[1011],{"type":47,"value":448},{"type":41,"tag":81,"props":1013,"children":1014},{"class":83,"line":316},[1015,1019,1024,1028,1032,1037,1041,1045,1049,1053],{"type":41,"tag":81,"props":1016,"children":1017},{"style":158},[1018],{"type":47,"value":456},{"type":41,"tag":81,"props":1020,"children":1021},{"style":94},[1022],{"type":47,"value":1023}," ():",{"type":41,"tag":81,"props":1025,"children":1026},{"style":164},[1027],{"type":47,"value":485},{"type":41,"tag":81,"props":1029,"children":1030},{"style":94},[1031],{"type":47,"value":490},{"type":41,"tag":81,"props":1033,"children":1034},{"style":164},[1035],{"type":47,"value":1036},"ListResponse",{"type":41,"tag":81,"props":1038,"children":1039},{"style":94},[1040],{"type":47,"value":500},{"type":41,"tag":81,"props":1042,"children":1043},{"style":158},[1044],{"type":47,"value":505},{"type":41,"tag":81,"props":1046,"children":1047},{"style":94},[1048],{"type":47,"value":97},{"type":41,"tag":81,"props":1050,"children":1051},{"style":94},[1052],{"type":47,"value":880},{"type":41,"tag":81,"props":1054,"children":1055},{"style":94},[1056],{"type":47,"value":885},{"type":41,"tag":81,"props":1058,"children":1060},{"class":83,"line":1059},11,[1061,1065],{"type":41,"tag":81,"props":1062,"children":1063},{"style":100},[1064],{"type":47,"value":534},{"type":41,"tag":81,"props":1066,"children":1067},{"style":94},[1068],{"type":47,"value":134},{"type":41,"tag":81,"props":1070,"children":1072},{"class":83,"line":1071},12,[1073],{"type":41,"tag":81,"props":1074,"children":1075},{"emptyLinePlaceholder":232},[1076],{"type":47,"value":235},{"type":41,"tag":81,"props":1078,"children":1080},{"class":83,"line":1079},13,[1081],{"type":41,"tag":81,"props":1082,"children":1083},{"style":515},[1084],{"type":47,"value":1085},"\u002F\u002F Request only (no response body)\n",{"type":41,"tag":81,"props":1087,"children":1089},{"class":83,"line":1088},14,[1090,1094,1098,1103,1107,1111],{"type":41,"tag":81,"props":1091,"children":1092},{"style":88},[1093],{"type":47,"value":342},{"type":41,"tag":81,"props":1095,"children":1096},{"style":158},[1097],{"type":47,"value":347},{"type":41,"tag":81,"props":1099,"children":1100},{"style":100},[1101],{"type":47,"value":1102}," deleteUser ",{"type":41,"tag":81,"props":1104,"children":1105},{"style":94},[1106],{"type":47,"value":357},{"type":41,"tag":81,"props":1108,"children":1109},{"style":360},[1110],{"type":47,"value":103},{"type":41,"tag":81,"props":1112,"children":1113},{"style":100},[1114],{"type":47,"value":367},{"type":41,"tag":81,"props":1116,"children":1118},{"class":83,"line":1117},15,[1119,1123,1127,1131,1135,1140,1144,1148,1152,1156,1160,1165,1169,1173,1177,1181,1185],{"type":41,"tag":81,"props":1120,"children":1121},{"style":94},[1122],{"type":47,"value":375},{"type":41,"tag":81,"props":1124,"children":1125},{"style":179},[1126],{"type":47,"value":380},{"type":41,"tag":81,"props":1128,"children":1129},{"style":94},[1130],{"type":47,"value":187},{"type":41,"tag":81,"props":1132,"children":1133},{"style":94},[1134],{"type":47,"value":118},{"type":41,"tag":81,"props":1136,"children":1137},{"style":121},[1138],{"type":47,"value":1139},"DELETE",{"type":41,"tag":81,"props":1141,"children":1142},{"style":94},[1143],{"type":47,"value":129},{"type":41,"tag":81,"props":1145,"children":1146},{"style":94},[1147],{"type":47,"value":402},{"type":41,"tag":81,"props":1149,"children":1150},{"style":179},[1151],{"type":47,"value":407},{"type":41,"tag":81,"props":1153,"children":1154},{"style":94},[1155],{"type":47,"value":187},{"type":41,"tag":81,"props":1157,"children":1158},{"style":94},[1159],{"type":47,"value":118},{"type":41,"tag":81,"props":1161,"children":1162},{"style":121},[1163],{"type":47,"value":1164},"\u002Fusers\u002F:id",{"type":41,"tag":81,"props":1166,"children":1167},{"style":94},[1168],{"type":47,"value":129},{"type":41,"tag":81,"props":1170,"children":1171},{"style":94},[1172],{"type":47,"value":402},{"type":41,"tag":81,"props":1174,"children":1175},{"style":179},[1176],{"type":47,"value":433},{"type":41,"tag":81,"props":1178,"children":1179},{"style":94},[1180],{"type":47,"value":187},{"type":41,"tag":81,"props":1182,"children":1183},{"style":440},[1184],{"type":47,"value":443},{"type":41,"tag":81,"props":1186,"children":1187},{"style":94},[1188],{"type":47,"value":448},{"type":41,"tag":81,"props":1190,"children":1192},{"class":83,"line":1191},16,[1193,1197,1201,1205,1209,1214,1218,1222,1226,1231,1235,1239,1243,1247],{"type":41,"tag":81,"props":1194,"children":1195},{"style":158},[1196],{"type":47,"value":456},{"type":41,"tag":81,"props":1198,"children":1199},{"style":94},[1200],{"type":47,"value":461},{"type":41,"tag":81,"props":1202,"children":1203},{"style":464},[1204],{"type":47,"value":467},{"type":41,"tag":81,"props":1206,"children":1207},{"style":94},[1208],{"type":47,"value":187},{"type":41,"tag":81,"props":1210,"children":1211},{"style":164},[1212],{"type":47,"value":1213}," DeleteRequest",{"type":41,"tag":81,"props":1215,"children":1216},{"style":94},[1217],{"type":47,"value":480},{"type":41,"tag":81,"props":1219,"children":1220},{"style":164},[1221],{"type":47,"value":485},{"type":41,"tag":81,"props":1223,"children":1224},{"style":94},[1225],{"type":47,"value":490},{"type":41,"tag":81,"props":1227,"children":1228},{"style":164},[1229],{"type":47,"value":1230},"void",{"type":41,"tag":81,"props":1232,"children":1233},{"style":94},[1234],{"type":47,"value":500},{"type":41,"tag":81,"props":1236,"children":1237},{"style":158},[1238],{"type":47,"value":505},{"type":41,"tag":81,"props":1240,"children":1241},{"style":94},[1242],{"type":47,"value":97},{"type":41,"tag":81,"props":1244,"children":1245},{"style":94},[1246],{"type":47,"value":880},{"type":41,"tag":81,"props":1248,"children":1249},{"style":94},[1250],{"type":47,"value":885},{"type":41,"tag":81,"props":1252,"children":1254},{"class":83,"line":1253},17,[1255,1259],{"type":41,"tag":81,"props":1256,"children":1257},{"style":100},[1258],{"type":47,"value":534},{"type":41,"tag":81,"props":1260,"children":1261},{"style":94},[1262],{"type":47,"value":134},{"type":41,"tag":81,"props":1264,"children":1266},{"class":83,"line":1265},18,[1267],{"type":41,"tag":81,"props":1268,"children":1269},{"emptyLinePlaceholder":232},[1270],{"type":47,"value":235},{"type":41,"tag":81,"props":1272,"children":1274},{"class":83,"line":1273},19,[1275],{"type":41,"tag":81,"props":1276,"children":1277},{"style":515},[1278],{"type":47,"value":1279},"\u002F\u002F Neither request nor response\n",{"type":41,"tag":81,"props":1281,"children":1283},{"class":83,"line":1282},20,[1284,1288,1292,1297,1301,1305],{"type":41,"tag":81,"props":1285,"children":1286},{"style":88},[1287],{"type":47,"value":342},{"type":41,"tag":81,"props":1289,"children":1290},{"style":158},[1291],{"type":47,"value":347},{"type":41,"tag":81,"props":1293,"children":1294},{"style":100},[1295],{"type":47,"value":1296}," ping ",{"type":41,"tag":81,"props":1298,"children":1299},{"style":94},[1300],{"type":47,"value":357},{"type":41,"tag":81,"props":1302,"children":1303},{"style":360},[1304],{"type":47,"value":103},{"type":41,"tag":81,"props":1306,"children":1307},{"style":100},[1308],{"type":47,"value":367},{"type":41,"tag":81,"props":1310,"children":1312},{"class":83,"line":1311},21,[1313,1317,1321,1325,1329,1333,1337,1341,1345,1349,1353,1358,1362,1366,1370,1374,1378],{"type":41,"tag":81,"props":1314,"children":1315},{"style":94},[1316],{"type":47,"value":375},{"type":41,"tag":81,"props":1318,"children":1319},{"style":179},[1320],{"type":47,"value":380},{"type":41,"tag":81,"props":1322,"children":1323},{"style":94},[1324],{"type":47,"value":187},{"type":41,"tag":81,"props":1326,"children":1327},{"style":94},[1328],{"type":47,"value":118},{"type":41,"tag":81,"props":1330,"children":1331},{"style":121},[1332],{"type":47,"value":963},{"type":41,"tag":81,"props":1334,"children":1335},{"style":94},[1336],{"type":47,"value":129},{"type":41,"tag":81,"props":1338,"children":1339},{"style":94},[1340],{"type":47,"value":402},{"type":41,"tag":81,"props":1342,"children":1343},{"style":179},[1344],{"type":47,"value":407},{"type":41,"tag":81,"props":1346,"children":1347},{"style":94},[1348],{"type":47,"value":187},{"type":41,"tag":81,"props":1350,"children":1351},{"style":94},[1352],{"type":47,"value":118},{"type":41,"tag":81,"props":1354,"children":1355},{"style":121},[1356],{"type":47,"value":1357},"\u002Fping",{"type":41,"tag":81,"props":1359,"children":1360},{"style":94},[1361],{"type":47,"value":129},{"type":41,"tag":81,"props":1363,"children":1364},{"style":94},[1365],{"type":47,"value":402},{"type":41,"tag":81,"props":1367,"children":1368},{"style":179},[1369],{"type":47,"value":433},{"type":41,"tag":81,"props":1371,"children":1372},{"style":94},[1373],{"type":47,"value":187},{"type":41,"tag":81,"props":1375,"children":1376},{"style":440},[1377],{"type":47,"value":443},{"type":41,"tag":81,"props":1379,"children":1380},{"style":94},[1381],{"type":47,"value":448},{"type":41,"tag":81,"props":1383,"children":1385},{"class":83,"line":1384},22,[1386,1390,1394,1398,1402,1406,1410,1414,1418,1422],{"type":41,"tag":81,"props":1387,"children":1388},{"style":158},[1389],{"type":47,"value":456},{"type":41,"tag":81,"props":1391,"children":1392},{"style":94},[1393],{"type":47,"value":1023},{"type":41,"tag":81,"props":1395,"children":1396},{"style":164},[1397],{"type":47,"value":485},{"type":41,"tag":81,"props":1399,"children":1400},{"style":94},[1401],{"type":47,"value":490},{"type":41,"tag":81,"props":1403,"children":1404},{"style":164},[1405],{"type":47,"value":1230},{"type":41,"tag":81,"props":1407,"children":1408},{"style":94},[1409],{"type":47,"value":500},{"type":41,"tag":81,"props":1411,"children":1412},{"style":158},[1413],{"type":47,"value":505},{"type":41,"tag":81,"props":1415,"children":1416},{"style":94},[1417],{"type":47,"value":97},{"type":41,"tag":81,"props":1419,"children":1420},{"style":94},[1421],{"type":47,"value":880},{"type":41,"tag":81,"props":1423,"children":1424},{"style":94},[1425],{"type":47,"value":885},{"type":41,"tag":81,"props":1427,"children":1429},{"class":83,"line":1428},23,[1430,1434],{"type":41,"tag":81,"props":1431,"children":1432},{"style":100},[1433],{"type":47,"value":534},{"type":41,"tag":81,"props":1435,"children":1436},{"style":94},[1437],{"type":47,"value":134},{"type":41,"tag":50,"props":1439,"children":1441},{"id":1440},"custom-http-status-codes",[1442],{"type":47,"value":1443},"Custom HTTP Status Codes",{"type":41,"tag":57,"props":1445,"children":1446},{},[1447,1449,1455],{"type":47,"value":1448},"Include an ",{"type":41,"tag":77,"props":1450,"children":1452},{"className":1451},[],[1453],{"type":47,"value":1454},"HttpStatus",{"type":47,"value":1456}," field in your response to return custom status codes:",{"type":41,"tag":70,"props":1458,"children":1460},{"className":72,"code":1459,"language":15,"meta":74,"style":74},"import { api, HttpStatus } from \"encore.dev\u002Fapi\";\n\ninterface CreateResponse {\n  id: string;\n  status: HttpStatus;\n}\n\nexport const create = api(\n  { method: \"POST\", path: \"\u002Fitems\", expose: true },\n  async (req: CreateRequest): Promise\u003CCreateResponse> => {\n    const item = await createItem(req);\n    return { id: item.id, status: HttpStatus.Created };  \u002F\u002F Returns 201\n  }\n);\n",[1461],{"type":41,"tag":77,"props":1462,"children":1463},{"__ignoreMap":74},[1464,1512,1519,1535,1554,1574,1581,1588,1616,1688,1739,1784,1855,1862],{"type":41,"tag":81,"props":1465,"children":1466},{"class":83,"line":84},[1467,1471,1475,1479,1483,1488,1492,1496,1500,1504,1508],{"type":41,"tag":81,"props":1468,"children":1469},{"style":88},[1470],{"type":47,"value":91},{"type":41,"tag":81,"props":1472,"children":1473},{"style":94},[1474],{"type":47,"value":97},{"type":41,"tag":81,"props":1476,"children":1477},{"style":100},[1478],{"type":47,"value":103},{"type":41,"tag":81,"props":1480,"children":1481},{"style":94},[1482],{"type":47,"value":402},{"type":41,"tag":81,"props":1484,"children":1485},{"style":100},[1486],{"type":47,"value":1487}," HttpStatus",{"type":41,"tag":81,"props":1489,"children":1490},{"style":94},[1491],{"type":47,"value":108},{"type":41,"tag":81,"props":1493,"children":1494},{"style":88},[1495],{"type":47,"value":113},{"type":41,"tag":81,"props":1497,"children":1498},{"style":94},[1499],{"type":47,"value":118},{"type":41,"tag":81,"props":1501,"children":1502},{"style":121},[1503],{"type":47,"value":124},{"type":41,"tag":81,"props":1505,"children":1506},{"style":94},[1507],{"type":47,"value":129},{"type":41,"tag":81,"props":1509,"children":1510},{"style":94},[1511],{"type":47,"value":134},{"type":41,"tag":81,"props":1513,"children":1514},{"class":83,"line":175},[1515],{"type":41,"tag":81,"props":1516,"children":1517},{"emptyLinePlaceholder":232},[1518],{"type":47,"value":235},{"type":41,"tag":81,"props":1520,"children":1521},{"class":83,"line":199},[1522,1526,1531],{"type":41,"tag":81,"props":1523,"children":1524},{"style":158},[1525],{"type":47,"value":161},{"type":41,"tag":81,"props":1527,"children":1528},{"style":164},[1529],{"type":47,"value":1530}," CreateResponse",{"type":41,"tag":81,"props":1532,"children":1533},{"style":94},[1534],{"type":47,"value":172},{"type":41,"tag":81,"props":1536,"children":1537},{"class":83,"line":220},[1538,1542,1546,1550],{"type":41,"tag":81,"props":1539,"children":1540},{"style":179},[1541],{"type":47,"value":261},{"type":41,"tag":81,"props":1543,"children":1544},{"style":94},[1545],{"type":47,"value":187},{"type":41,"tag":81,"props":1547,"children":1548},{"style":164},[1549],{"type":47,"value":192},{"type":41,"tag":81,"props":1551,"children":1552},{"style":94},[1553],{"type":47,"value":134},{"type":41,"tag":81,"props":1555,"children":1556},{"class":83,"line":25},[1557,1562,1566,1570],{"type":41,"tag":81,"props":1558,"children":1559},{"style":179},[1560],{"type":47,"value":1561},"  status",{"type":41,"tag":81,"props":1563,"children":1564},{"style":94},[1565],{"type":47,"value":187},{"type":41,"tag":81,"props":1567,"children":1568},{"style":164},[1569],{"type":47,"value":1487},{"type":41,"tag":81,"props":1571,"children":1572},{"style":94},[1573],{"type":47,"value":134},{"type":41,"tag":81,"props":1575,"children":1576},{"class":83,"line":238},[1577],{"type":41,"tag":81,"props":1578,"children":1579},{"style":94},[1580],{"type":47,"value":226},{"type":41,"tag":81,"props":1582,"children":1583},{"class":83,"line":255},[1584],{"type":41,"tag":81,"props":1585,"children":1586},{"emptyLinePlaceholder":232},[1587],{"type":47,"value":235},{"type":41,"tag":81,"props":1589,"children":1590},{"class":83,"line":276},[1591,1595,1599,1604,1608,1612],{"type":41,"tag":81,"props":1592,"children":1593},{"style":88},[1594],{"type":47,"value":342},{"type":41,"tag":81,"props":1596,"children":1597},{"style":158},[1598],{"type":47,"value":347},{"type":41,"tag":81,"props":1600,"children":1601},{"style":100},[1602],{"type":47,"value":1603}," create ",{"type":41,"tag":81,"props":1605,"children":1606},{"style":94},[1607],{"type":47,"value":357},{"type":41,"tag":81,"props":1609,"children":1610},{"style":360},[1611],{"type":47,"value":103},{"type":41,"tag":81,"props":1613,"children":1614},{"style":100},[1615],{"type":47,"value":367},{"type":41,"tag":81,"props":1617,"children":1618},{"class":83,"line":296},[1619,1623,1627,1631,1635,1639,1643,1647,1651,1655,1659,1664,1668,1672,1676,1680,1684],{"type":41,"tag":81,"props":1620,"children":1621},{"style":94},[1622],{"type":47,"value":375},{"type":41,"tag":81,"props":1624,"children":1625},{"style":179},[1626],{"type":47,"value":380},{"type":41,"tag":81,"props":1628,"children":1629},{"style":94},[1630],{"type":47,"value":187},{"type":41,"tag":81,"props":1632,"children":1633},{"style":94},[1634],{"type":47,"value":118},{"type":41,"tag":81,"props":1636,"children":1637},{"style":121},[1638],{"type":47,"value":393},{"type":41,"tag":81,"props":1640,"children":1641},{"style":94},[1642],{"type":47,"value":129},{"type":41,"tag":81,"props":1644,"children":1645},{"style":94},[1646],{"type":47,"value":402},{"type":41,"tag":81,"props":1648,"children":1649},{"style":179},[1650],{"type":47,"value":407},{"type":41,"tag":81,"props":1652,"children":1653},{"style":94},[1654],{"type":47,"value":187},{"type":41,"tag":81,"props":1656,"children":1657},{"style":94},[1658],{"type":47,"value":118},{"type":41,"tag":81,"props":1660,"children":1661},{"style":121},[1662],{"type":47,"value":1663},"\u002Fitems",{"type":41,"tag":81,"props":1665,"children":1666},{"style":94},[1667],{"type":47,"value":129},{"type":41,"tag":81,"props":1669,"children":1670},{"style":94},[1671],{"type":47,"value":402},{"type":41,"tag":81,"props":1673,"children":1674},{"style":179},[1675],{"type":47,"value":433},{"type":41,"tag":81,"props":1677,"children":1678},{"style":94},[1679],{"type":47,"value":187},{"type":41,"tag":81,"props":1681,"children":1682},{"style":440},[1683],{"type":47,"value":443},{"type":41,"tag":81,"props":1685,"children":1686},{"style":94},[1687],{"type":47,"value":448},{"type":41,"tag":81,"props":1689,"children":1690},{"class":83,"line":316},[1691,1695,1699,1703,1707,1711,1715,1719,1723,1727,1731,1735],{"type":41,"tag":81,"props":1692,"children":1693},{"style":158},[1694],{"type":47,"value":456},{"type":41,"tag":81,"props":1696,"children":1697},{"style":94},[1698],{"type":47,"value":461},{"type":41,"tag":81,"props":1700,"children":1701},{"style":464},[1702],{"type":47,"value":467},{"type":41,"tag":81,"props":1704,"children":1705},{"style":94},[1706],{"type":47,"value":187},{"type":41,"tag":81,"props":1708,"children":1709},{"style":164},[1710],{"type":47,"value":846},{"type":41,"tag":81,"props":1712,"children":1713},{"style":94},[1714],{"type":47,"value":480},{"type":41,"tag":81,"props":1716,"children":1717},{"style":164},[1718],{"type":47,"value":485},{"type":41,"tag":81,"props":1720,"children":1721},{"style":94},[1722],{"type":47,"value":490},{"type":41,"tag":81,"props":1724,"children":1725},{"style":164},[1726],{"type":47,"value":863},{"type":41,"tag":81,"props":1728,"children":1729},{"style":94},[1730],{"type":47,"value":500},{"type":41,"tag":81,"props":1732,"children":1733},{"style":158},[1734],{"type":47,"value":505},{"type":41,"tag":81,"props":1736,"children":1737},{"style":94},[1738],{"type":47,"value":172},{"type":41,"tag":81,"props":1740,"children":1741},{"class":83,"line":1059},[1742,1747,1752,1757,1762,1767,1772,1776,1780],{"type":41,"tag":81,"props":1743,"children":1744},{"style":158},[1745],{"type":47,"value":1746},"    const",{"type":41,"tag":81,"props":1748,"children":1749},{"style":100},[1750],{"type":47,"value":1751}," item",{"type":41,"tag":81,"props":1753,"children":1754},{"style":94},[1755],{"type":47,"value":1756}," =",{"type":41,"tag":81,"props":1758,"children":1759},{"style":88},[1760],{"type":47,"value":1761}," await",{"type":41,"tag":81,"props":1763,"children":1764},{"style":360},[1765],{"type":47,"value":1766}," createItem",{"type":41,"tag":81,"props":1768,"children":1769},{"style":179},[1770],{"type":47,"value":1771},"(",{"type":41,"tag":81,"props":1773,"children":1774},{"style":100},[1775],{"type":47,"value":467},{"type":41,"tag":81,"props":1777,"children":1778},{"style":179},[1779],{"type":47,"value":534},{"type":41,"tag":81,"props":1781,"children":1782},{"style":94},[1783],{"type":47,"value":134},{"type":41,"tag":81,"props":1785,"children":1786},{"class":83,"line":1071},[1787,1792,1796,1801,1805,1809,1814,1819,1823,1828,1832,1836,1840,1845,1850],{"type":41,"tag":81,"props":1788,"children":1789},{"style":88},[1790],{"type":47,"value":1791},"    return",{"type":41,"tag":81,"props":1793,"children":1794},{"style":94},[1795],{"type":47,"value":97},{"type":41,"tag":81,"props":1797,"children":1798},{"style":179},[1799],{"type":47,"value":1800}," id",{"type":41,"tag":81,"props":1802,"children":1803},{"style":94},[1804],{"type":47,"value":187},{"type":41,"tag":81,"props":1806,"children":1807},{"style":100},[1808],{"type":47,"value":1751},{"type":41,"tag":81,"props":1810,"children":1811},{"style":94},[1812],{"type":47,"value":1813},".",{"type":41,"tag":81,"props":1815,"children":1816},{"style":100},[1817],{"type":47,"value":1818},"id",{"type":41,"tag":81,"props":1820,"children":1821},{"style":94},[1822],{"type":47,"value":402},{"type":41,"tag":81,"props":1824,"children":1825},{"style":179},[1826],{"type":47,"value":1827}," status",{"type":41,"tag":81,"props":1829,"children":1830},{"style":94},[1831],{"type":47,"value":187},{"type":41,"tag":81,"props":1833,"children":1834},{"style":100},[1835],{"type":47,"value":1487},{"type":41,"tag":81,"props":1837,"children":1838},{"style":94},[1839],{"type":47,"value":1813},{"type":41,"tag":81,"props":1841,"children":1842},{"style":100},[1843],{"type":47,"value":1844},"Created",{"type":41,"tag":81,"props":1846,"children":1847},{"style":94},[1848],{"type":47,"value":1849}," };",{"type":41,"tag":81,"props":1851,"children":1852},{"style":515},[1853],{"type":47,"value":1854},"  \u002F\u002F Returns 201\n",{"type":41,"tag":81,"props":1856,"children":1857},{"class":83,"line":1079},[1858],{"type":41,"tag":81,"props":1859,"children":1860},{"style":94},[1861],{"type":47,"value":526},{"type":41,"tag":81,"props":1863,"children":1864},{"class":83,"line":1088},[1865,1869],{"type":41,"tag":81,"props":1866,"children":1867},{"style":100},[1868],{"type":47,"value":534},{"type":41,"tag":81,"props":1870,"children":1871},{"style":94},[1872],{"type":47,"value":134},{"type":41,"tag":50,"props":1874,"children":1876},{"id":1875},"parameter-types",[1877],{"type":47,"value":1878},"Parameter Types",{"type":41,"tag":63,"props":1880,"children":1882},{"id":1881},"path-parameters",[1883],{"type":47,"value":1884},"Path Parameters",{"type":41,"tag":70,"props":1886,"children":1888},{"className":72,"code":1887,"language":15,"meta":74,"style":74},"\u002F\u002F Path: \"\u002Fusers\u002F:id\"\ninterface GetUserRequest {\n  id: string;  \u002F\u002F Automatically mapped from :id\n}\n",[1889],{"type":41,"tag":77,"props":1890,"children":1891},{"__ignoreMap":74},[1892,1900,1916,1941],{"type":41,"tag":81,"props":1893,"children":1894},{"class":83,"line":84},[1895],{"type":41,"tag":81,"props":1896,"children":1897},{"style":515},[1898],{"type":47,"value":1899},"\u002F\u002F Path: \"\u002Fusers\u002F:id\"\n",{"type":41,"tag":81,"props":1901,"children":1902},{"class":83,"line":175},[1903,1907,1912],{"type":41,"tag":81,"props":1904,"children":1905},{"style":158},[1906],{"type":47,"value":161},{"type":41,"tag":81,"props":1908,"children":1909},{"style":164},[1910],{"type":47,"value":1911}," GetUserRequest",{"type":41,"tag":81,"props":1913,"children":1914},{"style":94},[1915],{"type":47,"value":172},{"type":41,"tag":81,"props":1917,"children":1918},{"class":83,"line":199},[1919,1923,1927,1931,1936],{"type":41,"tag":81,"props":1920,"children":1921},{"style":179},[1922],{"type":47,"value":261},{"type":41,"tag":81,"props":1924,"children":1925},{"style":94},[1926],{"type":47,"value":187},{"type":41,"tag":81,"props":1928,"children":1929},{"style":164},[1930],{"type":47,"value":192},{"type":41,"tag":81,"props":1932,"children":1933},{"style":94},[1934],{"type":47,"value":1935},";",{"type":41,"tag":81,"props":1937,"children":1938},{"style":515},[1939],{"type":47,"value":1940},"  \u002F\u002F Automatically mapped from :id\n",{"type":41,"tag":81,"props":1942,"children":1943},{"class":83,"line":220},[1944],{"type":41,"tag":81,"props":1945,"children":1946},{"style":94},[1947],{"type":47,"value":226},{"type":41,"tag":63,"props":1949,"children":1951},{"id":1950},"query-parameters",[1952],{"type":47,"value":1953},"Query Parameters",{"type":41,"tag":70,"props":1955,"children":1957},{"className":72,"code":1956,"language":15,"meta":74,"style":74},"import { Query } from \"encore.dev\u002Fapi\";\n\ninterface ListUsersRequest {\n  limit?: Query\u003Cnumber>;\n  offset?: Query\u003Cnumber>;\n}\n",[1958],{"type":41,"tag":77,"props":1959,"children":1960},{"__ignoreMap":74},[1961,2001,2008,2024,2055,2083],{"type":41,"tag":81,"props":1962,"children":1963},{"class":83,"line":84},[1964,1968,1972,1977,1981,1985,1989,1993,1997],{"type":41,"tag":81,"props":1965,"children":1966},{"style":88},[1967],{"type":47,"value":91},{"type":41,"tag":81,"props":1969,"children":1970},{"style":94},[1971],{"type":47,"value":97},{"type":41,"tag":81,"props":1973,"children":1974},{"style":100},[1975],{"type":47,"value":1976}," Query",{"type":41,"tag":81,"props":1978,"children":1979},{"style":94},[1980],{"type":47,"value":108},{"type":41,"tag":81,"props":1982,"children":1983},{"style":88},[1984],{"type":47,"value":113},{"type":41,"tag":81,"props":1986,"children":1987},{"style":94},[1988],{"type":47,"value":118},{"type":41,"tag":81,"props":1990,"children":1991},{"style":121},[1992],{"type":47,"value":124},{"type":41,"tag":81,"props":1994,"children":1995},{"style":94},[1996],{"type":47,"value":129},{"type":41,"tag":81,"props":1998,"children":1999},{"style":94},[2000],{"type":47,"value":134},{"type":41,"tag":81,"props":2002,"children":2003},{"class":83,"line":175},[2004],{"type":41,"tag":81,"props":2005,"children":2006},{"emptyLinePlaceholder":232},[2007],{"type":47,"value":235},{"type":41,"tag":81,"props":2009,"children":2010},{"class":83,"line":199},[2011,2015,2020],{"type":41,"tag":81,"props":2012,"children":2013},{"style":158},[2014],{"type":47,"value":161},{"type":41,"tag":81,"props":2016,"children":2017},{"style":164},[2018],{"type":47,"value":2019}," ListUsersRequest",{"type":41,"tag":81,"props":2021,"children":2022},{"style":94},[2023],{"type":47,"value":172},{"type":41,"tag":81,"props":2025,"children":2026},{"class":83,"line":220},[2027,2032,2037,2041,2045,2050],{"type":41,"tag":81,"props":2028,"children":2029},{"style":179},[2030],{"type":47,"value":2031},"  limit",{"type":41,"tag":81,"props":2033,"children":2034},{"style":94},[2035],{"type":47,"value":2036},"?:",{"type":41,"tag":81,"props":2038,"children":2039},{"style":164},[2040],{"type":47,"value":1976},{"type":41,"tag":81,"props":2042,"children":2043},{"style":94},[2044],{"type":47,"value":490},{"type":41,"tag":81,"props":2046,"children":2047},{"style":164},[2048],{"type":47,"value":2049},"number",{"type":41,"tag":81,"props":2051,"children":2052},{"style":94},[2053],{"type":47,"value":2054},">;\n",{"type":41,"tag":81,"props":2056,"children":2057},{"class":83,"line":25},[2058,2063,2067,2071,2075,2079],{"type":41,"tag":81,"props":2059,"children":2060},{"style":179},[2061],{"type":47,"value":2062},"  offset",{"type":41,"tag":81,"props":2064,"children":2065},{"style":94},[2066],{"type":47,"value":2036},{"type":41,"tag":81,"props":2068,"children":2069},{"style":164},[2070],{"type":47,"value":1976},{"type":41,"tag":81,"props":2072,"children":2073},{"style":94},[2074],{"type":47,"value":490},{"type":41,"tag":81,"props":2076,"children":2077},{"style":164},[2078],{"type":47,"value":2049},{"type":41,"tag":81,"props":2080,"children":2081},{"style":94},[2082],{"type":47,"value":2054},{"type":41,"tag":81,"props":2084,"children":2085},{"class":83,"line":238},[2086],{"type":41,"tag":81,"props":2087,"children":2088},{"style":94},[2089],{"type":47,"value":226},{"type":41,"tag":63,"props":2091,"children":2093},{"id":2092},"headers",[2094],{"type":47,"value":2095},"Headers",{"type":41,"tag":70,"props":2097,"children":2099},{"className":72,"code":2098,"language":15,"meta":74,"style":74},"import { Header } from \"encore.dev\u002Fapi\";\n\ninterface WebhookRequest {\n  signature: Header\u003C\"X-Webhook-Signature\">;\n  payload: string;\n}\n",[2100],{"type":41,"tag":77,"props":2101,"children":2102},{"__ignoreMap":74},[2103,2143,2150,2166,2203,2223],{"type":41,"tag":81,"props":2104,"children":2105},{"class":83,"line":84},[2106,2110,2114,2119,2123,2127,2131,2135,2139],{"type":41,"tag":81,"props":2107,"children":2108},{"style":88},[2109],{"type":47,"value":91},{"type":41,"tag":81,"props":2111,"children":2112},{"style":94},[2113],{"type":47,"value":97},{"type":41,"tag":81,"props":2115,"children":2116},{"style":100},[2117],{"type":47,"value":2118}," Header",{"type":41,"tag":81,"props":2120,"children":2121},{"style":94},[2122],{"type":47,"value":108},{"type":41,"tag":81,"props":2124,"children":2125},{"style":88},[2126],{"type":47,"value":113},{"type":41,"tag":81,"props":2128,"children":2129},{"style":94},[2130],{"type":47,"value":118},{"type":41,"tag":81,"props":2132,"children":2133},{"style":121},[2134],{"type":47,"value":124},{"type":41,"tag":81,"props":2136,"children":2137},{"style":94},[2138],{"type":47,"value":129},{"type":41,"tag":81,"props":2140,"children":2141},{"style":94},[2142],{"type":47,"value":134},{"type":41,"tag":81,"props":2144,"children":2145},{"class":83,"line":175},[2146],{"type":41,"tag":81,"props":2147,"children":2148},{"emptyLinePlaceholder":232},[2149],{"type":47,"value":235},{"type":41,"tag":81,"props":2151,"children":2152},{"class":83,"line":199},[2153,2157,2162],{"type":41,"tag":81,"props":2154,"children":2155},{"style":158},[2156],{"type":47,"value":161},{"type":41,"tag":81,"props":2158,"children":2159},{"style":164},[2160],{"type":47,"value":2161}," WebhookRequest",{"type":41,"tag":81,"props":2163,"children":2164},{"style":94},[2165],{"type":47,"value":172},{"type":41,"tag":81,"props":2167,"children":2168},{"class":83,"line":220},[2169,2174,2178,2182,2186,2190,2195,2199],{"type":41,"tag":81,"props":2170,"children":2171},{"style":179},[2172],{"type":47,"value":2173},"  signature",{"type":41,"tag":81,"props":2175,"children":2176},{"style":94},[2177],{"type":47,"value":187},{"type":41,"tag":81,"props":2179,"children":2180},{"style":164},[2181],{"type":47,"value":2118},{"type":41,"tag":81,"props":2183,"children":2184},{"style":94},[2185],{"type":47,"value":490},{"type":41,"tag":81,"props":2187,"children":2188},{"style":94},[2189],{"type":47,"value":129},{"type":41,"tag":81,"props":2191,"children":2192},{"style":121},[2193],{"type":47,"value":2194},"X-Webhook-Signature",{"type":41,"tag":81,"props":2196,"children":2197},{"style":94},[2198],{"type":47,"value":129},{"type":41,"tag":81,"props":2200,"children":2201},{"style":94},[2202],{"type":47,"value":2054},{"type":41,"tag":81,"props":2204,"children":2205},{"class":83,"line":25},[2206,2211,2215,2219],{"type":41,"tag":81,"props":2207,"children":2208},{"style":179},[2209],{"type":47,"value":2210},"  payload",{"type":41,"tag":81,"props":2212,"children":2213},{"style":94},[2214],{"type":47,"value":187},{"type":41,"tag":81,"props":2216,"children":2217},{"style":164},[2218],{"type":47,"value":192},{"type":41,"tag":81,"props":2220,"children":2221},{"style":94},[2222],{"type":47,"value":134},{"type":41,"tag":81,"props":2224,"children":2225},{"class":83,"line":238},[2226],{"type":41,"tag":81,"props":2227,"children":2228},{"style":94},[2229],{"type":47,"value":226},{"type":41,"tag":63,"props":2231,"children":2233},{"id":2232},"cookies",[2234],{"type":47,"value":2235},"Cookies",{"type":41,"tag":70,"props":2237,"children":2239},{"className":72,"code":2238,"language":15,"meta":74,"style":74},"import { Cookie } from \"encore.dev\u002Fapi\";\n\ninterface SessionRequest {\n  session?: Cookie\u003C\"session\">;\n  settings?: Cookie\u003C\"user-settings\">;\n}\n",[2240],{"type":41,"tag":77,"props":2241,"children":2242},{"__ignoreMap":74},[2243,2283,2290,2306,2343,2380],{"type":41,"tag":81,"props":2244,"children":2245},{"class":83,"line":84},[2246,2250,2254,2259,2263,2267,2271,2275,2279],{"type":41,"tag":81,"props":2247,"children":2248},{"style":88},[2249],{"type":47,"value":91},{"type":41,"tag":81,"props":2251,"children":2252},{"style":94},[2253],{"type":47,"value":97},{"type":41,"tag":81,"props":2255,"children":2256},{"style":100},[2257],{"type":47,"value":2258}," Cookie",{"type":41,"tag":81,"props":2260,"children":2261},{"style":94},[2262],{"type":47,"value":108},{"type":41,"tag":81,"props":2264,"children":2265},{"style":88},[2266],{"type":47,"value":113},{"type":41,"tag":81,"props":2268,"children":2269},{"style":94},[2270],{"type":47,"value":118},{"type":41,"tag":81,"props":2272,"children":2273},{"style":121},[2274],{"type":47,"value":124},{"type":41,"tag":81,"props":2276,"children":2277},{"style":94},[2278],{"type":47,"value":129},{"type":41,"tag":81,"props":2280,"children":2281},{"style":94},[2282],{"type":47,"value":134},{"type":41,"tag":81,"props":2284,"children":2285},{"class":83,"line":175},[2286],{"type":41,"tag":81,"props":2287,"children":2288},{"emptyLinePlaceholder":232},[2289],{"type":47,"value":235},{"type":41,"tag":81,"props":2291,"children":2292},{"class":83,"line":199},[2293,2297,2302],{"type":41,"tag":81,"props":2294,"children":2295},{"style":158},[2296],{"type":47,"value":161},{"type":41,"tag":81,"props":2298,"children":2299},{"style":164},[2300],{"type":47,"value":2301}," SessionRequest",{"type":41,"tag":81,"props":2303,"children":2304},{"style":94},[2305],{"type":47,"value":172},{"type":41,"tag":81,"props":2307,"children":2308},{"class":83,"line":220},[2309,2314,2318,2322,2326,2330,2335,2339],{"type":41,"tag":81,"props":2310,"children":2311},{"style":179},[2312],{"type":47,"value":2313},"  session",{"type":41,"tag":81,"props":2315,"children":2316},{"style":94},[2317],{"type":47,"value":2036},{"type":41,"tag":81,"props":2319,"children":2320},{"style":164},[2321],{"type":47,"value":2258},{"type":41,"tag":81,"props":2323,"children":2324},{"style":94},[2325],{"type":47,"value":490},{"type":41,"tag":81,"props":2327,"children":2328},{"style":94},[2329],{"type":47,"value":129},{"type":41,"tag":81,"props":2331,"children":2332},{"style":121},[2333],{"type":47,"value":2334},"session",{"type":41,"tag":81,"props":2336,"children":2337},{"style":94},[2338],{"type":47,"value":129},{"type":41,"tag":81,"props":2340,"children":2341},{"style":94},[2342],{"type":47,"value":2054},{"type":41,"tag":81,"props":2344,"children":2345},{"class":83,"line":25},[2346,2351,2355,2359,2363,2367,2372,2376],{"type":41,"tag":81,"props":2347,"children":2348},{"style":179},[2349],{"type":47,"value":2350},"  settings",{"type":41,"tag":81,"props":2352,"children":2353},{"style":94},[2354],{"type":47,"value":2036},{"type":41,"tag":81,"props":2356,"children":2357},{"style":164},[2358],{"type":47,"value":2258},{"type":41,"tag":81,"props":2360,"children":2361},{"style":94},[2362],{"type":47,"value":490},{"type":41,"tag":81,"props":2364,"children":2365},{"style":94},[2366],{"type":47,"value":129},{"type":41,"tag":81,"props":2368,"children":2369},{"style":121},[2370],{"type":47,"value":2371},"user-settings",{"type":41,"tag":81,"props":2373,"children":2374},{"style":94},[2375],{"type":47,"value":129},{"type":41,"tag":81,"props":2377,"children":2378},{"style":94},[2379],{"type":47,"value":2054},{"type":41,"tag":81,"props":2381,"children":2382},{"class":83,"line":238},[2383],{"type":41,"tag":81,"props":2384,"children":2385},{"style":94},[2386],{"type":47,"value":226},{"type":41,"tag":50,"props":2388,"children":2390},{"id":2389},"request-validation",[2391],{"type":47,"value":2392},"Request Validation",{"type":41,"tag":57,"props":2394,"children":2395},{},[2396],{"type":47,"value":2397},"Encore validates requests at runtime using TypeScript types. Add constraints for stricter validation:",{"type":41,"tag":70,"props":2399,"children":2401},{"className":72,"code":2400,"language":15,"meta":74,"style":74},"import { api } from \"encore.dev\u002Fapi\";\nimport { Min, Max, MinLen, MaxLen, IsEmail, IsURL } from \"encore.dev\u002Fvalidate\";\n\ninterface CreateUserRequest {\n  email: string & IsEmail;                    \u002F\u002F Must be valid email\n  username: string & MinLen\u003C3> & MaxLen\u003C20>;  \u002F\u002F 3-20 characters\n  age: number & Min\u003C13> & Max\u003C120>;           \u002F\u002F Between 13 and 120\n  website?: string & IsURL;                   \u002F\u002F Optional, must be URL if provided\n}\n",[2402],{"type":41,"tag":77,"props":2403,"children":2404},{"__ignoreMap":74},[2405,2444,2530,2537,2552,2585,2650,2714,2747],{"type":41,"tag":81,"props":2406,"children":2407},{"class":83,"line":84},[2408,2412,2416,2420,2424,2428,2432,2436,2440],{"type":41,"tag":81,"props":2409,"children":2410},{"style":88},[2411],{"type":47,"value":91},{"type":41,"tag":81,"props":2413,"children":2414},{"style":94},[2415],{"type":47,"value":97},{"type":41,"tag":81,"props":2417,"children":2418},{"style":100},[2419],{"type":47,"value":103},{"type":41,"tag":81,"props":2421,"children":2422},{"style":94},[2423],{"type":47,"value":108},{"type":41,"tag":81,"props":2425,"children":2426},{"style":88},[2427],{"type":47,"value":113},{"type":41,"tag":81,"props":2429,"children":2430},{"style":94},[2431],{"type":47,"value":118},{"type":41,"tag":81,"props":2433,"children":2434},{"style":121},[2435],{"type":47,"value":124},{"type":41,"tag":81,"props":2437,"children":2438},{"style":94},[2439],{"type":47,"value":129},{"type":41,"tag":81,"props":2441,"children":2442},{"style":94},[2443],{"type":47,"value":134},{"type":41,"tag":81,"props":2445,"children":2446},{"class":83,"line":175},[2447,2451,2455,2460,2464,2469,2473,2478,2482,2487,2491,2496,2500,2505,2509,2513,2517,2522,2526],{"type":41,"tag":81,"props":2448,"children":2449},{"style":88},[2450],{"type":47,"value":91},{"type":41,"tag":81,"props":2452,"children":2453},{"style":94},[2454],{"type":47,"value":97},{"type":41,"tag":81,"props":2456,"children":2457},{"style":100},[2458],{"type":47,"value":2459}," Min",{"type":41,"tag":81,"props":2461,"children":2462},{"style":94},[2463],{"type":47,"value":402},{"type":41,"tag":81,"props":2465,"children":2466},{"style":100},[2467],{"type":47,"value":2468}," Max",{"type":41,"tag":81,"props":2470,"children":2471},{"style":94},[2472],{"type":47,"value":402},{"type":41,"tag":81,"props":2474,"children":2475},{"style":100},[2476],{"type":47,"value":2477}," MinLen",{"type":41,"tag":81,"props":2479,"children":2480},{"style":94},[2481],{"type":47,"value":402},{"type":41,"tag":81,"props":2483,"children":2484},{"style":100},[2485],{"type":47,"value":2486}," MaxLen",{"type":41,"tag":81,"props":2488,"children":2489},{"style":94},[2490],{"type":47,"value":402},{"type":41,"tag":81,"props":2492,"children":2493},{"style":100},[2494],{"type":47,"value":2495}," IsEmail",{"type":41,"tag":81,"props":2497,"children":2498},{"style":94},[2499],{"type":47,"value":402},{"type":41,"tag":81,"props":2501,"children":2502},{"style":100},[2503],{"type":47,"value":2504}," IsURL",{"type":41,"tag":81,"props":2506,"children":2507},{"style":94},[2508],{"type":47,"value":108},{"type":41,"tag":81,"props":2510,"children":2511},{"style":88},[2512],{"type":47,"value":113},{"type":41,"tag":81,"props":2514,"children":2515},{"style":94},[2516],{"type":47,"value":118},{"type":41,"tag":81,"props":2518,"children":2519},{"style":121},[2520],{"type":47,"value":2521},"encore.dev\u002Fvalidate",{"type":41,"tag":81,"props":2523,"children":2524},{"style":94},[2525],{"type":47,"value":129},{"type":41,"tag":81,"props":2527,"children":2528},{"style":94},[2529],{"type":47,"value":134},{"type":41,"tag":81,"props":2531,"children":2532},{"class":83,"line":199},[2533],{"type":41,"tag":81,"props":2534,"children":2535},{"emptyLinePlaceholder":232},[2536],{"type":47,"value":235},{"type":41,"tag":81,"props":2538,"children":2539},{"class":83,"line":220},[2540,2544,2548],{"type":41,"tag":81,"props":2541,"children":2542},{"style":158},[2543],{"type":47,"value":161},{"type":41,"tag":81,"props":2545,"children":2546},{"style":164},[2547],{"type":47,"value":167},{"type":41,"tag":81,"props":2549,"children":2550},{"style":94},[2551],{"type":47,"value":172},{"type":41,"tag":81,"props":2553,"children":2554},{"class":83,"line":25},[2555,2559,2563,2567,2572,2576,2580],{"type":41,"tag":81,"props":2556,"children":2557},{"style":179},[2558],{"type":47,"value":182},{"type":41,"tag":81,"props":2560,"children":2561},{"style":94},[2562],{"type":47,"value":187},{"type":41,"tag":81,"props":2564,"children":2565},{"style":164},[2566],{"type":47,"value":192},{"type":41,"tag":81,"props":2568,"children":2569},{"style":94},[2570],{"type":47,"value":2571}," &",{"type":41,"tag":81,"props":2573,"children":2574},{"style":164},[2575],{"type":47,"value":2495},{"type":41,"tag":81,"props":2577,"children":2578},{"style":94},[2579],{"type":47,"value":1935},{"type":41,"tag":81,"props":2581,"children":2582},{"style":515},[2583],{"type":47,"value":2584},"                    \u002F\u002F Must be valid email\n",{"type":41,"tag":81,"props":2586,"children":2587},{"class":83,"line":238},[2588,2593,2597,2601,2605,2609,2613,2619,2623,2627,2631,2635,2640,2645],{"type":41,"tag":81,"props":2589,"children":2590},{"style":179},[2591],{"type":47,"value":2592},"  username",{"type":41,"tag":81,"props":2594,"children":2595},{"style":94},[2596],{"type":47,"value":187},{"type":41,"tag":81,"props":2598,"children":2599},{"style":164},[2600],{"type":47,"value":192},{"type":41,"tag":81,"props":2602,"children":2603},{"style":94},[2604],{"type":47,"value":2571},{"type":41,"tag":81,"props":2606,"children":2607},{"style":164},[2608],{"type":47,"value":2477},{"type":41,"tag":81,"props":2610,"children":2611},{"style":94},[2612],{"type":47,"value":490},{"type":41,"tag":81,"props":2614,"children":2616},{"style":2615},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[2617],{"type":47,"value":2618},"3",{"type":41,"tag":81,"props":2620,"children":2621},{"style":94},[2622],{"type":47,"value":500},{"type":41,"tag":81,"props":2624,"children":2625},{"style":94},[2626],{"type":47,"value":2571},{"type":41,"tag":81,"props":2628,"children":2629},{"style":164},[2630],{"type":47,"value":2486},{"type":41,"tag":81,"props":2632,"children":2633},{"style":94},[2634],{"type":47,"value":490},{"type":41,"tag":81,"props":2636,"children":2637},{"style":2615},[2638],{"type":47,"value":2639},"20",{"type":41,"tag":81,"props":2641,"children":2642},{"style":94},[2643],{"type":47,"value":2644},">;",{"type":41,"tag":81,"props":2646,"children":2647},{"style":515},[2648],{"type":47,"value":2649},"  \u002F\u002F 3-20 characters\n",{"type":41,"tag":81,"props":2651,"children":2652},{"class":83,"line":255},[2653,2658,2662,2667,2671,2675,2679,2684,2688,2692,2696,2700,2705,2709],{"type":41,"tag":81,"props":2654,"children":2655},{"style":179},[2656],{"type":47,"value":2657},"  age",{"type":41,"tag":81,"props":2659,"children":2660},{"style":94},[2661],{"type":47,"value":187},{"type":41,"tag":81,"props":2663,"children":2664},{"style":164},[2665],{"type":47,"value":2666}," number",{"type":41,"tag":81,"props":2668,"children":2669},{"style":94},[2670],{"type":47,"value":2571},{"type":41,"tag":81,"props":2672,"children":2673},{"style":164},[2674],{"type":47,"value":2459},{"type":41,"tag":81,"props":2676,"children":2677},{"style":94},[2678],{"type":47,"value":490},{"type":41,"tag":81,"props":2680,"children":2681},{"style":2615},[2682],{"type":47,"value":2683},"13",{"type":41,"tag":81,"props":2685,"children":2686},{"style":94},[2687],{"type":47,"value":500},{"type":41,"tag":81,"props":2689,"children":2690},{"style":94},[2691],{"type":47,"value":2571},{"type":41,"tag":81,"props":2693,"children":2694},{"style":164},[2695],{"type":47,"value":2468},{"type":41,"tag":81,"props":2697,"children":2698},{"style":94},[2699],{"type":47,"value":490},{"type":41,"tag":81,"props":2701,"children":2702},{"style":2615},[2703],{"type":47,"value":2704},"120",{"type":41,"tag":81,"props":2706,"children":2707},{"style":94},[2708],{"type":47,"value":2644},{"type":41,"tag":81,"props":2710,"children":2711},{"style":515},[2712],{"type":47,"value":2713},"           \u002F\u002F Between 13 and 120\n",{"type":41,"tag":81,"props":2715,"children":2716},{"class":83,"line":276},[2717,2722,2726,2730,2734,2738,2742],{"type":41,"tag":81,"props":2718,"children":2719},{"style":179},[2720],{"type":47,"value":2721},"  website",{"type":41,"tag":81,"props":2723,"children":2724},{"style":94},[2725],{"type":47,"value":2036},{"type":41,"tag":81,"props":2727,"children":2728},{"style":164},[2729],{"type":47,"value":192},{"type":41,"tag":81,"props":2731,"children":2732},{"style":94},[2733],{"type":47,"value":2571},{"type":41,"tag":81,"props":2735,"children":2736},{"style":164},[2737],{"type":47,"value":2504},{"type":41,"tag":81,"props":2739,"children":2740},{"style":94},[2741],{"type":47,"value":1935},{"type":41,"tag":81,"props":2743,"children":2744},{"style":515},[2745],{"type":47,"value":2746},"                   \u002F\u002F Optional, must be URL if provided\n",{"type":41,"tag":81,"props":2748,"children":2749},{"class":83,"line":296},[2750],{"type":41,"tag":81,"props":2751,"children":2752},{"style":94},[2753],{"type":47,"value":226},{"type":41,"tag":63,"props":2755,"children":2757},{"id":2756},"combining-validation-rules",[2758],{"type":47,"value":2759},"Combining Validation Rules",{"type":41,"tag":57,"props":2761,"children":2762},{},[2763,2765,2771,2773,2779],{"type":47,"value":2764},"Use ",{"type":41,"tag":77,"props":2766,"children":2768},{"className":2767},[],[2769],{"type":47,"value":2770},"&",{"type":47,"value":2772}," for AND logic (must pass all rules) and ",{"type":41,"tag":77,"props":2774,"children":2776},{"className":2775},[],[2777],{"type":47,"value":2778},"|",{"type":47,"value":2780}," for OR logic (must pass at least one):",{"type":41,"tag":70,"props":2782,"children":2784},{"className":72,"code":2783,"language":15,"meta":74,"style":74},"import { IsEmail, IsURL, MinLen, MaxLen } from \"encore.dev\u002Fvalidate\";\n\ninterface ContactRequest {\n  \u002F\u002F Must be valid email OR valid URL\n  contact: string & (IsEmail | IsURL);\n  \u002F\u002F Must be 5-100 chars AND be a valid URL\n  website: string & MinLen\u003C5> & MaxLen\u003C100> & IsURL;\n}\n",[2785],{"type":41,"tag":77,"props":2786,"children":2787},{"__ignoreMap":74},[2788,2851,2858,2874,2882,2928,2936,3005],{"type":41,"tag":81,"props":2789,"children":2790},{"class":83,"line":84},[2791,2795,2799,2803,2807,2811,2815,2819,2823,2827,2831,2835,2839,2843,2847],{"type":41,"tag":81,"props":2792,"children":2793},{"style":88},[2794],{"type":47,"value":91},{"type":41,"tag":81,"props":2796,"children":2797},{"style":94},[2798],{"type":47,"value":97},{"type":41,"tag":81,"props":2800,"children":2801},{"style":100},[2802],{"type":47,"value":2495},{"type":41,"tag":81,"props":2804,"children":2805},{"style":94},[2806],{"type":47,"value":402},{"type":41,"tag":81,"props":2808,"children":2809},{"style":100},[2810],{"type":47,"value":2504},{"type":41,"tag":81,"props":2812,"children":2813},{"style":94},[2814],{"type":47,"value":402},{"type":41,"tag":81,"props":2816,"children":2817},{"style":100},[2818],{"type":47,"value":2477},{"type":41,"tag":81,"props":2820,"children":2821},{"style":94},[2822],{"type":47,"value":402},{"type":41,"tag":81,"props":2824,"children":2825},{"style":100},[2826],{"type":47,"value":2486},{"type":41,"tag":81,"props":2828,"children":2829},{"style":94},[2830],{"type":47,"value":108},{"type":41,"tag":81,"props":2832,"children":2833},{"style":88},[2834],{"type":47,"value":113},{"type":41,"tag":81,"props":2836,"children":2837},{"style":94},[2838],{"type":47,"value":118},{"type":41,"tag":81,"props":2840,"children":2841},{"style":121},[2842],{"type":47,"value":2521},{"type":41,"tag":81,"props":2844,"children":2845},{"style":94},[2846],{"type":47,"value":129},{"type":41,"tag":81,"props":2848,"children":2849},{"style":94},[2850],{"type":47,"value":134},{"type":41,"tag":81,"props":2852,"children":2853},{"class":83,"line":175},[2854],{"type":41,"tag":81,"props":2855,"children":2856},{"emptyLinePlaceholder":232},[2857],{"type":47,"value":235},{"type":41,"tag":81,"props":2859,"children":2860},{"class":83,"line":199},[2861,2865,2870],{"type":41,"tag":81,"props":2862,"children":2863},{"style":158},[2864],{"type":47,"value":161},{"type":41,"tag":81,"props":2866,"children":2867},{"style":164},[2868],{"type":47,"value":2869}," ContactRequest",{"type":41,"tag":81,"props":2871,"children":2872},{"style":94},[2873],{"type":47,"value":172},{"type":41,"tag":81,"props":2875,"children":2876},{"class":83,"line":220},[2877],{"type":41,"tag":81,"props":2878,"children":2879},{"style":515},[2880],{"type":47,"value":2881},"  \u002F\u002F Must be valid email OR valid URL\n",{"type":41,"tag":81,"props":2883,"children":2884},{"class":83,"line":25},[2885,2890,2894,2898,2902,2906,2911,2916,2920,2924],{"type":41,"tag":81,"props":2886,"children":2887},{"style":179},[2888],{"type":47,"value":2889},"  contact",{"type":41,"tag":81,"props":2891,"children":2892},{"style":94},[2893],{"type":47,"value":187},{"type":41,"tag":81,"props":2895,"children":2896},{"style":164},[2897],{"type":47,"value":192},{"type":41,"tag":81,"props":2899,"children":2900},{"style":94},[2901],{"type":47,"value":2571},{"type":41,"tag":81,"props":2903,"children":2904},{"style":100},[2905],{"type":47,"value":461},{"type":41,"tag":81,"props":2907,"children":2908},{"style":164},[2909],{"type":47,"value":2910},"IsEmail",{"type":41,"tag":81,"props":2912,"children":2913},{"style":94},[2914],{"type":47,"value":2915}," |",{"type":41,"tag":81,"props":2917,"children":2918},{"style":164},[2919],{"type":47,"value":2504},{"type":41,"tag":81,"props":2921,"children":2922},{"style":100},[2923],{"type":47,"value":534},{"type":41,"tag":81,"props":2925,"children":2926},{"style":94},[2927],{"type":47,"value":134},{"type":41,"tag":81,"props":2929,"children":2930},{"class":83,"line":238},[2931],{"type":41,"tag":81,"props":2932,"children":2933},{"style":515},[2934],{"type":47,"value":2935},"  \u002F\u002F Must be 5-100 chars AND be a valid URL\n",{"type":41,"tag":81,"props":2937,"children":2938},{"class":83,"line":255},[2939,2943,2947,2951,2955,2959,2963,2968,2972,2976,2980,2984,2989,2993,2997,3001],{"type":41,"tag":81,"props":2940,"children":2941},{"style":179},[2942],{"type":47,"value":2721},{"type":41,"tag":81,"props":2944,"children":2945},{"style":94},[2946],{"type":47,"value":187},{"type":41,"tag":81,"props":2948,"children":2949},{"style":164},[2950],{"type":47,"value":192},{"type":41,"tag":81,"props":2952,"children":2953},{"style":94},[2954],{"type":47,"value":2571},{"type":41,"tag":81,"props":2956,"children":2957},{"style":164},[2958],{"type":47,"value":2477},{"type":41,"tag":81,"props":2960,"children":2961},{"style":94},[2962],{"type":47,"value":490},{"type":41,"tag":81,"props":2964,"children":2965},{"style":2615},[2966],{"type":47,"value":2967},"5",{"type":41,"tag":81,"props":2969,"children":2970},{"style":94},[2971],{"type":47,"value":500},{"type":41,"tag":81,"props":2973,"children":2974},{"style":94},[2975],{"type":47,"value":2571},{"type":41,"tag":81,"props":2977,"children":2978},{"style":164},[2979],{"type":47,"value":2486},{"type":41,"tag":81,"props":2981,"children":2982},{"style":94},[2983],{"type":47,"value":490},{"type":41,"tag":81,"props":2985,"children":2986},{"style":2615},[2987],{"type":47,"value":2988},"100",{"type":41,"tag":81,"props":2990,"children":2991},{"style":94},[2992],{"type":47,"value":500},{"type":41,"tag":81,"props":2994,"children":2995},{"style":94},[2996],{"type":47,"value":2571},{"type":41,"tag":81,"props":2998,"children":2999},{"style":164},[3000],{"type":47,"value":2504},{"type":41,"tag":81,"props":3002,"children":3003},{"style":94},[3004],{"type":47,"value":134},{"type":41,"tag":81,"props":3006,"children":3007},{"class":83,"line":276},[3008],{"type":41,"tag":81,"props":3009,"children":3010},{"style":94},[3011],{"type":47,"value":226},{"type":41,"tag":63,"props":3013,"children":3015},{"id":3014},"available-validators",[3016],{"type":47,"value":3017},"Available Validators",{"type":41,"tag":546,"props":3019,"children":3020},{},[3021,3042],{"type":41,"tag":550,"props":3022,"children":3023},{},[3024],{"type":41,"tag":554,"props":3025,"children":3026},{},[3027,3032,3037],{"type":41,"tag":558,"props":3028,"children":3029},{},[3030],{"type":47,"value":3031},"Validator",{"type":41,"tag":558,"props":3033,"children":3034},{},[3035],{"type":47,"value":3036},"Applies To",{"type":41,"tag":558,"props":3038,"children":3039},{},[3040],{"type":47,"value":3041},"Example",{"type":41,"tag":574,"props":3043,"children":3044},{},[3045,3070,3095,3121,3146,3170,3195,3220,3245],{"type":41,"tag":554,"props":3046,"children":3047},{},[3048,3057,3061],{"type":41,"tag":581,"props":3049,"children":3050},{},[3051],{"type":41,"tag":77,"props":3052,"children":3054},{"className":3053},[],[3055],{"type":47,"value":3056},"Min\u003CN>",{"type":41,"tag":581,"props":3058,"children":3059},{},[3060],{"type":47,"value":2049},{"type":41,"tag":581,"props":3062,"children":3063},{},[3064],{"type":41,"tag":77,"props":3065,"children":3067},{"className":3066},[],[3068],{"type":47,"value":3069},"age: number & Min\u003C18>",{"type":41,"tag":554,"props":3071,"children":3072},{},[3073,3082,3086],{"type":41,"tag":581,"props":3074,"children":3075},{},[3076],{"type":41,"tag":77,"props":3077,"children":3079},{"className":3078},[],[3080],{"type":47,"value":3081},"Max\u003CN>",{"type":41,"tag":581,"props":3083,"children":3084},{},[3085],{"type":47,"value":2049},{"type":41,"tag":581,"props":3087,"children":3088},{},[3089],{"type":41,"tag":77,"props":3090,"children":3092},{"className":3091},[],[3093],{"type":47,"value":3094},"count: number & Max\u003C100>",{"type":41,"tag":554,"props":3096,"children":3097},{},[3098,3107,3112],{"type":41,"tag":581,"props":3099,"children":3100},{},[3101],{"type":41,"tag":77,"props":3102,"children":3104},{"className":3103},[],[3105],{"type":47,"value":3106},"MinLen\u003CN>",{"type":41,"tag":581,"props":3108,"children":3109},{},[3110],{"type":47,"value":3111},"string, array",{"type":41,"tag":581,"props":3113,"children":3114},{},[3115],{"type":41,"tag":77,"props":3116,"children":3118},{"className":3117},[],[3119],{"type":47,"value":3120},"name: string & MinLen\u003C1>",{"type":41,"tag":554,"props":3122,"children":3123},{},[3124,3133,3137],{"type":41,"tag":581,"props":3125,"children":3126},{},[3127],{"type":41,"tag":77,"props":3128,"children":3130},{"className":3129},[],[3131],{"type":47,"value":3132},"MaxLen\u003CN>",{"type":41,"tag":581,"props":3134,"children":3135},{},[3136],{"type":47,"value":3111},{"type":41,"tag":581,"props":3138,"children":3139},{},[3140],{"type":41,"tag":77,"props":3141,"children":3143},{"className":3142},[],[3144],{"type":47,"value":3145},"tags: string[] & MaxLen\u003C10>",{"type":41,"tag":554,"props":3147,"children":3148},{},[3149,3157,3161],{"type":41,"tag":581,"props":3150,"children":3151},{},[3152],{"type":41,"tag":77,"props":3153,"children":3155},{"className":3154},[],[3156],{"type":47,"value":2910},{"type":41,"tag":581,"props":3158,"children":3159},{},[3160],{"type":47,"value":594},{"type":41,"tag":581,"props":3162,"children":3163},{},[3164],{"type":41,"tag":77,"props":3165,"children":3167},{"className":3166},[],[3168],{"type":47,"value":3169},"email: string & IsEmail",{"type":41,"tag":554,"props":3171,"children":3172},{},[3173,3182,3186],{"type":41,"tag":581,"props":3174,"children":3175},{},[3176],{"type":41,"tag":77,"props":3177,"children":3179},{"className":3178},[],[3180],{"type":47,"value":3181},"IsURL",{"type":41,"tag":581,"props":3183,"children":3184},{},[3185],{"type":47,"value":594},{"type":41,"tag":581,"props":3187,"children":3188},{},[3189],{"type":41,"tag":77,"props":3190,"children":3192},{"className":3191},[],[3193],{"type":47,"value":3194},"link: string & IsURL",{"type":41,"tag":554,"props":3196,"children":3197},{},[3198,3207,3211],{"type":41,"tag":581,"props":3199,"children":3200},{},[3201],{"type":41,"tag":77,"props":3202,"children":3204},{"className":3203},[],[3205],{"type":47,"value":3206},"StartsWith\u003CS>",{"type":41,"tag":581,"props":3208,"children":3209},{},[3210],{"type":47,"value":594},{"type":41,"tag":581,"props":3212,"children":3213},{},[3214],{"type":41,"tag":77,"props":3215,"children":3217},{"className":3216},[],[3218],{"type":47,"value":3219},"id: string & StartsWith\u003C\"usr_\">",{"type":41,"tag":554,"props":3221,"children":3222},{},[3223,3232,3236],{"type":41,"tag":581,"props":3224,"children":3225},{},[3226],{"type":41,"tag":77,"props":3227,"children":3229},{"className":3228},[],[3230],{"type":47,"value":3231},"EndsWith\u003CS>",{"type":41,"tag":581,"props":3233,"children":3234},{},[3235],{"type":47,"value":594},{"type":41,"tag":581,"props":3237,"children":3238},{},[3239],{"type":41,"tag":77,"props":3240,"children":3242},{"className":3241},[],[3243],{"type":47,"value":3244},"file: string & EndsWith\u003C\".json\">",{"type":41,"tag":554,"props":3246,"children":3247},{},[3248,3257,3261],{"type":41,"tag":581,"props":3249,"children":3250},{},[3251],{"type":41,"tag":77,"props":3252,"children":3254},{"className":3253},[],[3255],{"type":47,"value":3256},"MatchesRegexp\u003CR>",{"type":41,"tag":581,"props":3258,"children":3259},{},[3260],{"type":47,"value":594},{"type":41,"tag":581,"props":3262,"children":3263},{},[3264],{"type":41,"tag":77,"props":3265,"children":3267},{"className":3266},[],[3268],{"type":47,"value":3269},"code: string & MatchesRegexp\u003C\"^[A-Z]{3}$\">",{"type":41,"tag":63,"props":3271,"children":3273},{"id":3272},"validation-error-response",[3274],{"type":47,"value":3275},"Validation Error Response",{"type":41,"tag":57,"props":3277,"children":3278},{},[3279],{"type":47,"value":3280},"Invalid requests return 400 with details:",{"type":41,"tag":70,"props":3282,"children":3286},{"className":3283,"code":3284,"language":3285,"meta":74,"style":74},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"code\": \"invalid_argument\",\n  \"message\": \"validation failed\",\n  \"details\": { \"field\": \"email\", \"error\": \"must be a valid email\" }\n}\n","json",[3287],{"type":41,"tag":77,"props":3288,"children":3289},{"__ignoreMap":74},[3290,3298,3336,3373,3465],{"type":41,"tag":81,"props":3291,"children":3292},{"class":83,"line":84},[3293],{"type":41,"tag":81,"props":3294,"children":3295},{"style":94},[3296],{"type":47,"value":3297},"{\n",{"type":41,"tag":81,"props":3299,"children":3300},{"class":83,"line":175},[3301,3306,3310,3314,3318,3322,3327,3331],{"type":41,"tag":81,"props":3302,"children":3303},{"style":94},[3304],{"type":47,"value":3305},"  \"",{"type":41,"tag":81,"props":3307,"children":3308},{"style":158},[3309],{"type":47,"value":77},{"type":41,"tag":81,"props":3311,"children":3312},{"style":94},[3313],{"type":47,"value":129},{"type":41,"tag":81,"props":3315,"children":3316},{"style":94},[3317],{"type":47,"value":187},{"type":41,"tag":81,"props":3319,"children":3320},{"style":94},[3321],{"type":47,"value":118},{"type":41,"tag":81,"props":3323,"children":3324},{"style":121},[3325],{"type":47,"value":3326},"invalid_argument",{"type":41,"tag":81,"props":3328,"children":3329},{"style":94},[3330],{"type":47,"value":129},{"type":41,"tag":81,"props":3332,"children":3333},{"style":94},[3334],{"type":47,"value":3335},",\n",{"type":41,"tag":81,"props":3337,"children":3338},{"class":83,"line":199},[3339,3343,3348,3352,3356,3360,3365,3369],{"type":41,"tag":81,"props":3340,"children":3341},{"style":94},[3342],{"type":47,"value":3305},{"type":41,"tag":81,"props":3344,"children":3345},{"style":158},[3346],{"type":47,"value":3347},"message",{"type":41,"tag":81,"props":3349,"children":3350},{"style":94},[3351],{"type":47,"value":129},{"type":41,"tag":81,"props":3353,"children":3354},{"style":94},[3355],{"type":47,"value":187},{"type":41,"tag":81,"props":3357,"children":3358},{"style":94},[3359],{"type":47,"value":118},{"type":41,"tag":81,"props":3361,"children":3362},{"style":121},[3363],{"type":47,"value":3364},"validation failed",{"type":41,"tag":81,"props":3366,"children":3367},{"style":94},[3368],{"type":47,"value":129},{"type":41,"tag":81,"props":3370,"children":3371},{"style":94},[3372],{"type":47,"value":3335},{"type":41,"tag":81,"props":3374,"children":3375},{"class":83,"line":220},[3376,3380,3385,3389,3393,3397,3401,3406,3410,3414,3418,3423,3427,3431,3435,3440,3444,3448,3452,3457,3461],{"type":41,"tag":81,"props":3377,"children":3378},{"style":94},[3379],{"type":47,"value":3305},{"type":41,"tag":81,"props":3381,"children":3382},{"style":158},[3383],{"type":47,"value":3384},"details",{"type":41,"tag":81,"props":3386,"children":3387},{"style":94},[3388],{"type":47,"value":129},{"type":41,"tag":81,"props":3390,"children":3391},{"style":94},[3392],{"type":47,"value":187},{"type":41,"tag":81,"props":3394,"children":3395},{"style":94},[3396],{"type":47,"value":97},{"type":41,"tag":81,"props":3398,"children":3399},{"style":94},[3400],{"type":47,"value":118},{"type":41,"tag":81,"props":3402,"children":3403},{"style":164},[3404],{"type":47,"value":3405},"field",{"type":41,"tag":81,"props":3407,"children":3408},{"style":94},[3409],{"type":47,"value":129},{"type":41,"tag":81,"props":3411,"children":3412},{"style":94},[3413],{"type":47,"value":187},{"type":41,"tag":81,"props":3415,"children":3416},{"style":94},[3417],{"type":47,"value":118},{"type":41,"tag":81,"props":3419,"children":3420},{"style":121},[3421],{"type":47,"value":3422},"email",{"type":41,"tag":81,"props":3424,"children":3425},{"style":94},[3426],{"type":47,"value":129},{"type":41,"tag":81,"props":3428,"children":3429},{"style":94},[3430],{"type":47,"value":402},{"type":41,"tag":81,"props":3432,"children":3433},{"style":94},[3434],{"type":47,"value":118},{"type":41,"tag":81,"props":3436,"children":3437},{"style":164},[3438],{"type":47,"value":3439},"error",{"type":41,"tag":81,"props":3441,"children":3442},{"style":94},[3443],{"type":47,"value":129},{"type":41,"tag":81,"props":3445,"children":3446},{"style":94},[3447],{"type":47,"value":187},{"type":41,"tag":81,"props":3449,"children":3450},{"style":94},[3451],{"type":47,"value":118},{"type":41,"tag":81,"props":3453,"children":3454},{"style":121},[3455],{"type":47,"value":3456},"must be a valid email",{"type":41,"tag":81,"props":3458,"children":3459},{"style":94},[3460],{"type":47,"value":129},{"type":41,"tag":81,"props":3462,"children":3463},{"style":94},[3464],{"type":47,"value":885},{"type":41,"tag":81,"props":3466,"children":3467},{"class":83,"line":25},[3468],{"type":41,"tag":81,"props":3469,"children":3470},{"style":94},[3471],{"type":47,"value":226},{"type":41,"tag":50,"props":3473,"children":3475},{"id":3474},"error-handling",[3476],{"type":47,"value":3477},"Error Handling",{"type":41,"tag":57,"props":3479,"children":3480},{},[3481,3482,3488],{"type":47,"value":2764},{"type":41,"tag":77,"props":3483,"children":3485},{"className":3484},[],[3486],{"type":47,"value":3487},"APIError",{"type":47,"value":3489}," for proper HTTP error responses:",{"type":41,"tag":70,"props":3491,"children":3493},{"className":72,"code":3492,"language":15,"meta":74,"style":74},"import { APIError, ErrCode } from \"encore.dev\u002Fapi\";\n\n\u002F\u002F Throw with error code\nthrow new APIError(ErrCode.NotFound, \"user not found\");\n\n\u002F\u002F Or use shorthand\nthrow APIError.notFound(\"user not found\");\nthrow APIError.invalidArgument(\"email is required\");\nthrow APIError.unauthenticated(\"invalid token\");\n",[3494],{"type":41,"tag":77,"props":3495,"children":3496},{"__ignoreMap":74},[3497,3546,3553,3561,3617,3624,3632,3676,3721],{"type":41,"tag":81,"props":3498,"children":3499},{"class":83,"line":84},[3500,3504,3508,3513,3517,3522,3526,3530,3534,3538,3542],{"type":41,"tag":81,"props":3501,"children":3502},{"style":88},[3503],{"type":47,"value":91},{"type":41,"tag":81,"props":3505,"children":3506},{"style":94},[3507],{"type":47,"value":97},{"type":41,"tag":81,"props":3509,"children":3510},{"style":100},[3511],{"type":47,"value":3512}," APIError",{"type":41,"tag":81,"props":3514,"children":3515},{"style":94},[3516],{"type":47,"value":402},{"type":41,"tag":81,"props":3518,"children":3519},{"style":100},[3520],{"type":47,"value":3521}," ErrCode",{"type":41,"tag":81,"props":3523,"children":3524},{"style":94},[3525],{"type":47,"value":108},{"type":41,"tag":81,"props":3527,"children":3528},{"style":88},[3529],{"type":47,"value":113},{"type":41,"tag":81,"props":3531,"children":3532},{"style":94},[3533],{"type":47,"value":118},{"type":41,"tag":81,"props":3535,"children":3536},{"style":121},[3537],{"type":47,"value":124},{"type":41,"tag":81,"props":3539,"children":3540},{"style":94},[3541],{"type":47,"value":129},{"type":41,"tag":81,"props":3543,"children":3544},{"style":94},[3545],{"type":47,"value":134},{"type":41,"tag":81,"props":3547,"children":3548},{"class":83,"line":175},[3549],{"type":41,"tag":81,"props":3550,"children":3551},{"emptyLinePlaceholder":232},[3552],{"type":47,"value":235},{"type":41,"tag":81,"props":3554,"children":3555},{"class":83,"line":199},[3556],{"type":41,"tag":81,"props":3557,"children":3558},{"style":515},[3559],{"type":47,"value":3560},"\u002F\u002F Throw with error code\n",{"type":41,"tag":81,"props":3562,"children":3563},{"class":83,"line":220},[3564,3569,3574,3578,3583,3587,3592,3596,3600,3605,3609,3613],{"type":41,"tag":81,"props":3565,"children":3566},{"style":88},[3567],{"type":47,"value":3568},"throw",{"type":41,"tag":81,"props":3570,"children":3571},{"style":94},[3572],{"type":47,"value":3573}," new",{"type":41,"tag":81,"props":3575,"children":3576},{"style":360},[3577],{"type":47,"value":3512},{"type":41,"tag":81,"props":3579,"children":3580},{"style":100},[3581],{"type":47,"value":3582},"(ErrCode",{"type":41,"tag":81,"props":3584,"children":3585},{"style":94},[3586],{"type":47,"value":1813},{"type":41,"tag":81,"props":3588,"children":3589},{"style":100},[3590],{"type":47,"value":3591},"NotFound",{"type":41,"tag":81,"props":3593,"children":3594},{"style":94},[3595],{"type":47,"value":402},{"type":41,"tag":81,"props":3597,"children":3598},{"style":94},[3599],{"type":47,"value":118},{"type":41,"tag":81,"props":3601,"children":3602},{"style":121},[3603],{"type":47,"value":3604},"user not found",{"type":41,"tag":81,"props":3606,"children":3607},{"style":94},[3608],{"type":47,"value":129},{"type":41,"tag":81,"props":3610,"children":3611},{"style":100},[3612],{"type":47,"value":534},{"type":41,"tag":81,"props":3614,"children":3615},{"style":94},[3616],{"type":47,"value":134},{"type":41,"tag":81,"props":3618,"children":3619},{"class":83,"line":25},[3620],{"type":41,"tag":81,"props":3621,"children":3622},{"emptyLinePlaceholder":232},[3623],{"type":47,"value":235},{"type":41,"tag":81,"props":3625,"children":3626},{"class":83,"line":238},[3627],{"type":41,"tag":81,"props":3628,"children":3629},{"style":515},[3630],{"type":47,"value":3631},"\u002F\u002F Or use shorthand\n",{"type":41,"tag":81,"props":3633,"children":3634},{"class":83,"line":255},[3635,3639,3643,3647,3652,3656,3660,3664,3668,3672],{"type":41,"tag":81,"props":3636,"children":3637},{"style":88},[3638],{"type":47,"value":3568},{"type":41,"tag":81,"props":3640,"children":3641},{"style":100},[3642],{"type":47,"value":3512},{"type":41,"tag":81,"props":3644,"children":3645},{"style":94},[3646],{"type":47,"value":1813},{"type":41,"tag":81,"props":3648,"children":3649},{"style":360},[3650],{"type":47,"value":3651},"notFound",{"type":41,"tag":81,"props":3653,"children":3654},{"style":100},[3655],{"type":47,"value":1771},{"type":41,"tag":81,"props":3657,"children":3658},{"style":94},[3659],{"type":47,"value":129},{"type":41,"tag":81,"props":3661,"children":3662},{"style":121},[3663],{"type":47,"value":3604},{"type":41,"tag":81,"props":3665,"children":3666},{"style":94},[3667],{"type":47,"value":129},{"type":41,"tag":81,"props":3669,"children":3670},{"style":100},[3671],{"type":47,"value":534},{"type":41,"tag":81,"props":3673,"children":3674},{"style":94},[3675],{"type":47,"value":134},{"type":41,"tag":81,"props":3677,"children":3678},{"class":83,"line":276},[3679,3683,3687,3691,3696,3700,3704,3709,3713,3717],{"type":41,"tag":81,"props":3680,"children":3681},{"style":88},[3682],{"type":47,"value":3568},{"type":41,"tag":81,"props":3684,"children":3685},{"style":100},[3686],{"type":47,"value":3512},{"type":41,"tag":81,"props":3688,"children":3689},{"style":94},[3690],{"type":47,"value":1813},{"type":41,"tag":81,"props":3692,"children":3693},{"style":360},[3694],{"type":47,"value":3695},"invalidArgument",{"type":41,"tag":81,"props":3697,"children":3698},{"style":100},[3699],{"type":47,"value":1771},{"type":41,"tag":81,"props":3701,"children":3702},{"style":94},[3703],{"type":47,"value":129},{"type":41,"tag":81,"props":3705,"children":3706},{"style":121},[3707],{"type":47,"value":3708},"email is required",{"type":41,"tag":81,"props":3710,"children":3711},{"style":94},[3712],{"type":47,"value":129},{"type":41,"tag":81,"props":3714,"children":3715},{"style":100},[3716],{"type":47,"value":534},{"type":41,"tag":81,"props":3718,"children":3719},{"style":94},[3720],{"type":47,"value":134},{"type":41,"tag":81,"props":3722,"children":3723},{"class":83,"line":296},[3724,3728,3732,3736,3741,3745,3749,3754,3758,3762],{"type":41,"tag":81,"props":3725,"children":3726},{"style":88},[3727],{"type":47,"value":3568},{"type":41,"tag":81,"props":3729,"children":3730},{"style":100},[3731],{"type":47,"value":3512},{"type":41,"tag":81,"props":3733,"children":3734},{"style":94},[3735],{"type":47,"value":1813},{"type":41,"tag":81,"props":3737,"children":3738},{"style":360},[3739],{"type":47,"value":3740},"unauthenticated",{"type":41,"tag":81,"props":3742,"children":3743},{"style":100},[3744],{"type":47,"value":1771},{"type":41,"tag":81,"props":3746,"children":3747},{"style":94},[3748],{"type":47,"value":129},{"type":41,"tag":81,"props":3750,"children":3751},{"style":121},[3752],{"type":47,"value":3753},"invalid token",{"type":41,"tag":81,"props":3755,"children":3756},{"style":94},[3757],{"type":47,"value":129},{"type":41,"tag":81,"props":3759,"children":3760},{"style":100},[3761],{"type":47,"value":534},{"type":41,"tag":81,"props":3763,"children":3764},{"style":94},[3765],{"type":47,"value":134},{"type":41,"tag":50,"props":3767,"children":3769},{"id":3768},"common-error-codes",[3770],{"type":47,"value":3771},"Common Error Codes",{"type":41,"tag":546,"props":3773,"children":3774},{},[3775,3796],{"type":41,"tag":550,"props":3776,"children":3777},{},[3778],{"type":41,"tag":554,"props":3779,"children":3780},{},[3781,3786,3791],{"type":41,"tag":558,"props":3782,"children":3783},{},[3784],{"type":47,"value":3785},"Code",{"type":41,"tag":558,"props":3787,"children":3788},{},[3789],{"type":47,"value":3790},"HTTP Status",{"type":41,"tag":558,"props":3792,"children":3793},{},[3794],{"type":47,"value":3795},"Usage",{"type":41,"tag":574,"props":3797,"children":3798},{},[3799,3820,3842,3864,3886],{"type":41,"tag":554,"props":3800,"children":3801},{},[3802,3810,3815],{"type":41,"tag":581,"props":3803,"children":3804},{},[3805],{"type":41,"tag":77,"props":3806,"children":3808},{"className":3807},[],[3809],{"type":47,"value":3591},{"type":41,"tag":581,"props":3811,"children":3812},{},[3813],{"type":47,"value":3814},"404",{"type":41,"tag":581,"props":3816,"children":3817},{},[3818],{"type":47,"value":3819},"Resource doesn't exist",{"type":41,"tag":554,"props":3821,"children":3822},{},[3823,3832,3837],{"type":41,"tag":581,"props":3824,"children":3825},{},[3826],{"type":41,"tag":77,"props":3827,"children":3829},{"className":3828},[],[3830],{"type":47,"value":3831},"InvalidArgument",{"type":41,"tag":581,"props":3833,"children":3834},{},[3835],{"type":47,"value":3836},"400",{"type":41,"tag":581,"props":3838,"children":3839},{},[3840],{"type":47,"value":3841},"Bad input",{"type":41,"tag":554,"props":3843,"children":3844},{},[3845,3854,3859],{"type":41,"tag":581,"props":3846,"children":3847},{},[3848],{"type":41,"tag":77,"props":3849,"children":3851},{"className":3850},[],[3852],{"type":47,"value":3853},"Unauthenticated",{"type":41,"tag":581,"props":3855,"children":3856},{},[3857],{"type":47,"value":3858},"401",{"type":41,"tag":581,"props":3860,"children":3861},{},[3862],{"type":47,"value":3863},"Missing\u002Finvalid auth",{"type":41,"tag":554,"props":3865,"children":3866},{},[3867,3876,3881],{"type":41,"tag":581,"props":3868,"children":3869},{},[3870],{"type":41,"tag":77,"props":3871,"children":3873},{"className":3872},[],[3874],{"type":47,"value":3875},"PermissionDenied",{"type":41,"tag":581,"props":3877,"children":3878},{},[3879],{"type":47,"value":3880},"403",{"type":41,"tag":581,"props":3882,"children":3883},{},[3884],{"type":47,"value":3885},"Not allowed",{"type":41,"tag":554,"props":3887,"children":3888},{},[3889,3898,3903],{"type":41,"tag":581,"props":3890,"children":3891},{},[3892],{"type":41,"tag":77,"props":3893,"children":3895},{"className":3894},[],[3896],{"type":47,"value":3897},"AlreadyExists",{"type":41,"tag":581,"props":3899,"children":3900},{},[3901],{"type":47,"value":3902},"409",{"type":41,"tag":581,"props":3904,"children":3905},{},[3906],{"type":47,"value":3907},"Duplicate resource",{"type":41,"tag":50,"props":3909,"children":3911},{"id":3910},"static-assets",[3912],{"type":47,"value":3913},"Static Assets",{"type":41,"tag":57,"props":3915,"children":3916},{},[3917,3919,3925],{"type":47,"value":3918},"Serve static files (HTML, CSS, JS, images) with ",{"type":41,"tag":77,"props":3920,"children":3922},{"className":3921},[],[3923],{"type":47,"value":3924},"api.static",{"type":47,"value":187},{"type":41,"tag":70,"props":3927,"children":3929},{"className":72,"code":3928,"language":15,"meta":74,"style":74},"import { api } from \"encore.dev\u002Fapi\";\n\n\u002F\u002F Serve files from .\u002Fassets under \u002Fstatic\u002F*\nexport const assets = api.static(\n  { expose: true, path: \"\u002Fstatic\u002F*path\", dir: \".\u002Fassets\" }\n);\n\n\u002F\u002F Serve at root (use !path for fallback routing)\nexport const frontend = api.static(\n  { expose: true, path: \"\u002F!path\", dir: \".\u002Fdist\" }\n);\n\n\u002F\u002F Custom 404 page\nexport const app = api.static(\n  { expose: true, path: \"\u002F!path\", dir: \".\u002Fpublic\", notFound: \".\u002F404.html\" }\n);\n",[3930],{"type":41,"tag":77,"props":3931,"children":3932},{"__ignoreMap":74},[3933,3972,3979,3987,4024,4098,4109,4116,4124,4160,4233,4244,4251,4259,4295,4393],{"type":41,"tag":81,"props":3934,"children":3935},{"class":83,"line":84},[3936,3940,3944,3948,3952,3956,3960,3964,3968],{"type":41,"tag":81,"props":3937,"children":3938},{"style":88},[3939],{"type":47,"value":91},{"type":41,"tag":81,"props":3941,"children":3942},{"style":94},[3943],{"type":47,"value":97},{"type":41,"tag":81,"props":3945,"children":3946},{"style":100},[3947],{"type":47,"value":103},{"type":41,"tag":81,"props":3949,"children":3950},{"style":94},[3951],{"type":47,"value":108},{"type":41,"tag":81,"props":3953,"children":3954},{"style":88},[3955],{"type":47,"value":113},{"type":41,"tag":81,"props":3957,"children":3958},{"style":94},[3959],{"type":47,"value":118},{"type":41,"tag":81,"props":3961,"children":3962},{"style":121},[3963],{"type":47,"value":124},{"type":41,"tag":81,"props":3965,"children":3966},{"style":94},[3967],{"type":47,"value":129},{"type":41,"tag":81,"props":3969,"children":3970},{"style":94},[3971],{"type":47,"value":134},{"type":41,"tag":81,"props":3973,"children":3974},{"class":83,"line":175},[3975],{"type":41,"tag":81,"props":3976,"children":3977},{"emptyLinePlaceholder":232},[3978],{"type":47,"value":235},{"type":41,"tag":81,"props":3980,"children":3981},{"class":83,"line":199},[3982],{"type":41,"tag":81,"props":3983,"children":3984},{"style":515},[3985],{"type":47,"value":3986},"\u002F\u002F Serve files from .\u002Fassets under \u002Fstatic\u002F*\n",{"type":41,"tag":81,"props":3988,"children":3989},{"class":83,"line":220},[3990,3994,3998,4003,4007,4011,4015,4020],{"type":41,"tag":81,"props":3991,"children":3992},{"style":88},[3993],{"type":47,"value":342},{"type":41,"tag":81,"props":3995,"children":3996},{"style":158},[3997],{"type":47,"value":347},{"type":41,"tag":81,"props":3999,"children":4000},{"style":100},[4001],{"type":47,"value":4002}," assets ",{"type":41,"tag":81,"props":4004,"children":4005},{"style":94},[4006],{"type":47,"value":357},{"type":41,"tag":81,"props":4008,"children":4009},{"style":100},[4010],{"type":47,"value":103},{"type":41,"tag":81,"props":4012,"children":4013},{"style":94},[4014],{"type":47,"value":1813},{"type":41,"tag":81,"props":4016,"children":4017},{"style":360},[4018],{"type":47,"value":4019},"static",{"type":41,"tag":81,"props":4021,"children":4022},{"style":100},[4023],{"type":47,"value":367},{"type":41,"tag":81,"props":4025,"children":4026},{"class":83,"line":25},[4027,4031,4035,4039,4043,4047,4051,4055,4059,4064,4068,4072,4077,4081,4085,4090,4094],{"type":41,"tag":81,"props":4028,"children":4029},{"style":94},[4030],{"type":47,"value":375},{"type":41,"tag":81,"props":4032,"children":4033},{"style":179},[4034],{"type":47,"value":433},{"type":41,"tag":81,"props":4036,"children":4037},{"style":94},[4038],{"type":47,"value":187},{"type":41,"tag":81,"props":4040,"children":4041},{"style":440},[4042],{"type":47,"value":443},{"type":41,"tag":81,"props":4044,"children":4045},{"style":94},[4046],{"type":47,"value":402},{"type":41,"tag":81,"props":4048,"children":4049},{"style":179},[4050],{"type":47,"value":407},{"type":41,"tag":81,"props":4052,"children":4053},{"style":94},[4054],{"type":47,"value":187},{"type":41,"tag":81,"props":4056,"children":4057},{"style":94},[4058],{"type":47,"value":118},{"type":41,"tag":81,"props":4060,"children":4061},{"style":121},[4062],{"type":47,"value":4063},"\u002Fstatic\u002F*path",{"type":41,"tag":81,"props":4065,"children":4066},{"style":94},[4067],{"type":47,"value":129},{"type":41,"tag":81,"props":4069,"children":4070},{"style":94},[4071],{"type":47,"value":402},{"type":41,"tag":81,"props":4073,"children":4074},{"style":179},[4075],{"type":47,"value":4076}," dir",{"type":41,"tag":81,"props":4078,"children":4079},{"style":94},[4080],{"type":47,"value":187},{"type":41,"tag":81,"props":4082,"children":4083},{"style":94},[4084],{"type":47,"value":118},{"type":41,"tag":81,"props":4086,"children":4087},{"style":121},[4088],{"type":47,"value":4089},".\u002Fassets",{"type":41,"tag":81,"props":4091,"children":4092},{"style":94},[4093],{"type":47,"value":129},{"type":41,"tag":81,"props":4095,"children":4096},{"style":94},[4097],{"type":47,"value":885},{"type":41,"tag":81,"props":4099,"children":4100},{"class":83,"line":238},[4101,4105],{"type":41,"tag":81,"props":4102,"children":4103},{"style":100},[4104],{"type":47,"value":534},{"type":41,"tag":81,"props":4106,"children":4107},{"style":94},[4108],{"type":47,"value":134},{"type":41,"tag":81,"props":4110,"children":4111},{"class":83,"line":255},[4112],{"type":41,"tag":81,"props":4113,"children":4114},{"emptyLinePlaceholder":232},[4115],{"type":47,"value":235},{"type":41,"tag":81,"props":4117,"children":4118},{"class":83,"line":276},[4119],{"type":41,"tag":81,"props":4120,"children":4121},{"style":515},[4122],{"type":47,"value":4123},"\u002F\u002F Serve at root (use !path for fallback routing)\n",{"type":41,"tag":81,"props":4125,"children":4126},{"class":83,"line":296},[4127,4131,4135,4140,4144,4148,4152,4156],{"type":41,"tag":81,"props":4128,"children":4129},{"style":88},[4130],{"type":47,"value":342},{"type":41,"tag":81,"props":4132,"children":4133},{"style":158},[4134],{"type":47,"value":347},{"type":41,"tag":81,"props":4136,"children":4137},{"style":100},[4138],{"type":47,"value":4139}," frontend ",{"type":41,"tag":81,"props":4141,"children":4142},{"style":94},[4143],{"type":47,"value":357},{"type":41,"tag":81,"props":4145,"children":4146},{"style":100},[4147],{"type":47,"value":103},{"type":41,"tag":81,"props":4149,"children":4150},{"style":94},[4151],{"type":47,"value":1813},{"type":41,"tag":81,"props":4153,"children":4154},{"style":360},[4155],{"type":47,"value":4019},{"type":41,"tag":81,"props":4157,"children":4158},{"style":100},[4159],{"type":47,"value":367},{"type":41,"tag":81,"props":4161,"children":4162},{"class":83,"line":316},[4163,4167,4171,4175,4179,4183,4187,4191,4195,4200,4204,4208,4212,4216,4220,4225,4229],{"type":41,"tag":81,"props":4164,"children":4165},{"style":94},[4166],{"type":47,"value":375},{"type":41,"tag":81,"props":4168,"children":4169},{"style":179},[4170],{"type":47,"value":433},{"type":41,"tag":81,"props":4172,"children":4173},{"style":94},[4174],{"type":47,"value":187},{"type":41,"tag":81,"props":4176,"children":4177},{"style":440},[4178],{"type":47,"value":443},{"type":41,"tag":81,"props":4180,"children":4181},{"style":94},[4182],{"type":47,"value":402},{"type":41,"tag":81,"props":4184,"children":4185},{"style":179},[4186],{"type":47,"value":407},{"type":41,"tag":81,"props":4188,"children":4189},{"style":94},[4190],{"type":47,"value":187},{"type":41,"tag":81,"props":4192,"children":4193},{"style":94},[4194],{"type":47,"value":118},{"type":41,"tag":81,"props":4196,"children":4197},{"style":121},[4198],{"type":47,"value":4199},"\u002F!path",{"type":41,"tag":81,"props":4201,"children":4202},{"style":94},[4203],{"type":47,"value":129},{"type":41,"tag":81,"props":4205,"children":4206},{"style":94},[4207],{"type":47,"value":402},{"type":41,"tag":81,"props":4209,"children":4210},{"style":179},[4211],{"type":47,"value":4076},{"type":41,"tag":81,"props":4213,"children":4214},{"style":94},[4215],{"type":47,"value":187},{"type":41,"tag":81,"props":4217,"children":4218},{"style":94},[4219],{"type":47,"value":118},{"type":41,"tag":81,"props":4221,"children":4222},{"style":121},[4223],{"type":47,"value":4224},".\u002Fdist",{"type":41,"tag":81,"props":4226,"children":4227},{"style":94},[4228],{"type":47,"value":129},{"type":41,"tag":81,"props":4230,"children":4231},{"style":94},[4232],{"type":47,"value":885},{"type":41,"tag":81,"props":4234,"children":4235},{"class":83,"line":1059},[4236,4240],{"type":41,"tag":81,"props":4237,"children":4238},{"style":100},[4239],{"type":47,"value":534},{"type":41,"tag":81,"props":4241,"children":4242},{"style":94},[4243],{"type":47,"value":134},{"type":41,"tag":81,"props":4245,"children":4246},{"class":83,"line":1071},[4247],{"type":41,"tag":81,"props":4248,"children":4249},{"emptyLinePlaceholder":232},[4250],{"type":47,"value":235},{"type":41,"tag":81,"props":4252,"children":4253},{"class":83,"line":1079},[4254],{"type":41,"tag":81,"props":4255,"children":4256},{"style":515},[4257],{"type":47,"value":4258},"\u002F\u002F Custom 404 page\n",{"type":41,"tag":81,"props":4260,"children":4261},{"class":83,"line":1088},[4262,4266,4270,4275,4279,4283,4287,4291],{"type":41,"tag":81,"props":4263,"children":4264},{"style":88},[4265],{"type":47,"value":342},{"type":41,"tag":81,"props":4267,"children":4268},{"style":158},[4269],{"type":47,"value":347},{"type":41,"tag":81,"props":4271,"children":4272},{"style":100},[4273],{"type":47,"value":4274}," app ",{"type":41,"tag":81,"props":4276,"children":4277},{"style":94},[4278],{"type":47,"value":357},{"type":41,"tag":81,"props":4280,"children":4281},{"style":100},[4282],{"type":47,"value":103},{"type":41,"tag":81,"props":4284,"children":4285},{"style":94},[4286],{"type":47,"value":1813},{"type":41,"tag":81,"props":4288,"children":4289},{"style":360},[4290],{"type":47,"value":4019},{"type":41,"tag":81,"props":4292,"children":4293},{"style":100},[4294],{"type":47,"value":367},{"type":41,"tag":81,"props":4296,"children":4297},{"class":83,"line":1117},[4298,4302,4306,4310,4314,4318,4322,4326,4330,4334,4338,4342,4346,4350,4354,4359,4363,4367,4372,4376,4380,4385,4389],{"type":41,"tag":81,"props":4299,"children":4300},{"style":94},[4301],{"type":47,"value":375},{"type":41,"tag":81,"props":4303,"children":4304},{"style":179},[4305],{"type":47,"value":433},{"type":41,"tag":81,"props":4307,"children":4308},{"style":94},[4309],{"type":47,"value":187},{"type":41,"tag":81,"props":4311,"children":4312},{"style":440},[4313],{"type":47,"value":443},{"type":41,"tag":81,"props":4315,"children":4316},{"style":94},[4317],{"type":47,"value":402},{"type":41,"tag":81,"props":4319,"children":4320},{"style":179},[4321],{"type":47,"value":407},{"type":41,"tag":81,"props":4323,"children":4324},{"style":94},[4325],{"type":47,"value":187},{"type":41,"tag":81,"props":4327,"children":4328},{"style":94},[4329],{"type":47,"value":118},{"type":41,"tag":81,"props":4331,"children":4332},{"style":121},[4333],{"type":47,"value":4199},{"type":41,"tag":81,"props":4335,"children":4336},{"style":94},[4337],{"type":47,"value":129},{"type":41,"tag":81,"props":4339,"children":4340},{"style":94},[4341],{"type":47,"value":402},{"type":41,"tag":81,"props":4343,"children":4344},{"style":179},[4345],{"type":47,"value":4076},{"type":41,"tag":81,"props":4347,"children":4348},{"style":94},[4349],{"type":47,"value":187},{"type":41,"tag":81,"props":4351,"children":4352},{"style":94},[4353],{"type":47,"value":118},{"type":41,"tag":81,"props":4355,"children":4356},{"style":121},[4357],{"type":47,"value":4358},".\u002Fpublic",{"type":41,"tag":81,"props":4360,"children":4361},{"style":94},[4362],{"type":47,"value":129},{"type":41,"tag":81,"props":4364,"children":4365},{"style":94},[4366],{"type":47,"value":402},{"type":41,"tag":81,"props":4368,"children":4369},{"style":179},[4370],{"type":47,"value":4371}," notFound",{"type":41,"tag":81,"props":4373,"children":4374},{"style":94},[4375],{"type":47,"value":187},{"type":41,"tag":81,"props":4377,"children":4378},{"style":94},[4379],{"type":47,"value":118},{"type":41,"tag":81,"props":4381,"children":4382},{"style":121},[4383],{"type":47,"value":4384},".\u002F404.html",{"type":41,"tag":81,"props":4386,"children":4387},{"style":94},[4388],{"type":47,"value":129},{"type":41,"tag":81,"props":4390,"children":4391},{"style":94},[4392],{"type":47,"value":885},{"type":41,"tag":81,"props":4394,"children":4395},{"class":83,"line":1191},[4396,4400],{"type":41,"tag":81,"props":4397,"children":4398},{"style":100},[4399],{"type":47,"value":534},{"type":41,"tag":81,"props":4401,"children":4402},{"style":94},[4403],{"type":47,"value":134},{"type":41,"tag":63,"props":4405,"children":4407},{"id":4406},"path-syntax",[4408],{"type":47,"value":4409},"Path Syntax",{"type":41,"tag":4411,"props":4412,"children":4413},"ul",{},[4414,4432],{"type":41,"tag":4415,"props":4416,"children":4417},"li",{},[4418,4424,4426,4431],{"type":41,"tag":77,"props":4419,"children":4421},{"className":4420},[],[4422],{"type":47,"value":4423},"*path",{"type":47,"value":4425}," - Standard wildcard: matches all paths under the prefix (e.g., ",{"type":41,"tag":77,"props":4427,"children":4429},{"className":4428},[],[4430],{"type":47,"value":4063},{"type":47,"value":534},{"type":41,"tag":4415,"props":4433,"children":4434},{},[4435,4441,4443],{"type":41,"tag":77,"props":4436,"children":4438},{"className":4437},[],[4439],{"type":47,"value":4440},"!path",{"type":47,"value":4442}," - Fallback routing: serves static files at domain root without conflicting with other API endpoints. Use this for SPAs where unmatched routes should serve ",{"type":41,"tag":77,"props":4444,"children":4446},{"className":4445},[],[4447],{"type":47,"value":4448},"index.html",{"type":41,"tag":50,"props":4450,"children":4452},{"id":4451},"guidelines",[4453],{"type":47,"value":4454},"Guidelines",{"type":41,"tag":4411,"props":4456,"children":4457},{},[4458,4476,4481,4493,4505,4526,4531],{"type":41,"tag":4415,"props":4459,"children":4460},{},[4461,4463,4468,4470],{"type":47,"value":4462},"Always use ",{"type":41,"tag":77,"props":4464,"children":4466},{"className":4465},[],[4467],{"type":47,"value":91},{"type":47,"value":4469}," not ",{"type":41,"tag":77,"props":4471,"children":4473},{"className":4472},[],[4474],{"type":47,"value":4475},"require",{"type":41,"tag":4415,"props":4477,"children":4478},{},[4479],{"type":47,"value":4480},"Define explicit interfaces for type safety",{"type":41,"tag":4415,"props":4482,"children":4483},{},[4484,4485,4491],{"type":47,"value":2764},{"type":41,"tag":77,"props":4486,"children":4488},{"className":4487},[],[4489],{"type":47,"value":4490},"expose: true",{"type":47,"value":4492}," only for public endpoints",{"type":41,"tag":4415,"props":4494,"children":4495},{},[4496,4498,4503],{"type":47,"value":4497},"Throw ",{"type":41,"tag":77,"props":4499,"children":4501},{"className":4500},[],[4502],{"type":47,"value":3487},{"type":47,"value":4504}," instead of returning error objects",{"type":41,"tag":4415,"props":4506,"children":4507},{},[4508,4510,4516,4518,4524],{"type":47,"value":4509},"For inbound webhooks (Stripe, GitHub, etc.) use ",{"type":41,"tag":77,"props":4511,"children":4513},{"className":4512},[],[4514],{"type":47,"value":4515},"api.raw",{"type":47,"value":4517}," — see the ",{"type":41,"tag":77,"props":4519,"children":4521},{"className":4520},[],[4522],{"type":47,"value":4523},"encore-webhook",{"type":47,"value":4525}," skill",{"type":41,"tag":4415,"props":4527,"children":4528},{},[4529],{"type":47,"value":4530},"Path parameters are automatically extracted from the path pattern",{"type":41,"tag":4415,"props":4532,"children":4533},{},[4534,4536,4542,4544,4550],{"type":47,"value":4535},"Use validation constraints (",{"type":41,"tag":77,"props":4537,"children":4539},{"className":4538},[],[4540],{"type":47,"value":4541},"Min",{"type":47,"value":4543},", ",{"type":41,"tag":77,"props":4545,"children":4547},{"className":4546},[],[4548],{"type":47,"value":4549},"MaxLen",{"type":47,"value":4551},", etc.) for user input",{"type":41,"tag":4553,"props":4554,"children":4555},"style",{},[4556],{"type":47,"value":4557},"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);}",{"items":4559,"total":4654},[4560,4566,4577,4595,4611,4623,4639],{"slug":4,"name":4,"fn":5,"description":6,"org":4561,"tags":4562,"stars":21,"repoUrl":22,"updatedAt":23},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4563,4564,4565],{"name":19,"slug":20,"type":16},{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"slug":4567,"name":4567,"fn":4568,"description":4569,"org":4570,"tags":4571,"stars":21,"repoUrl":22,"updatedAt":4576},"encore-auth","implement Encore.ts authentication","Protect Encore.ts endpoints with authentication and authorize callers. Covers `authHandler`, `Gateway`, `getAuthData`, and `auth: true`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4572,4574,4575],{"name":4573,"slug":668,"type":16},"Auth",{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},"2026-04-06T18:09:47.336322",{"slug":4578,"name":4578,"fn":4579,"description":4580,"org":4581,"tags":4582,"stars":21,"repoUrl":22,"updatedAt":4594},"encore-bucket","store files in Encore.ts buckets","Store unstructured files in Encore.ts using `Bucket` from `encore.dev\u002Fstorage\u002Fobjects` — uploads, images, documents, blobs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4583,4586,4587,4590,4593],{"name":4584,"slug":4585,"type":16},"Backend","backend",{"name":9,"slug":8,"type":16},{"name":4588,"slug":4589,"type":16},"File Storage","file-storage",{"name":4591,"slug":4592,"type":16},"File Uploads","file-uploads",{"name":14,"slug":15,"type":16},"2026-05-16T05:59:52.813772",{"slug":4596,"name":4596,"fn":4597,"description":4598,"org":4599,"tags":4600,"stars":21,"repoUrl":22,"updatedAt":4610},"encore-cache","cache data in Redis with Encore.ts","Cache data in Redis from Encore.ts using `CacheCluster` and typed keyspaces from `encore.dev\u002Fstorage\u002Fcache`. Type-safe key\u002Fvalue access with TTLs, atomic increments, and per-keyspace data shapes.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4601,4602,4605,4606,4609],{"name":4584,"slug":4585,"type":16},{"name":4603,"slug":4604,"type":16},"Caching","caching",{"name":9,"slug":8,"type":16},{"name":4607,"slug":4608,"type":16},"Redis","redis",{"name":14,"slug":15,"type":16},"2026-05-16T05:59:56.808328",{"slug":4612,"name":4612,"fn":4613,"description":4614,"org":4615,"tags":4616,"stars":21,"repoUrl":22,"updatedAt":4622},"encore-code-review","review Encore.ts code","Review existing Encore.ts code for best practices and common anti-patterns.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4617,4620,4621],{"name":4618,"slug":4619,"type":16},"Code Review","code-review",{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},"2026-04-06T18:10:01.123999",{"slug":4624,"name":4624,"fn":4625,"description":4626,"org":4627,"tags":4628,"stars":21,"repoUrl":22,"updatedAt":4638},"encore-cron","schedule recurring jobs in Encore.ts","Schedule periodic \u002F recurring work in Encore.ts using `CronJob` from `encore.dev\u002Fcron`. Covers `every: \"1h\"` interval syntax and `schedule: \"0 9 * * 1\"` cron expressions.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4629,4632,4633,4634,4637],{"name":4630,"slug":4631,"type":16},"Automation","automation",{"name":4584,"slug":4585,"type":16},{"name":9,"slug":8,"type":16},{"name":4635,"slug":4636,"type":16},"Scheduling","scheduling",{"name":14,"slug":15,"type":16},"2026-05-16T05:59:54.146651",{"slug":4640,"name":4640,"fn":4641,"description":4642,"org":4643,"tags":4644,"stars":21,"repoUrl":22,"updatedAt":4653},"encore-database","build Encore databases","Work with PostgreSQL in Encore.ts using `SQLDatabase` from `encore.dev\u002Fstorage\u002Fsqldb` — schema migrations and SQL queries.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4645,4648,4649,4652],{"name":4646,"slug":4647,"type":16},"Database","database",{"name":9,"slug":8,"type":16},{"name":4650,"slug":4651,"type":16},"ORM","orm",{"name":14,"slug":15,"type":16},"2026-04-06T18:09:54.823017",28,{"items":4656,"total":4654},[4657,4663,4669,4677,4685,4691,4699,4706,4723,4740,4752,4763],{"slug":4,"name":4,"fn":5,"description":6,"org":4658,"tags":4659,"stars":21,"repoUrl":22,"updatedAt":23},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4660,4661,4662],{"name":19,"slug":20,"type":16},{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"slug":4567,"name":4567,"fn":4568,"description":4569,"org":4664,"tags":4665,"stars":21,"repoUrl":22,"updatedAt":4576},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4666,4667,4668],{"name":4573,"slug":668,"type":16},{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"slug":4578,"name":4578,"fn":4579,"description":4580,"org":4670,"tags":4671,"stars":21,"repoUrl":22,"updatedAt":4594},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4672,4673,4674,4675,4676],{"name":4584,"slug":4585,"type":16},{"name":9,"slug":8,"type":16},{"name":4588,"slug":4589,"type":16},{"name":4591,"slug":4592,"type":16},{"name":14,"slug":15,"type":16},{"slug":4596,"name":4596,"fn":4597,"description":4598,"org":4678,"tags":4679,"stars":21,"repoUrl":22,"updatedAt":4610},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4680,4681,4682,4683,4684],{"name":4584,"slug":4585,"type":16},{"name":4603,"slug":4604,"type":16},{"name":9,"slug":8,"type":16},{"name":4607,"slug":4608,"type":16},{"name":14,"slug":15,"type":16},{"slug":4612,"name":4612,"fn":4613,"description":4614,"org":4686,"tags":4687,"stars":21,"repoUrl":22,"updatedAt":4622},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4688,4689,4690],{"name":4618,"slug":4619,"type":16},{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"slug":4624,"name":4624,"fn":4625,"description":4626,"org":4692,"tags":4693,"stars":21,"repoUrl":22,"updatedAt":4638},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4694,4695,4696,4697,4698],{"name":4630,"slug":4631,"type":16},{"name":4584,"slug":4585,"type":16},{"name":9,"slug":8,"type":16},{"name":4635,"slug":4636,"type":16},{"name":14,"slug":15,"type":16},{"slug":4640,"name":4640,"fn":4641,"description":4642,"org":4700,"tags":4701,"stars":21,"repoUrl":22,"updatedAt":4653},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4702,4703,4704,4705],{"name":4646,"slug":4647,"type":16},{"name":9,"slug":8,"type":16},{"name":4650,"slug":4651,"type":16},{"name":14,"slug":15,"type":16},{"slug":4707,"name":4707,"fn":4708,"description":4709,"org":4710,"tags":4711,"stars":21,"repoUrl":22,"updatedAt":4722},"encore-frontend","connect frontend to Encore backend","Connect a frontend application (React, Next.js, Vue, Svelte, etc.) to an Encore.ts backend.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4712,4713,4716,4719],{"name":9,"slug":8,"type":16},{"name":4714,"slug":4715,"type":16},"Frontend","frontend",{"name":4717,"slug":4718,"type":16},"Next.js","next-js",{"name":4720,"slug":4721,"type":16},"React","react","2026-04-06T18:09:56.091006",{"slug":4724,"name":4724,"fn":4725,"description":4726,"org":4727,"tags":4728,"stars":21,"repoUrl":22,"updatedAt":4739},"encore-getting-started","build and run applications with Encore.ts","Bootstrap a brand-new Encore.ts project from zero. Only for first-time CLI install and `encore app create` — not for architecture or feature questions.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4729,4730,4731,4732,4735,4736],{"name":19,"slug":20,"type":16},{"name":4584,"slug":4585,"type":16},{"name":9,"slug":8,"type":16},{"name":4733,"slug":4734,"type":16},"Local Development","local-development",{"name":14,"slug":15,"type":16},{"name":4737,"slug":4738,"type":16},"Web Development","web-development","2026-04-06T18:10:04.885446",{"slug":4741,"name":4741,"fn":4742,"description":4743,"org":4744,"tags":4745,"stars":21,"repoUrl":22,"updatedAt":4751},"encore-go-api","build APIs with Encore Go","Define typed API endpoints in Encore Go using `\u002F\u002Fencore:api` annotations. Covers typed request\u002Fresponse structs, path\u002Fquery\u002Fheader\u002Fcookie params, and error returns. For raw endpoints (`\u002F\u002Fencore:api raw`) and inbound webhooks, use `encore-go-webhook` instead.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4746,4747,4748],{"name":19,"slug":20,"type":16},{"name":9,"slug":8,"type":16},{"name":4749,"slug":4750,"type":16},"Go","go","2026-04-06T18:09:48.578781",{"slug":4753,"name":4753,"fn":4754,"description":4755,"org":4756,"tags":4757,"stars":21,"repoUrl":22,"updatedAt":4762},"encore-go-auth","implement authentication with Encore Go","Protect Encore Go endpoints with authentication and authorize callers. Covers `auth.AuthHandler`, `auth.UserID`, the `Authorization` header, and `\u002F\u002Fencore:api auth`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4758,4759,4760,4761],{"name":4573,"slug":668,"type":16},{"name":4584,"slug":4585,"type":16},{"name":9,"slug":8,"type":16},{"name":4749,"slug":4750,"type":16},"2026-04-06T18:09:51.065102",{"slug":4764,"name":4764,"fn":4765,"description":4766,"org":4767,"tags":4768,"stars":21,"repoUrl":22,"updatedAt":4776},"encore-go-bucket","store files in Encore Go buckets","Store unstructured files in Encore Go using `objects.NewBucket` from `encore.dev\u002Fstorage\u002Fobjects` — uploads, images, documents, blobs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4769,4770,4771,4772,4773],{"name":4584,"slug":4585,"type":16},{"name":9,"slug":8,"type":16},{"name":4588,"slug":4589,"type":16},{"name":4749,"slug":4750,"type":16},{"name":4774,"slug":4775,"type":16},"Storage","storage","2026-05-16T06:00:03.633918"]