[{"data":1,"prerenderedAt":1496},["ShallowReactive",2],{"navigation_docs":3,"-guides-authentication":396,"-guides-authentication-surround":1491},[4,35,61,83],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":34},"Getting Started","lucide:rocket","\u002Fgetting-started","1.getting-started",[10,14,18,22,26,30],{"title":11,"path":12,"stem":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F2.introduction",{"title":15,"path":16,"stem":17},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F3.installation",{"title":19,"path":20,"stem":21},"Project Structure","\u002Fgetting-started\u002Fproject-structure","1.getting-started\u002F4.project-structure",{"title":23,"path":24,"stem":25},"Configuration","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F5.configuration",{"title":27,"path":28,"stem":29},"Requirements","\u002Fgetting-started\u002Frequirements","1.getting-started\u002F6.requirements",{"title":31,"path":32,"stem":33},"Troubleshooting","\u002Fgetting-started\u002Ftroubleshooting","1.getting-started\u002F7.troubleshooting",false,{"title":36,"icon":37,"path":38,"stem":39,"children":40,"page":34},"Guides","lucide:book-search","\u002Fguides","2.guides",[41,45,49,53,57],{"title":42,"path":43,"stem":44},"Authentication","\u002Fguides\u002Fauthentication","2.guides\u002F1.authentication",{"title":46,"path":47,"stem":48},"Webhooks","\u002Fguides\u002Fwebhooks","2.guides\u002F2.webhooks",{"title":50,"path":51,"stem":52},"App Bridge","\u002Fguides\u002Fapp-bridge","2.guides\u002F3.app-bridge",{"title":54,"path":55,"stem":56},"Polaris Components","\u002Fguides\u002Fpolaris-components","2.guides\u002F4.polaris-components",{"title":58,"path":59,"stem":60},"GraphQL Codegen","\u002Fguides\u002Fgraphql-codegen","2.guides\u002F5.graphql-codegen",{"title":62,"icon":63,"path":64,"stem":65,"children":66,"page":34},"API Reference","lucide:square-dashed-bottom-code","\u002Fapi","3.api",[67,71,75,79],{"title":68,"path":69,"stem":70},"Server Utilities","\u002Fapi\u002Fserver-utilities","3.api\u002F1.server-utilities",{"title":72,"path":73,"stem":74},"Composables","\u002Fapi\u002Fcomposables","3.api\u002F2.composables",{"title":76,"path":77,"stem":78},"Middleware","\u002Fapi\u002Fmiddleware","3.api\u002F4.middleware",{"title":80,"path":81,"stem":82},"Types","\u002Fapi\u002Ftypes","3.api\u002F5.types",{"title":84,"icon":85,"path":86,"stem":87,"children":88},"Polaris Web Components","ic:baseline-shopify","\u002Fpolaris-wc","4.polaris-wc",[89,91,124,145,166,243,264,289,318,371,384],{"title":84,"path":86,"stem":90},"4.polaris-wc\u002Findex",{"title":92,"path":93,"stem":94,"children":95,"page":34},"Layout","\u002Fpolaris-wc\u002Flayout","4.polaris-wc\u002F1.layout",[96,100,104,108,112,116,120],{"title":97,"path":98,"stem":99},"Page","\u002Fpolaris-wc\u002Flayout\u002Fpage","4.polaris-wc\u002F1.layout\u002F1.page",{"title":101,"path":102,"stem":103},"Box","\u002Fpolaris-wc\u002Flayout\u002Fbox","4.polaris-wc\u002F1.layout\u002F2.box",{"title":105,"path":106,"stem":107},"Stack","\u002Fpolaris-wc\u002Flayout\u002Fstack","4.polaris-wc\u002F1.layout\u002F3.stack",{"title":109,"path":110,"stem":111},"Grid","\u002Fpolaris-wc\u002Flayout\u002Fgrid","4.polaris-wc\u002F1.layout\u002F4.grid",{"title":113,"path":114,"stem":115},"GridItem","\u002Fpolaris-wc\u002Flayout\u002Fgrid-item","4.polaris-wc\u002F1.layout\u002F5.grid-item",{"title":117,"path":118,"stem":119},"Section","\u002Fpolaris-wc\u002Flayout\u002Fsection","4.polaris-wc\u002F1.layout\u002F6.section",{"title":121,"path":122,"stem":123},"Divider","\u002Fpolaris-wc\u002Flayout\u002Fdivider","4.polaris-wc\u002F1.layout\u002F7.divider",{"title":125,"path":126,"stem":127,"children":128,"page":34},"App Bridge Ui","\u002Fpolaris-wc\u002Fapp-bridge-ui","4.polaris-wc\u002F10.app-bridge-ui",[129,133,137,141],{"title":130,"path":131,"stem":132},"UiModal","\u002Fpolaris-wc\u002Fapp-bridge-ui\u002Fui-modal","4.polaris-wc\u002F10.app-bridge-ui\u002F1.ui-modal",{"title":134,"path":135,"stem":136},"UiTitleBar","\u002Fpolaris-wc\u002Fapp-bridge-ui\u002Fui-title-bar","4.polaris-wc\u002F10.app-bridge-ui\u002F2.ui-title-bar",{"title":138,"path":139,"stem":140},"UiSaveBar","\u002Fpolaris-wc\u002Fapp-bridge-ui\u002Fui-save-bar","4.polaris-wc\u002F10.app-bridge-ui\u002F3.ui-save-bar",{"title":142,"path":143,"stem":144},"UiNavMenu","\u002Fpolaris-wc\u002Fapp-bridge-ui\u002Fui-nav-menu","4.polaris-wc\u002F10.app-bridge-ui\u002F4.ui-nav-menu",{"title":146,"path":147,"stem":148,"children":149,"page":34},"Actions","\u002Fpolaris-wc\u002Factions","4.polaris-wc\u002F2.actions",[150,154,158,162],{"title":151,"path":152,"stem":153},"Button","\u002Fpolaris-wc\u002Factions\u002Fbutton","4.polaris-wc\u002F2.actions\u002F1.button",{"title":155,"path":156,"stem":157},"ButtonGroup","\u002Fpolaris-wc\u002Factions\u002Fbutton-group","4.polaris-wc\u002F2.actions\u002F2.button-group",{"title":159,"path":160,"stem":161},"Clickable","\u002Fpolaris-wc\u002Factions\u002Fclickable","4.polaris-wc\u002F2.actions\u002F3.clickable",{"title":163,"path":164,"stem":165},"Link","\u002Fpolaris-wc\u002Factions\u002Flink","4.polaris-wc\u002F2.actions\u002F4.link",{"title":167,"path":168,"stem":169,"children":170,"page":34},"Forms","\u002Fpolaris-wc\u002Fforms","4.polaris-wc\u002F3.forms",[171,175,179,183,187,191,195,199,203,207,211,215,219,223,227,231,235,239],{"title":172,"path":173,"stem":174},"TextField","\u002Fpolaris-wc\u002Fforms\u002Ftext-field","4.polaris-wc\u002F3.forms\u002F01.text-field",{"title":176,"path":177,"stem":178},"NumberField","\u002Fpolaris-wc\u002Fforms\u002Fnumber-field","4.polaris-wc\u002F3.forms\u002F02.number-field",{"title":180,"path":181,"stem":182},"EmailField","\u002Fpolaris-wc\u002Fforms\u002Femail-field","4.polaris-wc\u002F3.forms\u002F03.email-field",{"title":184,"path":185,"stem":186},"PasswordField","\u002Fpolaris-wc\u002Fforms\u002Fpassword-field","4.polaris-wc\u002F3.forms\u002F04.password-field",{"title":188,"path":189,"stem":190},"UrlField","\u002Fpolaris-wc\u002Fforms\u002Furl-field","4.polaris-wc\u002F3.forms\u002F05.url-field",{"title":192,"path":193,"stem":194},"MoneyField","\u002Fpolaris-wc\u002Fforms\u002Fmoney-field","4.polaris-wc\u002F3.forms\u002F06.money-field",{"title":196,"path":197,"stem":198},"ColorField","\u002Fpolaris-wc\u002Fforms\u002Fcolor-field","4.polaris-wc\u002F3.forms\u002F07.color-field",{"title":200,"path":201,"stem":202},"DateField","\u002Fpolaris-wc\u002Fforms\u002Fdate-field","4.polaris-wc\u002F3.forms\u002F08.date-field",{"title":204,"path":205,"stem":206},"TextArea","\u002Fpolaris-wc\u002Fforms\u002Ftext-area","4.polaris-wc\u002F3.forms\u002F09.text-area",{"title":208,"path":209,"stem":210},"Select","\u002Fpolaris-wc\u002Fforms\u002Fselect","4.polaris-wc\u002F3.forms\u002F10.select",{"title":212,"path":213,"stem":214},"Checkbox","\u002Fpolaris-wc\u002Fforms\u002Fcheckbox","4.polaris-wc\u002F3.forms\u002F11.checkbox",{"title":216,"path":217,"stem":218},"Switch","\u002Fpolaris-wc\u002Fforms\u002Fswitch","4.polaris-wc\u002F3.forms\u002F12.switch",{"title":220,"path":221,"stem":222},"ChoiceList","\u002Fpolaris-wc\u002Fforms\u002Fchoice-list","4.polaris-wc\u002F3.forms\u002F13.choice-list",{"title":224,"path":225,"stem":226},"Choice","\u002Fpolaris-wc\u002Fforms\u002Fchoice","4.polaris-wc\u002F3.forms\u002F14.choice",{"title":228,"path":229,"stem":230},"SearchField","\u002Fpolaris-wc\u002Fforms\u002Fsearch-field","4.polaris-wc\u002F3.forms\u002F15.search-field",{"title":232,"path":233,"stem":234},"DropZone","\u002Fpolaris-wc\u002Fforms\u002Fdrop-zone","4.polaris-wc\u002F3.forms\u002F16.drop-zone",{"title":236,"path":237,"stem":238},"ColorPicker","\u002Fpolaris-wc\u002Fforms\u002Fcolor-picker","4.polaris-wc\u002F3.forms\u002F17.color-picker",{"title":240,"path":241,"stem":242},"DatePicker","\u002Fpolaris-wc\u002Fforms\u002Fdate-picker","4.polaris-wc\u002F3.forms\u002F18.date-picker",{"title":244,"path":245,"stem":246,"children":247,"page":34},"Feedback","\u002Fpolaris-wc\u002Ffeedback","4.polaris-wc\u002F4.feedback",[248,252,256,260],{"title":249,"path":250,"stem":251},"Banner","\u002Fpolaris-wc\u002Ffeedback\u002Fbanner","4.polaris-wc\u002F4.feedback\u002F1.banner",{"title":253,"path":254,"stem":255},"Badge","\u002Fpolaris-wc\u002Ffeedback\u002Fbadge","4.polaris-wc\u002F4.feedback\u002F2.badge",{"title":257,"path":258,"stem":259},"Spinner","\u002Fpolaris-wc\u002Ffeedback\u002Fspinner","4.polaris-wc\u002F4.feedback\u002F3.spinner",{"title":261,"path":262,"stem":263},"Tooltip","\u002Fpolaris-wc\u002Ffeedback\u002Ftooltip","4.polaris-wc\u002F4.feedback\u002F4.tooltip",{"title":265,"path":266,"stem":267,"children":268,"page":34},"Navigation","\u002Fpolaris-wc\u002Fnavigation","4.polaris-wc\u002F5.navigation",[269,273,277,281,285],{"title":270,"path":271,"stem":272},"AppNav","\u002Fpolaris-wc\u002Fnavigation\u002Fapp-nav","4.polaris-wc\u002F5.navigation\u002F1.app-nav",{"title":274,"path":275,"stem":276},"Menu","\u002Fpolaris-wc\u002Fnavigation\u002Fmenu","4.polaris-wc\u002F5.navigation\u002F2.menu",{"title":278,"path":279,"stem":280},"Option","\u002Fpolaris-wc\u002Fnavigation\u002Foption","4.polaris-wc\u002F5.navigation\u002F3.option",{"title":282,"path":283,"stem":284},"OptionGroup","\u002Fpolaris-wc\u002Fnavigation\u002Foption-group","4.polaris-wc\u002F5.navigation\u002F4.option-group",{"title":286,"path":287,"stem":288},"Popover","\u002Fpolaris-wc\u002Fnavigation\u002Fpopover","4.polaris-wc\u002F5.navigation\u002F5.popover",{"title":290,"path":291,"stem":292,"children":293,"page":34},"Data","\u002Fpolaris-wc\u002Fdata","4.polaris-wc\u002F6.data",[294,298,302,306,310,314],{"title":295,"path":296,"stem":297},"Table","\u002Fpolaris-wc\u002Fdata\u002Ftable","4.polaris-wc\u002F6.data\u002F1.table",{"title":299,"path":300,"stem":301},"TableHeader","\u002Fpolaris-wc\u002Fdata\u002Ftable-header","4.polaris-wc\u002F6.data\u002F2.table-header",{"title":303,"path":304,"stem":305},"TableHeaderRow","\u002Fpolaris-wc\u002Fdata\u002Ftable-header-row","4.polaris-wc\u002F6.data\u002F3.table-header-row",{"title":307,"path":308,"stem":309},"TableBody","\u002Fpolaris-wc\u002Fdata\u002Ftable-body","4.polaris-wc\u002F6.data\u002F4.table-body",{"title":311,"path":312,"stem":313},"TableRow","\u002Fpolaris-wc\u002Fdata\u002Ftable-row","4.polaris-wc\u002F6.data\u002F5.table-row",{"title":315,"path":316,"stem":317},"TableCell","\u002Fpolaris-wc\u002Fdata\u002Ftable-cell","4.polaris-wc\u002F6.data\u002F6.table-cell",{"title":319,"path":320,"stem":321,"children":322,"page":34},"Content","\u002Fpolaris-wc\u002Fcontent","4.polaris-wc\u002F7.content",[323,327,331,335,339,343,347,351,355,359,363,367],{"title":324,"path":325,"stem":326},"Text","\u002Fpolaris-wc\u002Fcontent\u002Ftext","4.polaris-wc\u002F7.content\u002F01.text",{"title":328,"path":329,"stem":330},"Heading","\u002Fpolaris-wc\u002Fcontent\u002Fheading","4.polaris-wc\u002F7.content\u002F02.heading",{"title":332,"path":333,"stem":334},"Paragraph","\u002Fpolaris-wc\u002Fcontent\u002Fparagraph","4.polaris-wc\u002F7.content\u002F03.paragraph",{"title":336,"path":337,"stem":338},"Icon","\u002Fpolaris-wc\u002Fcontent\u002Ficon","4.polaris-wc\u002F7.content\u002F04.icon",{"title":340,"path":341,"stem":342},"Image","\u002Fpolaris-wc\u002Fcontent\u002Fimage","4.polaris-wc\u002F7.content\u002F05.image",{"title":344,"path":345,"stem":346},"Thumbnail","\u002Fpolaris-wc\u002Fcontent\u002Fthumbnail","4.polaris-wc\u002F7.content\u002F06.thumbnail",{"title":348,"path":349,"stem":350},"Avatar","\u002Fpolaris-wc\u002Fcontent\u002Favatar","4.polaris-wc\u002F7.content\u002F07.avatar",{"title":352,"path":353,"stem":354},"Chip","\u002Fpolaris-wc\u002Fcontent\u002Fchip","4.polaris-wc\u002F7.content\u002F08.chip",{"title":356,"path":357,"stem":358},"ClickableChip","\u002Fpolaris-wc\u002Fcontent\u002Fclickable-chip","4.polaris-wc\u002F7.content\u002F09.clickable-chip",{"title":360,"path":361,"stem":362},"ListItem","\u002Fpolaris-wc\u002Fcontent\u002Flist-item","4.polaris-wc\u002F7.content\u002F10.list-item",{"title":364,"path":365,"stem":366},"OrderedList","\u002Fpolaris-wc\u002Fcontent\u002Fordered-list","4.polaris-wc\u002F7.content\u002F11.ordered-list",{"title":368,"path":369,"stem":370},"UnorderedList","\u002Fpolaris-wc\u002Fcontent\u002Funordered-list","4.polaris-wc\u002F7.content\u002F12.unordered-list",{"title":372,"path":373,"stem":374,"children":375,"page":34},"Overlays","\u002Fpolaris-wc\u002Foverlays","4.polaris-wc\u002F8.overlays",[376,380],{"title":377,"path":378,"stem":379},"Modal","\u002Fpolaris-wc\u002Foverlays\u002Fmodal","4.polaris-wc\u002F8.overlays\u002F1.modal",{"title":381,"path":382,"stem":383},"QueryContainer","\u002Fpolaris-wc\u002Foverlays\u002Fquery-container","4.polaris-wc\u002F8.overlays\u002F2.query-container",{"title":385,"path":386,"stem":387,"children":388,"page":34},"App","\u002Fpolaris-wc\u002Fapp","4.polaris-wc\u002F9.app",[389,392],{"title":385,"path":390,"stem":391},"\u002Fpolaris-wc\u002Fapp\u002Fapp","4.polaris-wc\u002F9.app\u002F1.app",{"title":393,"path":394,"stem":395},"LoadingIndicator","\u002Fpolaris-wc\u002Fapp\u002Floading-indicator","4.polaris-wc\u002F9.app\u002F2.loading-indicator",{"id":397,"title":42,"body":398,"description":1483,"extension":1484,"links":1485,"meta":1486,"navigation":522,"path":43,"seo":1487,"stem":44,"__hash__":1490},"docs\u002F2.guides\u002F1.authentication.md",{"type":399,"value":400,"toc":1467},"minimark",[401,406,428,637,642,775,783,905,909,912,966,980,988,992,996,1068,1072,1145,1149,1208,1212,1270,1274,1277,1396,1400,1463],[402,403,405],"h2",{"id":404},"admin-authentication","Admin Authentication",[407,408,409,410,414,415,418,419,423,424,427],"p",{},"Use ",[411,412,413],"code",{},"useShopifyAdmin()"," in your server API routes to authenticate requests from the Shopify admin. The returned ",[411,416,417],{},"admin"," object provides a ",[420,421,422],"strong",{},"typed GraphQL"," client powered by ",[411,425,426],{},"@shopify\u002Fadmin-api-client",":",[429,430,436],"pre",{"className":431,"code":432,"filename":433,"language":434,"meta":435,"style":435},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineEventHandler(async (event) => {\n  const { admin, session } = await useShopifyAdmin(event)\n\n  const { data } = await admin.graphql(`{\n    products(first: 5) {\n      edges {\n        node {\n          id\n          title\n        }\n      }\n    }\n  }`)\n\n  return data\n})\n","server\u002Fapi\u002Fproducts.ts","ts","",[411,437,438,479,517,524,557,563,569,575,581,587,593,599,605,615,620,629],{"__ignoreMap":435},[439,440,443,447,450,454,458,462,466,470,473,476],"span",{"class":441,"line":442},"line",1,[439,444,446],{"class":445},"s7zQu","export",[439,448,449],{"class":445}," default",[439,451,453],{"class":452},"s2Zo4"," defineEventHandler",[439,455,457],{"class":456},"sTEyZ","(",[439,459,461],{"class":460},"spNyl","async",[439,463,465],{"class":464},"sMK4o"," (",[439,467,469],{"class":468},"sHdIc","event",[439,471,472],{"class":464},")",[439,474,475],{"class":460}," =>",[439,477,478],{"class":464}," {\n",[439,480,482,485,488,491,494,497,500,503,506,509,512,514],{"class":441,"line":481},2,[439,483,484],{"class":460},"  const",[439,486,487],{"class":464}," {",[439,489,490],{"class":456}," admin",[439,492,493],{"class":464},",",[439,495,496],{"class":456}," session",[439,498,499],{"class":464}," }",[439,501,502],{"class":464}," =",[439,504,505],{"class":445}," await",[439,507,508],{"class":452}," useShopifyAdmin",[439,510,457],{"class":511},"swJcz",[439,513,469],{"class":456},[439,515,516],{"class":511},")\n",[439,518,520],{"class":441,"line":519},3,[439,521,523],{"emptyLinePlaceholder":522},true,"\n",[439,525,527,529,531,534,536,538,540,542,545,548,550,553],{"class":441,"line":526},4,[439,528,484],{"class":460},[439,530,487],{"class":464},[439,532,533],{"class":456}," data",[439,535,499],{"class":464},[439,537,502],{"class":464},[439,539,505],{"class":445},[439,541,490],{"class":456},[439,543,544],{"class":464},".",[439,546,547],{"class":452},"graphql",[439,549,457],{"class":511},[439,551,552],{"class":464},"`",[439,554,556],{"class":555},"sfazB","{\n",[439,558,560],{"class":441,"line":559},5,[439,561,562],{"class":555},"    products(first: 5) {\n",[439,564,566],{"class":441,"line":565},6,[439,567,568],{"class":555},"      edges {\n",[439,570,572],{"class":441,"line":571},7,[439,573,574],{"class":555},"        node {\n",[439,576,578],{"class":441,"line":577},8,[439,579,580],{"class":555},"          id\n",[439,582,584],{"class":441,"line":583},9,[439,585,586],{"class":555},"          title\n",[439,588,590],{"class":441,"line":589},10,[439,591,592],{"class":555},"        }\n",[439,594,596],{"class":441,"line":595},11,[439,597,598],{"class":555},"      }\n",[439,600,602],{"class":441,"line":601},12,[439,603,604],{"class":555},"    }\n",[439,606,608,611,613],{"class":441,"line":607},13,[439,609,610],{"class":555},"  }",[439,612,552],{"class":464},[439,614,516],{"class":511},[439,616,618],{"class":441,"line":617},14,[439,619,523],{"emptyLinePlaceholder":522},[439,621,623,626],{"class":441,"line":622},15,[439,624,625],{"class":445},"  return",[439,627,628],{"class":456}," data\n",[439,630,632,635],{"class":441,"line":631},16,[439,633,634],{"class":464},"}",[439,636,516],{"class":456},[638,639,641],"h3",{"id":640},"graphql-with-variables","GraphQL with variables",[429,643,645],{"className":431,"code":644,"language":434,"meta":435,"style":435},"const { data } = await admin.graphql(\n  `#graphql\n  mutation populateProduct($input: ProductInput!) {\n    productCreate(input: $input) {\n      product {\n        id\n        title\n      }\n    }\n  }`,\n  {\n    variables: {\n      input: { title: 'New Product' }\n    }\n  }\n)\n",[411,646,647,672,680,685,690,695,700,705,709,713,722,727,736,762,766,771],{"__ignoreMap":435},[439,648,649,652,654,657,659,661,663,665,667,669],{"class":441,"line":442},[439,650,651],{"class":460},"const",[439,653,487],{"class":464},[439,655,656],{"class":456}," data ",[439,658,634],{"class":464},[439,660,502],{"class":464},[439,662,505],{"class":445},[439,664,490],{"class":456},[439,666,544],{"class":464},[439,668,547],{"class":452},[439,670,671],{"class":456},"(\n",[439,673,674,677],{"class":441,"line":481},[439,675,676],{"class":464},"  `",[439,678,679],{"class":555},"#graphql\n",[439,681,682],{"class":441,"line":519},[439,683,684],{"class":555},"  mutation populateProduct($input: ProductInput!) {\n",[439,686,687],{"class":441,"line":526},[439,688,689],{"class":555},"    productCreate(input: $input) {\n",[439,691,692],{"class":441,"line":559},[439,693,694],{"class":555},"      product {\n",[439,696,697],{"class":441,"line":565},[439,698,699],{"class":555},"        id\n",[439,701,702],{"class":441,"line":571},[439,703,704],{"class":555},"        title\n",[439,706,707],{"class":441,"line":577},[439,708,598],{"class":555},[439,710,711],{"class":441,"line":583},[439,712,604],{"class":555},[439,714,715,717,719],{"class":441,"line":589},[439,716,610],{"class":555},[439,718,552],{"class":464},[439,720,721],{"class":464},",\n",[439,723,724],{"class":441,"line":595},[439,725,726],{"class":464},"  {\n",[439,728,729,732,734],{"class":441,"line":601},[439,730,731],{"class":511},"    variables",[439,733,427],{"class":464},[439,735,478],{"class":464},[439,737,738,741,743,745,748,750,753,756,759],{"class":441,"line":607},[439,739,740],{"class":511},"      input",[439,742,427],{"class":464},[439,744,487],{"class":464},[439,746,747],{"class":511}," title",[439,749,427],{"class":464},[439,751,752],{"class":464}," '",[439,754,755],{"class":555},"New Product",[439,757,758],{"class":464},"'",[439,760,761],{"class":464}," }\n",[439,763,764],{"class":441,"line":617},[439,765,604],{"class":464},[439,767,768],{"class":441,"line":622},[439,769,770],{"class":464},"  }\n",[439,772,773],{"class":441,"line":631},[439,774,516],{"class":456},[638,776,778,779,782],{"id":777},"full-admincontext-return-type","Full ",[411,780,781],{},"AdminContext"," return type",[784,785,786,802],"table",{},[787,788,789],"thead",{},[790,791,792,796,799],"tr",{},[793,794,795],"th",{},"Property",[793,797,798],{},"Type",[793,800,801],{},"Description",[803,804,805,821,835,850,875,890],"tbody",{},[790,806,807,813,818],{},[808,809,810],"td",{},[411,811,812],{},"session",[808,814,815],{},[411,816,817],{},"Session",[808,819,820],{},"The authenticated Shopify session",[790,822,823,827,832],{},[808,824,825],{},[411,826,417],{},[808,828,829],{},[411,830,831],{},"AdminApiContext",[808,833,834],{},"GraphQL API client",[790,836,837,842,847],{},[808,838,839],{},[411,840,841],{},"sessionToken",[808,843,844],{},[411,845,846],{},"JwtPayload | undefined",[808,848,849],{},"Decoded session token (embedded apps only)",[790,851,852,857,862],{},[808,853,854],{},[411,855,856],{},"billing",[808,858,859],{},[411,860,861],{},"BillingContext",[808,863,864,865,868,869,868,872],{},"Helpers for ",[411,866,867],{},"require()",", ",[411,870,871],{},"check()",[411,873,874],{},"request()",[790,876,877,882,887],{},[808,878,879],{},[411,880,881],{},"cors",[808,883,884],{},[411,885,886],{},"(response) => Response",[808,888,889],{},"Add CORS headers to a response",[790,891,892,897,902],{},[808,893,894],{},[411,895,896],{},"redirect",[808,898,899],{},[411,900,901],{},"(url, init?) => Response",[808,903,904],{},"Redirect helper that works inside embedded iframes",[402,906,908],{"id":907},"oauth-routes","OAuth Routes",[407,910,911],{},"The module automatically registers these routes to handle the full OAuth flow:",[784,913,914,924],{},[787,915,916],{},[790,917,918,921],{},[793,919,920],{},"Route",[793,922,923],{},"Purpose",[803,925,926,936,946,956],{},[790,927,928,933],{},[808,929,930],{},[411,931,932],{},"GET \u002F_shopify\u002Fauth",[808,934,935],{},"Start the OAuth flow",[790,937,938,943],{},[808,939,940],{},[411,941,942],{},"GET \u002F_shopify\u002Fauth\u002Fcallback",[808,944,945],{},"Handle the OAuth callback from Shopify",[790,947,948,953],{},[808,949,950],{},[411,951,952],{},"GET \u002F_shopify\u002Fauth\u002Fexit-iframe",[808,954,955],{},"App Bridge iframe escape page",[790,957,958,963],{},[808,959,960],{},[411,961,962],{},"GET \u002F_shopify\u002Fauth\u002Fsession-token",[808,964,965],{},"Session token bounce page",[407,967,968,969,972,973,976,977,544],{},"The prefix ",[411,970,971],{},"\u002F_shopify\u002Fauth"," is configurable via the ",[411,974,975],{},"authPathPrefix"," option in ",[411,978,979],{},"nuxt.config.ts",[981,982,983,984,987],"tip",{},"You don't need to create these routes — the module registers them automatically. Just make sure your app's redirect URL is set to ",[411,985,986],{},"{APP_URL}\u002F_shopify\u002Fauth\u002Fcallback"," in the Partners Dashboard.",[402,989,991],{"id":990},"other-authentication-types","Other Authentication Types",[638,993,995],{"id":994},"shopify-flow","Shopify Flow",[429,997,1000],{"className":431,"code":998,"filename":999,"language":434,"meta":435,"style":435},"export default defineEventHandler(async (event) => {\n  const { session, admin, payload } = await useShopifyFlow(event)\n  \u002F\u002F Handle Flow trigger\u002Faction\n})\n","server\u002Fapi\u002Fflow.ts",[411,1001,1002,1024,1056,1062],{"__ignoreMap":435},[439,1003,1004,1006,1008,1010,1012,1014,1016,1018,1020,1022],{"class":441,"line":442},[439,1005,446],{"class":445},[439,1007,449],{"class":445},[439,1009,453],{"class":452},[439,1011,457],{"class":456},[439,1013,461],{"class":460},[439,1015,465],{"class":464},[439,1017,469],{"class":468},[439,1019,472],{"class":464},[439,1021,475],{"class":460},[439,1023,478],{"class":464},[439,1025,1026,1028,1030,1032,1034,1036,1038,1041,1043,1045,1047,1050,1052,1054],{"class":441,"line":481},[439,1027,484],{"class":460},[439,1029,487],{"class":464},[439,1031,496],{"class":456},[439,1033,493],{"class":464},[439,1035,490],{"class":456},[439,1037,493],{"class":464},[439,1039,1040],{"class":456}," payload",[439,1042,499],{"class":464},[439,1044,502],{"class":464},[439,1046,505],{"class":445},[439,1048,1049],{"class":452}," useShopifyFlow",[439,1051,457],{"class":511},[439,1053,469],{"class":456},[439,1055,516],{"class":511},[439,1057,1058],{"class":441,"line":519},[439,1059,1061],{"class":1060},"sHwdD","  \u002F\u002F Handle Flow trigger\u002Faction\n",[439,1063,1064,1066],{"class":441,"line":526},[439,1065,634],{"class":464},[439,1067,516],{"class":456},[638,1069,1071],{"id":1070},"public-requests-checkout-extensions-etc","Public requests (checkout extensions, etc.)",[429,1073,1076],{"className":431,"code":1074,"filename":1075,"language":434,"meta":435,"style":435},"export default defineEventHandler(async (event) => {\n  const { sessionToken, cors } = await useShopifyPublic(event)\n  \u002F\u002F sessionToken contains the decoded JWT payload\n  \u002F\u002F Use cors() to wrap your response with CORS headers\n})\n","server\u002Fapi\u002Fpublic\u002Fwidget.ts",[411,1077,1078,1100,1129,1134,1139],{"__ignoreMap":435},[439,1079,1080,1082,1084,1086,1088,1090,1092,1094,1096,1098],{"class":441,"line":442},[439,1081,446],{"class":445},[439,1083,449],{"class":445},[439,1085,453],{"class":452},[439,1087,457],{"class":456},[439,1089,461],{"class":460},[439,1091,465],{"class":464},[439,1093,469],{"class":468},[439,1095,472],{"class":464},[439,1097,475],{"class":460},[439,1099,478],{"class":464},[439,1101,1102,1104,1106,1109,1111,1114,1116,1118,1120,1123,1125,1127],{"class":441,"line":481},[439,1103,484],{"class":460},[439,1105,487],{"class":464},[439,1107,1108],{"class":456}," sessionToken",[439,1110,493],{"class":464},[439,1112,1113],{"class":456}," cors",[439,1115,499],{"class":464},[439,1117,502],{"class":464},[439,1119,505],{"class":445},[439,1121,1122],{"class":452}," useShopifyPublic",[439,1124,457],{"class":511},[439,1126,469],{"class":456},[439,1128,516],{"class":511},[439,1130,1131],{"class":441,"line":519},[439,1132,1133],{"class":1060},"  \u002F\u002F sessionToken contains the decoded JWT payload\n",[439,1135,1136],{"class":441,"line":526},[439,1137,1138],{"class":1060},"  \u002F\u002F Use cors() to wrap your response with CORS headers\n",[439,1140,1141,1143],{"class":441,"line":559},[439,1142,634],{"class":464},[439,1144,516],{"class":456},[638,1146,1148],{"id":1147},"pos-extensions","POS extensions",[429,1150,1153],{"className":431,"code":1151,"filename":1152,"language":434,"meta":435,"style":435},"export default defineEventHandler(async (event) => {\n  const context = await useShopifyPos(event)\n  \u002F\u002F Handle POS extension request\n})\n","server\u002Fapi\u002Fpos\u002Faction.ts",[411,1154,1155,1177,1197,1202],{"__ignoreMap":435},[439,1156,1157,1159,1161,1163,1165,1167,1169,1171,1173,1175],{"class":441,"line":442},[439,1158,446],{"class":445},[439,1160,449],{"class":445},[439,1162,453],{"class":452},[439,1164,457],{"class":456},[439,1166,461],{"class":460},[439,1168,465],{"class":464},[439,1170,469],{"class":468},[439,1172,472],{"class":464},[439,1174,475],{"class":460},[439,1176,478],{"class":464},[439,1178,1179,1181,1184,1186,1188,1191,1193,1195],{"class":441,"line":481},[439,1180,484],{"class":460},[439,1182,1183],{"class":456}," context",[439,1185,502],{"class":464},[439,1187,505],{"class":445},[439,1189,1190],{"class":452}," useShopifyPos",[439,1192,457],{"class":511},[439,1194,469],{"class":456},[439,1196,516],{"class":511},[439,1198,1199],{"class":441,"line":519},[439,1200,1201],{"class":1060},"  \u002F\u002F Handle POS extension request\n",[439,1203,1204,1206],{"class":441,"line":526},[439,1205,634],{"class":464},[439,1207,516],{"class":456},[638,1209,1211],{"id":1210},"fulfillment-service","Fulfillment service",[429,1213,1216],{"className":431,"code":1214,"filename":1215,"language":434,"meta":435,"style":435},"export default defineEventHandler(async (event) => {\n  const context = await useShopifyFulfillmentService(event)\n  \u002F\u002F Handle fulfillment service callback\n})\n","server\u002Fapi\u002Ffulfillment.ts",[411,1217,1218,1240,1259,1264],{"__ignoreMap":435},[439,1219,1220,1222,1224,1226,1228,1230,1232,1234,1236,1238],{"class":441,"line":442},[439,1221,446],{"class":445},[439,1223,449],{"class":445},[439,1225,453],{"class":452},[439,1227,457],{"class":456},[439,1229,461],{"class":460},[439,1231,465],{"class":464},[439,1233,469],{"class":468},[439,1235,472],{"class":464},[439,1237,475],{"class":460},[439,1239,478],{"class":464},[439,1241,1242,1244,1246,1248,1250,1253,1255,1257],{"class":441,"line":481},[439,1243,484],{"class":460},[439,1245,1183],{"class":456},[439,1247,502],{"class":464},[439,1249,505],{"class":445},[439,1251,1252],{"class":452}," useShopifyFulfillmentService",[439,1254,457],{"class":511},[439,1256,469],{"class":456},[439,1258,516],{"class":511},[439,1260,1261],{"class":441,"line":519},[439,1262,1263],{"class":1060},"  \u002F\u002F Handle fulfillment service callback\n",[439,1265,1266,1268],{"class":441,"line":526},[439,1267,634],{"class":464},[439,1269,516],{"class":456},[638,1271,1273],{"id":1272},"unauthenticated-access-background-jobs","Unauthenticated access (background jobs)",[407,1275,1276],{},"For accessing the Shopify API without an incoming request (cron jobs, background tasks):",[429,1278,1281],{"className":431,"code":1279,"filename":1280,"language":434,"meta":435,"style":435},"export default defineEventHandler(async () => {\n  const { admin } = await useShopifyUnauthenticatedAdmin(\n    'my-shop.myshopify.com'\n  )\n\n  const { data } = await admin.graphql(`{\n    products(first: 10) { edges { node { id title } } }\n  }`)\n\n  return data\n})\n","server\u002Fapi\u002Fcron\u002Fsync.ts",[411,1282,1283,1302,1321,1332,1337,1341,1367,1372,1380,1384,1390],{"__ignoreMap":435},[439,1284,1285,1287,1289,1291,1293,1295,1298,1300],{"class":441,"line":442},[439,1286,446],{"class":445},[439,1288,449],{"class":445},[439,1290,453],{"class":452},[439,1292,457],{"class":456},[439,1294,461],{"class":460},[439,1296,1297],{"class":464}," ()",[439,1299,475],{"class":460},[439,1301,478],{"class":464},[439,1303,1304,1306,1308,1310,1312,1314,1316,1319],{"class":441,"line":481},[439,1305,484],{"class":460},[439,1307,487],{"class":464},[439,1309,490],{"class":456},[439,1311,499],{"class":464},[439,1313,502],{"class":464},[439,1315,505],{"class":445},[439,1317,1318],{"class":452}," useShopifyUnauthenticatedAdmin",[439,1320,671],{"class":511},[439,1322,1323,1326,1329],{"class":441,"line":519},[439,1324,1325],{"class":464},"    '",[439,1327,1328],{"class":555},"my-shop.myshopify.com",[439,1330,1331],{"class":464},"'\n",[439,1333,1334],{"class":441,"line":526},[439,1335,1336],{"class":511},"  )\n",[439,1338,1339],{"class":441,"line":559},[439,1340,523],{"emptyLinePlaceholder":522},[439,1342,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365],{"class":441,"line":565},[439,1344,484],{"class":460},[439,1346,487],{"class":464},[439,1348,533],{"class":456},[439,1350,499],{"class":464},[439,1352,502],{"class":464},[439,1354,505],{"class":445},[439,1356,490],{"class":456},[439,1358,544],{"class":464},[439,1360,547],{"class":452},[439,1362,457],{"class":511},[439,1364,552],{"class":464},[439,1366,556],{"class":555},[439,1368,1369],{"class":441,"line":571},[439,1370,1371],{"class":555},"    products(first: 10) { edges { node { id title } } }\n",[439,1373,1374,1376,1378],{"class":441,"line":577},[439,1375,610],{"class":555},[439,1377,552],{"class":464},[439,1379,516],{"class":511},[439,1381,1382],{"class":441,"line":583},[439,1383,523],{"emptyLinePlaceholder":522},[439,1385,1386,1388],{"class":441,"line":589},[439,1387,625],{"class":445},[439,1389,628],{"class":456},[439,1391,1392,1394],{"class":441,"line":595},[439,1393,634],{"class":464},[439,1395,516],{"class":456},[638,1397,1399],{"id":1398},"merchant-login-non-embedded-apps","Merchant login (non-embedded apps)",[429,1401,1404],{"className":431,"code":1402,"filename":1403,"language":434,"meta":435,"style":435},"export default defineEventHandler(async (event) => {\n  const { errors } = await useShopifyLogin(event)\n  \u002F\u002F Handle login for non-embedded app flows\n})\n","server\u002Fapi\u002Flogin.ts",[411,1405,1406,1428,1452,1457],{"__ignoreMap":435},[439,1407,1408,1410,1412,1414,1416,1418,1420,1422,1424,1426],{"class":441,"line":442},[439,1409,446],{"class":445},[439,1411,449],{"class":445},[439,1413,453],{"class":452},[439,1415,457],{"class":456},[439,1417,461],{"class":460},[439,1419,465],{"class":464},[439,1421,469],{"class":468},[439,1423,472],{"class":464},[439,1425,475],{"class":460},[439,1427,478],{"class":464},[439,1429,1430,1432,1434,1437,1439,1441,1443,1446,1448,1450],{"class":441,"line":481},[439,1431,484],{"class":460},[439,1433,487],{"class":464},[439,1435,1436],{"class":456}," errors",[439,1438,499],{"class":464},[439,1440,502],{"class":464},[439,1442,505],{"class":445},[439,1444,1445],{"class":452}," useShopifyLogin",[439,1447,457],{"class":511},[439,1449,469],{"class":456},[439,1451,516],{"class":511},[439,1453,1454],{"class":441,"line":519},[439,1455,1456],{"class":1060},"  \u002F\u002F Handle login for non-embedded app flows\n",[439,1458,1459,1461],{"class":441,"line":526},[439,1460,634],{"class":464},[439,1462,516],{"class":456},[1464,1465,1466],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":435,"searchDepth":481,"depth":481,"links":1468},[1469,1474,1475],{"id":404,"depth":481,"text":405,"children":1470},[1471,1472],{"id":640,"depth":519,"text":641},{"id":777,"depth":519,"text":1473},"Full AdminContext return type",{"id":907,"depth":481,"text":908},{"id":990,"depth":481,"text":991,"children":1476},[1477,1478,1479,1480,1481,1482],{"id":994,"depth":519,"text":995},{"id":1070,"depth":519,"text":1071},{"id":1147,"depth":519,"text":1148},{"id":1210,"depth":519,"text":1211},{"id":1272,"depth":519,"text":1273},{"id":1398,"depth":519,"text":1399},"Authenticate admin requests, handle OAuth, and manage sessions in shopify-app-nuxt.","md",null,{},{"title":1488,"description":1489},"Authentication — shopify-app-nuxt","Learn how to authenticate admin requests, handle OAuth flows, and manage per-merchant sessions with shopify-app-nuxt.","5o5TT0PVCNWMBMgWibHqc307xRV8KEFjMoDxrAhEuI4",[1492,1494],{"title":31,"path":32,"stem":33,"description":1493,"children":-1},"Common issues and solutions when building Shopify apps with shopify-app-nuxt.",{"title":46,"path":47,"stem":48,"description":1495,"children":-1},"Handle and register Shopify webhooks with HMAC verification.",1776217204124]