[{"data":1,"prerenderedAt":979},["ShallowReactive",2],{"navigation_docs":3,"-guide-composables":55,"-guide-composables-surround":974},[4,25],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"\u002Fgetting-started","1.getting-started",[10,15,20],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Local Postgres & PostgREST","\u002Fgetting-started\u002Flocal-postgrest","1.getting-started\u002F3.local-postgrest","i-simple-icons-docker",{"title":26,"icon":6,"path":27,"stem":28,"children":29,"page":6},"Guide","\u002Fguide","2.guide",[30,35,40,45,50],{"title":31,"path":32,"stem":33,"icon":34},"Configuration","\u002Fguide\u002Fconfiguration","2.guide\u002F1.configuration","i-lucide-settings",{"title":36,"path":37,"stem":38,"icon":39},"Composables","\u002Fguide\u002Fcomposables","2.guide\u002F2.composables","i-lucide-code",{"title":41,"path":42,"stem":43,"icon":44},"Authentication","\u002Fguide\u002Fauthentication","2.guide\u002F3.authentication","i-lucide-key-round",{"title":46,"path":47,"stem":48,"icon":49},"Types","\u002Fguide\u002Ftypes","2.guide\u002F4.types","i-lucide-braces",{"title":51,"path":52,"stem":53,"icon":54},"Coming from Supabase","\u002Fguide\u002Fmigrating-from-supabase","2.guide\u002F5.migrating-from-supabase","i-lucide-arrow-right-left",{"id":56,"title":36,"body":57,"description":967,"extension":968,"links":969,"meta":970,"navigation":971,"path":37,"seo":972,"stem":38,"__hash__":973},"docs\u002F2.guide\u002F2.composables.md",{"type":58,"value":59,"toc":961},"minimark",[60,69,76,79,179,182,218,271,278,416,422,433,595,603,609,616,699,703,709,712,782,886,893,957],[61,62,63,64,68],"p",{},"All composables are auto-imported and return a typed ",[65,66,67],"code",{},"PostgrestClient",".",[70,71,73],"h2",{"id":72},"usepostgrestoptions",[65,74,75],{},"usePostgrest(options?)",[61,77,78],{},"For components, pages and plugins. Works on the client and during SSR.",[80,81,86],"pre",{"className":82,"code":83,"language":84,"meta":85,"style":85},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const postgrest = usePostgrest()\nconst { data, error } = await postgrest.from('todos').select('id, title')\n","ts","",[65,87,88,112],{"__ignoreMap":85},[89,90,93,97,101,105,109],"span",{"class":91,"line":92},"line",1,[89,94,96],{"class":95},"spNyl","const",[89,98,100],{"class":99},"sTEyZ"," postgrest ",[89,102,104],{"class":103},"sMK4o","=",[89,106,108],{"class":107},"s2Zo4"," usePostgrest",[89,110,111],{"class":99},"()\n",[89,113,115,117,120,123,126,129,132,135,139,142,144,147,150,153,157,159,162,164,167,169,171,174,176],{"class":91,"line":114},2,[89,116,96],{"class":95},[89,118,119],{"class":103}," {",[89,121,122],{"class":99}," data",[89,124,125],{"class":103},",",[89,127,128],{"class":99}," error ",[89,130,131],{"class":103},"}",[89,133,134],{"class":103}," =",[89,136,138],{"class":137},"s7zQu"," await",[89,140,141],{"class":99}," postgrest",[89,143,68],{"class":103},[89,145,146],{"class":107},"from",[89,148,149],{"class":99},"(",[89,151,152],{"class":103},"'",[89,154,156],{"class":155},"sfazB","todos",[89,158,152],{"class":103},[89,160,161],{"class":99},")",[89,163,68],{"class":103},[89,165,166],{"class":107},"select",[89,168,149],{"class":99},[89,170,152],{"class":103},[89,172,173],{"class":155},"id, title",[89,175,152],{"class":103},[89,177,178],{"class":99},")\n",[61,180,181],{},"The token is resolved in this order:",[183,184,185,192,202,208],"ol",{},[186,187,188,191],"li",{},[65,189,190],{},"options.token",", if you pass one",[186,193,194,195,201],{},"The session token, if ",[196,197,198],"a",{"href":42},[65,199,200],{},"nuxt-auth-utils"," is installed",[186,203,204,205],{},"The public anon ",[65,206,207],{},"key",[186,209,210,211,214,215,161],{},"No ",[65,212,213],{},"Authorization"," header (PostgREST's ",[65,216,217],{},"db-anon-role",[219,220,221,237],"table",{},[222,223,224],"thead",{},[225,226,227,231,234],"tr",{},[228,229,230],"th",{},"Option",[228,232,233],{},"Type",[228,235,236],{},"Description",[238,239,240,256],"tbody",{},[225,241,242,248,253],{},[243,244,245],"td",{},[65,246,247],{},"token",[243,249,250],{},[65,251,252],{},"string",[243,254,255],{},"Explicit JWT. Wins over everything else.",[225,257,258,263,268],{},[243,259,260],{},[65,261,262],{},"headers",[243,264,265],{},[65,266,267],{},"Record\u003Cstring, string>",[243,269,270],{},"Extra headers for every request.",[61,272,273,274,277],{},"Wrap queries in ",[65,275,276],{},"useAsyncData"," so SSR results are transferred to the client instead of refetched:",[80,279,281],{"className":82,"code":280,"language":84,"meta":85,"style":85},"const { data } = await useAsyncData('todos', async () => {\n  const { data, error } = await usePostgrest().from('todos').select('*')\n  if (error) throw error\n  return data\n})\n",[65,282,283,323,379,400,409],{"__ignoreMap":85},[89,284,285,287,289,292,294,296,298,301,303,305,307,309,311,314,317,320],{"class":91,"line":92},[89,286,96],{"class":95},[89,288,119],{"class":103},[89,290,291],{"class":99}," data ",[89,293,131],{"class":103},[89,295,134],{"class":103},[89,297,138],{"class":137},[89,299,300],{"class":107}," useAsyncData",[89,302,149],{"class":99},[89,304,152],{"class":103},[89,306,156],{"class":155},[89,308,152],{"class":103},[89,310,125],{"class":103},[89,312,313],{"class":95}," async",[89,315,316],{"class":103}," ()",[89,318,319],{"class":95}," =>",[89,321,322],{"class":103}," {\n",[89,324,325,328,330,332,334,337,340,342,344,346,350,352,354,356,358,360,362,364,366,368,370,372,375,377],{"class":91,"line":114},[89,326,327],{"class":95},"  const",[89,329,119],{"class":103},[89,331,122],{"class":99},[89,333,125],{"class":103},[89,335,336],{"class":99}," error",[89,338,339],{"class":103}," }",[89,341,134],{"class":103},[89,343,138],{"class":137},[89,345,108],{"class":107},[89,347,349],{"class":348},"swJcz","()",[89,351,68],{"class":103},[89,353,146],{"class":107},[89,355,149],{"class":348},[89,357,152],{"class":103},[89,359,156],{"class":155},[89,361,152],{"class":103},[89,363,161],{"class":348},[89,365,68],{"class":103},[89,367,166],{"class":107},[89,369,149],{"class":348},[89,371,152],{"class":103},[89,373,374],{"class":155},"*",[89,376,152],{"class":103},[89,378,178],{"class":348},[89,380,382,385,388,391,394,397],{"class":91,"line":381},3,[89,383,384],{"class":137},"  if",[89,386,387],{"class":348}," (",[89,389,390],{"class":99},"error",[89,392,393],{"class":348},") ",[89,395,396],{"class":137},"throw",[89,398,399],{"class":99}," error\n",[89,401,403,406],{"class":91,"line":402},4,[89,404,405],{"class":137},"  return",[89,407,408],{"class":99}," data\n",[89,410,412,414],{"class":91,"line":411},5,[89,413,131],{"class":103},[89,415,178],{"class":99},[70,417,419],{"id":418},"usepostgrestuserevent-options",[65,420,421],{},"usePostgrestUser(event, options?)",[61,423,424,425,428,429,432],{},"For Nitro server routes. Acts as the requesting user, so RLS applies. Token resolution matches ",[65,426,427],{},"usePostgrest()",", except the session lookup also reads server-only ",[65,430,431],{},"secure"," session data.",[80,434,437],{"className":82,"code":435,"filename":436,"language":84,"meta":85,"style":85},"export default defineEventHandler(async (event) => {\n  const postgrest = await usePostgrestUser(event)\n  const { data, error } = await postgrest.from('todos').select('*')\n  if (error) throw createError({ statusCode: 500, message: error.message })\n  return data\n})\n","server\u002Fapi\u002Fmy-todos.get.ts",[65,438,439,467,486,534,582,588],{"__ignoreMap":85},[89,440,441,444,447,450,452,455,457,461,463,465],{"class":91,"line":92},[89,442,443],{"class":137},"export",[89,445,446],{"class":137}," default",[89,448,449],{"class":107}," defineEventHandler",[89,451,149],{"class":99},[89,453,454],{"class":95},"async",[89,456,387],{"class":103},[89,458,460],{"class":459},"sHdIc","event",[89,462,161],{"class":103},[89,464,319],{"class":95},[89,466,322],{"class":103},[89,468,469,471,473,475,477,480,482,484],{"class":91,"line":114},[89,470,327],{"class":95},[89,472,141],{"class":99},[89,474,134],{"class":103},[89,476,138],{"class":137},[89,478,479],{"class":107}," usePostgrestUser",[89,481,149],{"class":348},[89,483,460],{"class":99},[89,485,178],{"class":348},[89,487,488,490,492,494,496,498,500,502,504,506,508,510,512,514,516,518,520,522,524,526,528,530,532],{"class":91,"line":381},[89,489,327],{"class":95},[89,491,119],{"class":103},[89,493,122],{"class":99},[89,495,125],{"class":103},[89,497,336],{"class":99},[89,499,339],{"class":103},[89,501,134],{"class":103},[89,503,138],{"class":137},[89,505,141],{"class":99},[89,507,68],{"class":103},[89,509,146],{"class":107},[89,511,149],{"class":348},[89,513,152],{"class":103},[89,515,156],{"class":155},[89,517,152],{"class":103},[89,519,161],{"class":348},[89,521,68],{"class":103},[89,523,166],{"class":107},[89,525,149],{"class":348},[89,527,152],{"class":103},[89,529,374],{"class":155},[89,531,152],{"class":103},[89,533,178],{"class":348},[89,535,536,538,540,542,544,546,549,551,554,557,560,564,566,569,571,573,575,578,580],{"class":91,"line":402},[89,537,384],{"class":137},[89,539,387],{"class":348},[89,541,390],{"class":99},[89,543,393],{"class":348},[89,545,396],{"class":137},[89,547,548],{"class":107}," createError",[89,550,149],{"class":348},[89,552,553],{"class":103},"{",[89,555,556],{"class":348}," statusCode",[89,558,559],{"class":103},":",[89,561,563],{"class":562},"sbssI"," 500",[89,565,125],{"class":103},[89,567,568],{"class":348}," message",[89,570,559],{"class":103},[89,572,336],{"class":99},[89,574,68],{"class":103},[89,576,577],{"class":99},"message",[89,579,339],{"class":103},[89,581,178],{"class":348},[89,583,584,586],{"class":91,"line":411},[89,585,405],{"class":137},[89,587,408],{"class":99},[89,589,591,593],{"class":91,"line":590},6,[89,592,131],{"class":103},[89,594,178],{"class":99},[61,596,597,598,600,601,68],{},"It is ",[65,599,454],{}," because reading the session is. Options are the same as ",[65,602,427],{},[70,604,606],{"id":605},"usepostgrestadmin",[65,607,608],{},"usePostgrestAdmin()",[61,610,611,612,615],{},"For Nitro server routes that need privileged access: background jobs, webhooks, admin tools. Uses ",[65,613,614],{},"NUXT_POSTGREST_SECRET_KEY"," and is created once per server process.",[80,617,620],{"className":82,"code":618,"filename":619,"language":84,"meta":85,"style":85},"export default defineEventHandler(async () => {\n  const { data } = await usePostgrestAdmin().from('todos').select('*')\n  return data\n})\n","server\u002Fapi\u002Fadmin\u002Ftodos.get.ts",[65,621,622,640,687,693],{"__ignoreMap":85},[89,623,624,626,628,630,632,634,636,638],{"class":91,"line":92},[89,625,443],{"class":137},[89,627,446],{"class":137},[89,629,449],{"class":107},[89,631,149],{"class":99},[89,633,454],{"class":95},[89,635,316],{"class":103},[89,637,319],{"class":95},[89,639,322],{"class":103},[89,641,642,644,646,648,650,652,654,657,659,661,663,665,667,669,671,673,675,677,679,681,683,685],{"class":91,"line":114},[89,643,327],{"class":95},[89,645,119],{"class":103},[89,647,122],{"class":99},[89,649,339],{"class":103},[89,651,134],{"class":103},[89,653,138],{"class":137},[89,655,656],{"class":107}," usePostgrestAdmin",[89,658,349],{"class":348},[89,660,68],{"class":103},[89,662,146],{"class":107},[89,664,149],{"class":348},[89,666,152],{"class":103},[89,668,156],{"class":155},[89,670,152],{"class":103},[89,672,161],{"class":348},[89,674,68],{"class":103},[89,676,166],{"class":107},[89,678,149],{"class":348},[89,680,152],{"class":103},[89,682,374],{"class":155},[89,684,152],{"class":103},[89,686,178],{"class":348},[89,688,689,691],{"class":91,"line":381},[89,690,405],{"class":137},[89,692,408],{"class":99},[89,694,695,697],{"class":91,"line":402},[89,696,131],{"class":103},[89,698,178],{"class":99},[700,701,702],"warning",{},"Anything the admin role can see, this client can see. Authorize the request yourself before using it.",[70,704,706],{"id":705},"createpostgrestclientoptions",[65,707,708],{},"createPostgrestClient(options)",[61,710,711],{},"Build a client with explicit connection details. Available in app and server code. Use it for multi-tenant setups, other PostgREST instances or other schemas.",[80,713,715],{"className":82,"code":714,"language":84,"meta":85,"style":85},"const tenant = createPostgrestClient({\n  url: `https:\u002F\u002F${tenantId}.api.example.com`,\n  key: tenantJwt,\n})\n",[65,716,717,734,764,776],{"__ignoreMap":85},[89,718,719,721,724,726,729,731],{"class":91,"line":92},[89,720,96],{"class":95},[89,722,723],{"class":99}," tenant ",[89,725,104],{"class":103},[89,727,728],{"class":107}," createPostgrestClient",[89,730,149],{"class":99},[89,732,733],{"class":103},"{\n",[89,735,736,739,741,744,747,750,753,755,758,761],{"class":91,"line":114},[89,737,738],{"class":348},"  url",[89,740,559],{"class":103},[89,742,743],{"class":103}," `",[89,745,746],{"class":155},"https:\u002F\u002F",[89,748,749],{"class":103},"${",[89,751,752],{"class":99},"tenantId",[89,754,131],{"class":103},[89,756,757],{"class":155},".api.example.com",[89,759,760],{"class":103},"`",[89,762,763],{"class":103},",\n",[89,765,766,769,771,774],{"class":91,"line":381},[89,767,768],{"class":348},"  key",[89,770,559],{"class":103},[89,772,773],{"class":99}," tenantJwt",[89,775,763],{"class":103},[89,777,778,780],{"class":91,"line":402},[89,779,131],{"class":103},[89,781,178],{"class":99},[219,783,784,794],{},[222,785,786],{},[225,787,788,790,792],{},[228,789,230],{},[228,791,233],{},[228,793,236],{},[238,795,796,810,827,841,856,871],{},[225,797,798,803,807],{},[243,799,800],{},[65,801,802],{},"url",[243,804,805],{},[65,806,252],{},[243,808,809],{},"PostgREST URL. Required.",[225,811,812,816,820],{},[243,813,814],{},[65,815,207],{},[243,817,818],{},[65,819,252],{},[243,821,822,823,826],{},"JWT sent as ",[65,824,825],{},"Authorization: Bearer",". Omit for anon.",[225,828,829,834,838],{},[243,830,831],{},[65,832,833],{},"schema",[243,835,836],{},[65,837,252],{},[243,839,840],{},"Postgres schema to target.",[225,842,843,847,851],{},[243,844,845],{},[65,846,262],{},[243,848,849],{},[65,850,267],{},[243,852,853,854,68],{},"Extra headers. Can override ",[65,855,213],{},[225,857,858,863,868],{},[243,859,860],{},[65,861,862],{},"fetch",[243,864,865],{},[65,866,867],{},"typeof fetch",[243,869,870],{},"Custom fetch implementation.",[225,872,873,878,883],{},[243,874,875],{},[65,876,877],{},"timeout",[243,879,880],{},[65,881,882],{},"number",[243,884,885],{},"Request timeout in milliseconds.",[61,887,888,889,892],{},"It's typed with your ",[65,890,891],{},"Database"," by default. Pass generics to change the database or schema:",[80,894,896],{"className":82,"code":895,"language":84,"meta":85,"style":85},"const internal = createPostgrestClient\u003CDatabase, 'internal'>({ url, key, schema: 'internal' })\n",[65,897,898],{"__ignoreMap":85},[89,899,900,902,905,907,909,912,915,917,920,923,925,928,930,932,935,937,940,942,945,947,949,951,953,955],{"class":91,"line":92},[89,901,96],{"class":95},[89,903,904],{"class":99}," internal ",[89,906,104],{"class":103},[89,908,728],{"class":107},[89,910,911],{"class":103},"\u003C",[89,913,891],{"class":914},"sBMFI",[89,916,125],{"class":103},[89,918,919],{"class":103}," '",[89,921,922],{"class":155},"internal",[89,924,152],{"class":103},[89,926,927],{"class":103},">",[89,929,149],{"class":99},[89,931,553],{"class":103},[89,933,934],{"class":99}," url",[89,936,125],{"class":103},[89,938,939],{"class":99}," key",[89,941,125],{"class":103},[89,943,944],{"class":348}," schema",[89,946,559],{"class":103},[89,948,919],{"class":103},[89,950,922],{"class":155},[89,952,152],{"class":103},[89,954,339],{"class":103},[89,956,178],{"class":99},[958,959,960],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":85,"searchDepth":114,"depth":114,"links":962},[963,964,965,966],{"id":72,"depth":114,"text":75},{"id":418,"depth":114,"text":421},{"id":605,"depth":114,"text":608},{"id":705,"depth":114,"text":708},"usePostgrest, usePostgrestUser, usePostgrestAdmin and createPostgrestClient.","md",null,{},{"icon":39},{"title":36,"description":967},"w7cRC2t0IZFyUoWDvgEo6JB51zWqrWNBi-YqdyB_c_Y",[975,977],{"title":31,"path":32,"stem":33,"description":976,"icon":34,"children":-1},"All module options and environment variables.",{"title":41,"path":42,"stem":43,"description":978,"icon":44,"children":-1},"Forward the user's JWT so PostgREST row-level security applies.",1790352863872]