From beb06240bdedfe2829990d6b1fe76e84bf4618c7 Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Thu, 19 May 2022 18:00:31 +0900 Subject: [PATCH 01/24] Drop import.meta.globEager in dev --- packages/hydrogen/src/entry-server.tsx | 8 +++++ .../vite-plugin-hydrogen-middleware.ts | 30 +++++++++++++++++-- .../hydrogen.config.js | 2 +- 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/packages/hydrogen/src/entry-server.tsx b/packages/hydrogen/src/entry-server.tsx index 96a0746084..70ca6bf25d 100644 --- a/packages/hydrogen/src/entry-server.tsx +++ b/packages/hydrogen/src/entry-server.tsx @@ -100,6 +100,14 @@ export const renderHydrogen = (App: any, hydrogenConfig?: HydrogenConfig) => { hydrogenConfig = configFile.default as HydrogenConfig; } + const {default: hydrogenRoutes} = await import( + // @ts-ignore + // eslint-disable-next-line node/no-missing-import + 'virtual:hydrogen-routes.server.jsx' + ); + + hydrogenConfig = {...hydrogenConfig, routes: hydrogenRoutes}; + request.ctx.hydrogenConfig = hydrogenConfig; request.ctx.buyerIpHeader = buyerIpHeader; diff --git a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts index 5b74363dc4..53629bc095 100644 --- a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts +++ b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts @@ -1,4 +1,10 @@ -import {Plugin, loadEnv, ResolvedConfig, normalizePath} from 'vite'; +import { + Plugin, + loadEnv, + ResolvedConfig, + normalizePath, + ViteDevServer, +} from 'vite'; import bodyParser from 'body-parser'; import path from 'path'; import {promises as fs} from 'fs'; @@ -12,8 +18,11 @@ export const HYDROGEN_DEFAULT_SERVER_ENTRY = const virtualModuleId = 'virtual:hydrogen-config'; const virtualProxyModuleId = virtualModuleId + ':proxy'; +const virtualHydrogenRoutes = 'virtual:hydrogen-routes.server.jsx'; + export default (pluginOptions: HydrogenVitePluginOptions) => { let config: ResolvedConfig; + let server: ViteDevServer; return { name: 'vite-plugin-hydrogen-middleware', @@ -26,7 +35,8 @@ export default (pluginOptions: HydrogenVitePluginOptions) => { * loading them in an SSR context, rendering them using the `entry-server` endpoint in the * user's project, and injecting the static HTML into the template. */ - async configureServer(server) { + async configureServer(_server) { + server = _server; const resolve = (p: string) => path.resolve(server.config.root, p); async function getIndexTemplate(url: string) { const indexHtml = await fs.readFile(resolve('index.html'), 'utf-8'); @@ -99,6 +109,10 @@ export default (pluginOptions: HydrogenVitePluginOptions) => { // https://vitejs.dev/guide/api-plugin.html#virtual-modules-convention return '\0' + virtualProxyModuleId; } + + if (source === virtualHydrogenRoutes) { + return '\0' + virtualHydrogenRoutes; + } }, async load(id) { if (id === '\0' + virtualProxyModuleId) { @@ -106,6 +120,18 @@ export default (pluginOptions: HydrogenVitePluginOptions) => { // directly using ssrLoadModule. It needs to be proxied as follows: return `import hc from 'virtual:hydrogen-config'; export default hc;`; } + + if (id === '\0' + virtualHydrogenRoutes) { + const {default: hc} = await server.ssrLoadModule( + 'virtual:hydrogen-config:proxy' + ); + + return { + code: + `import 'virtual:hydrogen-config';` + + `\nexport default import.meta.globEager('${hc.routes}/**/*.server.[jt](s|sx)');`, + }; + } }, } as Plugin; }; diff --git a/templates/template-hydrogen-default/hydrogen.config.js b/templates/template-hydrogen-default/hydrogen.config.js index f377da9ee0..5d752cd5aa 100644 --- a/templates/template-hydrogen-default/hydrogen.config.js +++ b/templates/template-hydrogen-default/hydrogen.config.js @@ -5,7 +5,7 @@ import { } from '@shopify/hydrogen'; export default defineConfig({ - routes: import.meta.globEager('./src/routes/**/*.server.[jt](s|sx)'), + routes: './src/routes', shopify: { storeDomain: 'hydrogen-preview.myshopify.com', storefrontToken: '3b580e70970c4528da70c98e097c2fa0', From 886360a83492c23c6660b3137dde2fd31beb75e0 Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Fri, 20 May 2022 16:02:49 +0900 Subject: [PATCH 02/24] Refactor variables and virtual modules --- packages/hydrogen/src/entry-server.tsx | 9 +++-- .../vite-plugin-hydrogen-middleware.ts | 33 ++++++++++--------- .../plugins/vite-plugin-hydrogen-rsc.ts | 7 ++-- 3 files changed, 29 insertions(+), 20 deletions(-) diff --git a/packages/hydrogen/src/entry-server.tsx b/packages/hydrogen/src/entry-server.tsx index 70ca6bf25d..9001ef5e1c 100644 --- a/packages/hydrogen/src/entry-server.tsx +++ b/packages/hydrogen/src/entry-server.tsx @@ -94,9 +94,12 @@ export const renderHydrogen = (App: any, hydrogenConfig?: HydrogenConfig) => { const url = new URL(request.url); if (!hydrogenConfig) { - // @ts-ignore - // eslint-disable-next-line node/no-missing-import - const configFile = await import('virtual:hydrogen-config'); + const configFile = await import( + // @ts-ignore + // eslint-disable-next-line node/no-missing-import + 'virtual:hydrogen.config.ts' + ); + hydrogenConfig = configFile.default as HydrogenConfig; } diff --git a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts index 53629bc095..faae90774e 100644 --- a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts +++ b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts @@ -15,8 +15,10 @@ import {InMemoryCache} from '../cache/in-memory'; export const HYDROGEN_DEFAULT_SERVER_ENTRY = process.env.HYDROGEN_SERVER_ENTRY || '/src/App.server'; -const virtualModuleId = 'virtual:hydrogen-config'; -const virtualProxyModuleId = virtualModuleId + ':proxy'; +export const VIRTUAL_HYDROGEN_CONFIG_ID = 'virtual:hydrogen.config.ts'; +// Note: do not use query string here, it breaks Vite +export const VIRTUAL_HYDROGEN_CONFIG_PROXY_ID = + VIRTUAL_HYDROGEN_CONFIG_ID + ':proxy'; const virtualHydrogenRoutes = 'virtual:hydrogen-routes.server.jsx'; @@ -52,7 +54,7 @@ export default (pluginOptions: HydrogenVitePluginOptions) => { dev: true, getShopifyConfig: async (incomingMessage) => { const {default: hydrogenConfig} = await server.ssrLoadModule( - 'virtual:hydrogen-config:proxy' + VIRTUAL_HYDROGEN_CONFIG_PROXY_ID ); // @ts-ignore @@ -69,9 +71,8 @@ export default (pluginOptions: HydrogenVitePluginOptions) => { // via `ServerComponentRequest` during production runtime. request.normalizedUrl = request.url; - return typeof hydrogenConfig.shopify === 'function' - ? hydrogenConfig.shopify(request) - : hydrogenConfig.shopify; + const {shopify} = hydrogenConfig; + return typeof shopify === 'function' ? shopify(request) : shopify; }, }) ); @@ -93,32 +94,34 @@ export default (pluginOptions: HydrogenVitePluginOptions) => { ); }, async resolveId(source, importer) { - if (source === virtualModuleId) { - const configPath = await findHydrogenConfigPath( + if (source === VIRTUAL_HYDROGEN_CONFIG_ID) { + const hydrogenConfigPath = await findHydrogenConfigPath( config.root, pluginOptions.configPath ); - return this.resolve(configPath, importer, { + // This direct dependency on a real file + // makes HMR work for the virtual module. + return this.resolve(hydrogenConfigPath, importer, { skipSelf: true, }); } - if (source === virtualProxyModuleId) { + if (source === VIRTUAL_HYDROGEN_CONFIG_PROXY_ID) { // Virtual modules convention // https://vitejs.dev/guide/api-plugin.html#virtual-modules-convention - return '\0' + virtualProxyModuleId; + return '\0' + VIRTUAL_HYDROGEN_CONFIG_PROXY_ID; } if (source === virtualHydrogenRoutes) { return '\0' + virtualHydrogenRoutes; } }, - async load(id) { - if (id === '\0' + virtualProxyModuleId) { + load(id) { + if (id === '\0' + VIRTUAL_HYDROGEN_CONFIG_PROXY_ID) { // Likely due to a bug in Vite, but the config cannot be loaded - // directly using ssrLoadModule. It needs to be proxied as follows: - return `import hc from 'virtual:hydrogen-config'; export default hc;`; + // directly using ssrLoadModule from a Vite plugin. It needs to be proxied as follows: + return `import hc from '${VIRTUAL_HYDROGEN_CONFIG_ID}'; export default hc;`; } if (id === '\0' + virtualHydrogenRoutes) { diff --git a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-rsc.ts b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-rsc.ts index 25c0e4db49..024a36918e 100644 --- a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-rsc.ts +++ b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-rsc.ts @@ -1,6 +1,9 @@ // @ts-ignore import reactServerDomVite from '@shopify/hydrogen/vendor/react-server-dom-vite/plugin'; -import {HYDROGEN_DEFAULT_SERVER_ENTRY} from './vite-plugin-hydrogen-middleware'; +import { + HYDROGEN_DEFAULT_SERVER_ENTRY, + VIRTUAL_HYDROGEN_CONFIG_PROXY_ID, +} from './vite-plugin-hydrogen-middleware'; import {createServer} from 'vite'; export default function () { @@ -28,7 +31,7 @@ export default function () { server.ssrLoadModule(HYDROGEN_DEFAULT_SERVER_ENTRY), // Route globs are placed in hydrogen.config.js and need to // be loaded to discover client components in routes - server.ssrLoadModule('virtual:hydrogen-config:proxy'), + server.ssrLoadModule(VIRTUAL_HYDROGEN_CONFIG_PROXY_ID), ]); await server.close(); From af3b9727b7a7b94ed3a6b5bb8a2775309693f74a Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Fri, 20 May 2022 16:36:18 +0900 Subject: [PATCH 03/24] Fix code after cherry-pick --- .../plugins/vite-plugin-hydrogen-middleware.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts index faae90774e..93c067caf3 100644 --- a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts +++ b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts @@ -20,7 +20,7 @@ export const VIRTUAL_HYDROGEN_CONFIG_ID = 'virtual:hydrogen.config.ts'; export const VIRTUAL_HYDROGEN_CONFIG_PROXY_ID = VIRTUAL_HYDROGEN_CONFIG_ID + ':proxy'; -const virtualHydrogenRoutes = 'virtual:hydrogen-routes.server.jsx'; +const VIRTUAL_HYDROGEN_ROUTES_ID = 'virtual:hydrogen-routes.server.jsx'; export default (pluginOptions: HydrogenVitePluginOptions) => { let config: ResolvedConfig; @@ -113,25 +113,25 @@ export default (pluginOptions: HydrogenVitePluginOptions) => { return '\0' + VIRTUAL_HYDROGEN_CONFIG_PROXY_ID; } - if (source === virtualHydrogenRoutes) { - return '\0' + virtualHydrogenRoutes; + if (source === VIRTUAL_HYDROGEN_ROUTES_ID) { + return '\0' + VIRTUAL_HYDROGEN_ROUTES_ID; } }, - load(id) { + async load(id) { if (id === '\0' + VIRTUAL_HYDROGEN_CONFIG_PROXY_ID) { // Likely due to a bug in Vite, but the config cannot be loaded // directly using ssrLoadModule from a Vite plugin. It needs to be proxied as follows: return `import hc from '${VIRTUAL_HYDROGEN_CONFIG_ID}'; export default hc;`; } - if (id === '\0' + virtualHydrogenRoutes) { + if (id === '\0' + VIRTUAL_HYDROGEN_ROUTES_ID) { const {default: hc} = await server.ssrLoadModule( - 'virtual:hydrogen-config:proxy' + VIRTUAL_HYDROGEN_CONFIG_PROXY_ID ); return { code: - `import 'virtual:hydrogen-config';` + + `import '${VIRTUAL_HYDROGEN_CONFIG_ID}';` + `\nexport default import.meta.globEager('${hc.routes}/**/*.server.[jt](s|sx)');`, }; } From f3c3bca5577983ca42966641975f16f92cb18405 Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Fri, 20 May 2022 17:52:56 +0900 Subject: [PATCH 04/24] Extract Vitception --- .../plugins/vite-plugin-hydrogen-rsc.ts | 16 ++++--------- .../hydrogen/src/framework/viteception.ts | 23 +++++++++++++++++++ 2 files changed, 27 insertions(+), 12 deletions(-) create mode 100644 packages/hydrogen/src/framework/viteception.ts diff --git a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-rsc.ts b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-rsc.ts index 024a36918e..f6d0430a46 100644 --- a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-rsc.ts +++ b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-rsc.ts @@ -4,7 +4,7 @@ import { HYDROGEN_DEFAULT_SERVER_ENTRY, VIRTUAL_HYDROGEN_CONFIG_PROXY_ID, } from './vite-plugin-hydrogen-middleware'; -import {createServer} from 'vite'; +import {viteception} from '../viteception'; export default function () { return reactServerDomVite({ @@ -20,22 +20,14 @@ export default function () { ); }, async findClientComponentsForClientBuild() { - // In client build, we create a local server to discover client compoents. - const server = await createServer({ - clearScreen: false, - server: {middlewareMode: 'ssr'}, - }); - - await Promise.all([ + const {server} = await viteception([ // Load server entry to discover client components early - server.ssrLoadModule(HYDROGEN_DEFAULT_SERVER_ENTRY), + HYDROGEN_DEFAULT_SERVER_ENTRY, // Route globs are placed in hydrogen.config.js and need to // be loaded to discover client components in routes - server.ssrLoadModule(VIRTUAL_HYDROGEN_CONFIG_PROXY_ID), + VIRTUAL_HYDROGEN_CONFIG_PROXY_ID, ]); - await server.close(); - // At this point, the server has loaded all the components in the module graph return reactServerDomVite.findClientComponentsFromServer(server); }, diff --git a/packages/hydrogen/src/framework/viteception.ts b/packages/hydrogen/src/framework/viteception.ts new file mode 100644 index 0000000000..9a88513892 --- /dev/null +++ b/packages/hydrogen/src/framework/viteception.ts @@ -0,0 +1,23 @@ +import {createServer} from 'vite'; + +export async function viteception(paths: string[]) { + const isWorker = process.env.WORKER; + delete process.env.WORKER; + + const server = await createServer({ + clearScreen: false, + server: {middlewareMode: 'ssr'}, + }); + + if (isWorker) { + process.env.WORKER = isWorker; + } + + const loaded = await Promise.all( + paths.map((path) => server.ssrLoadModule(path)) + ); + + await server.close(); + + return {server, loaded}; +} From 441e60407d88019266f2c8aa0ec22e4dc896e018 Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Fri, 20 May 2022 18:07:11 +0900 Subject: [PATCH 05/24] Use Vitception to load routes during build --- .../vite-plugin-hydrogen-middleware.ts | 41 ++++++++++++++----- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts index 93c067caf3..8a554c52ec 100644 --- a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts +++ b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts @@ -11,6 +11,7 @@ import {promises as fs} from 'fs'; import {hydrogenMiddleware, graphiqlMiddleware} from '../middleware'; import type {HydrogenVitePluginOptions} from '../../types'; import {InMemoryCache} from '../cache/in-memory'; +import {viteception} from '../viteception'; export const HYDROGEN_DEFAULT_SERVER_ENTRY = process.env.HYDROGEN_SERVER_ENTRY || '/src/App.server'; @@ -20,7 +21,7 @@ export const VIRTUAL_HYDROGEN_CONFIG_ID = 'virtual:hydrogen.config.ts'; export const VIRTUAL_HYDROGEN_CONFIG_PROXY_ID = VIRTUAL_HYDROGEN_CONFIG_ID + ':proxy'; -const VIRTUAL_HYDROGEN_ROUTES_ID = 'virtual:hydrogen-routes.server.jsx'; +export const VIRTUAL_HYDROGEN_ROUTES_ID = 'virtual:hydrogen-routes.server.jsx'; export default (pluginOptions: HydrogenVitePluginOptions) => { let config: ResolvedConfig; @@ -117,7 +118,7 @@ export default (pluginOptions: HydrogenVitePluginOptions) => { return '\0' + VIRTUAL_HYDROGEN_ROUTES_ID; } }, - async load(id) { + load(id) { if (id === '\0' + VIRTUAL_HYDROGEN_CONFIG_PROXY_ID) { // Likely due to a bug in Vite, but the config cannot be loaded // directly using ssrLoadModule from a Vite plugin. It needs to be proxied as follows: @@ -125,18 +126,38 @@ export default (pluginOptions: HydrogenVitePluginOptions) => { } if (id === '\0' + VIRTUAL_HYDROGEN_ROUTES_ID) { - const {default: hc} = await server.ssrLoadModule( - VIRTUAL_HYDROGEN_CONFIG_PROXY_ID - ); + return importHydrogenConfig().then((hc) => { + const routesPath = + typeof hc.routes === 'string' ? hc.routes : hc.routes?.files; + + let code = `export default import.meta.globEager('./${path.join( + routesPath, + '**/*.server.[jt](s|sx)' + )}');`; + + if (config.command === 'serve') { + // Add dependency on Hydrogen config for HMR + code += `\nimport '${VIRTUAL_HYDROGEN_CONFIG_ID}';`; + } - return { - code: - `import '${VIRTUAL_HYDROGEN_CONFIG_ID}';` + - `\nexport default import.meta.globEager('${hc.routes}/**/*.server.[jt](s|sx)');`, - }; + return {code}; + }); } }, } as Plugin; + + async function importHydrogenConfig() { + if (server) { + const loaded = await server.ssrLoadModule( + VIRTUAL_HYDROGEN_CONFIG_PROXY_ID + ); + + return loaded.default; + } + + const {loaded} = await viteception([VIRTUAL_HYDROGEN_CONFIG_PROXY_ID]); + return loaded[0].default; + } }; declare global { From 5f0bc0e5ca665c065a8af8b41dc1ddd4c890a85a Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Fri, 20 May 2022 18:12:11 +0900 Subject: [PATCH 06/24] Use static imports to fix build --- packages/hydrogen/src/entry-server.tsx | 42 +++++++++---------- .../FileRoutes/FileRoutes.server.tsx | 2 +- .../ServerComponentRequest.server.ts | 8 +++- packages/hydrogen/src/types.ts | 15 ++++++- 4 files changed, 40 insertions(+), 27 deletions(-) diff --git a/packages/hydrogen/src/entry-server.tsx b/packages/hydrogen/src/entry-server.tsx index 9001ef5e1c..e43b5e3ccb 100644 --- a/packages/hydrogen/src/entry-server.tsx +++ b/packages/hydrogen/src/entry-server.tsx @@ -12,8 +12,8 @@ import type { RendererOptions, StreamerOptions, HydratorOptions, - HydrogenConfig, ImportGlobEagerOutput, + CompiledHydrogenConfig, } from './types'; import {Html, applyHtmlHead} from './framework/Hydration/Html'; import {ServerComponentResponse} from './framework/Hydration/ServerComponentResponse.server'; @@ -49,6 +49,13 @@ import {ServerAnalyticsRoute} from './foundation/Analytics/ServerAnalyticsRoute. import {getSyncSessionApi} from './foundation/session/session'; import {parseJSON} from './utilities/parse'; +// @ts-ignore +// eslint-disable-next-line node/no-missing-import +import virtualHydrogenConfig from 'virtual:hydrogen.config.ts'; +// @ts-ignore +// eslint-disable-next-line node/no-missing-import +import virtualHydrogenRoutes from 'virtual:hydrogen-routes.server.jsx'; + declare global { // This is provided by a Vite plugin // and will trigger tree-shaking. @@ -78,7 +85,7 @@ export interface RequestHandler { >; } -export const renderHydrogen = (App: any, hydrogenConfig?: HydrogenConfig) => { +export const renderHydrogen = (App: any) => { const handleRequest: RequestHandler = async function (rawRequest, options) { const { indexTemplate, @@ -93,23 +100,14 @@ export const renderHydrogen = (App: any, hydrogenConfig?: HydrogenConfig) => { const request = new ServerComponentRequest(rawRequest); const url = new URL(request.url); - if (!hydrogenConfig) { - const configFile = await import( - // @ts-ignore - // eslint-disable-next-line node/no-missing-import - 'virtual:hydrogen.config.ts' - ); - - hydrogenConfig = configFile.default as HydrogenConfig; - } - - const {default: hydrogenRoutes} = await import( - // @ts-ignore - // eslint-disable-next-line node/no-missing-import - 'virtual:hydrogen-routes.server.jsx' - ); - - hydrogenConfig = {...hydrogenConfig, routes: hydrogenRoutes}; + const configRoutes = virtualHydrogenConfig.routes; + const hydrogenConfig: CompiledHydrogenConfig = { + ...virtualHydrogenConfig, + routes: { + ...(typeof configRoutes === 'string' ? null : configRoutes), + files: virtualHydrogenRoutes as ImportGlobEagerOutput, + }, + }; request.ctx.hydrogenConfig = hydrogenConfig; request.ctx.buyerIpHeader = buyerIpHeader; @@ -146,8 +144,8 @@ export const renderHydrogen = (App: any, hydrogenConfig?: HydrogenConfig) => { const isReactHydrationRequest = url.pathname === RSC_PATHNAME; - if (!isReactHydrationRequest && hydrogenConfig.routes) { - const apiRoute = getApiRoute(url, hydrogenConfig.routes); + if (!isReactHydrationRequest) { + const apiRoute = getApiRoute(url, hydrogenConfig.routes.files); // The API Route might have a default export, making it also a server component // If it does, only render the API route if the request method is GET @@ -212,7 +210,7 @@ export const renderHydrogen = (App: any, hydrogenConfig?: HydrogenConfig) => { return handleRequest; }; -function getApiRoute(url: URL, routes: NonNullable) { +function getApiRoute(url: URL, routes: ImportGlobEagerOutput) { const apiRoutes = getApiRoutes(routes!); return getApiRouteFromURL(url, apiRoutes); } diff --git a/packages/hydrogen/src/foundation/FileRoutes/FileRoutes.server.tsx b/packages/hydrogen/src/foundation/FileRoutes/FileRoutes.server.tsx index e22273e2b1..f471711b70 100644 --- a/packages/hydrogen/src/foundation/FileRoutes/FileRoutes.server.tsx +++ b/packages/hydrogen/src/foundation/FileRoutes/FileRoutes.server.tsx @@ -30,7 +30,7 @@ export function FileRoutes({routes, basePath, dirPrefix}: FileRoutesProps) { if (!routes) { const fileRoutes = request.ctx.hydrogenConfig!.routes; - routes = fileRoutes?.files ?? (fileRoutes as ImportGlobEagerOutput); + routes = fileRoutes.files; dirPrefix ??= fileRoutes?.dirPrefix as string; basePath ??= fileRoutes?.basePath as string; } diff --git a/packages/hydrogen/src/framework/Hydration/ServerComponentRequest.server.ts b/packages/hydrogen/src/framework/Hydration/ServerComponentRequest.server.ts index f7d17d88c2..eb2f1164a4 100644 --- a/packages/hydrogen/src/framework/Hydration/ServerComponentRequest.server.ts +++ b/packages/hydrogen/src/framework/Hydration/ServerComponentRequest.server.ts @@ -2,7 +2,11 @@ import type {ShopifyContextValue} from '../../foundation/ShopifyProvider/types'; import {getTime} from '../../utilities/timing'; import type {QueryCacheControlHeaders} from '../../utilities/log/log-cache-header'; import type {QueryTiming} from '../../utilities/log/log-query-timeline'; -import type {HydrogenConfig, PreloadOptions, QueryKey} from '../../types'; +import type { + CompiledHydrogenConfig, + PreloadOptions, + QueryKey, +} from '../../types'; import {hashKey} from '../../utilities/hash'; import {HelmetData as HeadData} from 'react-helmet-async'; import {RSC_PATHNAME} from '../../constants'; @@ -51,7 +55,7 @@ export class ServerComponentRequest extends Request { public ctx: { cache: Map; head: HeadData; - hydrogenConfig?: HydrogenConfig; + hydrogenConfig?: CompiledHydrogenConfig; shopifyConfig?: ShopifyContextValue; queryCacheControl: Array; queryTimings: Array; diff --git a/packages/hydrogen/src/types.ts b/packages/hydrogen/src/types.ts index 46f346ba6e..35aa996282 100644 --- a/packages/hydrogen/src/types.ts +++ b/packages/hydrogen/src/types.ts @@ -52,11 +52,18 @@ export type ImportGlobEagerOutput = Record< >; export type HydrogenConfigRoutes = { - files?: ImportGlobEagerOutput; + files?: string; basePath?: string; dirPrefix?: string; }; +export type CompiledHydrogenConfigRoutes = Omit< + HydrogenConfigRoutes, + 'files' +> & { + files: ImportGlobEagerOutput; +}; + type ConfigFetcher = (request: ServerComponentRequest) => T | Promise; export type ShopifyConfigFetcher = ConfigFetcher; @@ -70,12 +77,16 @@ export type ServerAnalyticsConnector = { }; export type HydrogenConfig = { - routes?: HydrogenConfigRoutes | ImportGlobEagerOutput; + routes?: HydrogenConfigRoutes | string; shopify?: ShopifyConfig | ShopifyConfigFetcher; serverAnalyticsConnectors?: Array; session?: (log: Logger) => SessionStorageAdapter; }; +export type CompiledHydrogenConfig = Omit & { + routes: CompiledHydrogenConfigRoutes; +}; + export type ClientHandlerConfig = { /** React's StrictMode is on by default for your client side app; if you want to turn it off (not recommended), you can pass `false` */ strictMode?: boolean; From f48ca85baf4b8fafc026cfb40e27cb55096749c2 Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Fri, 20 May 2022 18:12:50 +0900 Subject: [PATCH 07/24] Add default routes path --- .../src/framework/plugins/vite-plugin-hydrogen-middleware.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts index 8a554c52ec..30fd6a3205 100644 --- a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts +++ b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts @@ -128,7 +128,8 @@ export default (pluginOptions: HydrogenVitePluginOptions) => { if (id === '\0' + VIRTUAL_HYDROGEN_ROUTES_ID) { return importHydrogenConfig().then((hc) => { const routesPath = - typeof hc.routes === 'string' ? hc.routes : hc.routes?.files; + (typeof hc.routes === 'string' ? hc.routes : hc.routes?.files) ?? + './src/routes'; let code = `export default import.meta.globEager('./${path.join( routesPath, From bf409b408d7c7fc98d92691d409edfaa766d7130 Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Tue, 24 May 2022 13:04:40 +0900 Subject: [PATCH 08/24] Fix types and paths --- packages/hydrogen/src/config.ts | 6 +++--- packages/hydrogen/src/entry-server.tsx | 14 +++++++------- .../Hydration/ServerComponentRequest.server.ts | 4 ++-- .../plugins/vite-plugin-hydrogen-middleware.ts | 15 ++++++++++----- packages/hydrogen/src/types.ts | 8 ++++---- packages/hydrogen/src/utilities/apiRoutes.ts | 6 +++--- 6 files changed, 29 insertions(+), 24 deletions(-) diff --git a/packages/hydrogen/src/config.ts b/packages/hydrogen/src/config.ts index 4920e6fa8c..f9aae4cf15 100644 --- a/packages/hydrogen/src/config.ts +++ b/packages/hydrogen/src/config.ts @@ -1,5 +1,5 @@ -import type {HydrogenConfig} from './types'; +import type {InlineHydrogenConfig} from './types'; -export const defineConfig = (params: HydrogenConfig) => params; +export const defineConfig = (params: InlineHydrogenConfig) => params; -export type {HydrogenConfig}; +export type {InlineHydrogenConfig as HydrogenConfig}; diff --git a/packages/hydrogen/src/entry-server.tsx b/packages/hydrogen/src/entry-server.tsx index e43b5e3ccb..fe223632ac 100644 --- a/packages/hydrogen/src/entry-server.tsx +++ b/packages/hydrogen/src/entry-server.tsx @@ -13,7 +13,7 @@ import type { StreamerOptions, HydratorOptions, ImportGlobEagerOutput, - CompiledHydrogenConfig, + ResolvedHydrogenConfig, } from './types'; import {Html, applyHtmlHead} from './framework/Hydration/Html'; import {ServerComponentResponse} from './framework/Hydration/ServerComponentResponse.server'; @@ -51,10 +51,10 @@ import {parseJSON} from './utilities/parse'; // @ts-ignore // eslint-disable-next-line node/no-missing-import -import virtualHydrogenConfig from 'virtual:hydrogen.config.ts'; +import inlineHydrogenConfig from 'virtual:hydrogen.config.ts'; // @ts-ignore // eslint-disable-next-line node/no-missing-import -import virtualHydrogenRoutes from 'virtual:hydrogen-routes.server.jsx'; +import hydrogenRoutes from 'virtual:hydrogen-routes.server.jsx'; declare global { // This is provided by a Vite plugin @@ -100,12 +100,12 @@ export const renderHydrogen = (App: any) => { const request = new ServerComponentRequest(rawRequest); const url = new URL(request.url); - const configRoutes = virtualHydrogenConfig.routes; - const hydrogenConfig: CompiledHydrogenConfig = { - ...virtualHydrogenConfig, + const configRoutes = inlineHydrogenConfig.routes; + const hydrogenConfig: ResolvedHydrogenConfig = { + ...inlineHydrogenConfig, routes: { ...(typeof configRoutes === 'string' ? null : configRoutes), - files: virtualHydrogenRoutes as ImportGlobEagerOutput, + files: hydrogenRoutes as ImportGlobEagerOutput, }, }; diff --git a/packages/hydrogen/src/framework/Hydration/ServerComponentRequest.server.ts b/packages/hydrogen/src/framework/Hydration/ServerComponentRequest.server.ts index eb2f1164a4..6a01b7a5b9 100644 --- a/packages/hydrogen/src/framework/Hydration/ServerComponentRequest.server.ts +++ b/packages/hydrogen/src/framework/Hydration/ServerComponentRequest.server.ts @@ -3,7 +3,7 @@ import {getTime} from '../../utilities/timing'; import type {QueryCacheControlHeaders} from '../../utilities/log/log-cache-header'; import type {QueryTiming} from '../../utilities/log/log-query-timeline'; import type { - CompiledHydrogenConfig, + ResolvedHydrogenConfig, PreloadOptions, QueryKey, } from '../../types'; @@ -55,7 +55,7 @@ export class ServerComponentRequest extends Request { public ctx: { cache: Map; head: HeadData; - hydrogenConfig?: CompiledHydrogenConfig; + hydrogenConfig?: ResolvedHydrogenConfig; shopifyConfig?: ShopifyContextValue; queryCacheControl: Array; queryTimings: Array; diff --git a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts index 30fd6a3205..c339e40723 100644 --- a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts +++ b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts @@ -127,14 +127,19 @@ export default (pluginOptions: HydrogenVitePluginOptions) => { if (id === '\0' + VIRTUAL_HYDROGEN_ROUTES_ID) { return importHydrogenConfig().then((hc) => { - const routesPath = + let routesPath = (typeof hc.routes === 'string' ? hc.routes : hc.routes?.files) ?? './src/routes'; - let code = `export default import.meta.globEager('./${path.join( - routesPath, - '**/*.server.[jt](s|sx)' - )}');`; + if (!routesPath.includes('*')) { + if (!routesPath.endsWith('/')) { + routesPath += '/'; + } + + routesPath += '**/*.server.[jt](s|sx)'; + } + + let code = `export default import.meta.globEager('${routesPath}');`; if (config.command === 'serve') { // Add dependency on Hydrogen config for HMR diff --git a/packages/hydrogen/src/types.ts b/packages/hydrogen/src/types.ts index 35aa996282..453c93bd38 100644 --- a/packages/hydrogen/src/types.ts +++ b/packages/hydrogen/src/types.ts @@ -57,7 +57,7 @@ export type HydrogenConfigRoutes = { dirPrefix?: string; }; -export type CompiledHydrogenConfigRoutes = Omit< +export type ResolvedHydrogenConfigRoutes = Omit< HydrogenConfigRoutes, 'files' > & { @@ -76,15 +76,15 @@ export type ServerAnalyticsConnector = { ) => void; }; -export type HydrogenConfig = { +export type InlineHydrogenConfig = { routes?: HydrogenConfigRoutes | string; shopify?: ShopifyConfig | ShopifyConfigFetcher; serverAnalyticsConnectors?: Array; session?: (log: Logger) => SessionStorageAdapter; }; -export type CompiledHydrogenConfig = Omit & { - routes: CompiledHydrogenConfigRoutes; +export type ResolvedHydrogenConfig = Omit & { + routes: ResolvedHydrogenConfigRoutes; }; export type ClientHandlerConfig = { diff --git a/packages/hydrogen/src/utilities/apiRoutes.ts b/packages/hydrogen/src/utilities/apiRoutes.ts index d60719fa1b..8d3a226581 100644 --- a/packages/hydrogen/src/utilities/apiRoutes.ts +++ b/packages/hydrogen/src/utilities/apiRoutes.ts @@ -1,5 +1,5 @@ import { - HydrogenConfig, + InlineHydrogenConfig, HydrogenConfigRoutes, ImportGlobEagerOutput, } from '../types'; @@ -151,7 +151,7 @@ interface QueryShopArgs { } function queryShopBuilder( - shopifyConfigGetter: HydrogenConfig['shopify'], + shopifyConfigGetter: InlineHydrogenConfig['shopify'], request: ServerComponentRequest ) { return async function queryShop({ @@ -196,7 +196,7 @@ function queryShopBuilder( export async function renderApiRoute( request: ServerComponentRequest, route: ApiRouteMatch, - shopifyConfig: HydrogenConfig['shopify'], + shopifyConfig: InlineHydrogenConfig['shopify'], session?: SessionStorageAdapter ): Promise { let response; From 9558d461abec667c6feeef8b6acf0c3eede84f60 Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Tue, 24 May 2022 15:50:15 +0900 Subject: [PATCH 09/24] Fix dirPrefix issues --- packages/hydrogen/src/entry-server.tsx | 13 +++--- .../FileRoutes/FileRoutes.server.tsx | 7 +-- .../vite-plugin-hydrogen-middleware.ts | 14 ++++-- packages/hydrogen/src/types.ts | 24 +++++----- packages/hydrogen/src/utilities/apiRoutes.ts | 18 +++----- .../hydrogen/src/utilities/findRoutePrefix.ts | 22 ---------- .../utilities/tests/findRoutePrefix.test.ts | 44 ------------------- 7 files changed, 37 insertions(+), 105 deletions(-) delete mode 100644 packages/hydrogen/src/utilities/findRoutePrefix.ts delete mode 100644 packages/hydrogen/src/utilities/tests/findRoutePrefix.test.ts diff --git a/packages/hydrogen/src/entry-server.tsx b/packages/hydrogen/src/entry-server.tsx index fe223632ac..7e7368a6a2 100644 --- a/packages/hydrogen/src/entry-server.tsx +++ b/packages/hydrogen/src/entry-server.tsx @@ -14,6 +14,7 @@ import type { HydratorOptions, ImportGlobEagerOutput, ResolvedHydrogenConfig, + ResolvedHydrogenRoutes, } from './types'; import {Html, applyHtmlHead} from './framework/Hydration/Html'; import {ServerComponentResponse} from './framework/Hydration/ServerComponentResponse.server'; @@ -100,13 +101,9 @@ export const renderHydrogen = (App: any) => { const request = new ServerComponentRequest(rawRequest); const url = new URL(request.url); - const configRoutes = inlineHydrogenConfig.routes; const hydrogenConfig: ResolvedHydrogenConfig = { ...inlineHydrogenConfig, - routes: { - ...(typeof configRoutes === 'string' ? null : configRoutes), - files: hydrogenRoutes as ImportGlobEagerOutput, - }, + routes: hydrogenRoutes, }; request.ctx.hydrogenConfig = hydrogenConfig; @@ -145,7 +142,7 @@ export const renderHydrogen = (App: any) => { const isReactHydrationRequest = url.pathname === RSC_PATHNAME; if (!isReactHydrationRequest) { - const apiRoute = getApiRoute(url, hydrogenConfig.routes.files); + const apiRoute = getApiRoute(url, hydrogenConfig.routes); // The API Route might have a default export, making it also a server component // If it does, only render the API route if the request method is GET @@ -210,8 +207,8 @@ export const renderHydrogen = (App: any) => { return handleRequest; }; -function getApiRoute(url: URL, routes: ImportGlobEagerOutput) { - const apiRoutes = getApiRoutes(routes!); +function getApiRoute(url: URL, routes: ResolvedHydrogenRoutes) { + const apiRoutes = getApiRoutes(routes); return getApiRouteFromURL(url, apiRoutes); } diff --git a/packages/hydrogen/src/foundation/FileRoutes/FileRoutes.server.tsx b/packages/hydrogen/src/foundation/FileRoutes/FileRoutes.server.tsx index f471711b70..ab4bddac33 100644 --- a/packages/hydrogen/src/foundation/FileRoutes/FileRoutes.server.tsx +++ b/packages/hydrogen/src/foundation/FileRoutes/FileRoutes.server.tsx @@ -6,7 +6,6 @@ import {useServerRequest} from '../ServerRequestProvider'; import type {ImportGlobEagerOutput} from '../../types'; import {RouteParamsProvider} from '../useRouteParams/RouteParamsProvider.client'; -import {findRoutePrefix} from '../../utilities/findRoutePrefix'; interface FileRoutesProps { /** The routes defined by Vite's [import.meta.globEager](https://vitejs.dev/guide/features.html#glob-import) method. */ @@ -80,17 +79,15 @@ interface HydrogenRoute { export function createPageRoutes( pages: ImportGlobEagerOutput, topLevelPath = '*', - dirPrefix?: string | RegExp + dirPrefix: string | RegExp = '' ): HydrogenRoute[] { const topLevelPrefix = topLevelPath.replace('*', '').replace(/\/$/, ''); const keys = Object.keys(pages); - const commonRoutePrefix = dirPrefix ?? findRoutePrefix(keys); - const routes = keys .map((key) => { - const path = extractPathFromRoutesKey(key, commonRoutePrefix); + const path = extractPathFromRoutesKey(key, dirPrefix); /** * Catch-all routes [...handle].jsx don't need an exact match diff --git a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts index c339e40723..e4afe0e094 100644 --- a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts +++ b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts @@ -127,9 +127,13 @@ export default (pluginOptions: HydrogenVitePluginOptions) => { if (id === '\0' + VIRTUAL_HYDROGEN_ROUTES_ID) { return importHydrogenConfig().then((hc) => { - let routesPath = + let routesPath: string = (typeof hc.routes === 'string' ? hc.routes : hc.routes?.files) ?? - './src/routes'; + '/src/routes'; + + if (routesPath.startsWith('./')) { + routesPath = routesPath.slice(1); + } if (!routesPath.includes('*')) { if (!routesPath.endsWith('/')) { @@ -139,7 +143,11 @@ export default (pluginOptions: HydrogenVitePluginOptions) => { routesPath += '**/*.server.[jt](s|sx)'; } - let code = `export default import.meta.globEager('${routesPath}');`; + const [dirPrefix] = routesPath.split('/*'); + + let code = `export default {\n dirPrefix: '${dirPrefix}',\n basePath: '${ + hc.routes?.basePath ?? '' + }',\n files: import.meta.globEager('${routesPath}')\n};`; if (config.command === 'serve') { // Add dependency on Hydrogen config for HMR diff --git a/packages/hydrogen/src/types.ts b/packages/hydrogen/src/types.ts index 453c93bd38..254a7d77bc 100644 --- a/packages/hydrogen/src/types.ts +++ b/packages/hydrogen/src/types.ts @@ -51,17 +51,17 @@ export type ImportGlobEagerOutput = Record< Record<'default' | 'api', any> >; -export type HydrogenConfigRoutes = { - files?: string; - basePath?: string; - dirPrefix?: string; -}; - -export type ResolvedHydrogenConfigRoutes = Omit< - HydrogenConfigRoutes, - 'files' -> & { +export type InlineHydrogenRoutes = + | string + | { + files: string; + basePath?: string; + }; + +export type ResolvedHydrogenRoutes = { files: ImportGlobEagerOutput; + dirPrefix: string; + basePath: string; }; type ConfigFetcher = (request: ServerComponentRequest) => T | Promise; @@ -77,14 +77,14 @@ export type ServerAnalyticsConnector = { }; export type InlineHydrogenConfig = { - routes?: HydrogenConfigRoutes | string; + routes?: InlineHydrogenRoutes; shopify?: ShopifyConfig | ShopifyConfigFetcher; serverAnalyticsConnectors?: Array; session?: (log: Logger) => SessionStorageAdapter; }; export type ResolvedHydrogenConfig = Omit & { - routes: ResolvedHydrogenConfigRoutes; + routes: ResolvedHydrogenRoutes; }; export type ClientHandlerConfig = { diff --git a/packages/hydrogen/src/utilities/apiRoutes.ts b/packages/hydrogen/src/utilities/apiRoutes.ts index 8d3a226581..b149b1ce33 100644 --- a/packages/hydrogen/src/utilities/apiRoutes.ts +++ b/packages/hydrogen/src/utilities/apiRoutes.ts @@ -1,6 +1,6 @@ import { InlineHydrogenConfig, - HydrogenConfigRoutes, + ResolvedHydrogenRoutes, ImportGlobEagerOutput, } from '../types'; import {matchPath} from './matchPath'; @@ -8,7 +8,6 @@ import {getLoggerWithContext, logServerResponse} from '../utilities/log/'; import type {ServerComponentRequest} from '../framework/Hydration/ServerComponentRequest.server'; import type {ASTNode} from 'graphql'; import {fetchBuilder, graphqlRequestBody} from './fetch'; -import {findRoutePrefix} from './findRoutePrefix'; import {getStorefrontApiRequestHeaders} from './storefrontApi'; import { emptySessionImplementation, @@ -70,24 +69,21 @@ export function extractPathFromRoutesKey( return path; } -export function getApiRoutes( - rawRoutes: HydrogenConfigRoutes -): Array { - const routes = (rawRoutes.files ?? rawRoutes) as ImportGlobEagerOutput; - const topLevelPath = (rawRoutes.basePath ?? '*') as string; - const dirPrefix = rawRoutes.dirPrefix as string | undefined; - +export function getApiRoutes({ + files: routes, + basePath: topLevelPath, + dirPrefix, +}: ResolvedHydrogenRoutes): Array { if (!routes || memoizedRawRoutes === routes) return memoizedApiRoutes; const topLevelPrefix = topLevelPath.replace('*', '').replace(/\/$/, ''); const keys = Object.keys(routes); - const commonRoutePrefix = dirPrefix ?? findRoutePrefix(keys); const apiRoutes = keys .filter((key) => routes[key].api) .map((key) => { - const path = extractPathFromRoutesKey(key, commonRoutePrefix); + const path = extractPathFromRoutesKey(key, dirPrefix); /** * Catch-all routes [...handle].jsx don't need an exact match diff --git a/packages/hydrogen/src/utilities/findRoutePrefix.ts b/packages/hydrogen/src/utilities/findRoutePrefix.ts deleted file mode 100644 index dfd11b1617..0000000000 --- a/packages/hydrogen/src/utilities/findRoutePrefix.ts +++ /dev/null @@ -1,22 +0,0 @@ -const DEFAULT_ROUTE_PREFIX = /^\.(\/src)?\/routes/; - -export function findRoutePrefix([first, ...rest]: string[]) { - if (!first?.startsWith('./')) return ''; - - let commonPrefix = '.'; - - if (rest.length > 0) { - const parts = first.split('/'); - parts.pop(); // Last part is always different and has extension - - for (const string of rest) { - const tmp = string.split('/'); - const diffIndex = parts.findIndex((part, index) => part !== tmp[index]); - diffIndex >= 0 && parts.splice(diffIndex); - } - - commonPrefix = parts.join('/'); - } - - return commonPrefix === '.' ? DEFAULT_ROUTE_PREFIX : commonPrefix; -} diff --git a/packages/hydrogen/src/utilities/tests/findRoutePrefix.test.ts b/packages/hydrogen/src/utilities/tests/findRoutePrefix.test.ts deleted file mode 100644 index 5814234b1b..0000000000 --- a/packages/hydrogen/src/utilities/tests/findRoutePrefix.test.ts +++ /dev/null @@ -1,44 +0,0 @@ -import {findRoutePrefix} from '../findRoutePrefix'; - -describe('findRoutePrefix', () => { - it('provides a default value if no common prefix is found', () => { - expect(findRoutePrefix(['./first.jsx'])).toBeInstanceOf(RegExp); - - expect( - findRoutePrefix(['./first.jsx', './second.jsx', './third.jsx']) - ).toBeInstanceOf(RegExp); - }); - - it('does not provide a prefix when routes are absolute', () => { - expect(findRoutePrefix(['/api/hello', '/api/world'])).toEqual(''); - }); - - it('finds a common route prefix', () => { - expect( - findRoutePrefix([ - './src/pages/first.jsx', - './src/pages/second.jsx', - './src/pages/deep/third.jsx', - ]) - ).toEqual('./src/pages'); - - expect( - findRoutePrefix([ - './pages/first.jsx', - './pages/second.jsx', - './pages/deep/third.jsx', - ]) - ).toEqual('./pages'); - - expect( - findRoutePrefix([ - './routes/products/index.server.jsx', - './routes/products/[handle].server.jsx', - './routes/blogs/index.server.jsx', - './routes/products/snowboards/fastones/index.server.jsx', - './routes/articles/index.server.jsx', - './routes/articles/[...handle].server.jsx', - ]) - ).toEqual('./routes'); - }); -}); From 43384a4c08a992881d0ae81f120a07610c22b12f Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Tue, 24 May 2022 17:49:12 +0900 Subject: [PATCH 10/24] Fix HMR in route files --- packages/hydrogen/src/entry-server.tsx | 19 ++++++++------ .../vite-plugin-hydrogen-middleware.ts | 25 +++++++++++++------ .../plugins/vite-plugin-hydrogen-rsc.ts | 6 ++--- 3 files changed, 32 insertions(+), 18 deletions(-) diff --git a/packages/hydrogen/src/entry-server.tsx b/packages/hydrogen/src/entry-server.tsx index d2ce0e61cc..9bc1adb84b 100644 --- a/packages/hydrogen/src/entry-server.tsx +++ b/packages/hydrogen/src/entry-server.tsx @@ -51,13 +51,6 @@ import {getSyncSessionApi} from './foundation/session/session'; import {parseJSON} from './utilities/parse'; import {htmlEncode} from './utilities'; -// @ts-ignore -// eslint-disable-next-line node/no-missing-import -import inlineHydrogenConfig from 'virtual:hydrogen.config.ts'; -// @ts-ignore -// eslint-disable-next-line node/no-missing-import -import hydrogenRoutes from 'virtual:hydrogen-routes.server.jsx'; - declare global { // This is provided by a Vite plugin // and will trigger tree-shaking. @@ -102,6 +95,18 @@ export const renderHydrogen = (App: any) => { const request = new ServerComponentRequest(rawRequest); const url = new URL(request.url); + const {default: inlineHydrogenConfig} = await import( + // @ts-ignore + // eslint-disable-next-line node/no-missing-import + 'virtual:hydrogen.config.ts' + ); + + const {default: hydrogenRoutes} = await import( + // @ts-ignore + // eslint-disable-next-line node/no-missing-import + 'virtual:hydrogen-routes.server.jsx' + ); + const hydrogenConfig: ResolvedHydrogenConfig = { ...inlineHydrogenConfig, routes: hydrogenRoutes, diff --git a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts index e4afe0e094..a5655d7e0d 100644 --- a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts +++ b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts @@ -19,10 +19,13 @@ export const HYDROGEN_DEFAULT_SERVER_ENTRY = export const VIRTUAL_HYDROGEN_CONFIG_ID = 'virtual:hydrogen.config.ts'; // Note: do not use query string here, it breaks Vite export const VIRTUAL_HYDROGEN_CONFIG_PROXY_ID = - VIRTUAL_HYDROGEN_CONFIG_ID + ':proxy'; + VIRTUAL_HYDROGEN_CONFIG_ID.replace('virtual', 'virtual:proxy'); export const VIRTUAL_HYDROGEN_ROUTES_ID = 'virtual:hydrogen-routes.server.jsx'; +export const VIRTUAL_HYDROGEN_ROUTES_PROXY_ID = + VIRTUAL_HYDROGEN_ROUTES_ID.replace('virtual', 'virtual:proxy'); + export default (pluginOptions: HydrogenVitePluginOptions) => { let config: ResolvedConfig; let server: ViteDevServer; @@ -108,22 +111,28 @@ export default (pluginOptions: HydrogenVitePluginOptions) => { }); } - if (source === VIRTUAL_HYDROGEN_CONFIG_PROXY_ID) { + if ( + [ + VIRTUAL_HYDROGEN_CONFIG_PROXY_ID, + VIRTUAL_HYDROGEN_ROUTES_PROXY_ID, + VIRTUAL_HYDROGEN_ROUTES_ID, + ].includes(source) + ) { // Virtual modules convention // https://vitejs.dev/guide/api-plugin.html#virtual-modules-convention - return '\0' + VIRTUAL_HYDROGEN_CONFIG_PROXY_ID; - } - if (source === VIRTUAL_HYDROGEN_ROUTES_ID) { - return '\0' + VIRTUAL_HYDROGEN_ROUTES_ID; + return '\0' + source; } }, load(id) { + // Likely due to a bug in Vite, but virtual modules cannot be loaded + // directly using ssrLoadModule from a Vite plugin. It needs to be proxied as follows: if (id === '\0' + VIRTUAL_HYDROGEN_CONFIG_PROXY_ID) { - // Likely due to a bug in Vite, but the config cannot be loaded - // directly using ssrLoadModule from a Vite plugin. It needs to be proxied as follows: return `import hc from '${VIRTUAL_HYDROGEN_CONFIG_ID}'; export default hc;`; } + if (id === '\0' + VIRTUAL_HYDROGEN_ROUTES_PROXY_ID) { + return `import hr from '${VIRTUAL_HYDROGEN_ROUTES_ID}'; export default hr;`; + } if (id === '\0' + VIRTUAL_HYDROGEN_ROUTES_ID) { return importHydrogenConfig().then((hc) => { diff --git a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-rsc.ts b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-rsc.ts index f6d0430a46..6cde4fad73 100644 --- a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-rsc.ts +++ b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-rsc.ts @@ -2,7 +2,7 @@ import reactServerDomVite from '@shopify/hydrogen/vendor/react-server-dom-vite/plugin'; import { HYDROGEN_DEFAULT_SERVER_ENTRY, - VIRTUAL_HYDROGEN_CONFIG_PROXY_ID, + VIRTUAL_HYDROGEN_ROUTES_PROXY_ID, } from './vite-plugin-hydrogen-middleware'; import {viteception} from '../viteception'; @@ -23,9 +23,9 @@ export default function () { const {server} = await viteception([ // Load server entry to discover client components early HYDROGEN_DEFAULT_SERVER_ENTRY, - // Route globs are placed in hydrogen.config.js and need to + // Route globs are placed in a virtual module and need to // be loaded to discover client components in routes - VIRTUAL_HYDROGEN_CONFIG_PROXY_ID, + VIRTUAL_HYDROGEN_ROUTES_PROXY_ID, ]); // At this point, the server has loaded all the components in the module graph From 24a9c15b1fa99b069d46eedba0aead6f0e4f80cc Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Tue, 24 May 2022 17:50:24 +0900 Subject: [PATCH 11/24] Use default value for config.routes --- examples/css-modules/hydrogen.config.js | 1 - examples/typescript/hydrogen.config.js | 1 - examples/typescript/hydrogen.config.ts | 1 - packages/playground/async-config/hydrogen.config.js | 2 +- packages/playground/server-components/hydrogen.config.js | 1 - templates/template-hydrogen-default/hydrogen.config.js | 1 - templates/template-hydrogen-hello-world/hydrogen.config.js | 1 - 7 files changed, 1 insertion(+), 7 deletions(-) diff --git a/examples/css-modules/hydrogen.config.js b/examples/css-modules/hydrogen.config.js index 54f8439252..2084e3e757 100644 --- a/examples/css-modules/hydrogen.config.js +++ b/examples/css-modules/hydrogen.config.js @@ -1,7 +1,6 @@ import {defineConfig} from '@shopify/hydrogen/config'; export default defineConfig({ - routes: import.meta.globEager('./src/routes/**/*.server.[jt](s|sx)'), shopify: { storeDomain: 'hydrogen-preview.myshopify.com', storefrontToken: '3b580e70970c4528da70c98e097c2fa0', diff --git a/examples/typescript/hydrogen.config.js b/examples/typescript/hydrogen.config.js index 54f8439252..2084e3e757 100644 --- a/examples/typescript/hydrogen.config.js +++ b/examples/typescript/hydrogen.config.js @@ -1,7 +1,6 @@ import {defineConfig} from '@shopify/hydrogen/config'; export default defineConfig({ - routes: import.meta.globEager('./src/routes/**/*.server.[jt](s|sx)'), shopify: { storeDomain: 'hydrogen-preview.myshopify.com', storefrontToken: '3b580e70970c4528da70c98e097c2fa0', diff --git a/examples/typescript/hydrogen.config.ts b/examples/typescript/hydrogen.config.ts index 54f8439252..2084e3e757 100644 --- a/examples/typescript/hydrogen.config.ts +++ b/examples/typescript/hydrogen.config.ts @@ -1,7 +1,6 @@ import {defineConfig} from '@shopify/hydrogen/config'; export default defineConfig({ - routes: import.meta.globEager('./src/routes/**/*.server.[jt](s|sx)'), shopify: { storeDomain: 'hydrogen-preview.myshopify.com', storefrontToken: '3b580e70970c4528da70c98e097c2fa0', diff --git a/packages/playground/async-config/hydrogen.config.js b/packages/playground/async-config/hydrogen.config.js index 30af2de8ea..5c0b1ea803 100644 --- a/packages/playground/async-config/hydrogen.config.js +++ b/packages/playground/async-config/hydrogen.config.js @@ -3,7 +3,7 @@ import {defineConfig} from '@shopify/hydrogen/config'; const sleep = (ms = 10) => new Promise((r) => setTimeout(r, ms)); export default defineConfig({ - routes: import.meta.globEager('./src/routes/**/*.server.[jt](s|sx)'), + routes: '/src/routes', shopify: async (request) => { await sleep(); diff --git a/packages/playground/server-components/hydrogen.config.js b/packages/playground/server-components/hydrogen.config.js index 74763adbdd..532110a3b8 100644 --- a/packages/playground/server-components/hydrogen.config.js +++ b/packages/playground/server-components/hydrogen.config.js @@ -2,7 +2,6 @@ import {CookieSessionStorage} from '@shopify/hydrogen'; import {defineConfig} from '@shopify/hydrogen/config'; export default defineConfig({ - routes: import.meta.globEager('./src/routes/**/*.server.[jt](s|sx)'), shopify: { defaultLocale: 'en-us', storeDomain: 'hydrogen-preview.myshopify.com', diff --git a/templates/template-hydrogen-default/hydrogen.config.js b/templates/template-hydrogen-default/hydrogen.config.js index 5d752cd5aa..05a6b61b14 100644 --- a/templates/template-hydrogen-default/hydrogen.config.js +++ b/templates/template-hydrogen-default/hydrogen.config.js @@ -5,7 +5,6 @@ import { } from '@shopify/hydrogen'; export default defineConfig({ - routes: './src/routes', shopify: { storeDomain: 'hydrogen-preview.myshopify.com', storefrontToken: '3b580e70970c4528da70c98e097c2fa0', diff --git a/templates/template-hydrogen-hello-world/hydrogen.config.js b/templates/template-hydrogen-hello-world/hydrogen.config.js index 54f8439252..2084e3e757 100644 --- a/templates/template-hydrogen-hello-world/hydrogen.config.js +++ b/templates/template-hydrogen-hello-world/hydrogen.config.js @@ -1,7 +1,6 @@ import {defineConfig} from '@shopify/hydrogen/config'; export default defineConfig({ - routes: import.meta.globEager('./src/routes/**/*.server.[jt](s|sx)'), shopify: { storeDomain: 'hydrogen-preview.myshopify.com', storefrontToken: '3b580e70970c4528da70c98e097c2fa0', From 112f334842a987949cebcc115cb55b366f06c144 Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Fri, 27 May 2022 16:52:19 +0900 Subject: [PATCH 12/24] Fix issue in Node 16.15 --- packages/hydrogen/src/entry-server.tsx | 4 +-- .../vite-plugin-hydrogen-middleware.ts | 32 +++++++++++-------- .../plugins/vite-plugin-hydrogen-rsc.ts | 4 +-- 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/packages/hydrogen/src/entry-server.tsx b/packages/hydrogen/src/entry-server.tsx index 9bc1adb84b..12ec34faf5 100644 --- a/packages/hydrogen/src/entry-server.tsx +++ b/packages/hydrogen/src/entry-server.tsx @@ -98,13 +98,13 @@ export const renderHydrogen = (App: any) => { const {default: inlineHydrogenConfig} = await import( // @ts-ignore // eslint-disable-next-line node/no-missing-import - 'virtual:hydrogen.config.ts' + 'virtual__hydrogen.config.ts' ); const {default: hydrogenRoutes} = await import( // @ts-ignore // eslint-disable-next-line node/no-missing-import - 'virtual:hydrogen-routes.server.jsx' + 'virtual__hydrogen-routes.server.jsx' ); const hydrogenConfig: ResolvedHydrogenConfig = { diff --git a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts index a5655d7e0d..3d2fbe1cb1 100644 --- a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts +++ b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts @@ -16,15 +16,19 @@ import {viteception} from '../viteception'; export const HYDROGEN_DEFAULT_SERVER_ENTRY = process.env.HYDROGEN_SERVER_ENTRY || '/src/App.server'; -export const VIRTUAL_HYDROGEN_CONFIG_ID = 'virtual:hydrogen.config.ts'; -// Note: do not use query string here, it breaks Vite -export const VIRTUAL_HYDROGEN_CONFIG_PROXY_ID = - VIRTUAL_HYDROGEN_CONFIG_ID.replace('virtual', 'virtual:proxy'); +// The character ":" breaks Vite with Node >= 16.15. Use "_" instead +const VIRTUAL_PREFIX = 'virtual__'; +const PROXY_PREFIX = 'proxy__'; -export const VIRTUAL_HYDROGEN_ROUTES_ID = 'virtual:hydrogen-routes.server.jsx'; +const HYDROGEN_CONFIG_ID = 'hydrogen.config.ts'; +const VIRTUAL_HYDROGEN_CONFIG_ID = VIRTUAL_PREFIX + HYDROGEN_CONFIG_ID; +const VIRTUAL_PROXY_HYDROGEN_CONFIG_ID = + VIRTUAL_PREFIX + PROXY_PREFIX + HYDROGEN_CONFIG_ID; -export const VIRTUAL_HYDROGEN_ROUTES_PROXY_ID = - VIRTUAL_HYDROGEN_ROUTES_ID.replace('virtual', 'virtual:proxy'); +const HYDROGEN_ROUTES_ID = 'hydrogen-routes.server.jsx'; +const VIRTUAL_HYDROGEN_ROUTES_ID = VIRTUAL_PREFIX + HYDROGEN_ROUTES_ID; +export const VIRTUAL_PROXY_HYDROGEN_ROUTES_ID = + VIRTUAL_PREFIX + PROXY_PREFIX + HYDROGEN_ROUTES_ID; export default (pluginOptions: HydrogenVitePluginOptions) => { let config: ResolvedConfig; @@ -58,7 +62,7 @@ export default (pluginOptions: HydrogenVitePluginOptions) => { dev: true, getShopifyConfig: async (incomingMessage) => { const {default: hydrogenConfig} = await server.ssrLoadModule( - VIRTUAL_HYDROGEN_CONFIG_PROXY_ID + VIRTUAL_PROXY_HYDROGEN_CONFIG_ID ); // @ts-ignore @@ -113,8 +117,8 @@ export default (pluginOptions: HydrogenVitePluginOptions) => { if ( [ - VIRTUAL_HYDROGEN_CONFIG_PROXY_ID, - VIRTUAL_HYDROGEN_ROUTES_PROXY_ID, + VIRTUAL_PROXY_HYDROGEN_CONFIG_ID, + VIRTUAL_PROXY_HYDROGEN_ROUTES_ID, VIRTUAL_HYDROGEN_ROUTES_ID, ].includes(source) ) { @@ -127,10 +131,10 @@ export default (pluginOptions: HydrogenVitePluginOptions) => { load(id) { // Likely due to a bug in Vite, but virtual modules cannot be loaded // directly using ssrLoadModule from a Vite plugin. It needs to be proxied as follows: - if (id === '\0' + VIRTUAL_HYDROGEN_CONFIG_PROXY_ID) { + if (id === '\0' + VIRTUAL_PROXY_HYDROGEN_CONFIG_ID) { return `import hc from '${VIRTUAL_HYDROGEN_CONFIG_ID}'; export default hc;`; } - if (id === '\0' + VIRTUAL_HYDROGEN_ROUTES_PROXY_ID) { + if (id === '\0' + VIRTUAL_PROXY_HYDROGEN_ROUTES_ID) { return `import hr from '${VIRTUAL_HYDROGEN_ROUTES_ID}'; export default hr;`; } @@ -172,13 +176,13 @@ export default (pluginOptions: HydrogenVitePluginOptions) => { async function importHydrogenConfig() { if (server) { const loaded = await server.ssrLoadModule( - VIRTUAL_HYDROGEN_CONFIG_PROXY_ID + VIRTUAL_PROXY_HYDROGEN_CONFIG_ID ); return loaded.default; } - const {loaded} = await viteception([VIRTUAL_HYDROGEN_CONFIG_PROXY_ID]); + const {loaded} = await viteception([VIRTUAL_PROXY_HYDROGEN_CONFIG_ID]); return loaded[0].default; } }; diff --git a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-rsc.ts b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-rsc.ts index 6cde4fad73..bcf9211b80 100644 --- a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-rsc.ts +++ b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-rsc.ts @@ -2,7 +2,7 @@ import reactServerDomVite from '@shopify/hydrogen/vendor/react-server-dom-vite/plugin'; import { HYDROGEN_DEFAULT_SERVER_ENTRY, - VIRTUAL_HYDROGEN_ROUTES_PROXY_ID, + VIRTUAL_PROXY_HYDROGEN_ROUTES_ID, } from './vite-plugin-hydrogen-middleware'; import {viteception} from '../viteception'; @@ -25,7 +25,7 @@ export default function () { HYDROGEN_DEFAULT_SERVER_ENTRY, // Route globs are placed in a virtual module and need to // be loaded to discover client components in routes - VIRTUAL_HYDROGEN_ROUTES_PROXY_ID, + VIRTUAL_PROXY_HYDROGEN_ROUTES_ID, ]); // At this point, the server has loaded all the components in the module graph From 24710b135f7efa91efd86afe6384a4fe06c2c096 Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Fri, 27 May 2022 17:04:48 +0900 Subject: [PATCH 13/24] Extract virtual-files plugin for clarity --- packages/hydrogen/src/framework/plugin.ts | 2 + .../vite-plugin-hydrogen-middleware.ts | 137 +--------------- .../plugins/vite-plugin-hydrogen-rsc.ts | 6 +- .../vite-plugin-hydrogen-virtual-files.ts | 150 ++++++++++++++++++ 4 files changed, 157 insertions(+), 138 deletions(-) create mode 100644 packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-virtual-files.ts diff --git a/packages/hydrogen/src/framework/plugin.ts b/packages/hydrogen/src/framework/plugin.ts index ebd1003a1d..e282d78fd5 100644 --- a/packages/hydrogen/src/framework/plugin.ts +++ b/packages/hydrogen/src/framework/plugin.ts @@ -3,6 +3,7 @@ import hydrogenConfig from './plugins/vite-plugin-hydrogen-config'; import type {Plugin} from 'vite'; import hydrogenMiddleware from './plugins/vite-plugin-hydrogen-middleware'; import hydrogenClientMiddleware from './plugins/vite-plugin-hydrogen-client-middleware'; +import hydrogenVirtualFiles from './plugins/vite-plugin-hydrogen-virtual-files'; import platformEntry from './plugins/vite-plugin-platform-entry'; import rsc from './plugins/vite-plugin-hydrogen-rsc'; import ssrInterop from './plugins/vite-plugin-ssr-interop'; @@ -20,6 +21,7 @@ export default (pluginOptions: HydrogenVitePluginOptions = {}) => { hydrogenClientMiddleware(), clientImports(), hydrogenMiddleware(pluginOptions), + hydrogenVirtualFiles(pluginOptions), react(), hydrationAutoImport(), ssrInterop(), diff --git a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts index 3d2fbe1cb1..4f139b269e 100644 --- a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts +++ b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts @@ -1,44 +1,20 @@ -import { - Plugin, - loadEnv, - ResolvedConfig, - normalizePath, - ViteDevServer, -} from 'vite'; +import {Plugin, loadEnv, ResolvedConfig, ViteDevServer} from 'vite'; import bodyParser from 'body-parser'; import path from 'path'; import {promises as fs} from 'fs'; import {hydrogenMiddleware, graphiqlMiddleware} from '../middleware'; import type {HydrogenVitePluginOptions} from '../../types'; import {InMemoryCache} from '../cache/in-memory'; -import {viteception} from '../viteception'; +import {VIRTUAL_PROXY_HYDROGEN_CONFIG_ID} from './vite-plugin-hydrogen-virtual-files'; export const HYDROGEN_DEFAULT_SERVER_ENTRY = process.env.HYDROGEN_SERVER_ENTRY || '/src/App.server'; -// The character ":" breaks Vite with Node >= 16.15. Use "_" instead -const VIRTUAL_PREFIX = 'virtual__'; -const PROXY_PREFIX = 'proxy__'; - -const HYDROGEN_CONFIG_ID = 'hydrogen.config.ts'; -const VIRTUAL_HYDROGEN_CONFIG_ID = VIRTUAL_PREFIX + HYDROGEN_CONFIG_ID; -const VIRTUAL_PROXY_HYDROGEN_CONFIG_ID = - VIRTUAL_PREFIX + PROXY_PREFIX + HYDROGEN_CONFIG_ID; - -const HYDROGEN_ROUTES_ID = 'hydrogen-routes.server.jsx'; -const VIRTUAL_HYDROGEN_ROUTES_ID = VIRTUAL_PREFIX + HYDROGEN_ROUTES_ID; -export const VIRTUAL_PROXY_HYDROGEN_ROUTES_ID = - VIRTUAL_PREFIX + PROXY_PREFIX + HYDROGEN_ROUTES_ID; - export default (pluginOptions: HydrogenVitePluginOptions) => { - let config: ResolvedConfig; let server: ViteDevServer; return { - name: 'vite-plugin-hydrogen-middleware', - configResolved(_config) { - config = _config; - }, + name: 'hydrogen:middleware', /** * By adding a middleware to the Vite dev server, we can handle SSR without needing * a custom node script. It works by handling any requests for `text/html` documents, @@ -101,90 +77,7 @@ export default (pluginOptions: HydrogenVitePluginOptions) => { }) ); }, - async resolveId(source, importer) { - if (source === VIRTUAL_HYDROGEN_CONFIG_ID) { - const hydrogenConfigPath = await findHydrogenConfigPath( - config.root, - pluginOptions.configPath - ); - - // This direct dependency on a real file - // makes HMR work for the virtual module. - return this.resolve(hydrogenConfigPath, importer, { - skipSelf: true, - }); - } - - if ( - [ - VIRTUAL_PROXY_HYDROGEN_CONFIG_ID, - VIRTUAL_PROXY_HYDROGEN_ROUTES_ID, - VIRTUAL_HYDROGEN_ROUTES_ID, - ].includes(source) - ) { - // Virtual modules convention - // https://vitejs.dev/guide/api-plugin.html#virtual-modules-convention - - return '\0' + source; - } - }, - load(id) { - // Likely due to a bug in Vite, but virtual modules cannot be loaded - // directly using ssrLoadModule from a Vite plugin. It needs to be proxied as follows: - if (id === '\0' + VIRTUAL_PROXY_HYDROGEN_CONFIG_ID) { - return `import hc from '${VIRTUAL_HYDROGEN_CONFIG_ID}'; export default hc;`; - } - if (id === '\0' + VIRTUAL_PROXY_HYDROGEN_ROUTES_ID) { - return `import hr from '${VIRTUAL_HYDROGEN_ROUTES_ID}'; export default hr;`; - } - - if (id === '\0' + VIRTUAL_HYDROGEN_ROUTES_ID) { - return importHydrogenConfig().then((hc) => { - let routesPath: string = - (typeof hc.routes === 'string' ? hc.routes : hc.routes?.files) ?? - '/src/routes'; - - if (routesPath.startsWith('./')) { - routesPath = routesPath.slice(1); - } - - if (!routesPath.includes('*')) { - if (!routesPath.endsWith('/')) { - routesPath += '/'; - } - - routesPath += '**/*.server.[jt](s|sx)'; - } - - const [dirPrefix] = routesPath.split('/*'); - - let code = `export default {\n dirPrefix: '${dirPrefix}',\n basePath: '${ - hc.routes?.basePath ?? '' - }',\n files: import.meta.globEager('${routesPath}')\n};`; - - if (config.command === 'serve') { - // Add dependency on Hydrogen config for HMR - code += `\nimport '${VIRTUAL_HYDROGEN_CONFIG_ID}';`; - } - - return {code}; - }); - } - }, } as Plugin; - - async function importHydrogenConfig() { - if (server) { - const loaded = await server.ssrLoadModule( - VIRTUAL_PROXY_HYDROGEN_CONFIG_ID - ); - - return loaded.default; - } - - const {loaded} = await viteception([VIRTUAL_PROXY_HYDROGEN_CONFIG_ID]); - return loaded[0].default; - } }; declare global { @@ -207,27 +100,3 @@ async function polyfillOxygenEnv(config: ResolvedConfig) { globalThis.Oxygen = {env}; } - -async function findHydrogenConfigPath(root: string, userProvidedPath?: string) { - let configPath = userProvidedPath; - - if (!configPath) { - // Find the config file in the project root - const files = await fs.readdir(root); - configPath = files.find((file) => /^hydrogen\.config\.[jt]s$/.test(file)); - } - - if (configPath) { - configPath = normalizePath(configPath); - - if (!configPath.startsWith('/')) - configPath = path.resolve(root, configPath); - } - - return ( - configPath || - require.resolve( - '@shopify/hydrogen/dist/esnext/utilities/empty-hydrogen-config.js' - ) - ); -} diff --git a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-rsc.ts b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-rsc.ts index bcf9211b80..1ee758174e 100644 --- a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-rsc.ts +++ b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-rsc.ts @@ -1,9 +1,7 @@ // @ts-ignore import reactServerDomVite from '@shopify/hydrogen/vendor/react-server-dom-vite/plugin'; -import { - HYDROGEN_DEFAULT_SERVER_ENTRY, - VIRTUAL_PROXY_HYDROGEN_ROUTES_ID, -} from './vite-plugin-hydrogen-middleware'; +import {HYDROGEN_DEFAULT_SERVER_ENTRY} from './vite-plugin-hydrogen-middleware'; +import {VIRTUAL_PROXY_HYDROGEN_ROUTES_ID} from './vite-plugin-hydrogen-virtual-files'; import {viteception} from '../viteception'; export default function () { diff --git a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-virtual-files.ts b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-virtual-files.ts new file mode 100644 index 0000000000..54ef5fc35f --- /dev/null +++ b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-virtual-files.ts @@ -0,0 +1,150 @@ +import {Plugin, ResolvedConfig, normalizePath, ViteDevServer} from 'vite'; +import path from 'path'; +import {promises as fs} from 'fs'; +import type {HydrogenVitePluginOptions} from '../../types'; +import {viteception} from '../viteception'; + +export const HYDROGEN_DEFAULT_SERVER_ENTRY = + process.env.HYDROGEN_SERVER_ENTRY || '/src/App.server'; + +// The character ":" breaks Vite with Node >= 16.15. Use "_" instead +const VIRTUAL_PREFIX = 'virtual__'; +const PROXY_PREFIX = 'proxy__'; + +const HYDROGEN_CONFIG_ID = 'hydrogen.config.ts'; +const VIRTUAL_HYDROGEN_CONFIG_ID = VIRTUAL_PREFIX + HYDROGEN_CONFIG_ID; +export const VIRTUAL_PROXY_HYDROGEN_CONFIG_ID = + VIRTUAL_PREFIX + PROXY_PREFIX + HYDROGEN_CONFIG_ID; + +const HYDROGEN_ROUTES_ID = 'hydrogen-routes.server.jsx'; +const VIRTUAL_HYDROGEN_ROUTES_ID = VIRTUAL_PREFIX + HYDROGEN_ROUTES_ID; +export const VIRTUAL_PROXY_HYDROGEN_ROUTES_ID = + VIRTUAL_PREFIX + PROXY_PREFIX + HYDROGEN_ROUTES_ID; + +export default (pluginOptions: HydrogenVitePluginOptions) => { + let config: ResolvedConfig; + let server: ViteDevServer; + + return { + name: 'hydrogen:virtual-files', + configResolved(_config) { + config = _config; + }, + /** + * By adding a middleware to the Vite dev server, we can handle SSR without needing + * a custom node script. It works by handling any requests for `text/html` documents, + * loading them in an SSR context, rendering them using the `entry-server` endpoint in the + * user's project, and injecting the static HTML into the template. + */ + async configureServer(_server) { + server = _server; + }, + async resolveId(source, importer) { + if (source === VIRTUAL_HYDROGEN_CONFIG_ID) { + const hydrogenConfigPath = await findHydrogenConfigPath( + config.root, + pluginOptions.configPath + ); + + // This direct dependency on a real file + // makes HMR work for the virtual module. + return this.resolve(hydrogenConfigPath, importer, { + skipSelf: true, + }); + } + + if ( + [ + VIRTUAL_PROXY_HYDROGEN_CONFIG_ID, + VIRTUAL_PROXY_HYDROGEN_ROUTES_ID, + VIRTUAL_HYDROGEN_ROUTES_ID, + ].includes(source) + ) { + // Virtual modules convention + // https://vitejs.dev/guide/api-plugin.html#virtual-modules-convention + + return '\0' + source; + } + }, + load(id) { + // Likely due to a bug in Vite, but virtual modules cannot be loaded + // directly using ssrLoadModule from a Vite plugin. It needs to be proxied as follows: + if (id === '\0' + VIRTUAL_PROXY_HYDROGEN_CONFIG_ID) { + return `import hc from '${VIRTUAL_HYDROGEN_CONFIG_ID}'; export default hc;`; + } + if (id === '\0' + VIRTUAL_PROXY_HYDROGEN_ROUTES_ID) { + return `import hr from '${VIRTUAL_HYDROGEN_ROUTES_ID}'; export default hr;`; + } + + if (id === '\0' + VIRTUAL_HYDROGEN_ROUTES_ID) { + return importHydrogenConfig().then((hc) => { + let routesPath: string = + (typeof hc.routes === 'string' ? hc.routes : hc.routes?.files) ?? + '/src/routes'; + + if (routesPath.startsWith('./')) { + routesPath = routesPath.slice(1); + } + + if (!routesPath.includes('*')) { + if (!routesPath.endsWith('/')) { + routesPath += '/'; + } + + routesPath += '**/*.server.[jt](s|sx)'; + } + + const [dirPrefix] = routesPath.split('/*'); + + let code = `export default {\n dirPrefix: '${dirPrefix}',\n basePath: '${ + hc.routes?.basePath ?? '' + }',\n files: import.meta.globEager('${routesPath}')\n};`; + + if (config.command === 'serve') { + // Add dependency on Hydrogen config for HMR + code += `\nimport '${VIRTUAL_HYDROGEN_CONFIG_ID}';`; + } + + return {code}; + }); + } + }, + } as Plugin; + + async function importHydrogenConfig() { + if (server) { + const loaded = await server.ssrLoadModule( + VIRTUAL_PROXY_HYDROGEN_CONFIG_ID + ); + + return loaded.default; + } + + const {loaded} = await viteception([VIRTUAL_PROXY_HYDROGEN_CONFIG_ID]); + return loaded[0].default; + } +}; + +async function findHydrogenConfigPath(root: string, userProvidedPath?: string) { + let configPath = userProvidedPath; + + if (!configPath) { + // Find the config file in the project root + const files = await fs.readdir(root); + configPath = files.find((file) => /^hydrogen\.config\.[jt]s$/.test(file)); + } + + if (configPath) { + configPath = normalizePath(configPath); + + if (!configPath.startsWith('/')) + configPath = path.resolve(root, configPath); + } + + return ( + configPath || + require.resolve( + '@shopify/hydrogen/dist/esnext/utilities/empty-hydrogen-config.js' + ) + ); +} From 259db5500d183681ab5440ab8fcc95ba43492776 Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Fri, 27 May 2022 17:13:05 +0900 Subject: [PATCH 14/24] Cleanup --- .../framework/plugins/vite-plugin-hydrogen-middleware.ts | 7 ++----- .../plugins/vite-plugin-hydrogen-virtual-files.ts | 6 ------ 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts index 4f139b269e..332b86a683 100644 --- a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts +++ b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-middleware.ts @@ -1,4 +1,4 @@ -import {Plugin, loadEnv, ResolvedConfig, ViteDevServer} from 'vite'; +import {Plugin, loadEnv, ResolvedConfig} from 'vite'; import bodyParser from 'body-parser'; import path from 'path'; import {promises as fs} from 'fs'; @@ -11,8 +11,6 @@ export const HYDROGEN_DEFAULT_SERVER_ENTRY = process.env.HYDROGEN_SERVER_ENTRY || '/src/App.server'; export default (pluginOptions: HydrogenVitePluginOptions) => { - let server: ViteDevServer; - return { name: 'hydrogen:middleware', /** @@ -21,8 +19,7 @@ export default (pluginOptions: HydrogenVitePluginOptions) => { * loading them in an SSR context, rendering them using the `entry-server` endpoint in the * user's project, and injecting the static HTML into the template. */ - async configureServer(_server) { - server = _server; + async configureServer(server) { const resolve = (p: string) => path.resolve(server.config.root, p); async function getIndexTemplate(url: string) { const indexHtml = await fs.readFile(resolve('index.html'), 'utf-8'); diff --git a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-virtual-files.ts b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-virtual-files.ts index 54ef5fc35f..dd4495a2e7 100644 --- a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-virtual-files.ts +++ b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-virtual-files.ts @@ -30,12 +30,6 @@ export default (pluginOptions: HydrogenVitePluginOptions) => { configResolved(_config) { config = _config; }, - /** - * By adding a middleware to the Vite dev server, we can handle SSR without needing - * a custom node script. It works by handling any requests for `text/html` documents, - * loading them in an SSR context, rendering them using the `entry-server` endpoint in the - * user's project, and injecting the static HTML into the template. - */ async configureServer(_server) { server = _server; }, From 20119a19e03fa4aa5441ba088b1bb24abf6d0ea8 Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Fri, 27 May 2022 17:20:17 +0900 Subject: [PATCH 15/24] Fix unit tests --- packages/hydrogen/src/utilities/apiRoutes.ts | 6 ++--- .../src/utilities/tests/apiRoutes.test.ts | 24 +++++++++++-------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/packages/hydrogen/src/utilities/apiRoutes.ts b/packages/hydrogen/src/utilities/apiRoutes.ts index 5f827890db..bbfe7b6344 100644 --- a/packages/hydrogen/src/utilities/apiRoutes.ts +++ b/packages/hydrogen/src/utilities/apiRoutes.ts @@ -70,9 +70,9 @@ export function extractPathFromRoutesKey( export function getApiRoutes({ files: routes, - basePath: topLevelPath, - dirPrefix, -}: ResolvedHydrogenRoutes): Array { + basePath: topLevelPath = '', + dirPrefix = '', +}: Partial): Array { if (!routes || memoizedRawRoutes === routes) return memoizedApiRoutes; const topLevelPrefix = topLevelPath.replace('*', '').replace(/\/$/, ''); diff --git a/packages/hydrogen/src/utilities/tests/apiRoutes.test.ts b/packages/hydrogen/src/utilities/tests/apiRoutes.test.ts index d14deac51c..d84ab4db5b 100644 --- a/packages/hydrogen/src/utilities/tests/apiRoutes.test.ts +++ b/packages/hydrogen/src/utilities/tests/apiRoutes.test.ts @@ -9,7 +9,7 @@ it('converts API functions to routes', () => { './routes/contact.server.jsx': STUB_MODULE, }; - const routes = getApiRoutes(files); + const routes = getApiRoutes({files, dirPrefix: './routes'}); expect(routes).toEqual([ { @@ -28,7 +28,7 @@ it('handles index API routes', () => { './routes/api/index.server.jsx': STUB_MODULE, }; - const routes = getApiRoutes(files); + const routes = getApiRoutes({files, dirPrefix: './routes'}); expect(routes).toEqual([ { @@ -62,7 +62,7 @@ it('handles nested index API routes', () => { './routes/articles/[...handle].server.jsx': STUB_MODULE, }; - const routes = getApiRoutes(files); + const routes = getApiRoutes({files, dirPrefix: './routes'}); expect(routes).toEqual([ { @@ -111,7 +111,7 @@ it('handles dynamic paths', () => { './routes/products/[handle].server.jsx': STUB_MODULE, }; - const routes = getApiRoutes(files); + const routes = getApiRoutes({files, dirPrefix: './routes'}); expect(routes).toEqual([ { path: '/contact', @@ -141,7 +141,7 @@ it('handles catch all routes', () => { './routes/products/[...handle].server.jsx': STUB_MODULE, }; - const routes = getApiRoutes(files); + const routes = getApiRoutes({files, dirPrefix: './routes'}); expect(routes).toEqual([ { path: '/contact', @@ -173,7 +173,7 @@ it('handles nested dynamic paths', () => { './routes/blogs/[handle]/[...articleHandle].server.jsx': STUB_MODULE, }; - const routes = getApiRoutes(files); + const routes = getApiRoutes({files, dirPrefix: './routes'}); expect(routes).toEqual([ { @@ -219,7 +219,7 @@ it('prioritizes overrides next to dynamic paths', () => { './routes/blogs/[handle]/[articleHandle].server.jsx': STUB_MODULE, }; - const routes = getApiRoutes(files); + const routes = getApiRoutes({files, dirPrefix: './routes'}); expect(routes).toEqual([ { @@ -262,7 +262,7 @@ it('handles typescript paths', () => { './routes/index.server.jsx': STUB_MODULE, }; - const routes = getApiRoutes(files); + const routes = getApiRoutes({files, dirPrefix: './routes'}); expect(routes).toEqual([ { @@ -286,7 +286,7 @@ it('lowercases routes', () => { './routes/index.server.jsx': STUB_MODULE, }; - const routes = getApiRoutes(files); + const routes = getApiRoutes({files, dirPrefix: './routes'}); expect(routes).toEqual([ { @@ -310,7 +310,11 @@ it('factors in the top-level path prefix', () => { './routes/index.server.jsx': STUB_MODULE, }; - const routes = getApiRoutes({files, basePath: '/foo/*'}); + const routes = getApiRoutes({ + files, + basePath: '/foo/*', + dirPrefix: './routes', + }); expect(routes).toEqual([ { From 5a23ae857fb25c130d1762dc9d4942b7c3f13ce4 Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Mon, 30 May 2022 11:39:08 +0900 Subject: [PATCH 16/24] Update docs --- docs/components/framework/fileroutes.md | 11 +++++++++-- docs/framework/hydrogen-config.md | 22 +++++++--------------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/docs/components/framework/fileroutes.md b/docs/components/framework/fileroutes.md index 3d6c7519db..013a09d998 100644 --- a/docs/components/framework/fileroutes.md +++ b/docs/components/framework/fileroutes.md @@ -1,10 +1,12 @@ --- gid: 182b039d-d09d-4513-8759-b51412cc8293 title: FileRoutes -description: The FileRoutes component builds a set of default Hydrogen routes based on the output provided by Vite's import.meta.globEager method. +description: The `FileRoutes` component builds a set of Hydrogen routes. --- -The `FileRoutes` component builds a set of default Hydrogen routes based on the output provided by Vite's [import.meta.globEager](https://vitejs.dev/guide/features.html#glob-import) method. You can have multiple instances of this component to source file routes from multiple locations. +The `FileRoutes` component builds a set of Hydrogen routes. By default, it loads the routes specified in [the `hydrogen.config.js` file](https://shopify.dev/custom-storefronts/hydrogen/framework/hydrogen-config) when no props are passed. + +It is also possible to override the default behavior and use custom routes based on the output provided by Vite's [import.meta.globEager](https://vitejs.dev/guide/features.html#glob-import) method. You can have multiple instances of this component to source file routes from multiple locations. ## Example code @@ -12,12 +14,17 @@ The `FileRoutes` component builds a set of default Hydrogen routes based on the ```jsx import {Router, FileRoutes, Route} from '@shopify/hydrogen'; + function App() { + const esRoutes = import.meta.globEager('./custom-routes/es/**/*.server.jsx'); + const enRoutes = import.meta.globEager('./custom-routes/en/**/*.server.jsx'); + return ( }> + } /> diff --git a/docs/framework/hydrogen-config.md b/docs/framework/hydrogen-config.md index 35c109d754..5bc5bb743d 100644 --- a/docs/framework/hydrogen-config.md +++ b/docs/framework/hydrogen-config.md @@ -17,12 +17,10 @@ The Hydrogen configuration file contains information that's needed at runtime fo ```tsx import {defineConfig} from '@shopify/hydrogen/config'; -/* All properties in this configuration file are required. */ - /* The `defineConfig` function is an optional utility that provides types for the configuration object. */ export default defineConfig({ /* The routes defined by Vite's import.meta.globEager method. */ - routes: import.meta.globEager('./src/routes/**/*.server.[jt](s|sx)'), + routes: '/src/routes', /* The information that your app needs to connect to the Storefront API. */ shopify: { /* The domain of your Shopify store */ @@ -49,15 +47,14 @@ The following groupings of configuration properties can exist in Hydrogen: ### `routes` -The `routes` property is where you can provide server components and API handlers using Vite's [`import.meta.globEager`](https://vitejs.dev/guide/features.html#glob-import) method. - -By default, Hydrogen detects the common prefix of every route and removes it from the URLs. In the following example, `./src/routes` would be detected as the common prefix: +The `routes` property is where you can provide a path to find server components and API handlers. Its default value is `/src/routes` but it can be customized to any directory specified **from the project root**: {% codeblock file, filename: 'hydrogen.config.js' %} ```tsx export default defineConfig({ - routes: import.meta.globEager('./src/routes/**/*.server.[jt](s|sx)'), + /* Path from the project root to the files for server components and API handlers */ + routes: '/path/to/routes', }); ``` @@ -70,14 +67,9 @@ If your app requires a more advanced configuration, then you can provide additio ```tsx export default defineConfig({ routes: { - /* The file routes for server components and API handlers */ - files: import.meta.globEager('./src/routes/**/*.server.[jt](s|sx)'), - /* (Optional) The portion of the file route path that shouldn't be a part of the URL. - * You need to modify this if you want to import your routes from a location other - than the default `src/routes`. - */ - dirPrefix: './src/routes', - /* (Optional) A path that's prepended to all file routes. You can modify `basePath` + /* Path from the project root to the files for server components and API handlers */ + files: '/path/to/routes', + /* A path that's prepended to all file routes. You can modify `basePath` * if you want to prefix all file routes. For example, you can prefix all file routes with a locale. */ basePath: '/', From 24a49430eb08accd4fa89d8b4b691de3dd473c68 Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Mon, 30 May 2022 11:48:24 +0900 Subject: [PATCH 17/24] Changeset --- .changeset/ninety-garlics-serve.md | 32 ++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 .changeset/ninety-garlics-serve.md diff --git a/.changeset/ninety-garlics-serve.md b/.changeset/ninety-garlics-serve.md new file mode 100644 index 0000000000..fa664dd748 --- /dev/null +++ b/.changeset/ninety-garlics-serve.md @@ -0,0 +1,32 @@ +--- +'@shopify/hydrogen': minor +'create-hydrogen-app': minor +--- + +The `routes` property in `hydrogen.config.js` file has been simplified. It is now a string that represents the path to the routes from the project root: + +```diff +// hydrogen.config.js + +export default defineConfig({ +- routes: import('./src/routes/**/*.server.[jt](s|sx)'), ++ routes: '/src/routes', +}); +``` + +Its default value is `/src/routes` so this property can be removed when using this directory. + +In the object syntax version, `dirPrefix` is removed and `files` becomes a string: + +```diff +// hydrogen.config.js + +export default defineConfig({ + routes: { +- files: import('./src/routes/**/*.server.[jt](s|sx)'), +- dirPrefix: './src/routes', ++ files: '/src/routes', + basePath: '/', + }, +}); +``` From 79d95fd5fc0639d0e9b0bc76680701a6a4bf705e Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Mon, 30 May 2022 12:00:18 +0900 Subject: [PATCH 18/24] Cleanup --- .../foundation/FileRoutes/FileRoutes.server.tsx | 4 ++-- .../vite-plugin-hydrogen-virtual-files.ts | 16 +++++++--------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/packages/hydrogen/src/foundation/FileRoutes/FileRoutes.server.tsx b/packages/hydrogen/src/foundation/FileRoutes/FileRoutes.server.tsx index 6b188ba341..c17b4c7fce 100644 --- a/packages/hydrogen/src/foundation/FileRoutes/FileRoutes.server.tsx +++ b/packages/hydrogen/src/foundation/FileRoutes/FileRoutes.server.tsx @@ -30,8 +30,8 @@ export function FileRoutes({routes, basePath, dirPrefix}: FileRoutesProps) { if (!routes) { const fileRoutes = request.ctx.hydrogenConfig!.routes; routes = fileRoutes.files; - dirPrefix ??= fileRoutes?.dirPrefix as string; - basePath ??= fileRoutes?.basePath as string; + dirPrefix ??= fileRoutes.dirPrefix; + basePath ??= fileRoutes.basePath; } basePath ??= '/'; diff --git a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-virtual-files.ts b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-virtual-files.ts index dd4495a2e7..461f89c162 100644 --- a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-virtual-files.ts +++ b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-virtual-files.ts @@ -30,21 +30,19 @@ export default (pluginOptions: HydrogenVitePluginOptions) => { configResolved(_config) { config = _config; }, - async configureServer(_server) { + configureServer(_server) { server = _server; }, - async resolveId(source, importer) { + resolveId(source, importer) { if (source === VIRTUAL_HYDROGEN_CONFIG_ID) { - const hydrogenConfigPath = await findHydrogenConfigPath( + return findHydrogenConfigPath( config.root, pluginOptions.configPath + ).then((hcPath: string) => + // This direct dependency on a real file + // makes HMR work for the virtual module. + this.resolve(hcPath, importer, {skipSelf: true}) ); - - // This direct dependency on a real file - // makes HMR work for the virtual module. - return this.resolve(hydrogenConfigPath, importer, { - skipSelf: true, - }); } if ( From 83b9138df3ef733b5c1d007e81dcf28ff290594c Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Mon, 30 May 2022 12:08:55 +0900 Subject: [PATCH 19/24] Regenerate broken graphql.schema.json --- packages/hydrogen/graphql.schema.json | 2 +- packages/hydrogen/src/storefront-api-types.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/hydrogen/graphql.schema.json b/packages/hydrogen/graphql.schema.json index 0682fddc32..1529d81a8f 100644 --- a/packages/hydrogen/graphql.schema.json +++ b/packages/hydrogen/graphql.schema.json @@ -1 +1 @@ -{"__schema":{"queryType":{"name":"QueryRoot"},"mutationType":{"name":"Mutation"},"subscriptionType":null,"types":[{"kind":"OBJECT","name":"ApiVersion","description":"A version of the API, as defined by [Shopify API versioning](https://shopify.dev/api/usage/versioning).\nVersions are commonly referred to by their handle (for example, `2021-10`).\n","fields":[{"name":"displayName","description":"The human-readable name of the version.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"handle","description":"The unique identifier of an ApiVersion. All supported API versions have a date-based (YYYY-MM) or `unstable` handle.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"supported","description":"Whether the version is actively supported by Shopify. Supported API versions are guaranteed to be stable. Unsupported API versions include unstable, release candidate, and end-of-life versions that are marked as unsupported. For more information, refer to [Versioning](https://shopify.dev/api/usage/versioning).","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"AppliedGiftCard","description":"Details about the gift card used on the checkout.","fields":[{"name":"amountUsed","description":"The amount that was taken from the gift card by applying it.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Money","ofType":null}},"isDeprecated":true,"deprecationReason":"Use `amountUsedV2` instead"},{"name":"amountUsedV2","description":"The amount that was taken from the gift card by applying it.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"balance","description":"The amount left on the gift card.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Money","ofType":null}},"isDeprecated":true,"deprecationReason":"Use `balanceV2` instead"},{"name":"balanceV2","description":"The amount left on the gift card.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"lastCharacters","description":"The last characters of the gift card.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"presentmentAmountUsed","description":"The amount that was applied to the checkout in its currency.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"Node","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"Article","description":"An article in an online store blog.","fields":[{"name":"author","description":"The article's author.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"ArticleAuthor","ofType":null}},"isDeprecated":true,"deprecationReason":"Use `authorV2` instead"},{"name":"authorV2","description":"The article's author.","args":[],"type":{"kind":"OBJECT","name":"ArticleAuthor","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"blog","description":"The blog that the article belongs to.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Blog","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"comments","description":"List of comments posted on the article.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CommentConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"content","description":"Stripped content of the article, single line with HTML tags removed.","args":[{"name":"truncateAt","description":"Truncates string after the given length.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"contentHtml","description":"The content of the article, complete with HTML formatting.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"HTML","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"excerpt","description":"Stripped excerpt of the article, single line with HTML tags removed.","args":[{"name":"truncateAt","description":"Truncates string after the given length.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"excerptHtml","description":"The excerpt of the article, complete with HTML formatting.","args":[],"type":{"kind":"SCALAR","name":"HTML","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"handle","description":"A human-friendly unique string for the Article automatically generated from its title.\n","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"image","description":"The image associated with the article.","args":[],"type":{"kind":"OBJECT","name":"Image","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"metafield","description":"Returns a metafield found by namespace and key.","args":[{"name":"key","description":"Identifier for the metafield (maximum of 30 characters).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"namespace","description":"Container for a set of metafields (maximum of 20 characters).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"Metafield","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"metafields","description":"A paginated list of metafields associated with the resource.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"namespace","description":"Container for a set of metafields (maximum of 20 characters).","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MetafieldConnection","ofType":null}},"isDeprecated":true,"deprecationReason":"The `metafields` field will be removed in the future in favor of using [aliases](https://graphql.org/learn/queries/#aliases) with the `metafield` field.\n"},{"name":"onlineStoreUrl","description":"The URL used for viewing the resource on the shop's Online Store. Returns `null` if the resource is currently not published to the Online Store sales channel.","args":[],"type":{"kind":"SCALAR","name":"URL","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"publishedAt","description":"The date and time when the article was published.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"DateTime","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"seo","description":"The article’s SEO information.","args":[],"type":{"kind":"OBJECT","name":"SEO","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"tags","description":"A categorization that a article can be tagged with.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"title","description":"The article’s name.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"HasMetafields","ofType":null},{"kind":"INTERFACE","name":"Node","ofType":null},{"kind":"INTERFACE","name":"OnlineStorePublishable","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"ArticleAuthor","description":"The author of an article.","fields":[{"name":"bio","description":"The author's bio.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"email","description":"The author’s email.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"firstName","description":"The author's first name.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"lastName","description":"The author's last name.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"name","description":"The author's full name.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"ArticleConnection","description":"An auto-generated type for paginating through multiple Articles.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"ArticleEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in ArticleEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Article","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"ArticleEdge","description":"An auto-generated type which holds one Article and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of ArticleEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Article","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"ArticleSortKeys","description":"The set of valid sort keys for the Article query.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"AUTHOR","description":"Sort by the `author` value.","isDeprecated":false,"deprecationReason":null},{"name":"BLOG_TITLE","description":"Sort by the `blog_title` value.","isDeprecated":false,"deprecationReason":null},{"name":"ID","description":"Sort by the `id` value.","isDeprecated":false,"deprecationReason":null},{"name":"PUBLISHED_AT","description":"Sort by the `published_at` value.","isDeprecated":false,"deprecationReason":null},{"name":"RELEVANCE","description":"Sort by relevance to the search terms when the `query` parameter is specified on the connection.\nDon't use this sort key when no search query is specified.\n","isDeprecated":false,"deprecationReason":null},{"name":"TITLE","description":"Sort by the `title` value.","isDeprecated":false,"deprecationReason":null},{"name":"UPDATED_AT","description":"Sort by the `updated_at` value.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"Attribute","description":"Represents a generic custom attribute.","fields":[{"name":"key","description":"Key or name of the attribute.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"value","description":"Value of the attribute.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"AttributeInput","description":"Specifies the input fields required for an attribute.","fields":null,"inputFields":[{"name":"key","description":"Key or name of the attribute.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"value","description":"Value of the attribute.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"AutomaticDiscountApplication","description":"Automatic discount applications capture the intentions of a discount that was automatically applied.\n","fields":[{"name":"allocationMethod","description":"The method by which the discount's value is allocated to its entitled items.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"DiscountApplicationAllocationMethod","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"targetSelection","description":"Which lines of targetType that the discount is allocated over.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"DiscountApplicationTargetSelection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"targetType","description":"The type of line that the discount is applicable towards.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"DiscountApplicationTargetType","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"title","description":"The title of the application.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"value","description":"The value of the discount application.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"UNION","name":"PricingValue","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"DiscountApplication","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"AvailableShippingRates","description":"A collection of available shipping rates for a checkout.","fields":[{"name":"ready","description":"Whether or not the shipping rates are ready.\nThe `shippingRates` field is `null` when this value is `false`.\nThis field should be polled until its value becomes `true`.\n","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"shippingRates","description":"The fetched shipping rates. `null` until the `ready` field is `true`.","args":[],"type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"ShippingRate","ofType":null}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"Blog","description":"An online store blog.","fields":[{"name":"articleByHandle","description":"Find an article by its handle.","args":[{"name":"handle","description":"The handle of the article.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"Article","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"articles","description":"List of the blog's articles.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"query","description":"Supported filter parameters:\n - `author`\n - `blog_title`\n - `created_at`\n - `tag`\n - `tag_not`\n - `updated_at`\n\nSee the detailed [search syntax](https://shopify.dev/api/usage/search-syntax)\nfor more information about using filters.\n","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null},{"name":"sortKey","description":"Sort the underlying list by the given key.","type":{"kind":"ENUM","name":"ArticleSortKeys","ofType":null},"defaultValue":"ID","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"ArticleConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"authors","description":"The authors who have contributed to the blog.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"ArticleAuthor","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"handle","description":"A human-friendly unique string for the Blog automatically generated from its title.\n","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"metafield","description":"Returns a metafield found by namespace and key.","args":[{"name":"key","description":"Identifier for the metafield (maximum of 30 characters).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"namespace","description":"Container for a set of metafields (maximum of 20 characters).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"Metafield","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"metafields","description":"A paginated list of metafields associated with the resource.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"namespace","description":"Container for a set of metafields (maximum of 20 characters).","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MetafieldConnection","ofType":null}},"isDeprecated":true,"deprecationReason":"The `metafields` field will be removed in the future in favor of using [aliases](https://graphql.org/learn/queries/#aliases) with the `metafield` field.\n"},{"name":"onlineStoreUrl","description":"The URL used for viewing the resource on the shop's Online Store. Returns `null` if the resource is currently not published to the Online Store sales channel.","args":[],"type":{"kind":"SCALAR","name":"URL","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"seo","description":"The blog's SEO information.","args":[],"type":{"kind":"OBJECT","name":"SEO","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"title","description":"The blogs’s title.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"HasMetafields","ofType":null},{"kind":"INTERFACE","name":"Node","ofType":null},{"kind":"INTERFACE","name":"OnlineStorePublishable","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"BlogConnection","description":"An auto-generated type for paginating through multiple Blogs.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"BlogEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in BlogEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Blog","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"BlogEdge","description":"An auto-generated type which holds one Blog and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of BlogEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Blog","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"BlogSortKeys","description":"The set of valid sort keys for the Blog query.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"HANDLE","description":"Sort by the `handle` value.","isDeprecated":false,"deprecationReason":null},{"name":"ID","description":"Sort by the `id` value.","isDeprecated":false,"deprecationReason":null},{"name":"RELEVANCE","description":"Sort by relevance to the search terms when the `query` parameter is specified on the connection.\nDon't use this sort key when no search query is specified.\n","isDeprecated":false,"deprecationReason":null},{"name":"TITLE","description":"Sort by the `title` value.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"SCALAR","name":"Boolean","description":"The `Boolean` scalar type represents `true` or `false`.","fields":null,"inputFields":null,"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"CardBrand","description":"Card brand, such as Visa or Mastercard, which can be used for payments.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"AMERICAN_EXPRESS","description":"American Express.","isDeprecated":false,"deprecationReason":null},{"name":"DINERS_CLUB","description":"Diners Club.","isDeprecated":false,"deprecationReason":null},{"name":"DISCOVER","description":"Discover.","isDeprecated":false,"deprecationReason":null},{"name":"JCB","description":"JCB.","isDeprecated":false,"deprecationReason":null},{"name":"MASTERCARD","description":"Mastercard.","isDeprecated":false,"deprecationReason":null},{"name":"VISA","description":"Visa.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"Cart","description":"A cart represents the merchandise that a buyer intends to purchase, and the estimated cost associated with the cart. To learn how to interact with a cart during a customer's session, refer to [Manage a cart with the Storefront API](https://shopify.dev/api/examples/cart).","fields":[{"name":"attributes","description":"The attributes associated with the cart. Attributes are represented as key-value pairs.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Attribute","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"buyerIdentity","description":"Information about the buyer that is interacting with the cart.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartBuyerIdentity","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUrl","description":"The URL of the checkout for the cart.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"URL","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"createdAt","description":"The date and time when the cart was created.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"DateTime","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"deliveryGroups","description":"The delivery groups available for the cart, based on the default address of the logged-in customer.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartDeliveryGroupConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"discountCodes","description":"The case-insensitive discount codes that the customer added at checkout.\n","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartDiscountCode","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"estimatedCost","description":"The estimated costs that the buyer will pay at checkout. The estimated costs are subject to change and changes will be reflected at checkout. The `estimatedCost` field uses the `buyerIdentity` field to determine [international pricing](https://shopify.dev/api/examples/international-pricing#create-a-cart).","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartEstimatedCost","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"lines","description":"A list of lines containing information about the items the customer intends to purchase.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartLineConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"note","description":"A note that is associated with the cart. For example, the note can be a personalized message to the buyer.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"totalQuantity","description":"The total number of items in the cart.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Int","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"updatedAt","description":"The date and time when the cart was updated.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"DateTime","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"Node","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartAttributesUpdatePayload","description":"Return type for `cartAttributesUpdate` mutation.","fields":[{"name":"cart","description":"The updated cart.","args":[],"type":{"kind":"OBJECT","name":"Cart","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartAutomaticDiscountAllocation","description":"The discounts automatically applied to the cart line based on prerequisites that have been met.","fields":[{"name":"discountedAmount","description":"The discounted amount that has been applied to the cart line.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"title","description":"The title of the allocated discount.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"CartDiscountAllocation","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartBuyerIdentity","description":"Represents information about the buyer that is interacting with the cart.","fields":[{"name":"countryCode","description":"The country where the buyer is located.","args":[],"type":{"kind":"ENUM","name":"CountryCode","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customer","description":"The customer account associated with the cart.","args":[],"type":{"kind":"OBJECT","name":"Customer","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"email","description":"The email address of the buyer that is interacting with the cart.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"phone","description":"The phone number of the buyer that is interacting with the cart.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"CartBuyerIdentityInput","description":"Specifies the input fields to update the buyer information associated with a cart.\nBuyer identity is used to determine\n[international pricing](https://shopify.dev/api/examples/international-pricing#create-a-checkout)\nand should match the customer's shipping address.\n","fields":null,"inputFields":[{"name":"countryCode","description":"The country where the buyer is located.","type":{"kind":"ENUM","name":"CountryCode","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"customerAccessToken","description":"The access token used to identify the customer associated with the cart.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"email","description":"The email address of the buyer that is interacting with the cart.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"phone","description":"The phone number of the buyer that is interacting with the cart.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartBuyerIdentityUpdatePayload","description":"Return type for `cartBuyerIdentityUpdate` mutation.","fields":[{"name":"cart","description":"The updated cart.","args":[],"type":{"kind":"OBJECT","name":"Cart","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartCodeDiscountAllocation","description":"The discount that has been applied to the cart line using a discount code.","fields":[{"name":"code","description":"The code used to apply the discount.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"discountedAmount","description":"The discounted amount that has been applied to the cart line.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"CartDiscountAllocation","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartCreatePayload","description":"Return type for `cartCreate` mutation.","fields":[{"name":"cart","description":"The new cart.","args":[],"type":{"kind":"OBJECT","name":"Cart","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartDeliveryGroup","description":"Information about the options available for one or more line items to be delivered to a specific address.","fields":[{"name":"cartLines","description":"A list of cart lines for the delivery group.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartLineConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"deliveryAddress","description":"The destination address for the delivery group.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MailingAddress","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"deliveryOptions","description":"The delivery options available for the delivery group.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartDeliveryOption","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"The ID for the delivery group.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartDeliveryGroupConnection","description":"An auto-generated type for paginating through multiple CartDeliveryGroups.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartDeliveryGroupEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in CartDeliveryGroupEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartDeliveryGroup","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartDeliveryGroupEdge","description":"An auto-generated type which holds one CartDeliveryGroup and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of CartDeliveryGroupEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartDeliveryGroup","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartDeliveryOption","description":"Information about a delivery option.","fields":[{"name":"code","description":"The code of the delivery option.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"deliveryMethodType","description":"The method for the delivery option.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"DeliveryMethodType","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"description","description":"The description of the delivery option.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"estimatedCost","description":"The estimated cost for the delivery option.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"title","description":"The title of the delivery option.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INTERFACE","name":"CartDiscountAllocation","description":"The discounts that have been applied to the cart line.","fields":[{"name":"discountedAmount","description":"The discounted amount that has been applied to the cart line.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":[{"kind":"OBJECT","name":"CartAutomaticDiscountAllocation","ofType":null},{"kind":"OBJECT","name":"CartCodeDiscountAllocation","ofType":null}]},{"kind":"OBJECT","name":"CartDiscountCode","description":"The discount codes applied to the cart.","fields":[{"name":"applicable","description":"Whether the discount code is applicable to the cart's current contents.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"code","description":"The code for the discount.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartDiscountCodesUpdatePayload","description":"Return type for `cartDiscountCodesUpdate` mutation.","fields":[{"name":"cart","description":"The updated cart.","args":[],"type":{"kind":"OBJECT","name":"Cart","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"CartErrorCode","description":"Possible error codes that can be returned by `CartUserError`.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"INVALID","description":"The input value is invalid.","isDeprecated":false,"deprecationReason":null},{"name":"INVALID_MERCHANDISE_LINE","description":"Merchandise line was not found in cart.","isDeprecated":false,"deprecationReason":null},{"name":"LESS_THAN","description":"The input value should be less than the maximum value allowed.","isDeprecated":false,"deprecationReason":null},{"name":"MISSING_DISCOUNT_CODE","description":"Missing discount code.","isDeprecated":false,"deprecationReason":null},{"name":"MISSING_NOTE","description":"Missing note.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"CartEstimatedCost","description":"The estimated costs that the buyer will pay at checkout.\nIt uses [`CartBuyerIdentity`](https://shopify.dev/api/storefront/reference/cart/cartbuyeridentity) to determine\n[international pricing](https://shopify.dev/api/examples/international-pricing#create-a-cart).\n","fields":[{"name":"subtotalAmount","description":"The estimated amount, before taxes and discounts, for the customer to pay.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"totalAmount","description":"The estimated total amount for the customer to pay.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"totalDutyAmount","description":"The estimated duty amount for the customer to pay at checkout.","args":[],"type":{"kind":"OBJECT","name":"MoneyV2","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"totalTaxAmount","description":"The estimated tax amount for the customer to pay at checkout.","args":[],"type":{"kind":"OBJECT","name":"MoneyV2","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"CartInput","description":"Specifies the input fields to create a cart.","fields":null,"inputFields":[{"name":"attributes","description":"An array of key-value pairs that contains additional information about the cart.","type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"AttributeInput","ofType":null}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"buyerIdentity","description":"The customer associated with the cart. Used to determine [international pricing](https://shopify.dev/api/examples/international-pricing#create-a-checkout). Buyer identity should match the customer's shipping address.","type":{"kind":"INPUT_OBJECT","name":"CartBuyerIdentityInput","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"discountCodes","description":"The case-insensitive discount codes that the customer added at checkout.\n","type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"lines","description":"A list of merchandise lines to add to the cart.","type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"CartLineInput","ofType":null}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"note","description":"A note that is associated with the cart. For example, the note can be a personalized message to the buyer.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartLine","description":"Represents information about the merchandise in the cart.","fields":[{"name":"attributes","description":"The attributes associated with the cart line. Attributes are represented as key-value pairs.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Attribute","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"discountAllocations","description":"The discounts that have been applied to the cart line.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INTERFACE","name":"CartDiscountAllocation","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"estimatedCost","description":"The estimated cost of the merchandise that the buyer will pay for at checkout. The estimated costs are subject to change and changes will be reflected at checkout.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartLineEstimatedCost","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"merchandise","description":"The merchandise that the buyer intends to purchase.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"UNION","name":"Merchandise","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"quantity","description":"The quantity of the merchandise that the customer intends to purchase.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Int","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"sellingPlanAllocation","description":"The selling plan associated with the cart line and the effect that each selling plan has on variants when they're purchased.","args":[],"type":{"kind":"OBJECT","name":"SellingPlanAllocation","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"Node","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartLineConnection","description":"An auto-generated type for paginating through multiple CartLines.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartLineEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in CartLineEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartLine","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartLineEdge","description":"An auto-generated type which holds one CartLine and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of CartLineEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartLine","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartLineEstimatedCost","description":"The estimated cost of the merchandise line that the buyer will pay at checkout.","fields":[{"name":"amount","description":"The amount of the merchandise line.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"compareAtAmount","description":"The compare at amount of the merchandise line.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"subtotalAmount","description":"The estimated cost of the merchandise line before discounts.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"totalAmount","description":"The estimated total cost of the merchandise line.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"CartLineInput","description":"Specifies the input fields to create a merchandise line on a cart.","fields":null,"inputFields":[{"name":"attributes","description":"An array of key-value pairs that contains additional information about the merchandise line.","type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"AttributeInput","ofType":null}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"merchandiseId","description":"The identifier of the merchandise that the buyer intends to purchase.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"quantity","description":"The quantity of the merchandise.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":"1","isDeprecated":false,"deprecationReason":null},{"name":"sellingPlanId","description":"The identifier of the selling plan that the merchandise is being purchased with.","type":{"kind":"SCALAR","name":"ID","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"CartLineUpdateInput","description":"Specifies the input fields to update a line item on a cart.","fields":null,"inputFields":[{"name":"attributes","description":"An array of key-value pairs that contains additional information about the merchandise line.","type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"AttributeInput","ofType":null}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"The identifier of the merchandise line.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"merchandiseId","description":"The identifier of the merchandise for the line item.","type":{"kind":"SCALAR","name":"ID","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"quantity","description":"The quantity of the line item.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"sellingPlanId","description":"The identifier of the selling plan that the merchandise is being purchased with.","type":{"kind":"SCALAR","name":"ID","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartLinesAddPayload","description":"Return type for `cartLinesAdd` mutation.","fields":[{"name":"cart","description":"The updated cart.","args":[],"type":{"kind":"OBJECT","name":"Cart","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartLinesRemovePayload","description":"Return type for `cartLinesRemove` mutation.","fields":[{"name":"cart","description":"The updated cart.","args":[],"type":{"kind":"OBJECT","name":"Cart","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartLinesUpdatePayload","description":"Return type for `cartLinesUpdate` mutation.","fields":[{"name":"cart","description":"The updated cart.","args":[],"type":{"kind":"OBJECT","name":"Cart","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartNoteUpdatePayload","description":"Return type for `cartNoteUpdate` mutation.","fields":[{"name":"cart","description":"The updated cart.","args":[],"type":{"kind":"OBJECT","name":"Cart","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartUserError","description":"Represents an error that happens during execution of a cart mutation.","fields":[{"name":"code","description":"The error code.","args":[],"type":{"kind":"ENUM","name":"CartErrorCode","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"field","description":"The path to the input field that caused the error.","args":[],"type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}}},"isDeprecated":false,"deprecationReason":null},{"name":"message","description":"The error message.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"DisplayableError","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"Checkout","description":"A container for all the information required to checkout items and pay.","fields":[{"name":"appliedGiftCards","description":"The gift cards used on the checkout.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"AppliedGiftCard","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"availableShippingRates","description":"The available shipping rates for this Checkout.\nShould only be used when checkout `requiresShipping` is `true` and\nthe shipping address is valid.\n","args":[],"type":{"kind":"OBJECT","name":"AvailableShippingRates","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"buyerIdentity","description":"The identity of the customer associated with the checkout.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutBuyerIdentity","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"completedAt","description":"The date and time when the checkout was completed.","args":[],"type":{"kind":"SCALAR","name":"DateTime","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"createdAt","description":"The date and time when the checkout was created.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"DateTime","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"currencyCode","description":"The currency code for the checkout.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"CurrencyCode","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"customAttributes","description":"A list of extra information that is added to the checkout.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON \ No newline at end of file +{"__schema":{"queryType":{"name":"QueryRoot"},"mutationType":{"name":"Mutation"},"subscriptionType":null,"types":[{"kind":"OBJECT","name":"ApiVersion","description":"A version of the API, as defined by [Shopify API versioning](https://shopify.dev/api/usage/versioning).\nVersions are commonly referred to by their handle (for example, `2021-10`).\n","fields":[{"name":"displayName","description":"The human-readable name of the version.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"handle","description":"The unique identifier of an ApiVersion. All supported API versions have a date-based (YYYY-MM) or `unstable` handle.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"supported","description":"Whether the version is actively supported by Shopify. Supported API versions are guaranteed to be stable. Unsupported API versions include unstable, release candidate, and end-of-life versions that are marked as unsupported. For more information, refer to [Versioning](https://shopify.dev/api/usage/versioning).","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"AppliedGiftCard","description":"Details about the gift card used on the checkout.","fields":[{"name":"amountUsed","description":"The amount that was taken from the gift card by applying it.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Money","ofType":null}},"isDeprecated":true,"deprecationReason":"Use `amountUsedV2` instead"},{"name":"amountUsedV2","description":"The amount that was taken from the gift card by applying it.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"balance","description":"The amount left on the gift card.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Money","ofType":null}},"isDeprecated":true,"deprecationReason":"Use `balanceV2` instead"},{"name":"balanceV2","description":"The amount left on the gift card.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"lastCharacters","description":"The last characters of the gift card.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"presentmentAmountUsed","description":"The amount that was applied to the checkout in its currency.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"Node","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"Article","description":"An article in an online store blog.","fields":[{"name":"author","description":"The article's author.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"ArticleAuthor","ofType":null}},"isDeprecated":true,"deprecationReason":"Use `authorV2` instead"},{"name":"authorV2","description":"The article's author.","args":[],"type":{"kind":"OBJECT","name":"ArticleAuthor","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"blog","description":"The blog that the article belongs to.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Blog","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"comments","description":"List of comments posted on the article.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CommentConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"content","description":"Stripped content of the article, single line with HTML tags removed.","args":[{"name":"truncateAt","description":"Truncates string after the given length.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"contentHtml","description":"The content of the article, complete with HTML formatting.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"HTML","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"excerpt","description":"Stripped excerpt of the article, single line with HTML tags removed.","args":[{"name":"truncateAt","description":"Truncates string after the given length.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"excerptHtml","description":"The excerpt of the article, complete with HTML formatting.","args":[],"type":{"kind":"SCALAR","name":"HTML","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"handle","description":"A human-friendly unique string for the Article automatically generated from its title.\n","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"image","description":"The image associated with the article.","args":[],"type":{"kind":"OBJECT","name":"Image","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"metafield","description":"Returns a metafield found by namespace and key.","args":[{"name":"key","description":"Identifier for the metafield (maximum of 30 characters).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"namespace","description":"Container for a set of metafields (maximum of 20 characters).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"Metafield","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"metafields","description":"A paginated list of metafields associated with the resource.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"namespace","description":"Container for a set of metafields (maximum of 20 characters).","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MetafieldConnection","ofType":null}},"isDeprecated":true,"deprecationReason":"The `metafields` field will be removed in the future in favor of using [aliases](https://graphql.org/learn/queries/#aliases) with the `metafield` field.\n"},{"name":"onlineStoreUrl","description":"The URL used for viewing the resource on the shop's Online Store. Returns `null` if the resource is currently not published to the Online Store sales channel.","args":[],"type":{"kind":"SCALAR","name":"URL","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"publishedAt","description":"The date and time when the article was published.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"DateTime","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"seo","description":"The article’s SEO information.","args":[],"type":{"kind":"OBJECT","name":"SEO","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"tags","description":"A categorization that a article can be tagged with.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"title","description":"The article’s name.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"HasMetafields","ofType":null},{"kind":"INTERFACE","name":"Node","ofType":null},{"kind":"INTERFACE","name":"OnlineStorePublishable","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"ArticleAuthor","description":"The author of an article.","fields":[{"name":"bio","description":"The author's bio.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"email","description":"The author’s email.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"firstName","description":"The author's first name.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"lastName","description":"The author's last name.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"name","description":"The author's full name.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"ArticleConnection","description":"An auto-generated type for paginating through multiple Articles.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"ArticleEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in ArticleEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Article","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"ArticleEdge","description":"An auto-generated type which holds one Article and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of ArticleEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Article","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"ArticleSortKeys","description":"The set of valid sort keys for the Article query.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"AUTHOR","description":"Sort by the `author` value.","isDeprecated":false,"deprecationReason":null},{"name":"BLOG_TITLE","description":"Sort by the `blog_title` value.","isDeprecated":false,"deprecationReason":null},{"name":"ID","description":"Sort by the `id` value.","isDeprecated":false,"deprecationReason":null},{"name":"PUBLISHED_AT","description":"Sort by the `published_at` value.","isDeprecated":false,"deprecationReason":null},{"name":"RELEVANCE","description":"Sort by relevance to the search terms when the `query` parameter is specified on the connection.\nDon't use this sort key when no search query is specified.\n","isDeprecated":false,"deprecationReason":null},{"name":"TITLE","description":"Sort by the `title` value.","isDeprecated":false,"deprecationReason":null},{"name":"UPDATED_AT","description":"Sort by the `updated_at` value.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"Attribute","description":"Represents a generic custom attribute.","fields":[{"name":"key","description":"Key or name of the attribute.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"value","description":"Value of the attribute.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"AttributeInput","description":"Specifies the input fields required for an attribute.","fields":null,"inputFields":[{"name":"key","description":"Key or name of the attribute.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"value","description":"Value of the attribute.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"AutomaticDiscountApplication","description":"Automatic discount applications capture the intentions of a discount that was automatically applied.\n","fields":[{"name":"allocationMethod","description":"The method by which the discount's value is allocated to its entitled items.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"DiscountApplicationAllocationMethod","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"targetSelection","description":"Which lines of targetType that the discount is allocated over.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"DiscountApplicationTargetSelection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"targetType","description":"The type of line that the discount is applicable towards.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"DiscountApplicationTargetType","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"title","description":"The title of the application.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"value","description":"The value of the discount application.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"UNION","name":"PricingValue","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"DiscountApplication","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"AvailableShippingRates","description":"A collection of available shipping rates for a checkout.","fields":[{"name":"ready","description":"Whether or not the shipping rates are ready.\nThe `shippingRates` field is `null` when this value is `false`.\nThis field should be polled until its value becomes `true`.\n","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"shippingRates","description":"The fetched shipping rates. `null` until the `ready` field is `true`.","args":[],"type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"ShippingRate","ofType":null}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"Blog","description":"An online store blog.","fields":[{"name":"articleByHandle","description":"Find an article by its handle.","args":[{"name":"handle","description":"The handle of the article.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"Article","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"articles","description":"List of the blog's articles.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"query","description":"Supported filter parameters:\n - `author`\n - `blog_title`\n - `created_at`\n - `tag`\n - `tag_not`\n - `updated_at`\n\nSee the detailed [search syntax](https://shopify.dev/api/usage/search-syntax)\nfor more information about using filters.\n","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null},{"name":"sortKey","description":"Sort the underlying list by the given key.","type":{"kind":"ENUM","name":"ArticleSortKeys","ofType":null},"defaultValue":"ID","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"ArticleConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"authors","description":"The authors who have contributed to the blog.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"ArticleAuthor","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"handle","description":"A human-friendly unique string for the Blog automatically generated from its title.\n","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"metafield","description":"Returns a metafield found by namespace and key.","args":[{"name":"key","description":"Identifier for the metafield (maximum of 30 characters).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"namespace","description":"Container for a set of metafields (maximum of 20 characters).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"Metafield","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"metafields","description":"A paginated list of metafields associated with the resource.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"namespace","description":"Container for a set of metafields (maximum of 20 characters).","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MetafieldConnection","ofType":null}},"isDeprecated":true,"deprecationReason":"The `metafields` field will be removed in the future in favor of using [aliases](https://graphql.org/learn/queries/#aliases) with the `metafield` field.\n"},{"name":"onlineStoreUrl","description":"The URL used for viewing the resource on the shop's Online Store. Returns `null` if the resource is currently not published to the Online Store sales channel.","args":[],"type":{"kind":"SCALAR","name":"URL","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"seo","description":"The blog's SEO information.","args":[],"type":{"kind":"OBJECT","name":"SEO","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"title","description":"The blogs’s title.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"HasMetafields","ofType":null},{"kind":"INTERFACE","name":"Node","ofType":null},{"kind":"INTERFACE","name":"OnlineStorePublishable","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"BlogConnection","description":"An auto-generated type for paginating through multiple Blogs.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"BlogEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in BlogEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Blog","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"BlogEdge","description":"An auto-generated type which holds one Blog and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of BlogEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Blog","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"BlogSortKeys","description":"The set of valid sort keys for the Blog query.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"HANDLE","description":"Sort by the `handle` value.","isDeprecated":false,"deprecationReason":null},{"name":"ID","description":"Sort by the `id` value.","isDeprecated":false,"deprecationReason":null},{"name":"RELEVANCE","description":"Sort by relevance to the search terms when the `query` parameter is specified on the connection.\nDon't use this sort key when no search query is specified.\n","isDeprecated":false,"deprecationReason":null},{"name":"TITLE","description":"Sort by the `title` value.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"SCALAR","name":"Boolean","description":"The `Boolean` scalar type represents `true` or `false`.","fields":null,"inputFields":null,"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"CardBrand","description":"Card brand, such as Visa or Mastercard, which can be used for payments.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"AMERICAN_EXPRESS","description":"American Express.","isDeprecated":false,"deprecationReason":null},{"name":"DINERS_CLUB","description":"Diners Club.","isDeprecated":false,"deprecationReason":null},{"name":"DISCOVER","description":"Discover.","isDeprecated":false,"deprecationReason":null},{"name":"JCB","description":"JCB.","isDeprecated":false,"deprecationReason":null},{"name":"MASTERCARD","description":"Mastercard.","isDeprecated":false,"deprecationReason":null},{"name":"VISA","description":"Visa.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"Cart","description":"A cart represents the merchandise that a buyer intends to purchase, and the estimated cost associated with the cart. To learn how to interact with a cart during a customer's session, refer to [Manage a cart with the Storefront API](https://shopify.dev/api/examples/cart).","fields":[{"name":"attributes","description":"The attributes associated with the cart. Attributes are represented as key-value pairs.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Attribute","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"buyerIdentity","description":"Information about the buyer that is interacting with the cart.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartBuyerIdentity","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUrl","description":"The URL of the checkout for the cart.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"URL","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"createdAt","description":"The date and time when the cart was created.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"DateTime","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"deliveryGroups","description":"The delivery groups available for the cart, based on the default address of the logged-in customer.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartDeliveryGroupConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"discountCodes","description":"The case-insensitive discount codes that the customer added at checkout.\n","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartDiscountCode","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"estimatedCost","description":"The estimated costs that the buyer will pay at checkout. The estimated costs are subject to change and changes will be reflected at checkout. The `estimatedCost` field uses the `buyerIdentity` field to determine [international pricing](https://shopify.dev/api/examples/international-pricing#create-a-cart).","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartEstimatedCost","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"lines","description":"A list of lines containing information about the items the customer intends to purchase.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartLineConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"note","description":"A note that is associated with the cart. For example, the note can be a personalized message to the buyer.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"totalQuantity","description":"The total number of items in the cart.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Int","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"updatedAt","description":"The date and time when the cart was updated.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"DateTime","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"Node","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartAttributesUpdatePayload","description":"Return type for `cartAttributesUpdate` mutation.","fields":[{"name":"cart","description":"The updated cart.","args":[],"type":{"kind":"OBJECT","name":"Cart","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartAutomaticDiscountAllocation","description":"The discounts automatically applied to the cart line based on prerequisites that have been met.","fields":[{"name":"discountedAmount","description":"The discounted amount that has been applied to the cart line.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"title","description":"The title of the allocated discount.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"CartDiscountAllocation","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartBuyerIdentity","description":"Represents information about the buyer that is interacting with the cart.","fields":[{"name":"countryCode","description":"The country where the buyer is located.","args":[],"type":{"kind":"ENUM","name":"CountryCode","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customer","description":"The customer account associated with the cart.","args":[],"type":{"kind":"OBJECT","name":"Customer","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"email","description":"The email address of the buyer that is interacting with the cart.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"phone","description":"The phone number of the buyer that is interacting with the cart.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"CartBuyerIdentityInput","description":"Specifies the input fields to update the buyer information associated with a cart.\nBuyer identity is used to determine\n[international pricing](https://shopify.dev/api/examples/international-pricing#create-a-checkout)\nand should match the customer's shipping address.\n","fields":null,"inputFields":[{"name":"countryCode","description":"The country where the buyer is located.","type":{"kind":"ENUM","name":"CountryCode","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"customerAccessToken","description":"The access token used to identify the customer associated with the cart.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"email","description":"The email address of the buyer that is interacting with the cart.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"phone","description":"The phone number of the buyer that is interacting with the cart.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartBuyerIdentityUpdatePayload","description":"Return type for `cartBuyerIdentityUpdate` mutation.","fields":[{"name":"cart","description":"The updated cart.","args":[],"type":{"kind":"OBJECT","name":"Cart","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartCodeDiscountAllocation","description":"The discount that has been applied to the cart line using a discount code.","fields":[{"name":"code","description":"The code used to apply the discount.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"discountedAmount","description":"The discounted amount that has been applied to the cart line.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"CartDiscountAllocation","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartCreatePayload","description":"Return type for `cartCreate` mutation.","fields":[{"name":"cart","description":"The new cart.","args":[],"type":{"kind":"OBJECT","name":"Cart","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartDeliveryGroup","description":"Information about the options available for one or more line items to be delivered to a specific address.","fields":[{"name":"cartLines","description":"A list of cart lines for the delivery group.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartLineConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"deliveryAddress","description":"The destination address for the delivery group.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MailingAddress","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"deliveryOptions","description":"The delivery options available for the delivery group.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartDeliveryOption","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"The ID for the delivery group.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartDeliveryGroupConnection","description":"An auto-generated type for paginating through multiple CartDeliveryGroups.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartDeliveryGroupEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in CartDeliveryGroupEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartDeliveryGroup","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartDeliveryGroupEdge","description":"An auto-generated type which holds one CartDeliveryGroup and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of CartDeliveryGroupEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartDeliveryGroup","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartDeliveryOption","description":"Information about a delivery option.","fields":[{"name":"code","description":"The code of the delivery option.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"deliveryMethodType","description":"The method for the delivery option.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"DeliveryMethodType","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"description","description":"The description of the delivery option.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"estimatedCost","description":"The estimated cost for the delivery option.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"title","description":"The title of the delivery option.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INTERFACE","name":"CartDiscountAllocation","description":"The discounts that have been applied to the cart line.","fields":[{"name":"discountedAmount","description":"The discounted amount that has been applied to the cart line.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":[{"kind":"OBJECT","name":"CartAutomaticDiscountAllocation","ofType":null},{"kind":"OBJECT","name":"CartCodeDiscountAllocation","ofType":null}]},{"kind":"OBJECT","name":"CartDiscountCode","description":"The discount codes applied to the cart.","fields":[{"name":"applicable","description":"Whether the discount code is applicable to the cart's current contents.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"code","description":"The code for the discount.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartDiscountCodesUpdatePayload","description":"Return type for `cartDiscountCodesUpdate` mutation.","fields":[{"name":"cart","description":"The updated cart.","args":[],"type":{"kind":"OBJECT","name":"Cart","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"CartErrorCode","description":"Possible error codes that can be returned by `CartUserError`.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"INVALID","description":"The input value is invalid.","isDeprecated":false,"deprecationReason":null},{"name":"INVALID_MERCHANDISE_LINE","description":"Merchandise line was not found in cart.","isDeprecated":false,"deprecationReason":null},{"name":"LESS_THAN","description":"The input value should be less than the maximum value allowed.","isDeprecated":false,"deprecationReason":null},{"name":"MISSING_DISCOUNT_CODE","description":"Missing discount code.","isDeprecated":false,"deprecationReason":null},{"name":"MISSING_NOTE","description":"Missing note.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"CartEstimatedCost","description":"The estimated costs that the buyer will pay at checkout.\nIt uses [`CartBuyerIdentity`](https://shopify.dev/api/storefront/reference/cart/cartbuyeridentity) to determine\n[international pricing](https://shopify.dev/api/examples/international-pricing#create-a-cart).\n","fields":[{"name":"subtotalAmount","description":"The estimated amount, before taxes and discounts, for the customer to pay.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"totalAmount","description":"The estimated total amount for the customer to pay.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"totalDutyAmount","description":"The estimated duty amount for the customer to pay at checkout.","args":[],"type":{"kind":"OBJECT","name":"MoneyV2","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"totalTaxAmount","description":"The estimated tax amount for the customer to pay at checkout.","args":[],"type":{"kind":"OBJECT","name":"MoneyV2","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"CartInput","description":"Specifies the input fields to create a cart.","fields":null,"inputFields":[{"name":"attributes","description":"An array of key-value pairs that contains additional information about the cart.","type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"AttributeInput","ofType":null}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"buyerIdentity","description":"The customer associated with the cart. Used to determine [international pricing](https://shopify.dev/api/examples/international-pricing#create-a-checkout). Buyer identity should match the customer's shipping address.","type":{"kind":"INPUT_OBJECT","name":"CartBuyerIdentityInput","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"discountCodes","description":"The case-insensitive discount codes that the customer added at checkout.\n","type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"lines","description":"A list of merchandise lines to add to the cart.","type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"CartLineInput","ofType":null}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"note","description":"A note that is associated with the cart. For example, the note can be a personalized message to the buyer.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartLine","description":"Represents information about the merchandise in the cart.","fields":[{"name":"attributes","description":"The attributes associated with the cart line. Attributes are represented as key-value pairs.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Attribute","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"discountAllocations","description":"The discounts that have been applied to the cart line.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INTERFACE","name":"CartDiscountAllocation","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"estimatedCost","description":"The estimated cost of the merchandise that the buyer will pay for at checkout. The estimated costs are subject to change and changes will be reflected at checkout.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartLineEstimatedCost","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"merchandise","description":"The merchandise that the buyer intends to purchase.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"UNION","name":"Merchandise","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"quantity","description":"The quantity of the merchandise that the customer intends to purchase.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Int","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"sellingPlanAllocation","description":"The selling plan associated with the cart line and the effect that each selling plan has on variants when they're purchased.","args":[],"type":{"kind":"OBJECT","name":"SellingPlanAllocation","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"Node","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartLineConnection","description":"An auto-generated type for paginating through multiple CartLines.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartLineEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in CartLineEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartLine","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartLineEdge","description":"An auto-generated type which holds one CartLine and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of CartLineEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartLine","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartLineEstimatedCost","description":"The estimated cost of the merchandise line that the buyer will pay at checkout.","fields":[{"name":"amount","description":"The amount of the merchandise line.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"compareAtAmount","description":"The compare at amount of the merchandise line.","args":[],"type":{"kind":"OBJECT","name":"MoneyV2","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"subtotalAmount","description":"The estimated cost of the merchandise line before discounts.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"totalAmount","description":"The estimated total cost of the merchandise line.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"CartLineInput","description":"Specifies the input fields to create a merchandise line on a cart.","fields":null,"inputFields":[{"name":"attributes","description":"An array of key-value pairs that contains additional information about the merchandise line.","type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"AttributeInput","ofType":null}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"merchandiseId","description":"The identifier of the merchandise that the buyer intends to purchase.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"quantity","description":"The quantity of the merchandise.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":"1","isDeprecated":false,"deprecationReason":null},{"name":"sellingPlanId","description":"The identifier of the selling plan that the merchandise is being purchased with.","type":{"kind":"SCALAR","name":"ID","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"CartLineUpdateInput","description":"Specifies the input fields to update a line item on a cart.","fields":null,"inputFields":[{"name":"attributes","description":"An array of key-value pairs that contains additional information about the merchandise line.","type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"AttributeInput","ofType":null}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"The identifier of the merchandise line.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"merchandiseId","description":"The identifier of the merchandise for the line item.","type":{"kind":"SCALAR","name":"ID","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"quantity","description":"The quantity of the line item.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"sellingPlanId","description":"The identifier of the selling plan that the merchandise is being purchased with.","type":{"kind":"SCALAR","name":"ID","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartLinesAddPayload","description":"Return type for `cartLinesAdd` mutation.","fields":[{"name":"cart","description":"The updated cart.","args":[],"type":{"kind":"OBJECT","name":"Cart","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartLinesRemovePayload","description":"Return type for `cartLinesRemove` mutation.","fields":[{"name":"cart","description":"The updated cart.","args":[],"type":{"kind":"OBJECT","name":"Cart","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartLinesUpdatePayload","description":"Return type for `cartLinesUpdate` mutation.","fields":[{"name":"cart","description":"The updated cart.","args":[],"type":{"kind":"OBJECT","name":"Cart","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartNoteUpdatePayload","description":"Return type for `cartNoteUpdate` mutation.","fields":[{"name":"cart","description":"The updated cart.","args":[],"type":{"kind":"OBJECT","name":"Cart","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CartUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CartUserError","description":"Represents an error that happens during execution of a cart mutation.","fields":[{"name":"code","description":"The error code.","args":[],"type":{"kind":"ENUM","name":"CartErrorCode","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"field","description":"The path to the input field that caused the error.","args":[],"type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}}},"isDeprecated":false,"deprecationReason":null},{"name":"message","description":"The error message.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"DisplayableError","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"Checkout","description":"A container for all the information required to checkout items and pay.","fields":[{"name":"appliedGiftCards","description":"The gift cards used on the checkout.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"AppliedGiftCard","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"availableShippingRates","description":"The available shipping rates for this Checkout.\nShould only be used when checkout `requiresShipping` is `true` and\nthe shipping address is valid.\n","args":[],"type":{"kind":"OBJECT","name":"AvailableShippingRates","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"buyerIdentity","description":"The identity of the customer associated with the checkout.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutBuyerIdentity","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"completedAt","description":"The date and time when the checkout was completed.","args":[],"type":{"kind":"SCALAR","name":"DateTime","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"createdAt","description":"The date and time when the checkout was created.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"DateTime","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"currencyCode","description":"The currency code for the checkout.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"CurrencyCode","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"customAttributes","description":"A list of extra information that is added to the checkout.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Attribute","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"discountApplications","description":"Discounts that have been applied on the checkout.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"DiscountApplicationConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"email","description":"The email attached to this checkout.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"lineItems","description":"A list of line item objects, each one containing information about an item in the checkout.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutLineItemConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"lineItemsSubtotalPrice","description":"The sum of all the prices of all the items in the checkout. Duties, taxes, shipping and discounts excluded.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"note","description":"The note associated with the checkout.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"order","description":"The resulting order from a paid checkout.","args":[],"type":{"kind":"OBJECT","name":"Order","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"orderStatusUrl","description":"The Order Status Page for this Checkout, null when checkout is not completed.","args":[],"type":{"kind":"SCALAR","name":"URL","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"paymentDue","description":"The amount left to be paid. This is equal to the cost of the line items, taxes and shipping minus discounts and gift cards.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Money","ofType":null}},"isDeprecated":true,"deprecationReason":"Use `paymentDueV2` instead"},{"name":"paymentDueV2","description":"The amount left to be paid. This is equal to the cost of the line items, duties, taxes and shipping minus discounts and gift cards.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"ready","description":"Whether or not the Checkout is ready and can be completed. Checkouts may\nhave asynchronous operations that can take time to finish. If you want\nto complete a checkout or ensure all the fields are populated and up to\ndate, polling is required until the value is true.\n","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"requiresShipping","description":"States whether or not the fulfillment requires shipping.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"shippingAddress","description":"The shipping address to where the line items will be shipped.","args":[],"type":{"kind":"OBJECT","name":"MailingAddress","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"shippingDiscountAllocations","description":"The discounts that have been allocated onto the shipping line by discount applications.\n","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"DiscountAllocation","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"shippingLine","description":"Once a shipping rate is selected by the customer it is transitioned to a `shipping_line` object.","args":[],"type":{"kind":"OBJECT","name":"ShippingRate","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"subtotalPrice","description":"Price of the checkout before shipping and taxes.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Money","ofType":null}},"isDeprecated":true,"deprecationReason":"Use `subtotalPriceV2` instead"},{"name":"subtotalPriceV2","description":"Price of the checkout before duties, shipping and taxes.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"taxExempt","description":"Whether the checkout is tax exempt.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"taxesIncluded","description":"Whether taxes are included in the line item and shipping line prices.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"totalDuties","description":"The sum of all the duties applied to the line items in the checkout.","args":[],"type":{"kind":"OBJECT","name":"MoneyV2","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"totalPrice","description":"The sum of all the prices of all the items in the checkout, taxes and discounts included.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Money","ofType":null}},"isDeprecated":true,"deprecationReason":"Use `totalPriceV2` instead"},{"name":"totalPriceV2","description":"The sum of all the prices of all the items in the checkout, duties, taxes and discounts included.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"totalTax","description":"The sum of all the taxes applied to the line items and shipping lines in the checkout.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Money","ofType":null}},"isDeprecated":true,"deprecationReason":"Use `totalTaxV2` instead"},{"name":"totalTaxV2","description":"The sum of all the taxes applied to the line items and shipping lines in the checkout.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"updatedAt","description":"The date and time when the checkout was last updated.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"DateTime","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"webUrl","description":"The url pointing to the checkout accessible from the web.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"URL","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"Node","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"CheckoutAttributesUpdateInput","description":"Specifies the fields required to update a checkout's attributes.","fields":null,"inputFields":[{"name":"allowPartialAddresses","description":"Allows setting partial addresses on a Checkout, skipping the full validation of attributes.\nThe required attributes are city, province, and country.\nFull validation of the addresses is still done at completion time. Defaults to `false` with\neach operation.\n","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null},{"name":"customAttributes","description":"A list of extra information that is added to the checkout.","type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"AttributeInput","ofType":null}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"note","description":"The text of an optional note that a shop owner can attach to the checkout.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutAttributesUpdatePayload","description":"Return type for `checkoutAttributesUpdate` mutation.","fields":[{"name":"checkout","description":"The updated checkout object.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Checkout","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `checkoutUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"CheckoutAttributesUpdateV2Input","description":"Specifies the fields required to update a checkout's attributes.","fields":null,"inputFields":[{"name":"allowPartialAddresses","description":"Allows setting partial addresses on a Checkout, skipping the full validation of attributes.\nThe required attributes are city, province, and country.\nFull validation of the addresses is still done at completion time. Defaults to `false` with \neach operation.\n","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null},{"name":"customAttributes","description":"A list of extra information that is added to the checkout.","type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"AttributeInput","ofType":null}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"note","description":"The text of an optional note that a shop owner can attach to the checkout.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutAttributesUpdateV2Payload","description":"Return type for `checkoutAttributesUpdateV2` mutation.","fields":[{"name":"checkout","description":"The updated checkout object.","args":[],"type":{"kind":"OBJECT","name":"Checkout","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `checkoutUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutBuyerIdentity","description":"The identity of the customer associated with the checkout.","fields":[{"name":"countryCode","description":"The country code for the checkout. For example, `CA`.","args":[],"type":{"kind":"ENUM","name":"CountryCode","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"CheckoutBuyerIdentityInput","description":"Specifies the identity of the customer associated with the checkout.","fields":null,"inputFields":[{"name":"countryCode","description":"The country code of one of the shop's\n[enabled countries](https://help.shopify.com/en/manual/payments/shopify-payments/multi-currency/setup).\nFor example, `CA`. Including this field creates a checkout in the specified country's currency.\n","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"CountryCode","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutCompleteFreePayload","description":"Return type for `checkoutCompleteFree` mutation.","fields":[{"name":"checkout","description":"The updated checkout object.","args":[],"type":{"kind":"OBJECT","name":"Checkout","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `checkoutUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutCompleteWithCreditCardPayload","description":"Return type for `checkoutCompleteWithCreditCard` mutation.","fields":[{"name":"checkout","description":"The checkout on which the payment was applied.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Checkout","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"payment","description":"A representation of the attempted payment.","args":[],"type":{"kind":"OBJECT","name":"Payment","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `checkoutUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutCompleteWithCreditCardV2Payload","description":"Return type for `checkoutCompleteWithCreditCardV2` mutation.","fields":[{"name":"checkout","description":"The checkout on which the payment was applied.","args":[],"type":{"kind":"OBJECT","name":"Checkout","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"payment","description":"A representation of the attempted payment.","args":[],"type":{"kind":"OBJECT","name":"Payment","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `checkoutUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutCompleteWithTokenizedPaymentPayload","description":"Return type for `checkoutCompleteWithTokenizedPayment` mutation.","fields":[{"name":"checkout","description":"The checkout on which the payment was applied.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Checkout","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"payment","description":"A representation of the attempted payment.","args":[],"type":{"kind":"OBJECT","name":"Payment","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `checkoutUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutCompleteWithTokenizedPaymentV2Payload","description":"Return type for `checkoutCompleteWithTokenizedPaymentV2` mutation.","fields":[{"name":"checkout","description":"The checkout on which the payment was applied.","args":[],"type":{"kind":"OBJECT","name":"Checkout","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"payment","description":"A representation of the attempted payment.","args":[],"type":{"kind":"OBJECT","name":"Payment","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `checkoutUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutCompleteWithTokenizedPaymentV3Payload","description":"Return type for `checkoutCompleteWithTokenizedPaymentV3` mutation.","fields":[{"name":"checkout","description":"The checkout on which the payment was applied.","args":[],"type":{"kind":"OBJECT","name":"Checkout","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"payment","description":"A representation of the attempted payment.","args":[],"type":{"kind":"OBJECT","name":"Payment","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `checkoutUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"CheckoutCreateInput","description":"Specifies the fields required to create a checkout.","fields":null,"inputFields":[{"name":"allowPartialAddresses","description":"Allows setting partial addresses on a Checkout, skipping the full validation of attributes.\nThe required attributes are city, province, and country.\nFull validation of addresses is still done at completion time. Defaults to `null`.\n","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"buyerIdentity","description":"The identity of the customer associated with the checkout.","type":{"kind":"INPUT_OBJECT","name":"CheckoutBuyerIdentityInput","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"customAttributes","description":"A list of extra information that is added to the checkout.","type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"AttributeInput","ofType":null}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"email","description":"The email with which the customer wants to checkout.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"lineItems","description":"A list of line item objects, each one containing information about an item in the checkout.","type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"CheckoutLineItemInput","ofType":null}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"note","description":"The text of an optional note that a shop owner can attach to the checkout.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"presentmentCurrencyCode","description":"The three-letter currency code of one of the shop's enabled presentment currencies.\nIncluding this field creates a checkout in the specified currency. By default, new\ncheckouts are created in the shop's primary currency.\n This argument is deprecated: Use `country` field instead.","type":{"kind":"ENUM","name":"CurrencyCode","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"shippingAddress","description":"The shipping address to where the line items will be shipped.","type":{"kind":"INPUT_OBJECT","name":"MailingAddressInput","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutCreatePayload","description":"Return type for `checkoutCreate` mutation.","fields":[{"name":"checkout","description":"The new checkout object.","args":[],"type":{"kind":"OBJECT","name":"Checkout","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"queueToken","description":"The checkout queue token. Available only to selected stores.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `checkoutUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutCustomerAssociatePayload","description":"Return type for `checkoutCustomerAssociate` mutation.","fields":[{"name":"checkout","description":"The updated checkout object.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Checkout","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"customer","description":"The associated customer object.","args":[],"type":{"kind":"OBJECT","name":"Customer","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutCustomerAssociateV2Payload","description":"Return type for `checkoutCustomerAssociateV2` mutation.","fields":[{"name":"checkout","description":"The updated checkout object.","args":[],"type":{"kind":"OBJECT","name":"Checkout","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"customer","description":"The associated customer object.","args":[],"type":{"kind":"OBJECT","name":"Customer","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `checkoutUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutCustomerDisassociatePayload","description":"Return type for `checkoutCustomerDisassociate` mutation.","fields":[{"name":"checkout","description":"The updated checkout object.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Checkout","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `checkoutUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutCustomerDisassociateV2Payload","description":"Return type for `checkoutCustomerDisassociateV2` mutation.","fields":[{"name":"checkout","description":"The updated checkout object.","args":[],"type":{"kind":"OBJECT","name":"Checkout","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `checkoutUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutDiscountCodeApplyPayload","description":"Return type for `checkoutDiscountCodeApply` mutation.","fields":[{"name":"checkout","description":"The updated checkout object.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Checkout","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `checkoutUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutDiscountCodeApplyV2Payload","description":"Return type for `checkoutDiscountCodeApplyV2` mutation.","fields":[{"name":"checkout","description":"The updated checkout object.","args":[],"type":{"kind":"OBJECT","name":"Checkout","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `checkoutUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutDiscountCodeRemovePayload","description":"Return type for `checkoutDiscountCodeRemove` mutation.","fields":[{"name":"checkout","description":"The updated checkout object.","args":[],"type":{"kind":"OBJECT","name":"Checkout","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `checkoutUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutEmailUpdatePayload","description":"Return type for `checkoutEmailUpdate` mutation.","fields":[{"name":"checkout","description":"The checkout object with the updated email.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Checkout","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `checkoutUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutEmailUpdateV2Payload","description":"Return type for `checkoutEmailUpdateV2` mutation.","fields":[{"name":"checkout","description":"The checkout object with the updated email.","args":[],"type":{"kind":"OBJECT","name":"Checkout","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `checkoutUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"CheckoutErrorCode","description":"Possible error codes that can be returned by `CheckoutUserError`.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"ALREADY_COMPLETED","description":"Checkout is already completed.","isDeprecated":false,"deprecationReason":null},{"name":"BAD_DOMAIN","description":"Input email contains an invalid domain name.","isDeprecated":false,"deprecationReason":null},{"name":"BLANK","description":"The input value is blank.","isDeprecated":false,"deprecationReason":null},{"name":"CART_DOES_NOT_MEET_DISCOUNT_REQUIREMENTS_NOTICE","description":"Cart does not meet discount requirements notice.","isDeprecated":false,"deprecationReason":null},{"name":"CUSTOMER_ALREADY_USED_ONCE_PER_CUSTOMER_DISCOUNT_NOTICE","description":"Customer already used once per customer discount notice.","isDeprecated":false,"deprecationReason":null},{"name":"DISCOUNT_ALREADY_APPLIED","description":"Discount already applied.","isDeprecated":false,"deprecationReason":null},{"name":"DISCOUNT_DISABLED","description":"Discount disabled.","isDeprecated":false,"deprecationReason":null},{"name":"DISCOUNT_EXPIRED","description":"Discount expired.","isDeprecated":false,"deprecationReason":null},{"name":"DISCOUNT_LIMIT_REACHED","description":"Discount limit reached.","isDeprecated":false,"deprecationReason":null},{"name":"DISCOUNT_NOT_FOUND","description":"Discount not found.","isDeprecated":false,"deprecationReason":null},{"name":"EMPTY","description":"Checkout is already completed.","isDeprecated":false,"deprecationReason":null},{"name":"EXPIRED_QUEUE_TOKEN","description":"Queue token has expired.","isDeprecated":false,"deprecationReason":null},{"name":"GIFT_CARD_ALREADY_APPLIED","description":"Gift card has already been applied.","isDeprecated":false,"deprecationReason":null},{"name":"GIFT_CARD_CODE_INVALID","description":"Gift card code is invalid.","isDeprecated":false,"deprecationReason":null},{"name":"GIFT_CARD_CURRENCY_MISMATCH","description":"Gift card currency does not match checkout currency.","isDeprecated":false,"deprecationReason":null},{"name":"GIFT_CARD_DEPLETED","description":"Gift card has no funds left.","isDeprecated":false,"deprecationReason":null},{"name":"GIFT_CARD_DISABLED","description":"Gift card is disabled.","isDeprecated":false,"deprecationReason":null},{"name":"GIFT_CARD_EXPIRED","description":"Gift card is expired.","isDeprecated":false,"deprecationReason":null},{"name":"GIFT_CARD_NOT_FOUND","description":"Gift card was not found.","isDeprecated":false,"deprecationReason":null},{"name":"GIFT_CARD_UNUSABLE","description":"Gift card cannot be applied to a checkout that contains a gift card.","isDeprecated":false,"deprecationReason":null},{"name":"GREATER_THAN_OR_EQUAL_TO","description":"The input value should be greater than or equal to the minimum value allowed.","isDeprecated":false,"deprecationReason":null},{"name":"INVALID","description":"The input value is invalid.","isDeprecated":false,"deprecationReason":null},{"name":"INVALID_COUNTRY_AND_CURRENCY","description":"Cannot specify country and presentment currency code.","isDeprecated":false,"deprecationReason":null},{"name":"INVALID_FOR_COUNTRY","description":"Input Zip is invalid for country provided.","isDeprecated":false,"deprecationReason":null},{"name":"INVALID_FOR_COUNTRY_AND_PROVINCE","description":"Input Zip is invalid for country and province provided.","isDeprecated":false,"deprecationReason":null},{"name":"INVALID_PROVINCE_IN_COUNTRY","description":"Invalid province in country.","isDeprecated":false,"deprecationReason":null},{"name":"INVALID_QUEUE_TOKEN","description":"Queue token is invalid.","isDeprecated":false,"deprecationReason":null},{"name":"INVALID_REGION_IN_COUNTRY","description":"Invalid region in country.","isDeprecated":false,"deprecationReason":null},{"name":"INVALID_STATE_IN_COUNTRY","description":"Invalid state in country.","isDeprecated":false,"deprecationReason":null},{"name":"LESS_THAN","description":"The input value should be less than the maximum value allowed.","isDeprecated":false,"deprecationReason":null},{"name":"LESS_THAN_OR_EQUAL_TO","description":"The input value should be less than or equal to the maximum value allowed.","isDeprecated":false,"deprecationReason":null},{"name":"LINE_ITEM_NOT_FOUND","description":"Line item was not found in checkout.","isDeprecated":false,"deprecationReason":null},{"name":"LOCKED","description":"Checkout is locked.","isDeprecated":false,"deprecationReason":null},{"name":"MISSING_PAYMENT_INPUT","description":"Missing payment input.","isDeprecated":false,"deprecationReason":null},{"name":"NOT_ENOUGH_IN_STOCK","description":"Not enough in stock.","isDeprecated":false,"deprecationReason":null},{"name":"NOT_SUPPORTED","description":"Input value is not supported.","isDeprecated":false,"deprecationReason":null},{"name":"PRESENT","description":"The input value needs to be blank.","isDeprecated":false,"deprecationReason":null},{"name":"SHIPPING_RATE_EXPIRED","description":"Shipping rate expired.","isDeprecated":false,"deprecationReason":null},{"name":"THROTTLED_DURING_CHECKOUT","description":"Throttled during checkout.","isDeprecated":false,"deprecationReason":null},{"name":"TOO_LONG","description":"The input value is too long.","isDeprecated":false,"deprecationReason":null},{"name":"TOTAL_PRICE_MISMATCH","description":"The amount of the payment does not match the value to be paid.","isDeprecated":false,"deprecationReason":null},{"name":"UNABLE_TO_APPLY","description":"Unable to apply discount.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutGiftCardApplyPayload","description":"Return type for `checkoutGiftCardApply` mutation.","fields":[{"name":"checkout","description":"The updated checkout object.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Checkout","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `checkoutUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutGiftCardRemovePayload","description":"Return type for `checkoutGiftCardRemove` mutation.","fields":[{"name":"checkout","description":"The updated checkout object.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Checkout","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `checkoutUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutGiftCardRemoveV2Payload","description":"Return type for `checkoutGiftCardRemoveV2` mutation.","fields":[{"name":"checkout","description":"The updated checkout object.","args":[],"type":{"kind":"OBJECT","name":"Checkout","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `checkoutUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutGiftCardsAppendPayload","description":"Return type for `checkoutGiftCardsAppend` mutation.","fields":[{"name":"checkout","description":"The updated checkout object.","args":[],"type":{"kind":"OBJECT","name":"Checkout","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `checkoutUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutLineItem","description":"A single line item in the checkout, grouped by variant and attributes.","fields":[{"name":"customAttributes","description":"Extra information in the form of an array of Key-Value pairs about the line item.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Attribute","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"discountAllocations","description":"The discounts that have been allocated onto the checkout line item by discount applications.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"DiscountAllocation","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"quantity","description":"The quantity of the line item.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Int","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"title","description":"Title of the line item. Defaults to the product's title.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"unitPrice","description":"Unit price of the line item.","args":[],"type":{"kind":"OBJECT","name":"MoneyV2","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"variant","description":"Product variant of the line item.","args":[],"type":{"kind":"OBJECT","name":"ProductVariant","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"Node","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutLineItemConnection","description":"An auto-generated type for paginating through multiple CheckoutLineItems.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutLineItemEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in CheckoutLineItemEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutLineItem","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutLineItemEdge","description":"An auto-generated type which holds one CheckoutLineItem and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of CheckoutLineItemEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutLineItem","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"CheckoutLineItemInput","description":"Specifies the input fields to create a line item on a checkout.","fields":null,"inputFields":[{"name":"customAttributes","description":"Extra information in the form of an array of Key-Value pairs about the line item.","type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"AttributeInput","ofType":null}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"quantity","description":"The quantity of the line item.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Int","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"variantId","description":"The identifier of the product variant for the line item.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"CheckoutLineItemUpdateInput","description":"Specifies the input fields to update a line item on the checkout.","fields":null,"inputFields":[{"name":"customAttributes","description":"Extra information in the form of an array of Key-Value pairs about the line item.","type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"AttributeInput","ofType":null}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"The identifier of the line item.","type":{"kind":"SCALAR","name":"ID","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"quantity","description":"The quantity of the line item.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"variantId","description":"The variant identifier of the line item.","type":{"kind":"SCALAR","name":"ID","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutLineItemsAddPayload","description":"Return type for `checkoutLineItemsAdd` mutation.","fields":[{"name":"checkout","description":"The updated checkout object.","args":[],"type":{"kind":"OBJECT","name":"Checkout","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `checkoutUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutLineItemsRemovePayload","description":"Return type for `checkoutLineItemsRemove` mutation.","fields":[{"name":"checkout","description":"The updated checkout object.","args":[],"type":{"kind":"OBJECT","name":"Checkout","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `checkoutUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutLineItemsReplacePayload","description":"Return type for `checkoutLineItemsReplace` mutation.","fields":[{"name":"checkout","description":"The updated checkout object.","args":[],"type":{"kind":"OBJECT","name":"Checkout","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutLineItemsUpdatePayload","description":"Return type for `checkoutLineItemsUpdate` mutation.","fields":[{"name":"checkout","description":"The updated checkout object.","args":[],"type":{"kind":"OBJECT","name":"Checkout","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `checkoutUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutShippingAddressUpdatePayload","description":"Return type for `checkoutShippingAddressUpdate` mutation.","fields":[{"name":"checkout","description":"The updated checkout object.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Checkout","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `checkoutUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutShippingAddressUpdateV2Payload","description":"Return type for `checkoutShippingAddressUpdateV2` mutation.","fields":[{"name":"checkout","description":"The updated checkout object.","args":[],"type":{"kind":"OBJECT","name":"Checkout","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `checkoutUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutShippingLineUpdatePayload","description":"Return type for `checkoutShippingLineUpdate` mutation.","fields":[{"name":"checkout","description":"The updated checkout object.","args":[],"type":{"kind":"OBJECT","name":"Checkout","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CheckoutUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `checkoutUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CheckoutUserError","description":"Represents an error that happens during execution of a checkout mutation.","fields":[{"name":"code","description":"The error code.","args":[],"type":{"kind":"ENUM","name":"CheckoutErrorCode","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"field","description":"The path to the input field that caused the error.","args":[],"type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}}},"isDeprecated":false,"deprecationReason":null},{"name":"message","description":"The error message.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"DisplayableError","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"Collection","description":"A collection represents a grouping of products that a shop owner can create to organize them or make their shops easier to browse.","fields":[{"name":"description","description":"Stripped description of the collection, single line with HTML tags removed.","args":[{"name":"truncateAt","description":"Truncates string after the given length.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"descriptionHtml","description":"The description of the collection, complete with HTML formatting.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"HTML","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"handle","description":"A human-friendly unique string for the collection automatically generated from its title.\nLimit of 255 characters.\n","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"image","description":"Image associated with the collection.","args":[],"type":{"kind":"OBJECT","name":"Image","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"metafield","description":"Returns a metafield found by namespace and key.","args":[{"name":"key","description":"Identifier for the metafield (maximum of 30 characters).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"namespace","description":"Container for a set of metafields (maximum of 20 characters).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"Metafield","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"metafields","description":"A paginated list of metafields associated with the resource.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"namespace","description":"Container for a set of metafields (maximum of 20 characters).","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MetafieldConnection","ofType":null}},"isDeprecated":true,"deprecationReason":"The `metafields` field will be removed in the future in favor of using [aliases](https://graphql.org/learn/queries/#aliases) with the `metafield` field.\n"},{"name":"onlineStoreUrl","description":"The URL used for viewing the resource on the shop's Online Store. Returns `null` if the resource is currently not published to the Online Store sales channel.","args":[],"type":{"kind":"SCALAR","name":"URL","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"products","description":"List of products in the collection.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"filters","description":"Returns a subset of products matching all product filters.","type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"ProductFilter","ofType":null}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null},{"name":"sortKey","description":"Sort the underlying list by the given key.","type":{"kind":"ENUM","name":"ProductCollectionSortKeys","ofType":null},"defaultValue":"COLLECTION_DEFAULT","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"ProductConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"seo","description":"The collection's SEO information.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"SEO","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"title","description":"The collection’s name. Limit of 255 characters.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"updatedAt","description":"The date and time when the collection was last modified.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"DateTime","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"HasMetafields","ofType":null},{"kind":"INTERFACE","name":"Node","ofType":null},{"kind":"INTERFACE","name":"OnlineStorePublishable","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CollectionConnection","description":"An auto-generated type for paginating through multiple Collections.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CollectionEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in CollectionEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Collection","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CollectionEdge","description":"An auto-generated type which holds one Collection and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of CollectionEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Collection","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"CollectionSortKeys","description":"The set of valid sort keys for the Collection query.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"ID","description":"Sort by the `id` value.","isDeprecated":false,"deprecationReason":null},{"name":"RELEVANCE","description":"Sort by relevance to the search terms when the `query` parameter is specified on the connection.\nDon't use this sort key when no search query is specified.\n","isDeprecated":false,"deprecationReason":null},{"name":"TITLE","description":"Sort by the `title` value.","isDeprecated":false,"deprecationReason":null},{"name":"UPDATED_AT","description":"Sort by the `updated_at` value.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"Comment","description":"A comment on an article.","fields":[{"name":"author","description":"The comment’s author.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CommentAuthor","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"content","description":"Stripped content of the comment, single line with HTML tags removed.","args":[{"name":"truncateAt","description":"Truncates string after the given length.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"contentHtml","description":"The content of the comment, complete with HTML formatting.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"HTML","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"Node","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CommentAuthor","description":"The author of a comment.","fields":[{"name":"email","description":"The author's email.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"name","description":"The author’s name.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CommentConnection","description":"An auto-generated type for paginating through multiple Comments.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CommentEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in CommentEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Comment","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CommentEdge","description":"An auto-generated type which holds one Comment and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of CommentEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Comment","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"Country","description":"A country.","fields":[{"name":"availableLanguages","description":"The languages available for the country.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Language","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"currency","description":"The currency of the country.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Currency","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"isoCode","description":"The ISO code of the country.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"CountryCode","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"name","description":"The name of the country.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"unitSystem","description":"The unit system used in the country.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"UnitSystem","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"CountryCode","description":"The code designating a country/region, which generally follows ISO 3166-1 alpha-2 guidelines.\nIf a territory doesn't have a country code value in the `CountryCode` enum, it might be considered a subdivision\nof another country. For example, the territories associated with Spain are represented by the country code `ES`,\nand the territories associated with the United States of America are represented by the country code `US`.\n","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"AC","description":"Ascension Island.","isDeprecated":false,"deprecationReason":null},{"name":"AD","description":"Andorra.","isDeprecated":false,"deprecationReason":null},{"name":"AE","description":"United Arab Emirates.","isDeprecated":false,"deprecationReason":null},{"name":"AF","description":"Afghanistan.","isDeprecated":false,"deprecationReason":null},{"name":"AG","description":"Antigua & Barbuda.","isDeprecated":false,"deprecationReason":null},{"name":"AI","description":"Anguilla.","isDeprecated":false,"deprecationReason":null},{"name":"AL","description":"Albania.","isDeprecated":false,"deprecationReason":null},{"name":"AM","description":"Armenia.","isDeprecated":false,"deprecationReason":null},{"name":"AN","description":"Netherlands Antilles.","isDeprecated":false,"deprecationReason":null},{"name":"AO","description":"Angola.","isDeprecated":false,"deprecationReason":null},{"name":"AR","description":"Argentina.","isDeprecated":false,"deprecationReason":null},{"name":"AT","description":"Austria.","isDeprecated":false,"deprecationReason":null},{"name":"AU","description":"Australia.","isDeprecated":false,"deprecationReason":null},{"name":"AW","description":"Aruba.","isDeprecated":false,"deprecationReason":null},{"name":"AX","description":"Åland Islands.","isDeprecated":false,"deprecationReason":null},{"name":"AZ","description":"Azerbaijan.","isDeprecated":false,"deprecationReason":null},{"name":"BA","description":"Bosnia & Herzegovina.","isDeprecated":false,"deprecationReason":null},{"name":"BB","description":"Barbados.","isDeprecated":false,"deprecationReason":null},{"name":"BD","description":"Bangladesh.","isDeprecated":false,"deprecationReason":null},{"name":"BE","description":"Belgium.","isDeprecated":false,"deprecationReason":null},{"name":"BF","description":"Burkina Faso.","isDeprecated":false,"deprecationReason":null},{"name":"BG","description":"Bulgaria.","isDeprecated":false,"deprecationReason":null},{"name":"BH","description":"Bahrain.","isDeprecated":false,"deprecationReason":null},{"name":"BI","description":"Burundi.","isDeprecated":false,"deprecationReason":null},{"name":"BJ","description":"Benin.","isDeprecated":false,"deprecationReason":null},{"name":"BL","description":"St. Barthélemy.","isDeprecated":false,"deprecationReason":null},{"name":"BM","description":"Bermuda.","isDeprecated":false,"deprecationReason":null},{"name":"BN","description":"Brunei.","isDeprecated":false,"deprecationReason":null},{"name":"BO","description":"Bolivia.","isDeprecated":false,"deprecationReason":null},{"name":"BQ","description":"Caribbean Netherlands.","isDeprecated":false,"deprecationReason":null},{"name":"BR","description":"Brazil.","isDeprecated":false,"deprecationReason":null},{"name":"BS","description":"Bahamas.","isDeprecated":false,"deprecationReason":null},{"name":"BT","description":"Bhutan.","isDeprecated":false,"deprecationReason":null},{"name":"BV","description":"Bouvet Island.","isDeprecated":false,"deprecationReason":null},{"name":"BW","description":"Botswana.","isDeprecated":false,"deprecationReason":null},{"name":"BY","description":"Belarus.","isDeprecated":false,"deprecationReason":null},{"name":"BZ","description":"Belize.","isDeprecated":false,"deprecationReason":null},{"name":"CA","description":"Canada.","isDeprecated":false,"deprecationReason":null},{"name":"CC","description":"Cocos (Keeling) Islands.","isDeprecated":false,"deprecationReason":null},{"name":"CD","description":"Congo - Kinshasa.","isDeprecated":false,"deprecationReason":null},{"name":"CF","description":"Central African Republic.","isDeprecated":false,"deprecationReason":null},{"name":"CG","description":"Congo - Brazzaville.","isDeprecated":false,"deprecationReason":null},{"name":"CH","description":"Switzerland.","isDeprecated":false,"deprecationReason":null},{"name":"CI","description":"Côte d’Ivoire.","isDeprecated":false,"deprecationReason":null},{"name":"CK","description":"Cook Islands.","isDeprecated":false,"deprecationReason":null},{"name":"CL","description":"Chile.","isDeprecated":false,"deprecationReason":null},{"name":"CM","description":"Cameroon.","isDeprecated":false,"deprecationReason":null},{"name":"CN","description":"China.","isDeprecated":false,"deprecationReason":null},{"name":"CO","description":"Colombia.","isDeprecated":false,"deprecationReason":null},{"name":"CR","description":"Costa Rica.","isDeprecated":false,"deprecationReason":null},{"name":"CU","description":"Cuba.","isDeprecated":false,"deprecationReason":null},{"name":"CV","description":"Cape Verde.","isDeprecated":false,"deprecationReason":null},{"name":"CW","description":"Curaçao.","isDeprecated":false,"deprecationReason":null},{"name":"CX","description":"Christmas Island.","isDeprecated":false,"deprecationReason":null},{"name":"CY","description":"Cyprus.","isDeprecated":false,"deprecationReason":null},{"name":"CZ","description":"Czechia.","isDeprecated":false,"deprecationReason":null},{"name":"DE","description":"Germany.","isDeprecated":false,"deprecationReason":null},{"name":"DJ","description":"Djibouti.","isDeprecated":false,"deprecationReason":null},{"name":"DK","description":"Denmark.","isDeprecated":false,"deprecationReason":null},{"name":"DM","description":"Dominica.","isDeprecated":false,"deprecationReason":null},{"name":"DO","description":"Dominican Republic.","isDeprecated":false,"deprecationReason":null},{"name":"DZ","description":"Algeria.","isDeprecated":false,"deprecationReason":null},{"name":"EC","description":"Ecuador.","isDeprecated":false,"deprecationReason":null},{"name":"EE","description":"Estonia.","isDeprecated":false,"deprecationReason":null},{"name":"EG","description":"Egypt.","isDeprecated":false,"deprecationReason":null},{"name":"EH","description":"Western Sahara.","isDeprecated":false,"deprecationReason":null},{"name":"ER","description":"Eritrea.","isDeprecated":false,"deprecationReason":null},{"name":"ES","description":"Spain.","isDeprecated":false,"deprecationReason":null},{"name":"ET","description":"Ethiopia.","isDeprecated":false,"deprecationReason":null},{"name":"FI","description":"Finland.","isDeprecated":false,"deprecationReason":null},{"name":"FJ","description":"Fiji.","isDeprecated":false,"deprecationReason":null},{"name":"FK","description":"Falkland Islands.","isDeprecated":false,"deprecationReason":null},{"name":"FO","description":"Faroe Islands.","isDeprecated":false,"deprecationReason":null},{"name":"FR","description":"France.","isDeprecated":false,"deprecationReason":null},{"name":"GA","description":"Gabon.","isDeprecated":false,"deprecationReason":null},{"name":"GB","description":"United Kingdom.","isDeprecated":false,"deprecationReason":null},{"name":"GD","description":"Grenada.","isDeprecated":false,"deprecationReason":null},{"name":"GE","description":"Georgia.","isDeprecated":false,"deprecationReason":null},{"name":"GF","description":"French Guiana.","isDeprecated":false,"deprecationReason":null},{"name":"GG","description":"Guernsey.","isDeprecated":false,"deprecationReason":null},{"name":"GH","description":"Ghana.","isDeprecated":false,"deprecationReason":null},{"name":"GI","description":"Gibraltar.","isDeprecated":false,"deprecationReason":null},{"name":"GL","description":"Greenland.","isDeprecated":false,"deprecationReason":null},{"name":"GM","description":"Gambia.","isDeprecated":false,"deprecationReason":null},{"name":"GN","description":"Guinea.","isDeprecated":false,"deprecationReason":null},{"name":"GP","description":"Guadeloupe.","isDeprecated":false,"deprecationReason":null},{"name":"GQ","description":"Equatorial Guinea.","isDeprecated":false,"deprecationReason":null},{"name":"GR","description":"Greece.","isDeprecated":false,"deprecationReason":null},{"name":"GS","description":"South Georgia & South Sandwich Islands.","isDeprecated":false,"deprecationReason":null},{"name":"GT","description":"Guatemala.","isDeprecated":false,"deprecationReason":null},{"name":"GW","description":"Guinea-Bissau.","isDeprecated":false,"deprecationReason":null},{"name":"GY","description":"Guyana.","isDeprecated":false,"deprecationReason":null},{"name":"HK","description":"Hong Kong SAR.","isDeprecated":false,"deprecationReason":null},{"name":"HM","description":"Heard & McDonald Islands.","isDeprecated":false,"deprecationReason":null},{"name":"HN","description":"Honduras.","isDeprecated":false,"deprecationReason":null},{"name":"HR","description":"Croatia.","isDeprecated":false,"deprecationReason":null},{"name":"HT","description":"Haiti.","isDeprecated":false,"deprecationReason":null},{"name":"HU","description":"Hungary.","isDeprecated":false,"deprecationReason":null},{"name":"ID","description":"Indonesia.","isDeprecated":false,"deprecationReason":null},{"name":"IE","description":"Ireland.","isDeprecated":false,"deprecationReason":null},{"name":"IL","description":"Israel.","isDeprecated":false,"deprecationReason":null},{"name":"IM","description":"Isle of Man.","isDeprecated":false,"deprecationReason":null},{"name":"IN","description":"India.","isDeprecated":false,"deprecationReason":null},{"name":"IO","description":"British Indian Ocean Territory.","isDeprecated":false,"deprecationReason":null},{"name":"IQ","description":"Iraq.","isDeprecated":false,"deprecationReason":null},{"name":"IR","description":"Iran.","isDeprecated":false,"deprecationReason":null},{"name":"IS","description":"Iceland.","isDeprecated":false,"deprecationReason":null},{"name":"IT","description":"Italy.","isDeprecated":false,"deprecationReason":null},{"name":"JE","description":"Jersey.","isDeprecated":false,"deprecationReason":null},{"name":"JM","description":"Jamaica.","isDeprecated":false,"deprecationReason":null},{"name":"JO","description":"Jordan.","isDeprecated":false,"deprecationReason":null},{"name":"JP","description":"Japan.","isDeprecated":false,"deprecationReason":null},{"name":"KE","description":"Kenya.","isDeprecated":false,"deprecationReason":null},{"name":"KG","description":"Kyrgyzstan.","isDeprecated":false,"deprecationReason":null},{"name":"KH","description":"Cambodia.","isDeprecated":false,"deprecationReason":null},{"name":"KI","description":"Kiribati.","isDeprecated":false,"deprecationReason":null},{"name":"KM","description":"Comoros.","isDeprecated":false,"deprecationReason":null},{"name":"KN","description":"St. Kitts & Nevis.","isDeprecated":false,"deprecationReason":null},{"name":"KP","description":"North Korea.","isDeprecated":false,"deprecationReason":null},{"name":"KR","description":"South Korea.","isDeprecated":false,"deprecationReason":null},{"name":"KW","description":"Kuwait.","isDeprecated":false,"deprecationReason":null},{"name":"KY","description":"Cayman Islands.","isDeprecated":false,"deprecationReason":null},{"name":"KZ","description":"Kazakhstan.","isDeprecated":false,"deprecationReason":null},{"name":"LA","description":"Laos.","isDeprecated":false,"deprecationReason":null},{"name":"LB","description":"Lebanon.","isDeprecated":false,"deprecationReason":null},{"name":"LC","description":"St. Lucia.","isDeprecated":false,"deprecationReason":null},{"name":"LI","description":"Liechtenstein.","isDeprecated":false,"deprecationReason":null},{"name":"LK","description":"Sri Lanka.","isDeprecated":false,"deprecationReason":null},{"name":"LR","description":"Liberia.","isDeprecated":false,"deprecationReason":null},{"name":"LS","description":"Lesotho.","isDeprecated":false,"deprecationReason":null},{"name":"LT","description":"Lithuania.","isDeprecated":false,"deprecationReason":null},{"name":"LU","description":"Luxembourg.","isDeprecated":false,"deprecationReason":null},{"name":"LV","description":"Latvia.","isDeprecated":false,"deprecationReason":null},{"name":"LY","description":"Libya.","isDeprecated":false,"deprecationReason":null},{"name":"MA","description":"Morocco.","isDeprecated":false,"deprecationReason":null},{"name":"MC","description":"Monaco.","isDeprecated":false,"deprecationReason":null},{"name":"MD","description":"Moldova.","isDeprecated":false,"deprecationReason":null},{"name":"ME","description":"Montenegro.","isDeprecated":false,"deprecationReason":null},{"name":"MF","description":"St. Martin.","isDeprecated":false,"deprecationReason":null},{"name":"MG","description":"Madagascar.","isDeprecated":false,"deprecationReason":null},{"name":"MK","description":"North Macedonia.","isDeprecated":false,"deprecationReason":null},{"name":"ML","description":"Mali.","isDeprecated":false,"deprecationReason":null},{"name":"MM","description":"Myanmar (Burma).","isDeprecated":false,"deprecationReason":null},{"name":"MN","description":"Mongolia.","isDeprecated":false,"deprecationReason":null},{"name":"MO","description":"Macao SAR.","isDeprecated":false,"deprecationReason":null},{"name":"MQ","description":"Martinique.","isDeprecated":false,"deprecationReason":null},{"name":"MR","description":"Mauritania.","isDeprecated":false,"deprecationReason":null},{"name":"MS","description":"Montserrat.","isDeprecated":false,"deprecationReason":null},{"name":"MT","description":"Malta.","isDeprecated":false,"deprecationReason":null},{"name":"MU","description":"Mauritius.","isDeprecated":false,"deprecationReason":null},{"name":"MV","description":"Maldives.","isDeprecated":false,"deprecationReason":null},{"name":"MW","description":"Malawi.","isDeprecated":false,"deprecationReason":null},{"name":"MX","description":"Mexico.","isDeprecated":false,"deprecationReason":null},{"name":"MY","description":"Malaysia.","isDeprecated":false,"deprecationReason":null},{"name":"MZ","description":"Mozambique.","isDeprecated":false,"deprecationReason":null},{"name":"NA","description":"Namibia.","isDeprecated":false,"deprecationReason":null},{"name":"NC","description":"New Caledonia.","isDeprecated":false,"deprecationReason":null},{"name":"NE","description":"Niger.","isDeprecated":false,"deprecationReason":null},{"name":"NF","description":"Norfolk Island.","isDeprecated":false,"deprecationReason":null},{"name":"NG","description":"Nigeria.","isDeprecated":false,"deprecationReason":null},{"name":"NI","description":"Nicaragua.","isDeprecated":false,"deprecationReason":null},{"name":"NL","description":"Netherlands.","isDeprecated":false,"deprecationReason":null},{"name":"NO","description":"Norway.","isDeprecated":false,"deprecationReason":null},{"name":"NP","description":"Nepal.","isDeprecated":false,"deprecationReason":null},{"name":"NR","description":"Nauru.","isDeprecated":false,"deprecationReason":null},{"name":"NU","description":"Niue.","isDeprecated":false,"deprecationReason":null},{"name":"NZ","description":"New Zealand.","isDeprecated":false,"deprecationReason":null},{"name":"OM","description":"Oman.","isDeprecated":false,"deprecationReason":null},{"name":"PA","description":"Panama.","isDeprecated":false,"deprecationReason":null},{"name":"PE","description":"Peru.","isDeprecated":false,"deprecationReason":null},{"name":"PF","description":"French Polynesia.","isDeprecated":false,"deprecationReason":null},{"name":"PG","description":"Papua New Guinea.","isDeprecated":false,"deprecationReason":null},{"name":"PH","description":"Philippines.","isDeprecated":false,"deprecationReason":null},{"name":"PK","description":"Pakistan.","isDeprecated":false,"deprecationReason":null},{"name":"PL","description":"Poland.","isDeprecated":false,"deprecationReason":null},{"name":"PM","description":"St. Pierre & Miquelon.","isDeprecated":false,"deprecationReason":null},{"name":"PN","description":"Pitcairn Islands.","isDeprecated":false,"deprecationReason":null},{"name":"PS","description":"Palestinian Territories.","isDeprecated":false,"deprecationReason":null},{"name":"PT","description":"Portugal.","isDeprecated":false,"deprecationReason":null},{"name":"PY","description":"Paraguay.","isDeprecated":false,"deprecationReason":null},{"name":"QA","description":"Qatar.","isDeprecated":false,"deprecationReason":null},{"name":"RE","description":"Réunion.","isDeprecated":false,"deprecationReason":null},{"name":"RO","description":"Romania.","isDeprecated":false,"deprecationReason":null},{"name":"RS","description":"Serbia.","isDeprecated":false,"deprecationReason":null},{"name":"RU","description":"Russia.","isDeprecated":false,"deprecationReason":null},{"name":"RW","description":"Rwanda.","isDeprecated":false,"deprecationReason":null},{"name":"SA","description":"Saudi Arabia.","isDeprecated":false,"deprecationReason":null},{"name":"SB","description":"Solomon Islands.","isDeprecated":false,"deprecationReason":null},{"name":"SC","description":"Seychelles.","isDeprecated":false,"deprecationReason":null},{"name":"SD","description":"Sudan.","isDeprecated":false,"deprecationReason":null},{"name":"SE","description":"Sweden.","isDeprecated":false,"deprecationReason":null},{"name":"SG","description":"Singapore.","isDeprecated":false,"deprecationReason":null},{"name":"SH","description":"St. Helena.","isDeprecated":false,"deprecationReason":null},{"name":"SI","description":"Slovenia.","isDeprecated":false,"deprecationReason":null},{"name":"SJ","description":"Svalbard & Jan Mayen.","isDeprecated":false,"deprecationReason":null},{"name":"SK","description":"Slovakia.","isDeprecated":false,"deprecationReason":null},{"name":"SL","description":"Sierra Leone.","isDeprecated":false,"deprecationReason":null},{"name":"SM","description":"San Marino.","isDeprecated":false,"deprecationReason":null},{"name":"SN","description":"Senegal.","isDeprecated":false,"deprecationReason":null},{"name":"SO","description":"Somalia.","isDeprecated":false,"deprecationReason":null},{"name":"SR","description":"Suriname.","isDeprecated":false,"deprecationReason":null},{"name":"SS","description":"South Sudan.","isDeprecated":false,"deprecationReason":null},{"name":"ST","description":"São Tomé & Príncipe.","isDeprecated":false,"deprecationReason":null},{"name":"SV","description":"El Salvador.","isDeprecated":false,"deprecationReason":null},{"name":"SX","description":"Sint Maarten.","isDeprecated":false,"deprecationReason":null},{"name":"SY","description":"Syria.","isDeprecated":false,"deprecationReason":null},{"name":"SZ","description":"Eswatini.","isDeprecated":false,"deprecationReason":null},{"name":"TA","description":"Tristan da Cunha.","isDeprecated":false,"deprecationReason":null},{"name":"TC","description":"Turks & Caicos Islands.","isDeprecated":false,"deprecationReason":null},{"name":"TD","description":"Chad.","isDeprecated":false,"deprecationReason":null},{"name":"TF","description":"French Southern Territories.","isDeprecated":false,"deprecationReason":null},{"name":"TG","description":"Togo.","isDeprecated":false,"deprecationReason":null},{"name":"TH","description":"Thailand.","isDeprecated":false,"deprecationReason":null},{"name":"TJ","description":"Tajikistan.","isDeprecated":false,"deprecationReason":null},{"name":"TK","description":"Tokelau.","isDeprecated":false,"deprecationReason":null},{"name":"TL","description":"Timor-Leste.","isDeprecated":false,"deprecationReason":null},{"name":"TM","description":"Turkmenistan.","isDeprecated":false,"deprecationReason":null},{"name":"TN","description":"Tunisia.","isDeprecated":false,"deprecationReason":null},{"name":"TO","description":"Tonga.","isDeprecated":false,"deprecationReason":null},{"name":"TR","description":"Turkey.","isDeprecated":false,"deprecationReason":null},{"name":"TT","description":"Trinidad & Tobago.","isDeprecated":false,"deprecationReason":null},{"name":"TV","description":"Tuvalu.","isDeprecated":false,"deprecationReason":null},{"name":"TW","description":"Taiwan.","isDeprecated":false,"deprecationReason":null},{"name":"TZ","description":"Tanzania.","isDeprecated":false,"deprecationReason":null},{"name":"UA","description":"Ukraine.","isDeprecated":false,"deprecationReason":null},{"name":"UG","description":"Uganda.","isDeprecated":false,"deprecationReason":null},{"name":"UM","description":"U.S. Outlying Islands.","isDeprecated":false,"deprecationReason":null},{"name":"US","description":"United States.","isDeprecated":false,"deprecationReason":null},{"name":"UY","description":"Uruguay.","isDeprecated":false,"deprecationReason":null},{"name":"UZ","description":"Uzbekistan.","isDeprecated":false,"deprecationReason":null},{"name":"VA","description":"Vatican City.","isDeprecated":false,"deprecationReason":null},{"name":"VC","description":"St. Vincent & Grenadines.","isDeprecated":false,"deprecationReason":null},{"name":"VE","description":"Venezuela.","isDeprecated":false,"deprecationReason":null},{"name":"VG","description":"British Virgin Islands.","isDeprecated":false,"deprecationReason":null},{"name":"VN","description":"Vietnam.","isDeprecated":false,"deprecationReason":null},{"name":"VU","description":"Vanuatu.","isDeprecated":false,"deprecationReason":null},{"name":"WF","description":"Wallis & Futuna.","isDeprecated":false,"deprecationReason":null},{"name":"WS","description":"Samoa.","isDeprecated":false,"deprecationReason":null},{"name":"XK","description":"Kosovo.","isDeprecated":false,"deprecationReason":null},{"name":"YE","description":"Yemen.","isDeprecated":false,"deprecationReason":null},{"name":"YT","description":"Mayotte.","isDeprecated":false,"deprecationReason":null},{"name":"ZA","description":"South Africa.","isDeprecated":false,"deprecationReason":null},{"name":"ZM","description":"Zambia.","isDeprecated":false,"deprecationReason":null},{"name":"ZW","description":"Zimbabwe.","isDeprecated":false,"deprecationReason":null},{"name":"ZZ","description":"Unknown Region.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"CreditCard","description":"Credit card information used for a payment.","fields":[{"name":"brand","description":"The brand of the credit card.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"expiryMonth","description":"The expiry month of the credit card.","args":[],"type":{"kind":"SCALAR","name":"Int","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"expiryYear","description":"The expiry year of the credit card.","args":[],"type":{"kind":"SCALAR","name":"Int","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"firstDigits","description":"The credit card's BIN number.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"firstName","description":"The first name of the card holder.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"lastDigits","description":"The last 4 digits of the credit card.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"lastName","description":"The last name of the card holder.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"maskedNumber","description":"The masked credit card number with only the last 4 digits displayed.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"CreditCardPaymentInput","description":"Specifies the fields required to complete a checkout with\na Shopify vaulted credit card payment.\n","fields":null,"inputFields":[{"name":"amount","description":"The amount of the payment.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Money","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"billingAddress","description":"The billing address for the payment.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"MailingAddressInput","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"idempotencyKey","description":"A unique client generated key used to avoid duplicate charges. When a duplicate payment is found, the original is returned instead of creating a new one. For more information, refer to [Idempotent requests](https://shopify.dev/api/usage/idempotent-requests).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"test","description":"Executes the payment in test mode if possible. Defaults to `false`.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null},{"name":"vaultId","description":"The ID returned by Shopify's Card Vault.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"CreditCardPaymentInputV2","description":"Specifies the fields required to complete a checkout with\na Shopify vaulted credit card payment.\n","fields":null,"inputFields":[{"name":"billingAddress","description":"The billing address for the payment.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"MailingAddressInput","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"idempotencyKey","description":"A unique client generated key used to avoid duplicate charges. When a duplicate payment is found, the original is returned instead of creating a new one. For more information, refer to [Idempotent requests](https://shopify.dev/api/usage/idempotent-requests).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"paymentAmount","description":"The amount and currency of the payment.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"MoneyInput","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"test","description":"Executes the payment in test mode if possible. Defaults to `false`.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null},{"name":"vaultId","description":"The ID returned by Shopify's Card Vault.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"CropRegion","description":"The part of the image that should remain after cropping.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"BOTTOM","description":"Keep the bottom of the image.","isDeprecated":false,"deprecationReason":null},{"name":"CENTER","description":"Keep the center of the image.","isDeprecated":false,"deprecationReason":null},{"name":"LEFT","description":"Keep the left of the image.","isDeprecated":false,"deprecationReason":null},{"name":"RIGHT","description":"Keep the right of the image.","isDeprecated":false,"deprecationReason":null},{"name":"TOP","description":"Keep the top of the image.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"Currency","description":"A currency.","fields":[{"name":"isoCode","description":"The ISO code of the currency.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"CurrencyCode","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"name","description":"The name of the currency.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"symbol","description":"The symbol of the currency.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"CurrencyCode","description":"The three-letter currency codes that represent the world currencies used in stores. These include standard ISO 4217 codes, legacy codes,\nand non-standard codes.\n","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"AED","description":"United Arab Emirates Dirham (AED).","isDeprecated":false,"deprecationReason":null},{"name":"AFN","description":"Afghan Afghani (AFN).","isDeprecated":false,"deprecationReason":null},{"name":"ALL","description":"Albanian Lek (ALL).","isDeprecated":false,"deprecationReason":null},{"name":"AMD","description":"Armenian Dram (AMD).","isDeprecated":false,"deprecationReason":null},{"name":"ANG","description":"Netherlands Antillean Guilder.","isDeprecated":false,"deprecationReason":null},{"name":"AOA","description":"Angolan Kwanza (AOA).","isDeprecated":false,"deprecationReason":null},{"name":"ARS","description":"Argentine Pesos (ARS).","isDeprecated":false,"deprecationReason":null},{"name":"AUD","description":"Australian Dollars (AUD).","isDeprecated":false,"deprecationReason":null},{"name":"AWG","description":"Aruban Florin (AWG).","isDeprecated":false,"deprecationReason":null},{"name":"AZN","description":"Azerbaijani Manat (AZN).","isDeprecated":false,"deprecationReason":null},{"name":"BAM","description":"Bosnia and Herzegovina Convertible Mark (BAM).","isDeprecated":false,"deprecationReason":null},{"name":"BBD","description":"Barbadian Dollar (BBD).","isDeprecated":false,"deprecationReason":null},{"name":"BDT","description":"Bangladesh Taka (BDT).","isDeprecated":false,"deprecationReason":null},{"name":"BGN","description":"Bulgarian Lev (BGN).","isDeprecated":false,"deprecationReason":null},{"name":"BHD","description":"Bahraini Dinar (BHD).","isDeprecated":false,"deprecationReason":null},{"name":"BIF","description":"Burundian Franc (BIF).","isDeprecated":false,"deprecationReason":null},{"name":"BMD","description":"Bermudian Dollar (BMD).","isDeprecated":false,"deprecationReason":null},{"name":"BND","description":"Brunei Dollar (BND).","isDeprecated":false,"deprecationReason":null},{"name":"BOB","description":"Bolivian Boliviano (BOB).","isDeprecated":false,"deprecationReason":null},{"name":"BRL","description":"Brazilian Real (BRL).","isDeprecated":false,"deprecationReason":null},{"name":"BSD","description":"Bahamian Dollar (BSD).","isDeprecated":false,"deprecationReason":null},{"name":"BTN","description":"Bhutanese Ngultrum (BTN).","isDeprecated":false,"deprecationReason":null},{"name":"BWP","description":"Botswana Pula (BWP).","isDeprecated":false,"deprecationReason":null},{"name":"BYN","description":"Belarusian Ruble (BYN).","isDeprecated":false,"deprecationReason":null},{"name":"BYR","description":"Belarusian Ruble (BYR).","isDeprecated":false,"deprecationReason":null},{"name":"BZD","description":"Belize Dollar (BZD).","isDeprecated":false,"deprecationReason":null},{"name":"CAD","description":"Canadian Dollars (CAD).","isDeprecated":false,"deprecationReason":null},{"name":"CDF","description":"Congolese franc (CDF).","isDeprecated":false,"deprecationReason":null},{"name":"CHF","description":"Swiss Francs (CHF).","isDeprecated":false,"deprecationReason":null},{"name":"CLP","description":"Chilean Peso (CLP).","isDeprecated":false,"deprecationReason":null},{"name":"CNY","description":"Chinese Yuan Renminbi (CNY).","isDeprecated":false,"deprecationReason":null},{"name":"COP","description":"Colombian Peso (COP).","isDeprecated":false,"deprecationReason":null},{"name":"CRC","description":"Costa Rican Colones (CRC).","isDeprecated":false,"deprecationReason":null},{"name":"CVE","description":"Cape Verdean escudo (CVE).","isDeprecated":false,"deprecationReason":null},{"name":"CZK","description":"Czech Koruny (CZK).","isDeprecated":false,"deprecationReason":null},{"name":"DJF","description":"Djiboutian Franc (DJF).","isDeprecated":false,"deprecationReason":null},{"name":"DKK","description":"Danish Kroner (DKK).","isDeprecated":false,"deprecationReason":null},{"name":"DOP","description":"Dominican Peso (DOP).","isDeprecated":false,"deprecationReason":null},{"name":"DZD","description":"Algerian Dinar (DZD).","isDeprecated":false,"deprecationReason":null},{"name":"EGP","description":"Egyptian Pound (EGP).","isDeprecated":false,"deprecationReason":null},{"name":"ERN","description":"Eritrean Nakfa (ERN).","isDeprecated":false,"deprecationReason":null},{"name":"ETB","description":"Ethiopian Birr (ETB).","isDeprecated":false,"deprecationReason":null},{"name":"EUR","description":"Euro (EUR).","isDeprecated":false,"deprecationReason":null},{"name":"FJD","description":"Fijian Dollars (FJD).","isDeprecated":false,"deprecationReason":null},{"name":"FKP","description":"Falkland Islands Pounds (FKP).","isDeprecated":false,"deprecationReason":null},{"name":"GBP","description":"United Kingdom Pounds (GBP).","isDeprecated":false,"deprecationReason":null},{"name":"GEL","description":"Georgian Lari (GEL).","isDeprecated":false,"deprecationReason":null},{"name":"GHS","description":"Ghanaian Cedi (GHS).","isDeprecated":false,"deprecationReason":null},{"name":"GIP","description":"Gibraltar Pounds (GIP).","isDeprecated":false,"deprecationReason":null},{"name":"GMD","description":"Gambian Dalasi (GMD).","isDeprecated":false,"deprecationReason":null},{"name":"GNF","description":"Guinean Franc (GNF).","isDeprecated":false,"deprecationReason":null},{"name":"GTQ","description":"Guatemalan Quetzal (GTQ).","isDeprecated":false,"deprecationReason":null},{"name":"GYD","description":"Guyanese Dollar (GYD).","isDeprecated":false,"deprecationReason":null},{"name":"HKD","description":"Hong Kong Dollars (HKD).","isDeprecated":false,"deprecationReason":null},{"name":"HNL","description":"Honduran Lempira (HNL).","isDeprecated":false,"deprecationReason":null},{"name":"HRK","description":"Croatian Kuna (HRK).","isDeprecated":false,"deprecationReason":null},{"name":"HTG","description":"Haitian Gourde (HTG).","isDeprecated":false,"deprecationReason":null},{"name":"HUF","description":"Hungarian Forint (HUF).","isDeprecated":false,"deprecationReason":null},{"name":"IDR","description":"Indonesian Rupiah (IDR).","isDeprecated":false,"deprecationReason":null},{"name":"ILS","description":"Israeli New Shekel (NIS).","isDeprecated":false,"deprecationReason":null},{"name":"INR","description":"Indian Rupees (INR).","isDeprecated":false,"deprecationReason":null},{"name":"IQD","description":"Iraqi Dinar (IQD).","isDeprecated":false,"deprecationReason":null},{"name":"IRR","description":"Iranian Rial (IRR).","isDeprecated":false,"deprecationReason":null},{"name":"ISK","description":"Icelandic Kronur (ISK).","isDeprecated":false,"deprecationReason":null},{"name":"JEP","description":"Jersey Pound.","isDeprecated":false,"deprecationReason":null},{"name":"JMD","description":"Jamaican Dollars (JMD).","isDeprecated":false,"deprecationReason":null},{"name":"JOD","description":"Jordanian Dinar (JOD).","isDeprecated":false,"deprecationReason":null},{"name":"JPY","description":"Japanese Yen (JPY).","isDeprecated":false,"deprecationReason":null},{"name":"KES","description":"Kenyan Shilling (KES).","isDeprecated":false,"deprecationReason":null},{"name":"KGS","description":"Kyrgyzstani Som (KGS).","isDeprecated":false,"deprecationReason":null},{"name":"KHR","description":"Cambodian Riel.","isDeprecated":false,"deprecationReason":null},{"name":"KID","description":"Kiribati Dollar (KID).","isDeprecated":false,"deprecationReason":null},{"name":"KMF","description":"Comorian Franc (KMF).","isDeprecated":false,"deprecationReason":null},{"name":"KRW","description":"South Korean Won (KRW).","isDeprecated":false,"deprecationReason":null},{"name":"KWD","description":"Kuwaiti Dinar (KWD).","isDeprecated":false,"deprecationReason":null},{"name":"KYD","description":"Cayman Dollars (KYD).","isDeprecated":false,"deprecationReason":null},{"name":"KZT","description":"Kazakhstani Tenge (KZT).","isDeprecated":false,"deprecationReason":null},{"name":"LAK","description":"Laotian Kip (LAK).","isDeprecated":false,"deprecationReason":null},{"name":"LBP","description":"Lebanese Pounds (LBP).","isDeprecated":false,"deprecationReason":null},{"name":"LKR","description":"Sri Lankan Rupees (LKR).","isDeprecated":false,"deprecationReason":null},{"name":"LRD","description":"Liberian Dollar (LRD).","isDeprecated":false,"deprecationReason":null},{"name":"LSL","description":"Lesotho Loti (LSL).","isDeprecated":false,"deprecationReason":null},{"name":"LTL","description":"Lithuanian Litai (LTL).","isDeprecated":false,"deprecationReason":null},{"name":"LVL","description":"Latvian Lati (LVL).","isDeprecated":false,"deprecationReason":null},{"name":"LYD","description":"Libyan Dinar (LYD).","isDeprecated":false,"deprecationReason":null},{"name":"MAD","description":"Moroccan Dirham.","isDeprecated":false,"deprecationReason":null},{"name":"MDL","description":"Moldovan Leu (MDL).","isDeprecated":false,"deprecationReason":null},{"name":"MGA","description":"Malagasy Ariary (MGA).","isDeprecated":false,"deprecationReason":null},{"name":"MKD","description":"Macedonia Denar (MKD).","isDeprecated":false,"deprecationReason":null},{"name":"MMK","description":"Burmese Kyat (MMK).","isDeprecated":false,"deprecationReason":null},{"name":"MNT","description":"Mongolian Tugrik.","isDeprecated":false,"deprecationReason":null},{"name":"MOP","description":"Macanese Pataca (MOP).","isDeprecated":false,"deprecationReason":null},{"name":"MRU","description":"Mauritanian Ouguiya (MRU).","isDeprecated":false,"deprecationReason":null},{"name":"MUR","description":"Mauritian Rupee (MUR).","isDeprecated":false,"deprecationReason":null},{"name":"MVR","description":"Maldivian Rufiyaa (MVR).","isDeprecated":false,"deprecationReason":null},{"name":"MWK","description":"Malawian Kwacha (MWK).","isDeprecated":false,"deprecationReason":null},{"name":"MXN","description":"Mexican Pesos (MXN).","isDeprecated":false,"deprecationReason":null},{"name":"MYR","description":"Malaysian Ringgits (MYR).","isDeprecated":false,"deprecationReason":null},{"name":"MZN","description":"Mozambican Metical.","isDeprecated":false,"deprecationReason":null},{"name":"NAD","description":"Namibian Dollar.","isDeprecated":false,"deprecationReason":null},{"name":"NGN","description":"Nigerian Naira (NGN).","isDeprecated":false,"deprecationReason":null},{"name":"NIO","description":"Nicaraguan Córdoba (NIO).","isDeprecated":false,"deprecationReason":null},{"name":"NOK","description":"Norwegian Kroner (NOK).","isDeprecated":false,"deprecationReason":null},{"name":"NPR","description":"Nepalese Rupee (NPR).","isDeprecated":false,"deprecationReason":null},{"name":"NZD","description":"New Zealand Dollars (NZD).","isDeprecated":false,"deprecationReason":null},{"name":"OMR","description":"Omani Rial (OMR).","isDeprecated":false,"deprecationReason":null},{"name":"PAB","description":"Panamian Balboa (PAB).","isDeprecated":false,"deprecationReason":null},{"name":"PEN","description":"Peruvian Nuevo Sol (PEN).","isDeprecated":false,"deprecationReason":null},{"name":"PGK","description":"Papua New Guinean Kina (PGK).","isDeprecated":false,"deprecationReason":null},{"name":"PHP","description":"Philippine Peso (PHP).","isDeprecated":false,"deprecationReason":null},{"name":"PKR","description":"Pakistani Rupee (PKR).","isDeprecated":false,"deprecationReason":null},{"name":"PLN","description":"Polish Zlotych (PLN).","isDeprecated":false,"deprecationReason":null},{"name":"PYG","description":"Paraguayan Guarani (PYG).","isDeprecated":false,"deprecationReason":null},{"name":"QAR","description":"Qatari Rial (QAR).","isDeprecated":false,"deprecationReason":null},{"name":"RON","description":"Romanian Lei (RON).","isDeprecated":false,"deprecationReason":null},{"name":"RSD","description":"Serbian dinar (RSD).","isDeprecated":false,"deprecationReason":null},{"name":"RUB","description":"Russian Rubles (RUB).","isDeprecated":false,"deprecationReason":null},{"name":"RWF","description":"Rwandan Franc (RWF).","isDeprecated":false,"deprecationReason":null},{"name":"SAR","description":"Saudi Riyal (SAR).","isDeprecated":false,"deprecationReason":null},{"name":"SBD","description":"Solomon Islands Dollar (SBD).","isDeprecated":false,"deprecationReason":null},{"name":"SCR","description":"Seychellois Rupee (SCR).","isDeprecated":false,"deprecationReason":null},{"name":"SDG","description":"Sudanese Pound (SDG).","isDeprecated":false,"deprecationReason":null},{"name":"SEK","description":"Swedish Kronor (SEK).","isDeprecated":false,"deprecationReason":null},{"name":"SGD","description":"Singapore Dollars (SGD).","isDeprecated":false,"deprecationReason":null},{"name":"SHP","description":"Saint Helena Pounds (SHP).","isDeprecated":false,"deprecationReason":null},{"name":"SLL","description":"Sierra Leonean Leone (SLL).","isDeprecated":false,"deprecationReason":null},{"name":"SOS","description":"Somali Shilling (SOS).","isDeprecated":false,"deprecationReason":null},{"name":"SRD","description":"Surinamese Dollar (SRD).","isDeprecated":false,"deprecationReason":null},{"name":"SSP","description":"South Sudanese Pound (SSP).","isDeprecated":false,"deprecationReason":null},{"name":"STD","description":"Sao Tome And Principe Dobra (STD).","isDeprecated":false,"deprecationReason":null},{"name":"STN","description":"Sao Tome And Principe Dobra (STN).","isDeprecated":false,"deprecationReason":null},{"name":"SYP","description":"Syrian Pound (SYP).","isDeprecated":false,"deprecationReason":null},{"name":"SZL","description":"Swazi Lilangeni (SZL).","isDeprecated":false,"deprecationReason":null},{"name":"THB","description":"Thai baht (THB).","isDeprecated":false,"deprecationReason":null},{"name":"TJS","description":"Tajikistani Somoni (TJS).","isDeprecated":false,"deprecationReason":null},{"name":"TMT","description":"Turkmenistani Manat (TMT).","isDeprecated":false,"deprecationReason":null},{"name":"TND","description":"Tunisian Dinar (TND).","isDeprecated":false,"deprecationReason":null},{"name":"TOP","description":"Tongan Pa'anga (TOP).","isDeprecated":false,"deprecationReason":null},{"name":"TRY","description":"Turkish Lira (TRY).","isDeprecated":false,"deprecationReason":null},{"name":"TTD","description":"Trinidad and Tobago Dollars (TTD).","isDeprecated":false,"deprecationReason":null},{"name":"TWD","description":"Taiwan Dollars (TWD).","isDeprecated":false,"deprecationReason":null},{"name":"TZS","description":"Tanzanian Shilling (TZS).","isDeprecated":false,"deprecationReason":null},{"name":"UAH","description":"Ukrainian Hryvnia (UAH).","isDeprecated":false,"deprecationReason":null},{"name":"UGX","description":"Ugandan Shilling (UGX).","isDeprecated":false,"deprecationReason":null},{"name":"USD","description":"United States Dollars (USD).","isDeprecated":false,"deprecationReason":null},{"name":"UYU","description":"Uruguayan Pesos (UYU).","isDeprecated":false,"deprecationReason":null},{"name":"UZS","description":"Uzbekistan som (UZS).","isDeprecated":false,"deprecationReason":null},{"name":"VED","description":"Venezuelan Bolivares (VED).","isDeprecated":false,"deprecationReason":null},{"name":"VEF","description":"Venezuelan Bolivares (VEF).","isDeprecated":false,"deprecationReason":null},{"name":"VES","description":"Venezuelan Bolivares (VES).","isDeprecated":false,"deprecationReason":null},{"name":"VND","description":"Vietnamese đồng (VND).","isDeprecated":false,"deprecationReason":null},{"name":"VUV","description":"Vanuatu Vatu (VUV).","isDeprecated":false,"deprecationReason":null},{"name":"WST","description":"Samoan Tala (WST).","isDeprecated":false,"deprecationReason":null},{"name":"XAF","description":"Central African CFA Franc (XAF).","isDeprecated":false,"deprecationReason":null},{"name":"XCD","description":"East Caribbean Dollar (XCD).","isDeprecated":false,"deprecationReason":null},{"name":"XOF","description":"West African CFA franc (XOF).","isDeprecated":false,"deprecationReason":null},{"name":"XPF","description":"CFP Franc (XPF).","isDeprecated":false,"deprecationReason":null},{"name":"XXX","description":"Unrecognized currency.","isDeprecated":false,"deprecationReason":null},{"name":"YER","description":"Yemeni Rial (YER).","isDeprecated":false,"deprecationReason":null},{"name":"ZAR","description":"South African Rand (ZAR).","isDeprecated":false,"deprecationReason":null},{"name":"ZMW","description":"Zambian Kwacha (ZMW).","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"Customer","description":"A customer represents a customer account with the shop. Customer accounts store contact information for the customer, saving logged-in customers the trouble of having to provide it at every checkout.","fields":[{"name":"acceptsMarketing","description":"Indicates whether the customer has consented to be sent marketing material via email.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"addresses","description":"A list of addresses for the customer.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MailingAddressConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"createdAt","description":"The date and time when the customer was created.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"DateTime","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"defaultAddress","description":"The customer’s default address.","args":[],"type":{"kind":"OBJECT","name":"MailingAddress","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"displayName","description":"The customer’s name, email or phone number.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"email","description":"The customer’s email address.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"firstName","description":"The customer’s first name.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A unique identifier for the customer.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"lastIncompleteCheckout","description":"The customer's most recently updated, incomplete checkout.","args":[],"type":{"kind":"OBJECT","name":"Checkout","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"lastName","description":"The customer’s last name.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"metafield","description":"Returns a metafield found by namespace and key.","args":[{"name":"key","description":"Identifier for the metafield (maximum of 30 characters).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"namespace","description":"Container for a set of metafields (maximum of 20 characters).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"Metafield","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"metafields","description":"A paginated list of metafields associated with the resource.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"namespace","description":"Container for a set of metafields (maximum of 20 characters).","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MetafieldConnection","ofType":null}},"isDeprecated":true,"deprecationReason":"The `metafields` field will be removed in the future in favor of using [aliases](https://graphql.org/learn/queries/#aliases) with the `metafield` field.\n"},{"name":"orders","description":"The orders associated with the customer.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"query","description":"Supported filter parameters:\n - `processed_at`\n\nSee the detailed [search syntax](https://shopify.dev/api/usage/search-syntax)\nfor more information about using filters.\n","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null},{"name":"sortKey","description":"Sort the underlying list by the given key.","type":{"kind":"ENUM","name":"OrderSortKeys","ofType":null},"defaultValue":"ID","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"OrderConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"phone","description":"The customer’s phone number.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"tags","description":"A comma separated list of tags that have been added to the customer.\nAdditional access scope required: unauthenticated_read_customer_tags.\n","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"updatedAt","description":"The date and time when the customer information was updated.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"DateTime","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"HasMetafields","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CustomerAccessToken","description":"A CustomerAccessToken represents the unique token required to make modifications to the customer object.","fields":[{"name":"accessToken","description":"The customer’s access token.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"expiresAt","description":"The date and time when the customer access token expires.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"DateTime","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"CustomerAccessTokenCreateInput","description":"Specifies the input fields required to create a customer access token.","fields":null,"inputFields":[{"name":"email","description":"The email associated to the customer.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"password","description":"The login password to be used by the customer.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CustomerAccessTokenCreatePayload","description":"Return type for `customerAccessTokenCreate` mutation.","fields":[{"name":"customerAccessToken","description":"The newly created customer access token object.","args":[],"type":{"kind":"OBJECT","name":"CustomerAccessToken","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CustomerUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `customerUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CustomerAccessTokenCreateWithMultipassPayload","description":"Return type for `customerAccessTokenCreateWithMultipass` mutation.","fields":[{"name":"customerAccessToken","description":"An access token object associated with the customer.","args":[],"type":{"kind":"OBJECT","name":"CustomerAccessToken","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CustomerUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CustomerAccessTokenDeletePayload","description":"Return type for `customerAccessTokenDelete` mutation.","fields":[{"name":"deletedAccessToken","description":"The destroyed access token.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"deletedCustomerAccessTokenId","description":"ID of the destroyed customer access token.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CustomerAccessTokenRenewPayload","description":"Return type for `customerAccessTokenRenew` mutation.","fields":[{"name":"customerAccessToken","description":"The renewed customer access token object.","args":[],"type":{"kind":"OBJECT","name":"CustomerAccessToken","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CustomerActivateByUrlPayload","description":"Return type for `customerActivateByUrl` mutation.","fields":[{"name":"customer","description":"The customer that was activated.","args":[],"type":{"kind":"OBJECT","name":"Customer","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerAccessToken","description":"A new customer access token for the customer.","args":[],"type":{"kind":"OBJECT","name":"CustomerAccessToken","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CustomerUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"CustomerActivateInput","description":"Specifies the input fields required to activate a customer.","fields":null,"inputFields":[{"name":"activationToken","description":"The activation token required to activate the customer.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"password","description":"New password that will be set during activation.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CustomerActivatePayload","description":"Return type for `customerActivate` mutation.","fields":[{"name":"customer","description":"The customer object.","args":[],"type":{"kind":"OBJECT","name":"Customer","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerAccessToken","description":"A newly created customer access token object for the customer.","args":[],"type":{"kind":"OBJECT","name":"CustomerAccessToken","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CustomerUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `customerUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CustomerAddressCreatePayload","description":"Return type for `customerAddressCreate` mutation.","fields":[{"name":"customerAddress","description":"The new customer address object.","args":[],"type":{"kind":"OBJECT","name":"MailingAddress","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CustomerUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `customerUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CustomerAddressDeletePayload","description":"Return type for `customerAddressDelete` mutation.","fields":[{"name":"customerUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CustomerUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"deletedCustomerAddressId","description":"ID of the deleted customer address.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `customerUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CustomerAddressUpdatePayload","description":"Return type for `customerAddressUpdate` mutation.","fields":[{"name":"customerAddress","description":"The customer’s updated mailing address.","args":[],"type":{"kind":"OBJECT","name":"MailingAddress","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CustomerUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `customerUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"CustomerCreateInput","description":"The fields required to create a new customer.","fields":null,"inputFields":[{"name":"acceptsMarketing","description":"Indicates whether the customer has consented to be sent marketing material via email.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"email","description":"The customer’s email.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"firstName","description":"The customer’s first name.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"lastName","description":"The customer’s last name.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"password","description":"The login password used by the customer.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"phone","description":"A unique phone number for the customer.\n\nFormatted using E.164 standard. For example, _+16135551111_.\n","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CustomerCreatePayload","description":"Return type for `customerCreate` mutation.","fields":[{"name":"customer","description":"The created customer object.","args":[],"type":{"kind":"OBJECT","name":"Customer","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CustomerUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `customerUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CustomerDefaultAddressUpdatePayload","description":"Return type for `customerDefaultAddressUpdate` mutation.","fields":[{"name":"customer","description":"The updated customer object.","args":[],"type":{"kind":"OBJECT","name":"Customer","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CustomerUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `customerUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"CustomerErrorCode","description":"Possible error codes that can be returned by `CustomerUserError`.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"ALREADY_ENABLED","description":"Customer already enabled.","isDeprecated":false,"deprecationReason":null},{"name":"BAD_DOMAIN","description":"Input email contains an invalid domain name.","isDeprecated":false,"deprecationReason":null},{"name":"BLANK","description":"The input value is blank.","isDeprecated":false,"deprecationReason":null},{"name":"CONTAINS_HTML_TAGS","description":"Input contains HTML tags.","isDeprecated":false,"deprecationReason":null},{"name":"CONTAINS_URL","description":"Input contains URL.","isDeprecated":false,"deprecationReason":null},{"name":"CUSTOMER_DISABLED","description":"Customer is disabled.","isDeprecated":false,"deprecationReason":null},{"name":"INVALID","description":"The input value is invalid.","isDeprecated":false,"deprecationReason":null},{"name":"INVALID_MULTIPASS_REQUEST","description":"Multipass token is not valid.","isDeprecated":false,"deprecationReason":null},{"name":"NOT_FOUND","description":"Address does not exist.","isDeprecated":false,"deprecationReason":null},{"name":"PASSWORD_STARTS_OR_ENDS_WITH_WHITESPACE","description":"Input password starts or ends with whitespace.","isDeprecated":false,"deprecationReason":null},{"name":"TAKEN","description":"The input value is already taken.","isDeprecated":false,"deprecationReason":null},{"name":"TOKEN_INVALID","description":"Invalid activation token.","isDeprecated":false,"deprecationReason":null},{"name":"TOO_LONG","description":"The input value is too long.","isDeprecated":false,"deprecationReason":null},{"name":"TOO_SHORT","description":"The input value is too short.","isDeprecated":false,"deprecationReason":null},{"name":"UNIDENTIFIED_CUSTOMER","description":"Unidentified customer.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"CustomerRecoverPayload","description":"Return type for `customerRecover` mutation.","fields":[{"name":"customerUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CustomerUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `customerUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CustomerResetByUrlPayload","description":"Return type for `customerResetByUrl` mutation.","fields":[{"name":"customer","description":"The customer object which was reset.","args":[],"type":{"kind":"OBJECT","name":"Customer","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerAccessToken","description":"A newly created customer access token object for the customer.","args":[],"type":{"kind":"OBJECT","name":"CustomerAccessToken","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CustomerUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `customerUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"CustomerResetInput","description":"Specifies the fields required to reset a customer’s password.","fields":null,"inputFields":[{"name":"password","description":"New password that will be set as part of the reset password process.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"resetToken","description":"The reset token required to reset the customer’s password.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CustomerResetPayload","description":"Return type for `customerReset` mutation.","fields":[{"name":"customer","description":"The customer object which was reset.","args":[],"type":{"kind":"OBJECT","name":"Customer","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerAccessToken","description":"A newly created customer access token object for the customer.","args":[],"type":{"kind":"OBJECT","name":"CustomerAccessToken","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CustomerUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `customerUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"CustomerUpdateInput","description":"Specifies the fields required to update the Customer information.","fields":null,"inputFields":[{"name":"acceptsMarketing","description":"Indicates whether the customer has consented to be sent marketing material via email.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"email","description":"The customer’s email.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"firstName","description":"The customer’s first name.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"lastName","description":"The customer’s last name.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"password","description":"The login password used by the customer.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"phone","description":"A unique phone number for the customer.\n\nFormatted using E.164 standard. For example, _+16135551111_. To remove the phone number, specify `null`.\n","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CustomerUpdatePayload","description":"Return type for `customerUpdate` mutation.","fields":[{"name":"customer","description":"The updated customer object.","args":[],"type":{"kind":"OBJECT","name":"Customer","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerAccessToken","description":"The newly created customer access token. If the customer's password is updated, all previous access tokens\n(including the one used to perform this mutation) become invalid, and a new token is generated.\n","args":[],"type":{"kind":"OBJECT","name":"CustomerAccessToken","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerUserErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CustomerUserError","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"userErrors","description":"The list of errors that occurred from executing the mutation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UserError","ofType":null}}}},"isDeprecated":true,"deprecationReason":"Use `customerUserErrors` instead"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"CustomerUserError","description":"Represents an error that happens during execution of a customer mutation.","fields":[{"name":"code","description":"The error code.","args":[],"type":{"kind":"ENUM","name":"CustomerErrorCode","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"field","description":"The path to the input field that caused the error.","args":[],"type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}}},"isDeprecated":false,"deprecationReason":null},{"name":"message","description":"The error message.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"DisplayableError","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"SCALAR","name":"DateTime","description":"Represents an [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)-encoded date and time string.\nFor example, 3:50 pm on September 7, 2019 in the time zone of UTC (Coordinated Universal Time) is\nrepresented as `\"2019-09-07T15:50:00Z`\".\n","fields":null,"inputFields":null,"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"SCALAR","name":"Decimal","description":"A signed decimal number, which supports arbitrary precision and is serialized as a string.\n\nExample values: `\"29.99\"`, `\"29.999\"`.\n","fields":null,"inputFields":null,"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"DeliveryMethodType","description":"List of different delivery method types.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"LOCAL","description":"Local Delivery.","isDeprecated":false,"deprecationReason":null},{"name":"NONE","description":"None.","isDeprecated":false,"deprecationReason":null},{"name":"PICKUP_POINT","description":"Shipping to a Pickup Point.","isDeprecated":false,"deprecationReason":null},{"name":"PICK_UP","description":"Local Pickup.","isDeprecated":false,"deprecationReason":null},{"name":"RETAIL","description":"Retail.","isDeprecated":false,"deprecationReason":null},{"name":"SHIPPING","description":"Shipping.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"ENUM","name":"DigitalWallet","description":"Digital wallet, such as Apple Pay, which can be used for accelerated checkouts.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"ANDROID_PAY","description":"Android Pay.","isDeprecated":false,"deprecationReason":null},{"name":"APPLE_PAY","description":"Apple Pay.","isDeprecated":false,"deprecationReason":null},{"name":"GOOGLE_PAY","description":"Google Pay.","isDeprecated":false,"deprecationReason":null},{"name":"SHOPIFY_PAY","description":"Shopify Pay.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"DiscountAllocation","description":"An amount discounting the line that has been allocated by a discount.\n","fields":[{"name":"allocatedAmount","description":"Amount of discount allocated.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"discountApplication","description":"The discount this allocated amount originated from.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INTERFACE","name":"DiscountApplication","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INTERFACE","name":"DiscountApplication","description":"Discount applications capture the intentions of a discount source at\nthe time of application.\n","fields":[{"name":"allocationMethod","description":"The method by which the discount's value is allocated to its entitled items.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"DiscountApplicationAllocationMethod","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"targetSelection","description":"Which lines of targetType that the discount is allocated over.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"DiscountApplicationTargetSelection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"targetType","description":"The type of line that the discount is applicable towards.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"DiscountApplicationTargetType","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"value","description":"The value of the discount application.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"UNION","name":"PricingValue","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":[{"kind":"OBJECT","name":"AutomaticDiscountApplication","ofType":null},{"kind":"OBJECT","name":"DiscountCodeApplication","ofType":null},{"kind":"OBJECT","name":"ManualDiscountApplication","ofType":null},{"kind":"OBJECT","name":"ScriptDiscountApplication","ofType":null}]},{"kind":"ENUM","name":"DiscountApplicationAllocationMethod","description":"The method by which the discount's value is allocated onto its entitled lines.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"ACROSS","description":"The value is spread across all entitled lines.","isDeprecated":false,"deprecationReason":null},{"name":"EACH","description":"The value is applied onto every entitled line.","isDeprecated":false,"deprecationReason":null},{"name":"ONE","description":"The value is specifically applied onto a particular line.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"DiscountApplicationConnection","description":"An auto-generated type for paginating through multiple DiscountApplications.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"DiscountApplicationEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in DiscountApplicationEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INTERFACE","name":"DiscountApplication","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"DiscountApplicationEdge","description":"An auto-generated type which holds one DiscountApplication and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of DiscountApplicationEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INTERFACE","name":"DiscountApplication","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"DiscountApplicationTargetSelection","description":"The lines on the order to which the discount is applied, of the type defined by\nthe discount application's `targetType`. For example, the value `ENTITLED`, combined with a `targetType` of\n`LINE_ITEM`, applies the discount on all line items that are entitled to the discount.\nThe value `ALL`, combined with a `targetType` of `SHIPPING_LINE`, applies the discount on all shipping lines.\n","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"ALL","description":"The discount is allocated onto all the lines.","isDeprecated":false,"deprecationReason":null},{"name":"ENTITLED","description":"The discount is allocated onto only the lines that it's entitled for.","isDeprecated":false,"deprecationReason":null},{"name":"EXPLICIT","description":"The discount is allocated onto explicitly chosen lines.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"ENUM","name":"DiscountApplicationTargetType","description":"The type of line (i.e. line item or shipping line) on an order that the discount is applicable towards.\n","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"LINE_ITEM","description":"The discount applies onto line items.","isDeprecated":false,"deprecationReason":null},{"name":"SHIPPING_LINE","description":"The discount applies onto shipping lines.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"DiscountCodeApplication","description":"Discount code applications capture the intentions of a discount code at\nthe time that it is applied.\n","fields":[{"name":"allocationMethod","description":"The method by which the discount's value is allocated to its entitled items.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"DiscountApplicationAllocationMethod","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"applicable","description":"Specifies whether the discount code was applied successfully.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"code","description":"The string identifying the discount code that was used at the time of application.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"targetSelection","description":"Which lines of targetType that the discount is allocated over.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"DiscountApplicationTargetSelection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"targetType","description":"The type of line that the discount is applicable towards.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"DiscountApplicationTargetType","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"value","description":"The value of the discount application.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"UNION","name":"PricingValue","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"DiscountApplication","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"INTERFACE","name":"DisplayableError","description":"Represents an error in the input of a mutation.","fields":[{"name":"field","description":"The path to the input field that caused the error.","args":[],"type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}}},"isDeprecated":false,"deprecationReason":null},{"name":"message","description":"The error message.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":[{"kind":"OBJECT","name":"CartUserError","ofType":null},{"kind":"OBJECT","name":"CheckoutUserError","ofType":null},{"kind":"OBJECT","name":"CustomerUserError","ofType":null},{"kind":"OBJECT","name":"UserError","ofType":null}]},{"kind":"OBJECT","name":"Domain","description":"Represents a web address.","fields":[{"name":"host","description":"The host name of the domain (eg: `example.com`).","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"sslEnabled","description":"Whether SSL is enabled or not.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"url","description":"The URL of the domain (eg: `https://example.com`).","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"URL","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"ExternalVideo","description":"Represents a video hosted outside of Shopify.","fields":[{"name":"alt","description":"A word or phrase to share the nature or contents of a media.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"embedUrl","description":"The embed URL of the video for the respective host.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"URL","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"embeddedUrl","description":"The URL.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"URL","ofType":null}},"isDeprecated":true,"deprecationReason":"Use `originUrl` instead"},{"name":"host","description":"The host of the external video.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"MediaHost","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"mediaContentType","description":"The media content type.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"MediaContentType","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"originUrl","description":"The origin URL of the video on the respective host.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"URL","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"previewImage","description":"The preview image for the media.","args":[],"type":{"kind":"OBJECT","name":"Image","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"Media","ofType":null},{"kind":"INTERFACE","name":"Node","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"Filter","description":"A filter that is supported on the parent field.","fields":[{"name":"id","description":"A unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"label","description":"A human-friendly string for this filter.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"type","description":"An enumeration that denotes the type of data this filter represents.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"FilterType","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"values","description":"The list of values for this filter.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"FilterValue","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"FilterType","description":"The type of data that the filter group represents.\n\nFor more information, refer to [Filter products in a collection with the Storefront API]\n(https://shopify.dev/api/examples/filter-products).\n","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"BOOLEAN","description":"A boolean value.","isDeprecated":false,"deprecationReason":null},{"name":"LIST","description":"A list of selectable values.","isDeprecated":false,"deprecationReason":null},{"name":"PRICE_RANGE","description":"A range of prices.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"FilterValue","description":"A selectable value within a filter.","fields":[{"name":"count","description":"The number of results that match this filter value.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Int","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"input","description":"An input object that can be used to filter by this value on the parent field.\n\nThe value is provided as a helper for building dynamic filtering UI. For example, if you have a list of selected `FilterValue` objects, you can combine their respective `input` values to use in a subsequent query.\n","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"JSON","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"label","description":"A human-friendly string for this filter value.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"SCALAR","name":"Float","description":"The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).","fields":null,"inputFields":null,"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"Fulfillment","description":"Represents a single fulfillment in an order.","fields":[{"name":"fulfillmentLineItems","description":"List of the fulfillment's line items.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"FulfillmentLineItemConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"trackingCompany","description":"The name of the tracking company.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"trackingInfo","description":"Tracking information associated with the fulfillment,\nsuch as the tracking number and tracking URL.\n","args":[{"name":"first","description":"Truncate the array result to this size.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"FulfillmentTrackingInfo","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"FulfillmentLineItem","description":"Represents a single line item in a fulfillment. There is at most one fulfillment line item for each order line item.","fields":[{"name":"lineItem","description":"The associated order's line item.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"OrderLineItem","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"quantity","description":"The amount fulfilled in this fulfillment.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Int","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"FulfillmentLineItemConnection","description":"An auto-generated type for paginating through multiple FulfillmentLineItems.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"FulfillmentLineItemEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in FulfillmentLineItemEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"FulfillmentLineItem","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"FulfillmentLineItemEdge","description":"An auto-generated type which holds one FulfillmentLineItem and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of FulfillmentLineItemEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"FulfillmentLineItem","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"FulfillmentTrackingInfo","description":"Tracking information associated with the fulfillment.","fields":[{"name":"number","description":"The tracking number of the fulfillment.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"url","description":"The URL to track the fulfillment.","args":[],"type":{"kind":"SCALAR","name":"URL","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"GenericFile","description":"The generic file resource lets you manage files in a merchant’s store. Generic files include any file that doesn’t fit into a designated type such as image or video. Example: PDF, JSON.","fields":[{"name":"alt","description":"A word or phrase to indicate the contents of a file.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"mimeType","description":"The MIME type of the file.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"originalFileSize","description":"The size of the original file in bytes.","args":[],"type":{"kind":"SCALAR","name":"Int","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"previewImage","description":"The preview image for the file.","args":[],"type":{"kind":"OBJECT","name":"Image","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"url","description":"The URL of the file.","args":[],"type":{"kind":"SCALAR","name":"URL","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"Node","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"GeoCoordinateInput","description":"Used to specify a geographical location.","fields":null,"inputFields":[{"name":"latitude","description":"The coordinate's latitude value.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Float","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"longitude","description":"The coordinate's longitude value.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Float","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"SCALAR","name":"HTML","description":"A string containing HTML code. Refer to the [HTML spec](https://html.spec.whatwg.org/#elements-3) for a\ncomplete list of HTML elements.\n\nExample value: `\"

Grey cotton knit sweater.

\"`.\n","fields":null,"inputFields":null,"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"INTERFACE","name":"HasMetafields","description":"Represents information about the metafields associated to the specified resource.","fields":[{"name":"metafield","description":"Returns a metafield found by namespace and key.","args":[{"name":"key","description":"Identifier for the metafield (maximum of 30 characters).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"namespace","description":"Container for a set of metafields (maximum of 20 characters).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"Metafield","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"metafields","description":"A paginated list of metafields associated with the resource.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"namespace","description":"Container for a set of metafields (maximum of 20 characters).","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MetafieldConnection","ofType":null}},"isDeprecated":true,"deprecationReason":"The `metafields` field will be removed in the future in favor of using [aliases](https://graphql.org/learn/queries/#aliases) with the `metafield` field.\n"}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":[{"kind":"OBJECT","name":"Article","ofType":null},{"kind":"OBJECT","name":"Blog","ofType":null},{"kind":"OBJECT","name":"Collection","ofType":null},{"kind":"OBJECT","name":"Customer","ofType":null},{"kind":"OBJECT","name":"Order","ofType":null},{"kind":"OBJECT","name":"Page","ofType":null},{"kind":"OBJECT","name":"Product","ofType":null},{"kind":"OBJECT","name":"ProductVariant","ofType":null},{"kind":"OBJECT","name":"Shop","ofType":null}]},{"kind":"SCALAR","name":"ID","description":"The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `\"4\"`) or integer (such as `4`) input value will be accepted as an ID.","fields":null,"inputFields":null,"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"Image","description":"Represents an image resource.","fields":[{"name":"altText","description":"A word or phrase to share the nature or contents of an image.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"height","description":"The original height of the image in pixels. Returns `null` if the image is not hosted by Shopify.","args":[],"type":{"kind":"SCALAR","name":"Int","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A unique identifier for the image.","args":[],"type":{"kind":"SCALAR","name":"ID","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"originalSrc","description":"The location of the original image as a URL.\n\nIf there are any existing transformations in the original source URL, they will remain and not be stripped.\n","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"URL","ofType":null}},"isDeprecated":true,"deprecationReason":"Use `url` instead"},{"name":"src","description":"The location of the image as a URL.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"URL","ofType":null}},"isDeprecated":true,"deprecationReason":"Use `url` instead"},{"name":"transformedSrc","description":"The location of the transformed image as a URL.\n\nAll transformation arguments are considered \"best-effort\". If they can be applied to an image, they will be.\nOtherwise any transformations which an image type does not support will be ignored.\n","args":[{"name":"crop","description":"Crops the image according to the specified region.","type":{"kind":"ENUM","name":"CropRegion","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"maxHeight","description":"Image height in pixels between 1 and 5760.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"maxWidth","description":"Image width in pixels between 1 and 5760.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"preferredContentType","description":"Best effort conversion of image into content type (SVG -> PNG, Anything -> JPG, Anything -> WEBP are supported).","type":{"kind":"ENUM","name":"ImageContentType","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"scale","description":"Image size multiplier for high-resolution retina displays. Must be between 1 and 3.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":"1","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"URL","ofType":null}},"isDeprecated":true,"deprecationReason":"Use `url(transform:)` instead"},{"name":"url","description":"The location of the image as a URL.\n\nIf no transform options are specified, then the original image will be preserved including any pre-applied transforms.\n\nAll transformation options are considered \"best-effort\". Any transformation that the original image type doesn't support will be ignored.\n\nIf you need multiple variations of the same image, then you can use [GraphQL aliases](https://graphql.org/learn/queries/#aliases).\n","args":[{"name":"transform","description":"A set of options to transform the original image.","type":{"kind":"INPUT_OBJECT","name":"ImageTransformInput","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"URL","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"width","description":"The original width of the image in pixels. Returns `null` if the image is not hosted by Shopify.","args":[],"type":{"kind":"SCALAR","name":"Int","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"ImageConnection","description":"An auto-generated type for paginating through multiple Images.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"ImageEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in ImageEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Image","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"ImageContentType","description":"List of supported image content types.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"JPG","description":"A JPG image.","isDeprecated":false,"deprecationReason":null},{"name":"PNG","description":"A PNG image.","isDeprecated":false,"deprecationReason":null},{"name":"WEBP","description":"A WEBP image.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"ImageEdge","description":"An auto-generated type which holds one Image and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of ImageEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Image","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"ImageTransformInput","description":"The available options for transforming an image.\n\nAll transformation options are considered \"best-effort\". Any transformation that the original image type doesn't support will be ignored.\n","fields":null,"inputFields":[{"name":"crop","description":"Crop the image according to the specified region.","type":{"kind":"ENUM","name":"CropRegion","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"maxHeight","description":"Image height in pixels between 1 and 5760.\n","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"maxWidth","description":"Image width in pixels between 1 and 5760.\n","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"preferredContentType","description":"Convert the source image into the preferred content type.\nSupported conversions: `.svg` to `.png`, any file type to `.jpg`, and any file type to `.webp`.\n","type":{"kind":"ENUM","name":"ImageContentType","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"scale","description":"Image size multiplier for high-resolution retina displays. Must be within 1..3.\n","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":"1","isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"SCALAR","name":"Int","description":"The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.","fields":null,"inputFields":null,"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"SCALAR","name":"JSON","description":"A [JSON](https://www.json.org/json-en.html) object.\n\nExample value:\n`{\n \"product\": {\n \"id\": \"gid://shopify/Product/1346443542550\",\n \"title\": \"White T-shirt\",\n \"options\": [{\n \"name\": \"Size\",\n \"values\": [\"M\", \"L\"]\n }]\n }\n}`\n","fields":null,"inputFields":null,"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"Language","description":"A language.","fields":[{"name":"endonymName","description":"The name of the language in the language itself. If the language uses capitalization, it is capitalized for a mid-sentence position.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"isoCode","description":"The ISO code.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"LanguageCode","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"name","description":"The name of the language in the current language.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"LanguageCode","description":"ISO 639-1 language codes supported by Shopify.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"AF","description":"Afrikaans.","isDeprecated":false,"deprecationReason":null},{"name":"AK","description":"Akan.","isDeprecated":false,"deprecationReason":null},{"name":"AM","description":"Amharic.","isDeprecated":false,"deprecationReason":null},{"name":"AR","description":"Arabic.","isDeprecated":false,"deprecationReason":null},{"name":"AS","description":"Assamese.","isDeprecated":false,"deprecationReason":null},{"name":"AZ","description":"Azerbaijani.","isDeprecated":false,"deprecationReason":null},{"name":"BE","description":"Belarusian.","isDeprecated":false,"deprecationReason":null},{"name":"BG","description":"Bulgarian.","isDeprecated":false,"deprecationReason":null},{"name":"BM","description":"Bambara.","isDeprecated":false,"deprecationReason":null},{"name":"BN","description":"Bangla.","isDeprecated":false,"deprecationReason":null},{"name":"BO","description":"Tibetan.","isDeprecated":false,"deprecationReason":null},{"name":"BR","description":"Breton.","isDeprecated":false,"deprecationReason":null},{"name":"BS","description":"Bosnian.","isDeprecated":false,"deprecationReason":null},{"name":"CA","description":"Catalan.","isDeprecated":false,"deprecationReason":null},{"name":"CE","description":"Chechen.","isDeprecated":false,"deprecationReason":null},{"name":"CS","description":"Czech.","isDeprecated":false,"deprecationReason":null},{"name":"CU","description":"Church Slavic.","isDeprecated":false,"deprecationReason":null},{"name":"CY","description":"Welsh.","isDeprecated":false,"deprecationReason":null},{"name":"DA","description":"Danish.","isDeprecated":false,"deprecationReason":null},{"name":"DE","description":"German.","isDeprecated":false,"deprecationReason":null},{"name":"DZ","description":"Dzongkha.","isDeprecated":false,"deprecationReason":null},{"name":"EE","description":"Ewe.","isDeprecated":false,"deprecationReason":null},{"name":"EL","description":"Greek.","isDeprecated":false,"deprecationReason":null},{"name":"EN","description":"English.","isDeprecated":false,"deprecationReason":null},{"name":"EO","description":"Esperanto.","isDeprecated":false,"deprecationReason":null},{"name":"ES","description":"Spanish.","isDeprecated":false,"deprecationReason":null},{"name":"ET","description":"Estonian.","isDeprecated":false,"deprecationReason":null},{"name":"EU","description":"Basque.","isDeprecated":false,"deprecationReason":null},{"name":"FA","description":"Persian.","isDeprecated":false,"deprecationReason":null},{"name":"FF","description":"Fulah.","isDeprecated":false,"deprecationReason":null},{"name":"FI","description":"Finnish.","isDeprecated":false,"deprecationReason":null},{"name":"FO","description":"Faroese.","isDeprecated":false,"deprecationReason":null},{"name":"FR","description":"French.","isDeprecated":false,"deprecationReason":null},{"name":"FY","description":"Western Frisian.","isDeprecated":false,"deprecationReason":null},{"name":"GA","description":"Irish.","isDeprecated":false,"deprecationReason":null},{"name":"GD","description":"Scottish Gaelic.","isDeprecated":false,"deprecationReason":null},{"name":"GL","description":"Galician.","isDeprecated":false,"deprecationReason":null},{"name":"GU","description":"Gujarati.","isDeprecated":false,"deprecationReason":null},{"name":"GV","description":"Manx.","isDeprecated":false,"deprecationReason":null},{"name":"HA","description":"Hausa.","isDeprecated":false,"deprecationReason":null},{"name":"HE","description":"Hebrew.","isDeprecated":false,"deprecationReason":null},{"name":"HI","description":"Hindi.","isDeprecated":false,"deprecationReason":null},{"name":"HR","description":"Croatian.","isDeprecated":false,"deprecationReason":null},{"name":"HU","description":"Hungarian.","isDeprecated":false,"deprecationReason":null},{"name":"HY","description":"Armenian.","isDeprecated":false,"deprecationReason":null},{"name":"IA","description":"Interlingua.","isDeprecated":false,"deprecationReason":null},{"name":"ID","description":"Indonesian.","isDeprecated":false,"deprecationReason":null},{"name":"IG","description":"Igbo.","isDeprecated":false,"deprecationReason":null},{"name":"II","description":"Sichuan Yi.","isDeprecated":false,"deprecationReason":null},{"name":"IS","description":"Icelandic.","isDeprecated":false,"deprecationReason":null},{"name":"IT","description":"Italian.","isDeprecated":false,"deprecationReason":null},{"name":"JA","description":"Japanese.","isDeprecated":false,"deprecationReason":null},{"name":"JV","description":"Javanese.","isDeprecated":false,"deprecationReason":null},{"name":"KA","description":"Georgian.","isDeprecated":false,"deprecationReason":null},{"name":"KI","description":"Kikuyu.","isDeprecated":false,"deprecationReason":null},{"name":"KK","description":"Kazakh.","isDeprecated":false,"deprecationReason":null},{"name":"KL","description":"Kalaallisut.","isDeprecated":false,"deprecationReason":null},{"name":"KM","description":"Khmer.","isDeprecated":false,"deprecationReason":null},{"name":"KN","description":"Kannada.","isDeprecated":false,"deprecationReason":null},{"name":"KO","description":"Korean.","isDeprecated":false,"deprecationReason":null},{"name":"KS","description":"Kashmiri.","isDeprecated":false,"deprecationReason":null},{"name":"KU","description":"Kurdish.","isDeprecated":false,"deprecationReason":null},{"name":"KW","description":"Cornish.","isDeprecated":false,"deprecationReason":null},{"name":"KY","description":"Kyrgyz.","isDeprecated":false,"deprecationReason":null},{"name":"LB","description":"Luxembourgish.","isDeprecated":false,"deprecationReason":null},{"name":"LG","description":"Ganda.","isDeprecated":false,"deprecationReason":null},{"name":"LN","description":"Lingala.","isDeprecated":false,"deprecationReason":null},{"name":"LO","description":"Lao.","isDeprecated":false,"deprecationReason":null},{"name":"LT","description":"Lithuanian.","isDeprecated":false,"deprecationReason":null},{"name":"LU","description":"Luba-Katanga.","isDeprecated":false,"deprecationReason":null},{"name":"LV","description":"Latvian.","isDeprecated":false,"deprecationReason":null},{"name":"MG","description":"Malagasy.","isDeprecated":false,"deprecationReason":null},{"name":"MI","description":"Maori.","isDeprecated":false,"deprecationReason":null},{"name":"MK","description":"Macedonian.","isDeprecated":false,"deprecationReason":null},{"name":"ML","description":"Malayalam.","isDeprecated":false,"deprecationReason":null},{"name":"MN","description":"Mongolian.","isDeprecated":false,"deprecationReason":null},{"name":"MR","description":"Marathi.","isDeprecated":false,"deprecationReason":null},{"name":"MS","description":"Malay.","isDeprecated":false,"deprecationReason":null},{"name":"MT","description":"Maltese.","isDeprecated":false,"deprecationReason":null},{"name":"MY","description":"Burmese.","isDeprecated":false,"deprecationReason":null},{"name":"NB","description":"Norwegian (Bokmål).","isDeprecated":false,"deprecationReason":null},{"name":"ND","description":"North Ndebele.","isDeprecated":false,"deprecationReason":null},{"name":"NE","description":"Nepali.","isDeprecated":false,"deprecationReason":null},{"name":"NL","description":"Dutch.","isDeprecated":false,"deprecationReason":null},{"name":"NN","description":"Norwegian Nynorsk.","isDeprecated":false,"deprecationReason":null},{"name":"NO","description":"Norwegian.","isDeprecated":false,"deprecationReason":null},{"name":"OM","description":"Oromo.","isDeprecated":false,"deprecationReason":null},{"name":"OR","description":"Odia.","isDeprecated":false,"deprecationReason":null},{"name":"OS","description":"Ossetic.","isDeprecated":false,"deprecationReason":null},{"name":"PA","description":"Punjabi.","isDeprecated":false,"deprecationReason":null},{"name":"PL","description":"Polish.","isDeprecated":false,"deprecationReason":null},{"name":"PS","description":"Pashto.","isDeprecated":false,"deprecationReason":null},{"name":"PT","description":"Portuguese.","isDeprecated":false,"deprecationReason":null},{"name":"PT_BR","description":"Portuguese (Brazil).","isDeprecated":false,"deprecationReason":null},{"name":"PT_PT","description":"Portuguese (Portugal).","isDeprecated":false,"deprecationReason":null},{"name":"QU","description":"Quechua.","isDeprecated":false,"deprecationReason":null},{"name":"RM","description":"Romansh.","isDeprecated":false,"deprecationReason":null},{"name":"RN","description":"Rundi.","isDeprecated":false,"deprecationReason":null},{"name":"RO","description":"Romanian.","isDeprecated":false,"deprecationReason":null},{"name":"RU","description":"Russian.","isDeprecated":false,"deprecationReason":null},{"name":"RW","description":"Kinyarwanda.","isDeprecated":false,"deprecationReason":null},{"name":"SD","description":"Sindhi.","isDeprecated":false,"deprecationReason":null},{"name":"SE","description":"Northern Sami.","isDeprecated":false,"deprecationReason":null},{"name":"SG","description":"Sango.","isDeprecated":false,"deprecationReason":null},{"name":"SI","description":"Sinhala.","isDeprecated":false,"deprecationReason":null},{"name":"SK","description":"Slovak.","isDeprecated":false,"deprecationReason":null},{"name":"SL","description":"Slovenian.","isDeprecated":false,"deprecationReason":null},{"name":"SN","description":"Shona.","isDeprecated":false,"deprecationReason":null},{"name":"SO","description":"Somali.","isDeprecated":false,"deprecationReason":null},{"name":"SQ","description":"Albanian.","isDeprecated":false,"deprecationReason":null},{"name":"SR","description":"Serbian.","isDeprecated":false,"deprecationReason":null},{"name":"SU","description":"Sundanese.","isDeprecated":false,"deprecationReason":null},{"name":"SV","description":"Swedish.","isDeprecated":false,"deprecationReason":null},{"name":"SW","description":"Swahili.","isDeprecated":false,"deprecationReason":null},{"name":"TA","description":"Tamil.","isDeprecated":false,"deprecationReason":null},{"name":"TE","description":"Telugu.","isDeprecated":false,"deprecationReason":null},{"name":"TG","description":"Tajik.","isDeprecated":false,"deprecationReason":null},{"name":"TH","description":"Thai.","isDeprecated":false,"deprecationReason":null},{"name":"TI","description":"Tigrinya.","isDeprecated":false,"deprecationReason":null},{"name":"TK","description":"Turkmen.","isDeprecated":false,"deprecationReason":null},{"name":"TO","description":"Tongan.","isDeprecated":false,"deprecationReason":null},{"name":"TR","description":"Turkish.","isDeprecated":false,"deprecationReason":null},{"name":"TT","description":"Tatar.","isDeprecated":false,"deprecationReason":null},{"name":"UG","description":"Uyghur.","isDeprecated":false,"deprecationReason":null},{"name":"UK","description":"Ukrainian.","isDeprecated":false,"deprecationReason":null},{"name":"UR","description":"Urdu.","isDeprecated":false,"deprecationReason":null},{"name":"UZ","description":"Uzbek.","isDeprecated":false,"deprecationReason":null},{"name":"VI","description":"Vietnamese.","isDeprecated":false,"deprecationReason":null},{"name":"VO","description":"Volapük.","isDeprecated":false,"deprecationReason":null},{"name":"WO","description":"Wolof.","isDeprecated":false,"deprecationReason":null},{"name":"XH","description":"Xhosa.","isDeprecated":false,"deprecationReason":null},{"name":"YI","description":"Yiddish.","isDeprecated":false,"deprecationReason":null},{"name":"YO","description":"Yoruba.","isDeprecated":false,"deprecationReason":null},{"name":"ZH","description":"Chinese.","isDeprecated":false,"deprecationReason":null},{"name":"ZH_CN","description":"Chinese (Simplified).","isDeprecated":false,"deprecationReason":null},{"name":"ZH_TW","description":"Chinese (Traditional).","isDeprecated":false,"deprecationReason":null},{"name":"ZU","description":"Zulu.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"Localization","description":"Information about the localized experiences configured for the shop.","fields":[{"name":"availableCountries","description":"The list of countries with enabled localized experiences.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Country","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"availableLanguages","description":"The list of languages available for the active country.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Language","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"country","description":"The country of the active localized experience. Use the `@inContext` directive to change this value.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Country","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"language","description":"The language of the active localized experience. Use the `@inContext` directive to change this value.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Language","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"Location","description":"Represents a location where product inventory is held.","fields":[{"name":"address","description":"The address of the location.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"LocationAddress","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"name","description":"The name of the location.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"Node","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"LocationAddress","description":"Represents the address of a location.\n","fields":[{"name":"address1","description":"The first line of the address for the location.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"address2","description":"The second line of the address for the location.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"city","description":"The city of the location.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"country","description":"The country of the location.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"countryCode","description":"The country code of the location.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"formatted","description":"A formatted version of the address for the location.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"latitude","description":"The latitude coordinates of the location.","args":[],"type":{"kind":"SCALAR","name":"Float","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"longitude","description":"The longitude coordinates of the location.","args":[],"type":{"kind":"SCALAR","name":"Float","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"phone","description":"The phone number of the location.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"province","description":"The province of the location.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"provinceCode","description":"The code for the province, state, or district of the address of the location.\n","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"zip","description":"The ZIP code of the location.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"LocationConnection","description":"An auto-generated type for paginating through multiple Locations.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"LocationEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in LocationEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Location","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"LocationEdge","description":"An auto-generated type which holds one Location and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of LocationEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Location","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"LocationSortKeys","description":"The set of valid sort keys for the Location query.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"CITY","description":"Sort by the `city` value.","isDeprecated":false,"deprecationReason":null},{"name":"DISTANCE","description":"Sort by the `distance` value.","isDeprecated":false,"deprecationReason":null},{"name":"ID","description":"Sort by the `id` value.","isDeprecated":false,"deprecationReason":null},{"name":"NAME","description":"Sort by the `name` value.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"MailingAddress","description":"Represents a mailing address for customers and shipping.","fields":[{"name":"address1","description":"The first line of the address. Typically the street address or PO Box number.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"address2","description":"The second line of the address. Typically the number of the apartment, suite, or unit.\n","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"city","description":"The name of the city, district, village, or town.\n","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"company","description":"The name of the customer's company or organization.\n","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"country","description":"The name of the country.\n","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"countryCode","description":"The two-letter code for the country of the address.\n\nFor example, US.\n","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":true,"deprecationReason":"Use `countryCodeV2` instead"},{"name":"countryCodeV2","description":"The two-letter code for the country of the address.\n\nFor example, US.\n","args":[],"type":{"kind":"ENUM","name":"CountryCode","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"firstName","description":"The first name of the customer.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"formatted","description":"A formatted version of the address, customized by the provided arguments.","args":[{"name":"withCompany","description":"Whether to include the customer's company in the formatted address.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"true","isDeprecated":false,"deprecationReason":null},{"name":"withName","description":"Whether to include the customer's name in the formatted address.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"formattedArea","description":"A comma-separated list of the values for city, province, and country.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"lastName","description":"The last name of the customer.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"latitude","description":"The latitude coordinate of the customer address.","args":[],"type":{"kind":"SCALAR","name":"Float","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"longitude","description":"The longitude coordinate of the customer address.","args":[],"type":{"kind":"SCALAR","name":"Float","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"name","description":"The full name of the customer, based on firstName and lastName.\n","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"phone","description":"A unique phone number for the customer.\n\nFormatted using E.164 standard. For example, _+16135551111_.\n","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"province","description":"The region of the address, such as the province, state, or district.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"provinceCode","description":"The two-letter code for the region.\n\nFor example, ON.\n","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"zip","description":"The zip or postal code of the address.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"Node","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"MailingAddressConnection","description":"An auto-generated type for paginating through multiple MailingAddresses.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MailingAddressEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in MailingAddressEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MailingAddress","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"MailingAddressEdge","description":"An auto-generated type which holds one MailingAddress and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of MailingAddressEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MailingAddress","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"MailingAddressInput","description":"Specifies the fields accepted to create or update a mailing address.","fields":null,"inputFields":[{"name":"address1","description":"The first line of the address. Typically the street address or PO Box number.\n","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"address2","description":"The second line of the address. Typically the number of the apartment, suite, or unit.\n","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"city","description":"The name of the city, district, village, or town.\n","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"company","description":"The name of the customer's company or organization.\n","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"country","description":"The name of the country.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"firstName","description":"The first name of the customer.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"lastName","description":"The last name of the customer.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"phone","description":"A unique phone number for the customer.\n\nFormatted using E.164 standard. For example, _+16135551111_.\n","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"province","description":"The region of the address, such as the province, state, or district.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"zip","description":"The zip or postal code of the address.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"ManualDiscountApplication","description":"Manual discount applications capture the intentions of a discount that was manually created.\n","fields":[{"name":"allocationMethod","description":"The method by which the discount's value is allocated to its entitled items.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"DiscountApplicationAllocationMethod","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"description","description":"The description of the application.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"targetSelection","description":"Which lines of targetType that the discount is allocated over.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"DiscountApplicationTargetSelection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"targetType","description":"The type of line that the discount is applicable towards.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"DiscountApplicationTargetType","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"title","description":"The title of the application.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"value","description":"The value of the discount application.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"UNION","name":"PricingValue","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"DiscountApplication","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"INTERFACE","name":"Media","description":"Represents a media interface.","fields":[{"name":"alt","description":"A word or phrase to share the nature or contents of a media.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"mediaContentType","description":"The media content type.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"MediaContentType","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"previewImage","description":"The preview image for the media.","args":[],"type":{"kind":"OBJECT","name":"Image","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":[{"kind":"OBJECT","name":"ExternalVideo","ofType":null},{"kind":"OBJECT","name":"MediaImage","ofType":null},{"kind":"OBJECT","name":"Model3d","ofType":null},{"kind":"OBJECT","name":"Video","ofType":null}]},{"kind":"OBJECT","name":"MediaConnection","description":"An auto-generated type for paginating through multiple Media.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MediaEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in MediaEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INTERFACE","name":"Media","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"MediaContentType","description":"The possible content types for a media object.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"EXTERNAL_VIDEO","description":"An externally hosted video.","isDeprecated":false,"deprecationReason":null},{"name":"IMAGE","description":"A Shopify hosted image.","isDeprecated":false,"deprecationReason":null},{"name":"MODEL_3D","description":"A 3d model.","isDeprecated":false,"deprecationReason":null},{"name":"VIDEO","description":"A Shopify hosted video.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"MediaEdge","description":"An auto-generated type which holds one Media and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of MediaEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INTERFACE","name":"Media","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"MediaHost","description":"Host for a Media Resource.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"VIMEO","description":"Host for Vimeo embedded videos.","isDeprecated":false,"deprecationReason":null},{"name":"YOUTUBE","description":"Host for YouTube embedded videos.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"MediaImage","description":"Represents a Shopify hosted image.","fields":[{"name":"alt","description":"A word or phrase to share the nature or contents of a media.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"image","description":"The image for the media.","args":[],"type":{"kind":"OBJECT","name":"Image","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"mediaContentType","description":"The media content type.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"MediaContentType","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"previewImage","description":"The preview image for the media.","args":[],"type":{"kind":"OBJECT","name":"Image","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"Media","ofType":null},{"kind":"INTERFACE","name":"Node","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"Menu","description":"A menu used for navigation within a storefront.\n","fields":[{"name":"handle","description":"The menu's handle.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"items","description":"The menu's child items.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MenuItem","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"itemsCount","description":"The count of items on the menu.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Int","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"title","description":"The menu's title.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"Node","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"MenuItem","description":"A menu item within a parent menu.\n","fields":[{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"items","description":"The menu item's child items.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MenuItem","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"resourceId","description":"The ID of the linked resource.","args":[],"type":{"kind":"SCALAR","name":"ID","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"tags","description":"The menu item's tags to filter a collection.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"title","description":"The menu item's title.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"type","description":"The menu item's type.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"MenuItemType","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"url","description":"The menu item's URL.","args":[],"type":{"kind":"SCALAR","name":"URL","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"Node","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"MenuItemType","description":"A menu item type.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"ARTICLE","description":"An article link.","isDeprecated":false,"deprecationReason":null},{"name":"BLOG","description":"A blog link.","isDeprecated":false,"deprecationReason":null},{"name":"CATALOG","description":"A catalog link.","isDeprecated":false,"deprecationReason":null},{"name":"COLLECTION","description":"A collection link.","isDeprecated":false,"deprecationReason":null},{"name":"COLLECTIONS","description":"A collection link.","isDeprecated":false,"deprecationReason":null},{"name":"FRONTPAGE","description":"A frontpage link.","isDeprecated":false,"deprecationReason":null},{"name":"HTTP","description":"An http link.","isDeprecated":false,"deprecationReason":null},{"name":"PAGE","description":"A page link.","isDeprecated":false,"deprecationReason":null},{"name":"PRODUCT","description":"A product link.","isDeprecated":false,"deprecationReason":null},{"name":"SEARCH","description":"A search link.","isDeprecated":false,"deprecationReason":null},{"name":"SHOP_POLICY","description":"A shop policy link.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"UNION","name":"Merchandise","description":"The merchandise to be purchased at checkout.","fields":null,"inputFields":null,"interfaces":null,"enumValues":null,"possibleTypes":[{"kind":"OBJECT","name":"ProductVariant","ofType":null}]},{"kind":"OBJECT","name":"Metafield","description":"Metafields represent custom metadata attached to a resource. Metafields can be sorted into namespaces and are\ncomprised of keys, values, and value types.\n","fields":[{"name":"createdAt","description":"The date and time when the storefront metafield was created.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"DateTime","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"description","description":"The description of a metafield.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"key","description":"The key name for a metafield.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"namespace","description":"The namespace for a metafield.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"parentResource","description":"The parent object that the metafield belongs to.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"UNION","name":"MetafieldParentResource","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"reference","description":"Returns a reference object if the metafield definition's type is a resource reference.","args":[],"type":{"kind":"UNION","name":"MetafieldReference","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"type","description":"The type name of the metafield.\nSee the list of [supported types](https://shopify.dev/apps/metafields/definitions/types).\n","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"updatedAt","description":"The date and time when the storefront metafield was updated.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"DateTime","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"value","description":"The value of a metafield.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"Node","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"MetafieldConnection","description":"An auto-generated type for paginating through multiple Metafields.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MetafieldEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in MetafieldEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Metafield","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"MetafieldEdge","description":"An auto-generated type which holds one Metafield and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of MetafieldEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Metafield","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"MetafieldFilter","description":"A filter used to view a subset of products in a collection matching a specific metafield value.\n\nOnly the following metafield types are currently supported:\n- `number_integer`\n- `number_decimal`\n- `single_line_text_field`\n- `boolean` as of 2022-04.\n","fields":null,"inputFields":[{"name":"key","description":"The key of the metafield to filter on.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"namespace","description":"The namespace of the metafield to filter on.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"value","description":"The value of the metafield.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"UNION","name":"MetafieldParentResource","description":"A resource that the metafield belongs to.","fields":null,"inputFields":null,"interfaces":null,"enumValues":null,"possibleTypes":[{"kind":"OBJECT","name":"Article","ofType":null},{"kind":"OBJECT","name":"Blog","ofType":null},{"kind":"OBJECT","name":"Collection","ofType":null},{"kind":"OBJECT","name":"Customer","ofType":null},{"kind":"OBJECT","name":"Order","ofType":null},{"kind":"OBJECT","name":"Page","ofType":null},{"kind":"OBJECT","name":"Product","ofType":null},{"kind":"OBJECT","name":"ProductVariant","ofType":null},{"kind":"OBJECT","name":"Shop","ofType":null}]},{"kind":"UNION","name":"MetafieldReference","description":"Returns the resource which is being referred to by a metafield.\n","fields":null,"inputFields":null,"interfaces":null,"enumValues":null,"possibleTypes":[{"kind":"OBJECT","name":"GenericFile","ofType":null},{"kind":"OBJECT","name":"MediaImage","ofType":null},{"kind":"OBJECT","name":"Page","ofType":null},{"kind":"OBJECT","name":"Product","ofType":null},{"kind":"OBJECT","name":"ProductVariant","ofType":null},{"kind":"OBJECT","name":"Video","ofType":null}]},{"kind":"OBJECT","name":"Model3d","description":"Represents a Shopify hosted 3D model.","fields":[{"name":"alt","description":"A word or phrase to share the nature or contents of a media.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"mediaContentType","description":"The media content type.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"MediaContentType","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"previewImage","description":"The preview image for the media.","args":[],"type":{"kind":"OBJECT","name":"Image","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"sources","description":"The sources for a 3d model.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Model3dSource","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"Media","ofType":null},{"kind":"INTERFACE","name":"Node","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"Model3dSource","description":"Represents a source for a Shopify hosted 3d model.","fields":[{"name":"filesize","description":"The filesize of the 3d model.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Int","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"format","description":"The format of the 3d model.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"mimeType","description":"The MIME type of the 3d model.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"url","description":"The URL of the 3d model.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"SCALAR","name":"Money","description":"A monetary value string without a currency symbol or code. Example value: `\"100.57\"`.","fields":null,"inputFields":null,"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"MoneyInput","description":"Specifies the fields for a monetary value with currency.","fields":null,"inputFields":[{"name":"amount","description":"Decimal money amount.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Decimal","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"currencyCode","description":"Currency of the money.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"CurrencyCode","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"MoneyV2","description":"A monetary value with currency.\n","fields":[{"name":"amount","description":"Decimal money amount.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Decimal","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"currencyCode","description":"Currency of the money.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"CurrencyCode","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"Mutation","description":"The schema’s entry-point for mutations. This acts as the public, top-level API from which all mutation queries must start.","fields":[{"name":"cartAttributesUpdate","description":"Updates the attributes on a cart.","args":[{"name":"attributes","description":"An array of key-value pairs that contains additional information about the cart.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"AttributeInput","ofType":null}}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"cartId","description":"The ID of the cart.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CartAttributesUpdatePayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"cartBuyerIdentityUpdate","description":"Updates customer information associated with a cart.\nBuyer identity is used to determine\n[international pricing](https://shopify.dev/api/examples/international-pricing#create-a-checkout)\nand should match the customer's shipping address.\n","args":[{"name":"buyerIdentity","description":"The customer associated with the cart. Used to determine [international pricing](https://shopify.dev/api/examples/international-pricing#create-a-checkout). Buyer identity should match the customer's shipping address.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"CartBuyerIdentityInput","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"cartId","description":"The ID of the cart.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CartBuyerIdentityUpdatePayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"cartCreate","description":"Creates a new cart.","args":[{"name":"input","description":"The fields used to create a cart.","type":{"kind":"INPUT_OBJECT","name":"CartInput","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CartCreatePayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"cartDiscountCodesUpdate","description":"Updates the discount codes applied to the cart.","args":[{"name":"cartId","description":"The ID of the cart.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"discountCodes","description":"The case-insensitive discount codes that the customer added at checkout.\n","type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CartDiscountCodesUpdatePayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"cartLinesAdd","description":"Adds a merchandise line to the cart.","args":[{"name":"cartId","description":"The ID of the cart.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"lines","description":"A list of merchandise lines to add to the cart.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"CartLineInput","ofType":null}}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CartLinesAddPayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"cartLinesRemove","description":"Removes one or more merchandise lines from the cart.","args":[{"name":"cartId","description":"The ID of the cart.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"lineIds","description":"The merchandise line IDs to remove.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CartLinesRemovePayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"cartLinesUpdate","description":"Updates one or more merchandise lines on a cart.","args":[{"name":"cartId","description":"The ID of the cart.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"lines","description":"The merchandise lines to update.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"CartLineUpdateInput","ofType":null}}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CartLinesUpdatePayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"cartNoteUpdate","description":"Updates the note on the cart.","args":[{"name":"cartId","description":"The ID of the cart.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"note","description":"The note on the cart.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CartNoteUpdatePayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutAttributesUpdate","description":"Updates the attributes of a checkout if `allowPartialAddresses` is `true`.","args":[{"name":"checkoutId","description":"The ID of the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"input","description":"The fields used to update a checkout's attributes.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"CheckoutAttributesUpdateInput","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutAttributesUpdatePayload","ofType":null},"isDeprecated":true,"deprecationReason":"Use `checkoutAttributesUpdateV2` instead"},{"name":"checkoutAttributesUpdateV2","description":"Updates the attributes of a checkout if `allowPartialAddresses` is `true`.","args":[{"name":"checkoutId","description":"The ID of the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"input","description":"The checkout attributes to update.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"CheckoutAttributesUpdateV2Input","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutAttributesUpdateV2Payload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutCompleteFree","description":"Completes a checkout without providing payment information. You can use this mutation for free items or items whose purchase price is covered by a gift card.","args":[{"name":"checkoutId","description":"The ID of the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutCompleteFreePayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutCompleteWithCreditCard","description":"Completes a checkout using a credit card token from Shopify's Vault.","args":[{"name":"checkoutId","description":"The ID of the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"payment","description":"The credit card info to apply as a payment.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"CreditCardPaymentInput","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutCompleteWithCreditCardPayload","ofType":null},"isDeprecated":true,"deprecationReason":"Use `checkoutCompleteWithCreditCardV2` instead"},{"name":"checkoutCompleteWithCreditCardV2","description":"Completes a checkout using a credit card token from Shopify's card vault. Before you can complete checkouts using CheckoutCompleteWithCreditCardV2, you need to [_request payment processing_](https://shopify.dev/apps/channels/getting-started#request-payment-processing).","args":[{"name":"checkoutId","description":"The ID of the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"payment","description":"The credit card info to apply as a payment.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"CreditCardPaymentInputV2","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutCompleteWithCreditCardV2Payload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutCompleteWithTokenizedPayment","description":"Completes a checkout with a tokenized payment.","args":[{"name":"checkoutId","description":"The ID of the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"payment","description":"The info to apply as a tokenized payment.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"TokenizedPaymentInput","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutCompleteWithTokenizedPaymentPayload","ofType":null},"isDeprecated":true,"deprecationReason":"Use `checkoutCompleteWithTokenizedPaymentV2` instead"},{"name":"checkoutCompleteWithTokenizedPaymentV2","description":"Completes a checkout with a tokenized payment.","args":[{"name":"checkoutId","description":"The ID of the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"payment","description":"The info to apply as a tokenized payment.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"TokenizedPaymentInputV2","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutCompleteWithTokenizedPaymentV2Payload","ofType":null},"isDeprecated":true,"deprecationReason":"Use `checkoutCompleteWithTokenizedPaymentV3` instead"},{"name":"checkoutCompleteWithTokenizedPaymentV3","description":"Completes a checkout with a tokenized payment.","args":[{"name":"checkoutId","description":"The ID of the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"payment","description":"The info to apply as a tokenized payment.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"TokenizedPaymentInputV3","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutCompleteWithTokenizedPaymentV3Payload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutCreate","description":"Creates a new checkout.","args":[{"name":"input","description":"The fields used to create a checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"CheckoutCreateInput","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"queueToken","description":"The checkout queue token. Available only to selected stores.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutCreatePayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutCustomerAssociate","description":"Associates a customer to the checkout.","args":[{"name":"checkoutId","description":"The ID of the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"customerAccessToken","description":"The customer access token of the customer to associate.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutCustomerAssociatePayload","ofType":null},"isDeprecated":true,"deprecationReason":"Use `checkoutCustomerAssociateV2` instead"},{"name":"checkoutCustomerAssociateV2","description":"Associates a customer to the checkout.","args":[{"name":"checkoutId","description":"The ID of the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"customerAccessToken","description":"The customer access token of the customer to associate.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutCustomerAssociateV2Payload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutCustomerDisassociate","description":"Disassociates the current checkout customer from the checkout.","args":[{"name":"checkoutId","description":"The ID of the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutCustomerDisassociatePayload","ofType":null},"isDeprecated":true,"deprecationReason":"Use `checkoutCustomerDisassociateV2` instead"},{"name":"checkoutCustomerDisassociateV2","description":"Disassociates the current checkout customer from the checkout.","args":[{"name":"checkoutId","description":"The ID of the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutCustomerDisassociateV2Payload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutDiscountCodeApply","description":"Applies a discount to an existing checkout using a discount code.","args":[{"name":"checkoutId","description":"The ID of the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"discountCode","description":"The discount code to apply to the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutDiscountCodeApplyPayload","ofType":null},"isDeprecated":true,"deprecationReason":"Use `checkoutDiscountCodeApplyV2` instead"},{"name":"checkoutDiscountCodeApplyV2","description":"Applies a discount to an existing checkout using a discount code.","args":[{"name":"checkoutId","description":"The ID of the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"discountCode","description":"The discount code to apply to the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutDiscountCodeApplyV2Payload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutDiscountCodeRemove","description":"Removes the applied discounts from an existing checkout.","args":[{"name":"checkoutId","description":"The ID of the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutDiscountCodeRemovePayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutEmailUpdate","description":"Updates the email on an existing checkout.","args":[{"name":"checkoutId","description":"The ID of the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"email","description":"The email to update the checkout with.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutEmailUpdatePayload","ofType":null},"isDeprecated":true,"deprecationReason":"Use `checkoutEmailUpdateV2` instead"},{"name":"checkoutEmailUpdateV2","description":"Updates the email on an existing checkout.","args":[{"name":"checkoutId","description":"The ID of the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"email","description":"The email to update the checkout with.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutEmailUpdateV2Payload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutGiftCardApply","description":"Applies a gift card to an existing checkout using a gift card code. This will replace all currently applied gift cards.","args":[{"name":"checkoutId","description":"The ID of the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"giftCardCode","description":"The code of the gift card to apply on the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutGiftCardApplyPayload","ofType":null},"isDeprecated":true,"deprecationReason":"Use `checkoutGiftCardsAppend` instead"},{"name":"checkoutGiftCardRemove","description":"Removes an applied gift card from the checkout.","args":[{"name":"appliedGiftCardId","description":"The ID of the Applied Gift Card to remove from the Checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"checkoutId","description":"The ID of the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutGiftCardRemovePayload","ofType":null},"isDeprecated":true,"deprecationReason":"Use `checkoutGiftCardRemoveV2` instead"},{"name":"checkoutGiftCardRemoveV2","description":"Removes an applied gift card from the checkout.","args":[{"name":"appliedGiftCardId","description":"The ID of the Applied Gift Card to remove from the Checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"checkoutId","description":"The ID of the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutGiftCardRemoveV2Payload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutGiftCardsAppend","description":"Appends gift cards to an existing checkout.","args":[{"name":"checkoutId","description":"The ID of the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"giftCardCodes","description":"A list of gift card codes to append to the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutGiftCardsAppendPayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutLineItemsAdd","description":"Adds a list of line items to a checkout.","args":[{"name":"checkoutId","description":"The ID of the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"lineItems","description":"A list of line item objects to add to the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"CheckoutLineItemInput","ofType":null}}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutLineItemsAddPayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutLineItemsRemove","description":"Removes line items from an existing checkout.","args":[{"name":"checkoutId","description":"The checkout on which to remove line items.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"lineItemIds","description":"Line item ids to remove.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutLineItemsRemovePayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutLineItemsReplace","description":"Sets a list of line items to a checkout.","args":[{"name":"checkoutId","description":"The ID of the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"lineItems","description":"A list of line item objects to set on the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"CheckoutLineItemInput","ofType":null}}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutLineItemsReplacePayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutLineItemsUpdate","description":"Updates line items on a checkout.","args":[{"name":"checkoutId","description":"The checkout on which to update line items.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"lineItems","description":"Line items to update.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"CheckoutLineItemUpdateInput","ofType":null}}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutLineItemsUpdatePayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutShippingAddressUpdate","description":"Updates the shipping address of an existing checkout.","args":[{"name":"checkoutId","description":"The ID of the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"shippingAddress","description":"The shipping address to where the line items will be shipped.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"MailingAddressInput","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutShippingAddressUpdatePayload","ofType":null},"isDeprecated":true,"deprecationReason":"Use `checkoutShippingAddressUpdateV2` instead"},{"name":"checkoutShippingAddressUpdateV2","description":"Updates the shipping address of an existing checkout.","args":[{"name":"checkoutId","description":"The ID of the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"shippingAddress","description":"The shipping address to where the line items will be shipped.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"MailingAddressInput","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutShippingAddressUpdateV2Payload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkoutShippingLineUpdate","description":"Updates the shipping lines on an existing checkout.","args":[{"name":"checkoutId","description":"The ID of the checkout.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"shippingRateHandle","description":"A unique identifier to a Checkout’s shipping provider, price, and title combination, enabling the customer to select the availableShippingRates.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CheckoutShippingLineUpdatePayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerAccessTokenCreate","description":"Creates a customer access token.\nThe customer access token is required to modify the customer object in any way.\n","args":[{"name":"input","description":"The fields used to create a customer access token.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"CustomerAccessTokenCreateInput","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CustomerAccessTokenCreatePayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerAccessTokenCreateWithMultipass","description":"Creates a customer access token using a multipass token instead of email and password.\nA customer record is created if customer does not exist. If a customer record already\nexists but the record is disabled, then it's enabled.\n","args":[{"name":"multipassToken","description":"A valid multipass token to be authenticated.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CustomerAccessTokenCreateWithMultipassPayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerAccessTokenDelete","description":"Permanently destroys a customer access token.","args":[{"name":"customerAccessToken","description":"The access token used to identify the customer.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CustomerAccessTokenDeletePayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerAccessTokenRenew","description":"Renews a customer access token.\n\nAccess token renewal must happen *before* a token expires.\nIf a token has already expired, a new one should be created instead via `customerAccessTokenCreate`.\n","args":[{"name":"customerAccessToken","description":"The access token used to identify the customer.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CustomerAccessTokenRenewPayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerActivate","description":"Activates a customer.","args":[{"name":"id","description":"Specifies the customer to activate.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"input","description":"The fields used to activate a customer.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"CustomerActivateInput","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CustomerActivatePayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerActivateByUrl","description":"Activates a customer with the activation url received from `customerCreate`.","args":[{"name":"activationUrl","description":"The customer activation URL.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"URL","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"password","description":"A new password set during activation.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CustomerActivateByUrlPayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerAddressCreate","description":"Creates a new address for a customer.","args":[{"name":"address","description":"The customer mailing address to create.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"MailingAddressInput","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"customerAccessToken","description":"The access token used to identify the customer.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CustomerAddressCreatePayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerAddressDelete","description":"Permanently deletes the address of an existing customer.","args":[{"name":"customerAccessToken","description":"The access token used to identify the customer.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"Specifies the address to delete.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CustomerAddressDeletePayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerAddressUpdate","description":"Updates the address of an existing customer.","args":[{"name":"address","description":"The customer’s mailing address.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"MailingAddressInput","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"customerAccessToken","description":"The access token used to identify the customer.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"Specifies the customer address to update.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CustomerAddressUpdatePayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerCreate","description":"Creates a new customer.","args":[{"name":"input","description":"The fields used to create a new customer.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"CustomerCreateInput","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CustomerCreatePayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerDefaultAddressUpdate","description":"Updates the default address of an existing customer.","args":[{"name":"addressId","description":"ID of the address to set as the new default for the customer.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"customerAccessToken","description":"The access token used to identify the customer.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CustomerDefaultAddressUpdatePayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerRecover","description":"Sends a reset password email to the customer, as the first step in the reset password process.","args":[{"name":"email","description":"The email address of the customer to recover.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CustomerRecoverPayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerReset","description":"Resets a customer’s password with a token received from `CustomerRecover`.","args":[{"name":"id","description":"Specifies the customer to reset.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"input","description":"The fields used to reset a customer’s password.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"CustomerResetInput","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CustomerResetPayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerResetByUrl","description":"Resets a customer’s password with the reset password url received from `CustomerRecover`.","args":[{"name":"password","description":"New password that will be set as part of the reset password process.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"resetUrl","description":"The customer's reset password url.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"URL","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CustomerResetByUrlPayload","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerUpdate","description":"Updates an existing customer.","args":[{"name":"customer","description":"The customer object input.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"CustomerUpdateInput","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"customerAccessToken","description":"The access token used to identify the customer.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"CustomerUpdatePayload","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INTERFACE","name":"Node","description":"An object with an ID field to support global identification, in accordance with the\n[Relay specification](https://relay.dev/graphql/objectidentification.htm#sec-Node-Interface).\nThis interface is used by the [node](https://shopify.dev/api/admin-graphql/unstable/queries/node)\nand [nodes](https://shopify.dev/api/admin-graphql/unstable/queries/nodes) queries.\n","fields":[{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":[{"kind":"OBJECT","name":"AppliedGiftCard","ofType":null},{"kind":"OBJECT","name":"Article","ofType":null},{"kind":"OBJECT","name":"Blog","ofType":null},{"kind":"OBJECT","name":"Cart","ofType":null},{"kind":"OBJECT","name":"CartLine","ofType":null},{"kind":"OBJECT","name":"Checkout","ofType":null},{"kind":"OBJECT","name":"CheckoutLineItem","ofType":null},{"kind":"OBJECT","name":"Collection","ofType":null},{"kind":"OBJECT","name":"Comment","ofType":null},{"kind":"OBJECT","name":"ExternalVideo","ofType":null},{"kind":"OBJECT","name":"GenericFile","ofType":null},{"kind":"OBJECT","name":"Location","ofType":null},{"kind":"OBJECT","name":"MailingAddress","ofType":null},{"kind":"OBJECT","name":"MediaImage","ofType":null},{"kind":"OBJECT","name":"Menu","ofType":null},{"kind":"OBJECT","name":"MenuItem","ofType":null},{"kind":"OBJECT","name":"Metafield","ofType":null},{"kind":"OBJECT","name":"Model3d","ofType":null},{"kind":"OBJECT","name":"Order","ofType":null},{"kind":"OBJECT","name":"Page","ofType":null},{"kind":"OBJECT","name":"Payment","ofType":null},{"kind":"OBJECT","name":"Product","ofType":null},{"kind":"OBJECT","name":"ProductOption","ofType":null},{"kind":"OBJECT","name":"ProductVariant","ofType":null},{"kind":"OBJECT","name":"Shop","ofType":null},{"kind":"OBJECT","name":"ShopPolicy","ofType":null},{"kind":"OBJECT","name":"UrlRedirect","ofType":null},{"kind":"OBJECT","name":"Video","ofType":null}]},{"kind":"INTERFACE","name":"OnlineStorePublishable","description":"Represents a resource that can be published to the Online Store sales channel.","fields":[{"name":"onlineStoreUrl","description":"The URL used for viewing the resource on the shop's Online Store. Returns `null` if the resource is currently not published to the Online Store sales channel.","args":[],"type":{"kind":"SCALAR","name":"URL","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":[{"kind":"OBJECT","name":"Article","ofType":null},{"kind":"OBJECT","name":"Blog","ofType":null},{"kind":"OBJECT","name":"Collection","ofType":null},{"kind":"OBJECT","name":"Page","ofType":null},{"kind":"OBJECT","name":"Product","ofType":null}]},{"kind":"OBJECT","name":"Order","description":"An order is a customer’s completed request to purchase one or more products from a shop. An order is created when a customer completes the checkout process, during which time they provides an email address, billing address and payment information.","fields":[{"name":"cancelReason","description":"The reason for the order's cancellation. Returns `null` if the order wasn't canceled.","args":[],"type":{"kind":"ENUM","name":"OrderCancelReason","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"canceledAt","description":"The date and time when the order was canceled. Returns null if the order wasn't canceled.","args":[],"type":{"kind":"SCALAR","name":"DateTime","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"currencyCode","description":"The code of the currency used for the payment.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"CurrencyCode","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"currentSubtotalPrice","description":"The subtotal of line items and their discounts, excluding line items that have been removed. Does not contain order-level discounts, duties, shipping costs, or shipping discounts. Taxes are not included unless the order is a taxes-included order.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"currentTotalDuties","description":"The total cost of duties for the order, including refunds.","args":[],"type":{"kind":"OBJECT","name":"MoneyV2","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"currentTotalPrice","description":"The total amount of the order, including duties, taxes and discounts, minus amounts for line items that have been removed.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"currentTotalTax","description":"The total of all taxes applied to the order, excluding taxes for returned line items.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"customerLocale","description":"The locale code in which this specific order happened.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"customerUrl","description":"The unique URL that the customer can use to access the order.","args":[],"type":{"kind":"SCALAR","name":"URL","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"discountApplications","description":"Discounts that have been applied on the order.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"DiscountApplicationConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"edited","description":"Whether the order has had any edits applied or not.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"email","description":"The customer's email address.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"financialStatus","description":"The financial status of the order.","args":[],"type":{"kind":"ENUM","name":"OrderFinancialStatus","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"fulfillmentStatus","description":"The fulfillment status for the order.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"OrderFulfillmentStatus","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"lineItems","description":"List of the order’s line items.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"OrderLineItemConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"metafield","description":"Returns a metafield found by namespace and key.","args":[{"name":"key","description":"Identifier for the metafield (maximum of 30 characters).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"namespace","description":"Container for a set of metafields (maximum of 20 characters).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"Metafield","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"metafields","description":"A paginated list of metafields associated with the resource.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"namespace","description":"Container for a set of metafields (maximum of 20 characters).","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MetafieldConnection","ofType":null}},"isDeprecated":true,"deprecationReason":"The `metafields` field will be removed in the future in favor of using [aliases](https://graphql.org/learn/queries/#aliases) with the `metafield` field.\n"},{"name":"name","description":"Unique identifier for the order that appears on the order.\nFor example, _#1000_ or _Store1001.\n","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"orderNumber","description":"A unique numeric identifier for the order for use by shop owner and customer.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Int","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"originalTotalDuties","description":"The total cost of duties charged at checkout.","args":[],"type":{"kind":"OBJECT","name":"MoneyV2","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"originalTotalPrice","description":"The total price of the order before any applied edits.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"phone","description":"The customer's phone number for receiving SMS notifications.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"processedAt","description":"The date and time when the order was imported.\nThis value can be set to dates in the past when importing from other systems.\nIf no value is provided, it will be auto-generated based on current date and time.\n","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"DateTime","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"shippingAddress","description":"The address to where the order will be shipped.","args":[],"type":{"kind":"OBJECT","name":"MailingAddress","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"shippingDiscountAllocations","description":"The discounts that have been allocated onto the shipping line by discount applications.\n","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"DiscountAllocation","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"statusUrl","description":"The unique URL for the order's status page.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"URL","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"subtotalPrice","description":"Price of the order before shipping and taxes.","args":[],"type":{"kind":"SCALAR","name":"Money","ofType":null},"isDeprecated":true,"deprecationReason":"Use `subtotalPriceV2` instead"},{"name":"subtotalPriceV2","description":"Price of the order before duties, shipping and taxes.","args":[],"type":{"kind":"OBJECT","name":"MoneyV2","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"successfulFulfillments","description":"List of the order’s successful fulfillments.","args":[{"name":"first","description":"Truncate the array result to this size.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Fulfillment","ofType":null}}},"isDeprecated":false,"deprecationReason":null},{"name":"totalPrice","description":"The sum of all the prices of all the items in the order, taxes and discounts included (must be positive).","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Money","ofType":null}},"isDeprecated":true,"deprecationReason":"Use `totalPriceV2` instead"},{"name":"totalPriceV2","description":"The sum of all the prices of all the items in the order, duties, taxes and discounts included (must be positive).","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"totalRefunded","description":"The total amount that has been refunded.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Money","ofType":null}},"isDeprecated":true,"deprecationReason":"Use `totalRefundedV2` instead"},{"name":"totalRefundedV2","description":"The total amount that has been refunded.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"totalShippingPrice","description":"The total cost of shipping.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Money","ofType":null}},"isDeprecated":true,"deprecationReason":"Use `totalShippingPriceV2` instead"},{"name":"totalShippingPriceV2","description":"The total cost of shipping.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"totalTax","description":"The total cost of taxes.","args":[],"type":{"kind":"SCALAR","name":"Money","ofType":null},"isDeprecated":true,"deprecationReason":"Use `totalTaxV2` instead"},{"name":"totalTaxV2","description":"The total cost of taxes.","args":[],"type":{"kind":"OBJECT","name":"MoneyV2","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"HasMetafields","ofType":null},{"kind":"INTERFACE","name":"Node","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"OrderCancelReason","description":"Represents the reason for the order's cancellation.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"CUSTOMER","description":"The customer wanted to cancel the order.","isDeprecated":false,"deprecationReason":null},{"name":"DECLINED","description":"Payment was declined.","isDeprecated":false,"deprecationReason":null},{"name":"FRAUD","description":"The order was fraudulent.","isDeprecated":false,"deprecationReason":null},{"name":"INVENTORY","description":"There was insufficient inventory.","isDeprecated":false,"deprecationReason":null},{"name":"OTHER","description":"The order was canceled for an unlisted reason.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"OrderConnection","description":"An auto-generated type for paginating through multiple Orders.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"OrderEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in OrderEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Order","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"OrderEdge","description":"An auto-generated type which holds one Order and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of OrderEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Order","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"OrderFinancialStatus","description":"Represents the order's current financial status.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"AUTHORIZED","description":"Displayed as **Authorized**.","isDeprecated":false,"deprecationReason":null},{"name":"PAID","description":"Displayed as **Paid**.","isDeprecated":false,"deprecationReason":null},{"name":"PARTIALLY_PAID","description":"Displayed as **Partially paid**.","isDeprecated":false,"deprecationReason":null},{"name":"PARTIALLY_REFUNDED","description":"Displayed as **Partially refunded**.","isDeprecated":false,"deprecationReason":null},{"name":"PENDING","description":"Displayed as **Pending**.","isDeprecated":false,"deprecationReason":null},{"name":"REFUNDED","description":"Displayed as **Refunded**.","isDeprecated":false,"deprecationReason":null},{"name":"VOIDED","description":"Displayed as **Voided**.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"ENUM","name":"OrderFulfillmentStatus","description":"Represents the order's aggregated fulfillment status for display purposes.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"FULFILLED","description":"Displayed as **Fulfilled**. All of the items in the order have been fulfilled.","isDeprecated":false,"deprecationReason":null},{"name":"IN_PROGRESS","description":"Displayed as **In progress**. Some of the items in the order have been fulfilled, or a request for fulfillment has been sent to the fulfillment service.","isDeprecated":false,"deprecationReason":null},{"name":"ON_HOLD","description":"Displayed as **On hold**. All of the unfulfilled items in this order are on hold.","isDeprecated":false,"deprecationReason":null},{"name":"OPEN","description":"Displayed as **Open**. None of the items in the order have been fulfilled. Replaced by \"UNFULFILLED\" status.","isDeprecated":false,"deprecationReason":null},{"name":"PARTIALLY_FULFILLED","description":"Displayed as **Partially fulfilled**. Some of the items in the order have been fulfilled.","isDeprecated":false,"deprecationReason":null},{"name":"PENDING_FULFILLMENT","description":"Displayed as **Pending fulfillment**. A request for fulfillment of some items awaits a response from the fulfillment service. Replaced by \"IN_PROGRESS\" status.","isDeprecated":false,"deprecationReason":null},{"name":"RESTOCKED","description":"Displayed as **Restocked**. All of the items in the order have been restocked. Replaced by \"UNFULFILLED\" status.","isDeprecated":false,"deprecationReason":null},{"name":"SCHEDULED","description":"Displayed as **Scheduled**. All of the unfulfilled items in this order are scheduled for fulfillment at later time.","isDeprecated":false,"deprecationReason":null},{"name":"UNFULFILLED","description":"Displayed as **Unfulfilled**. None of the items in the order have been fulfilled.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"OrderLineItem","description":"Represents a single line in an order. There is one line item for each distinct product variant.","fields":[{"name":"currentQuantity","description":"The number of entries associated to the line item minus the items that have been removed.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Int","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"customAttributes","description":"List of custom attributes associated to the line item.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Attribute","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"discountAllocations","description":"The discounts that have been allocated onto the order line item by discount applications.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"DiscountAllocation","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"discountedTotalPrice","description":"The total price of the line item, including discounts, and displayed in the presentment currency.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"originalTotalPrice","description":"The total price of the line item, not including any discounts. The total price is calculated using the original unit price multiplied by the quantity, and it is displayed in the presentment currency.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"quantity","description":"The number of products variants associated to the line item.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Int","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"title","description":"The title of the product combined with title of the variant.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"variant","description":"The product variant object associated to the line item.","args":[],"type":{"kind":"OBJECT","name":"ProductVariant","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"OrderLineItemConnection","description":"An auto-generated type for paginating through multiple OrderLineItems.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"OrderLineItemEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in OrderLineItemEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"OrderLineItem","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"OrderLineItemEdge","description":"An auto-generated type which holds one OrderLineItem and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of OrderLineItemEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"OrderLineItem","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"OrderSortKeys","description":"The set of valid sort keys for the Order query.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"ID","description":"Sort by the `id` value.","isDeprecated":false,"deprecationReason":null},{"name":"PROCESSED_AT","description":"Sort by the `processed_at` value.","isDeprecated":false,"deprecationReason":null},{"name":"RELEVANCE","description":"Sort by relevance to the search terms when the `query` parameter is specified on the connection.\nDon't use this sort key when no search query is specified.\n","isDeprecated":false,"deprecationReason":null},{"name":"TOTAL_PRICE","description":"Sort by the `total_price` value.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"Page","description":"Shopify merchants can create pages to hold static HTML content. Each Page object represents a custom page on the online store.","fields":[{"name":"body","description":"The description of the page, complete with HTML formatting.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"HTML","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"bodySummary","description":"Summary of the page body.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"createdAt","description":"The timestamp of the page creation.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"DateTime","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"handle","description":"A human-friendly unique string for the page automatically generated from its title.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"metafield","description":"Returns a metafield found by namespace and key.","args":[{"name":"key","description":"Identifier for the metafield (maximum of 30 characters).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"namespace","description":"Container for a set of metafields (maximum of 20 characters).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"Metafield","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"metafields","description":"A paginated list of metafields associated with the resource.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"namespace","description":"Container for a set of metafields (maximum of 20 characters).","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MetafieldConnection","ofType":null}},"isDeprecated":true,"deprecationReason":"The `metafields` field will be removed in the future in favor of using [aliases](https://graphql.org/learn/queries/#aliases) with the `metafield` field.\n"},{"name":"onlineStoreUrl","description":"The URL used for viewing the resource on the shop's Online Store. Returns `null` if the resource is currently not published to the Online Store sales channel.","args":[],"type":{"kind":"SCALAR","name":"URL","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"seo","description":"The page's SEO information.","args":[],"type":{"kind":"OBJECT","name":"SEO","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"title","description":"The title of the page.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"updatedAt","description":"The timestamp of the latest page update.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"DateTime","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"HasMetafields","ofType":null},{"kind":"INTERFACE","name":"Node","ofType":null},{"kind":"INTERFACE","name":"OnlineStorePublishable","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"PageConnection","description":"An auto-generated type for paginating through multiple Pages.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in PageEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Page","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"PageEdge","description":"An auto-generated type which holds one Page and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of PageEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Page","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"PageInfo","description":"Returns information about pagination in a connection, in accordance with the\n[Relay specification](https://relay.dev/graphql/connections.htm#sec-undefined.PageInfo).\n","fields":[{"name":"endCursor","description":"The cursor corresponding to the last node in edges.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"hasNextPage","description":"Whether there are more pages to fetch following the current page.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"hasPreviousPage","description":"Whether there are any pages prior to the current page.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"startCursor","description":"The cursor corresponding to the first node in edges.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"PageSortKeys","description":"The set of valid sort keys for the Page query.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"ID","description":"Sort by the `id` value.","isDeprecated":false,"deprecationReason":null},{"name":"RELEVANCE","description":"Sort by relevance to the search terms when the `query` parameter is specified on the connection.\nDon't use this sort key when no search query is specified.\n","isDeprecated":false,"deprecationReason":null},{"name":"TITLE","description":"Sort by the `title` value.","isDeprecated":false,"deprecationReason":null},{"name":"UPDATED_AT","description":"Sort by the `updated_at` value.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"Payment","description":"A payment applied to a checkout.","fields":[{"name":"amount","description":"The amount of the payment.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Money","ofType":null}},"isDeprecated":true,"deprecationReason":"Use `amountV2` instead"},{"name":"amountV2","description":"The amount of the payment.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"billingAddress","description":"The billing address for the payment.","args":[],"type":{"kind":"OBJECT","name":"MailingAddress","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"checkout","description":"The checkout to which the payment belongs.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Checkout","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"creditCard","description":"The credit card used for the payment in the case of direct payments.","args":[],"type":{"kind":"OBJECT","name":"CreditCard","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"errorMessage","description":"A message describing a processing error during asynchronous processing.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"idempotencyKey","description":"A client-side generated token to identify a payment and perform idempotent operations.\nFor more information, refer to\n[Idempotent requests](https://shopify.dev/api/usage/idempotent-requests).\n","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"nextActionUrl","description":"The URL where the customer needs to be redirected so they can complete the 3D Secure payment flow.","args":[],"type":{"kind":"SCALAR","name":"URL","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"ready","description":"Whether or not the payment is still processing asynchronously.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"test","description":"A flag to indicate if the payment is to be done in test mode for gateways that support it.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"transaction","description":"The actual transaction recorded by Shopify after having processed the payment with the gateway.","args":[],"type":{"kind":"OBJECT","name":"Transaction","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"Node","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"PaymentSettings","description":"Settings related to payments.","fields":[{"name":"acceptedCardBrands","description":"List of the card brands which the shop accepts.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"CardBrand","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"cardVaultUrl","description":"The url pointing to the endpoint to vault credit cards.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"URL","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"countryCode","description":"The country where the shop is located.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"CountryCode","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"currencyCode","description":"The three-letter code for the shop's primary currency.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"CurrencyCode","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"enabledPresentmentCurrencies","description":"A list of enabled currencies (ISO 4217 format) that the shop accepts. Merchants can enable currencies from their Shopify Payments settings in the Shopify admin.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"CurrencyCode","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"shopifyPaymentsAccountId","description":"The shop’s Shopify Payments account id.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"supportedDigitalWallets","description":"List of the digital wallets which the shop supports.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"DigitalWallet","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"PaymentTokenType","description":"The valid values for the types of payment token.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"APPLE_PAY","description":"Apple Pay token type.","isDeprecated":false,"deprecationReason":null},{"name":"GOOGLE_PAY","description":"Google Pay token type.","isDeprecated":false,"deprecationReason":null},{"name":"SHOPIFY_PAY","description":"Shopify Pay token type.","isDeprecated":false,"deprecationReason":null},{"name":"STRIPE_VAULT_TOKEN","description":"Stripe token type.","isDeprecated":false,"deprecationReason":null},{"name":"VAULT","description":"Vault payment token type.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"PriceRangeFilter","description":"A filter used to view a subset of products in a collection matching a specific price range.","fields":null,"inputFields":[{"name":"max","description":"The maximum price in the range. Empty indicates no max price.","type":{"kind":"SCALAR","name":"Float","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"min","description":"The minimum price in the range. Defaults to zero.","type":{"kind":"SCALAR","name":"Float","ofType":null},"defaultValue":"0","isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"PricingPercentageValue","description":"The value of the percentage pricing object.","fields":[{"name":"percentage","description":"The percentage value of the object.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Float","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"UNION","name":"PricingValue","description":"The price value (fixed or percentage) for a discount application.","fields":null,"inputFields":null,"interfaces":null,"enumValues":null,"possibleTypes":[{"kind":"OBJECT","name":"MoneyV2","ofType":null},{"kind":"OBJECT","name":"PricingPercentageValue","ofType":null}]},{"kind":"OBJECT","name":"Product","description":"A product represents an individual item for sale in a Shopify store. Products are often physical, but they don't have to be.\nFor example, a digital download (such as a movie, music or ebook file) also qualifies as a product, as do services (such as equipment rental, work for hire, customization of another product or an extended warranty).","fields":[{"name":"availableForSale","description":"Indicates if at least one product variant is available for sale.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"collections","description":"List of collections a product belongs to.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CollectionConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"compareAtPriceRange","description":"The compare at price of the product across all variants.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"ProductPriceRange","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"createdAt","description":"The date and time when the product was created.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"DateTime","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"description","description":"Stripped description of the product, single line with HTML tags removed.","args":[{"name":"truncateAt","description":"Truncates string after the given length.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"descriptionHtml","description":"The description of the product, complete with HTML formatting.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"HTML","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"featuredImage","description":"The featured image for the product.\n\nThis field is functionally equivalent to `images(first: 1)`.\n","args":[],"type":{"kind":"OBJECT","name":"Image","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"handle","description":"A human-friendly unique string for the Product automatically generated from its title.\nThey are used by the Liquid templating language to refer to objects.\n","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"images","description":"List of images associated with the product.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null},{"name":"sortKey","description":"Sort the underlying list by the given key.","type":{"kind":"ENUM","name":"ProductImageSortKeys","ofType":null},"defaultValue":"POSITION","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"ImageConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"media","description":"The media associated with the product.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null},{"name":"sortKey","description":"Sort the underlying list by the given key.","type":{"kind":"ENUM","name":"ProductMediaSortKeys","ofType":null},"defaultValue":"POSITION","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MediaConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"metafield","description":"Returns a metafield found by namespace and key.","args":[{"name":"key","description":"Identifier for the metafield (maximum of 30 characters).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"namespace","description":"Container for a set of metafields (maximum of 20 characters).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"Metafield","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"metafields","description":"A paginated list of metafields associated with the resource.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"namespace","description":"Container for a set of metafields (maximum of 20 characters).","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MetafieldConnection","ofType":null}},"isDeprecated":true,"deprecationReason":"The `metafields` field will be removed in the future in favor of using [aliases](https://graphql.org/learn/queries/#aliases) with the `metafield` field.\n"},{"name":"onlineStoreUrl","description":"The URL used for viewing the resource on the shop's Online Store. Returns `null` if the resource is currently not published to the Online Store sales channel.","args":[],"type":{"kind":"SCALAR","name":"URL","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"options","description":"List of product options.","args":[{"name":"first","description":"Truncate the array result to this size.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"ProductOption","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"priceRange","description":"The price range.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"ProductPriceRange","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"productType","description":"A categorization that a product can be tagged with, commonly used for filtering and searching.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"publishedAt","description":"The date and time when the product was published to the channel.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"DateTime","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"requiresSellingPlan","description":"Whether the product can only be purchased with a selling plan.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"sellingPlanGroups","description":"A list of a product's available selling plan groups. A selling plan group represents a selling method. For example, 'Subscribe and save' is a selling method where customers pay for goods or services per delivery. A selling plan group contains individual selling plans.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"SellingPlanGroupConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"seo","description":"The product's SEO information.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"SEO","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"tags","description":"A comma separated list of tags that have been added to the product.\nAdditional access scope required for private apps: unauthenticated_read_product_tags.\n","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"title","description":"The product’s title.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"totalInventory","description":"The total quantity of inventory in stock for this Product.","args":[],"type":{"kind":"SCALAR","name":"Int","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"updatedAt","description":"The date and time when the product was last modified.\nA product's `updatedAt` value can change for different reasons. For example, if an order\nis placed for a product that has inventory tracking set up, then the inventory adjustment\nis counted as an update.\n","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"DateTime","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"variantBySelectedOptions","description":"Find a product’s variant based on its selected options.\nThis is useful for converting a user’s selection of product options into a single matching variant.\nIf there is not a variant for the selected options, `null` will be returned.\n","args":[{"name":"selectedOptions","description":"The input fields used for a selected option.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"SelectedOptionInput","ofType":null}}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"ProductVariant","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"variants","description":"List of the product’s variants.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null},{"name":"sortKey","description":"Sort the underlying list by the given key.","type":{"kind":"ENUM","name":"ProductVariantSortKeys","ofType":null},"defaultValue":"POSITION","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"ProductVariantConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"vendor","description":"The product’s vendor name.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"HasMetafields","ofType":null},{"kind":"INTERFACE","name":"Node","ofType":null},{"kind":"INTERFACE","name":"OnlineStorePublishable","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"ProductCollectionSortKeys","description":"The set of valid sort keys for the ProductCollection query.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"BEST_SELLING","description":"Sort by the `best-selling` value.","isDeprecated":false,"deprecationReason":null},{"name":"COLLECTION_DEFAULT","description":"Sort by the `collection-default` value.","isDeprecated":false,"deprecationReason":null},{"name":"CREATED","description":"Sort by the `created` value.","isDeprecated":false,"deprecationReason":null},{"name":"ID","description":"Sort by the `id` value.","isDeprecated":false,"deprecationReason":null},{"name":"MANUAL","description":"Sort by the `manual` value.","isDeprecated":false,"deprecationReason":null},{"name":"PRICE","description":"Sort by the `price` value.","isDeprecated":false,"deprecationReason":null},{"name":"RELEVANCE","description":"Sort by relevance to the search terms when the `query` parameter is specified on the connection.\nDon't use this sort key when no search query is specified.\n","isDeprecated":false,"deprecationReason":null},{"name":"TITLE","description":"Sort by the `title` value.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"ProductConnection","description":"An auto-generated type for paginating through multiple Products.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"ProductEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"filters","description":"A list of available filters.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Filter","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in ProductEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Product","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"ProductEdge","description":"An auto-generated type which holds one Product and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of ProductEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Product","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"ProductFilter","description":"A filter used to view a subset of products in a collection.","fields":null,"inputFields":[{"name":"available","description":"Filter on if the product is available for sale.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"price","description":"A range of prices to filter with-in.","type":{"kind":"INPUT_OBJECT","name":"PriceRangeFilter","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"productMetafield","description":"A product metafield to filter on.","type":{"kind":"INPUT_OBJECT","name":"MetafieldFilter","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"productType","description":"The product type to filter on.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"productVendor","description":"The product vendor to filter on.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"variantMetafield","description":"A variant metafield to filter on.","type":{"kind":"INPUT_OBJECT","name":"MetafieldFilter","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"variantOption","description":"A variant option to filter on.","type":{"kind":"INPUT_OBJECT","name":"VariantOptionFilter","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"ProductImageSortKeys","description":"The set of valid sort keys for the ProductImage query.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"CREATED_AT","description":"Sort by the `created_at` value.","isDeprecated":false,"deprecationReason":null},{"name":"ID","description":"Sort by the `id` value.","isDeprecated":false,"deprecationReason":null},{"name":"POSITION","description":"Sort by the `position` value.","isDeprecated":false,"deprecationReason":null},{"name":"RELEVANCE","description":"Sort by relevance to the search terms when the `query` parameter is specified on the connection.\nDon't use this sort key when no search query is specified.\n","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"ENUM","name":"ProductMediaSortKeys","description":"The set of valid sort keys for the ProductMedia query.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"ID","description":"Sort by the `id` value.","isDeprecated":false,"deprecationReason":null},{"name":"POSITION","description":"Sort by the `position` value.","isDeprecated":false,"deprecationReason":null},{"name":"RELEVANCE","description":"Sort by relevance to the search terms when the `query` parameter is specified on the connection.\nDon't use this sort key when no search query is specified.\n","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"ProductOption","description":"Product property names like \"Size\", \"Color\", and \"Material\" that the customers can select.\nVariants are selected based on permutations of these options.\n255 characters limit each.\n","fields":[{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"name","description":"The product option’s name.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"values","description":"The corresponding value to the product option name.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"Node","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"ProductPriceRange","description":"The price range of the product.","fields":[{"name":"maxVariantPrice","description":"The highest variant's price.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"minVariantPrice","description":"The lowest variant's price.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"ProductSortKeys","description":"The set of valid sort keys for the Product query.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"BEST_SELLING","description":"Sort by the `best_selling` value.","isDeprecated":false,"deprecationReason":null},{"name":"CREATED_AT","description":"Sort by the `created_at` value.","isDeprecated":false,"deprecationReason":null},{"name":"ID","description":"Sort by the `id` value.","isDeprecated":false,"deprecationReason":null},{"name":"PRICE","description":"Sort by the `price` value.","isDeprecated":false,"deprecationReason":null},{"name":"PRODUCT_TYPE","description":"Sort by the `product_type` value.","isDeprecated":false,"deprecationReason":null},{"name":"RELEVANCE","description":"Sort by relevance to the search terms when the `query` parameter is specified on the connection.\nDon't use this sort key when no search query is specified.\n","isDeprecated":false,"deprecationReason":null},{"name":"TITLE","description":"Sort by the `title` value.","isDeprecated":false,"deprecationReason":null},{"name":"UPDATED_AT","description":"Sort by the `updated_at` value.","isDeprecated":false,"deprecationReason":null},{"name":"VENDOR","description":"Sort by the `vendor` value.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"ProductVariant","description":"A product variant represents a different version of a product, such as differing sizes or differing colors.","fields":[{"name":"availableForSale","description":"Indicates if the product variant is available for sale.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"barcode","description":"The barcode (for example, ISBN, UPC, or GTIN) associated with the variant.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"compareAtPrice","description":"The compare at price of the variant. This can be used to mark a variant as on sale, when `compareAtPrice` is higher than `price`.","args":[],"type":{"kind":"SCALAR","name":"Money","ofType":null},"isDeprecated":true,"deprecationReason":"Use `compareAtPriceV2` instead"},{"name":"compareAtPriceV2","description":"The compare at price of the variant. This can be used to mark a variant as on sale, when `compareAtPriceV2` is higher than `priceV2`.","args":[],"type":{"kind":"OBJECT","name":"MoneyV2","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"currentlyNotInStock","description":"Whether a product is out of stock but still available for purchase (used for backorders).","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"image","description":"Image associated with the product variant. This field falls back to the product image if no image is available.\n","args":[],"type":{"kind":"OBJECT","name":"Image","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"metafield","description":"Returns a metafield found by namespace and key.","args":[{"name":"key","description":"Identifier for the metafield (maximum of 30 characters).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"namespace","description":"Container for a set of metafields (maximum of 20 characters).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"Metafield","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"metafields","description":"A paginated list of metafields associated with the resource.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"namespace","description":"Container for a set of metafields (maximum of 20 characters).","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MetafieldConnection","ofType":null}},"isDeprecated":true,"deprecationReason":"The `metafields` field will be removed in the future in favor of using [aliases](https://graphql.org/learn/queries/#aliases) with the `metafield` field.\n"},{"name":"price","description":"The product variant’s price.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Money","ofType":null}},"isDeprecated":true,"deprecationReason":"Use `priceV2` instead"},{"name":"priceV2","description":"The product variant’s price.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"product","description":"The product object that the product variant belongs to.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Product","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"quantityAvailable","description":"The total sellable quantity of the variant for online sales channels.","args":[],"type":{"kind":"SCALAR","name":"Int","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"requiresShipping","description":"Whether a customer needs to provide a shipping address when placing an order for the product variant.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"selectedOptions","description":"List of product options applied to the variant.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"SelectedOption","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"sellingPlanAllocations","description":"Represents an association between a variant and a selling plan. Selling plan allocations describe which selling plans are available for each variant, and what their impact is on pricing.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"SellingPlanAllocationConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"sku","description":"The SKU (stock keeping unit) associated with the variant.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"storeAvailability","description":"The in-store pickup availability of this variant by location.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"StoreAvailabilityConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"title","description":"The product variant’s title.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"unitPrice","description":"The unit price value for the variant based on the variant's measurement.","args":[],"type":{"kind":"OBJECT","name":"MoneyV2","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"unitPriceMeasurement","description":"The unit price measurement for the variant.","args":[],"type":{"kind":"OBJECT","name":"UnitPriceMeasurement","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"weight","description":"The weight of the product variant in the unit system specified with `weight_unit`.","args":[],"type":{"kind":"SCALAR","name":"Float","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"weightUnit","description":"Unit of measurement for weight.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"WeightUnit","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"HasMetafields","ofType":null},{"kind":"INTERFACE","name":"Node","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"ProductVariantConnection","description":"An auto-generated type for paginating through multiple ProductVariants.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"ProductVariantEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in ProductVariantEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"ProductVariant","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"ProductVariantEdge","description":"An auto-generated type which holds one ProductVariant and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of ProductVariantEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"ProductVariant","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"ProductVariantSortKeys","description":"The set of valid sort keys for the ProductVariant query.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"ID","description":"Sort by the `id` value.","isDeprecated":false,"deprecationReason":null},{"name":"POSITION","description":"Sort by the `position` value.","isDeprecated":false,"deprecationReason":null},{"name":"RELEVANCE","description":"Sort by relevance to the search terms when the `query` parameter is specified on the connection.\nDon't use this sort key when no search query is specified.\n","isDeprecated":false,"deprecationReason":null},{"name":"SKU","description":"Sort by the `sku` value.","isDeprecated":false,"deprecationReason":null},{"name":"TITLE","description":"Sort by the `title` value.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"QueryRoot","description":"The schema’s entry-point for queries. This acts as the public, top-level API from which all queries must start.","fields":[{"name":"articles","description":"List of the shop's articles.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"query","description":"Supported filter parameters:\n - `author`\n - `blog_title`\n - `created_at`\n - `tag`\n - `tag_not`\n - `updated_at`\n\nSee the detailed [search syntax](https://shopify.dev/api/usage/search-syntax)\nfor more information about using filters.\n","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null},{"name":"sortKey","description":"Sort the underlying list by the given key.","type":{"kind":"ENUM","name":"ArticleSortKeys","ofType":null},"defaultValue":"ID","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"ArticleConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"blog","description":"Fetch a specific `Blog` by one of its unique attributes.","args":[{"name":"handle","description":"The handle of the `Blog`.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"The ID of the `Blog`.","type":{"kind":"SCALAR","name":"ID","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"Blog","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"blogByHandle","description":"Find a blog by its handle.","args":[{"name":"handle","description":"The handle of the blog.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"Blog","ofType":null},"isDeprecated":true,"deprecationReason":"Use `blog` instead"},{"name":"blogs","description":"List of the shop's blogs.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"query","description":"Supported filter parameters:\n - `created_at`\n - `handle`\n - `title`\n - `updated_at`\n\nSee the detailed [search syntax](https://shopify.dev/api/usage/search-syntax)\nfor more information about using filters.\n","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null},{"name":"sortKey","description":"Sort the underlying list by the given key.","type":{"kind":"ENUM","name":"BlogSortKeys","ofType":null},"defaultValue":"ID","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"BlogConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"cart","description":"Find a cart by its ID.","args":[{"name":"id","description":"The id of the cart.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"Cart","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"collection","description":"Fetch a specific `Collection` by one of its unique attributes.","args":[{"name":"handle","description":"The handle of the `Collection`.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"The ID of the `Collection`.","type":{"kind":"SCALAR","name":"ID","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"Collection","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"collectionByHandle","description":"Find a collection by its handle.","args":[{"name":"handle","description":"The handle of the collection.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"Collection","ofType":null},"isDeprecated":true,"deprecationReason":"Use `collection` instead"},{"name":"collections","description":"List of the shop’s collections.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"query","description":"Supported filter parameters:\n - `collection_type`\n - `title`\n - `updated_at`\n\nSee the detailed [search syntax](https://shopify.dev/api/usage/search-syntax)\nfor more information about using filters.\n","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null},{"name":"sortKey","description":"Sort the underlying list by the given key.","type":{"kind":"ENUM","name":"CollectionSortKeys","ofType":null},"defaultValue":"ID","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"CollectionConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"customer","description":"Find a customer by its access token.","args":[{"name":"customerAccessToken","description":"The customer access token.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"Customer","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"localization","description":"Returns the localized experiences configured for the shop.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Localization","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"locations","description":"List of the shop's locations that support in-store pickup.\n\nWhen sorting by distance, you must specify a location via the `near` argument.\n","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"near","description":"Used to sort results based on proximity to the provided location.","type":{"kind":"INPUT_OBJECT","name":"GeoCoordinateInput","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null},{"name":"sortKey","description":"Sort the underlying list by the given key.","type":{"kind":"ENUM","name":"LocationSortKeys","ofType":null},"defaultValue":"ID","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"LocationConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"menu","description":"A storefront menu.","args":[{"name":"handle","description":"Returns a storefront menu by the specified handle.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"Menu","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"Returns a specific node by ID.","args":[{"name":"id","description":"The ID of the Node to return.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"INTERFACE","name":"Node","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"Returns the list of nodes with the given IDs.","args":[{"name":"ids","description":"The IDs of the Nodes to return.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}}}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"INTERFACE","name":"Node","ofType":null}}},"isDeprecated":false,"deprecationReason":null},{"name":"page","description":"Fetch a specific `Page` by one of its unique attributes.","args":[{"name":"handle","description":"The handle of the `Page`.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"The ID of the `Page`.","type":{"kind":"SCALAR","name":"ID","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"Page","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"pageByHandle","description":"Find a page by its handle.","args":[{"name":"handle","description":"The handle of the page.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"Page","ofType":null},"isDeprecated":true,"deprecationReason":"Use `page` instead"},{"name":"pages","description":"List of the shop's pages.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"query","description":"Supported filter parameters:\n - `created_at`\n - `handle`\n - `title`\n - `updated_at`\n\nSee the detailed [search syntax](https://shopify.dev/api/usage/search-syntax)\nfor more information about using filters.\n","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null},{"name":"sortKey","description":"Sort the underlying list by the given key.","type":{"kind":"ENUM","name":"PageSortKeys","ofType":null},"defaultValue":"ID","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"product","description":"Fetch a specific `Product` by one of its unique attributes.","args":[{"name":"handle","description":"The handle of the `Product`.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"The ID of the `Product`.","type":{"kind":"SCALAR","name":"ID","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"Product","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"productByHandle","description":"Find a product by its handle.","args":[{"name":"handle","description":"The handle of the product.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"Product","ofType":null},"isDeprecated":true,"deprecationReason":"Use `product` instead"},{"name":"productRecommendations","description":"Find recommended products related to a given `product_id`.\nTo learn more about how recommendations are generated, see\n[*Showing product recommendations on product pages*](https://help.shopify.com/themes/development/recommended-products).\n","args":[{"name":"productId","description":"The id of the product.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Product","ofType":null}}},"isDeprecated":false,"deprecationReason":null},{"name":"productTags","description":"Tags added to products.\nAdditional access scope required: unauthenticated_read_product_tags.\n","args":[{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Int","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"StringConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"productTypes","description":"List of product types for the shop's products that are published to your app.","args":[{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Int","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"StringConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"products","description":"List of the shop’s products.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"query","description":"Supported filter parameters:\n - `available_for_sale`\n - `created_at`\n - `product_type`\n - `tag`\n - `tag_not`\n - `title`\n - `updated_at`\n - `variants.price`\n - `vendor`\n\nSee the detailed [search syntax](https://shopify.dev/api/usage/search-syntax)\nfor more information about using filters.\n","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null},{"name":"sortKey","description":"Sort the underlying list by the given key.","type":{"kind":"ENUM","name":"ProductSortKeys","ofType":null},"defaultValue":"ID","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"ProductConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"publicApiVersions","description":"The list of public Storefront API versions, including supported, release candidate and unstable versions.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"ApiVersion","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"shop","description":"The shop associated with the storefront access token.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Shop","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"urlRedirects","description":"A list of redirects for a shop.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UrlRedirectConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"SEO","description":"SEO information.","fields":[{"name":"description","description":"The meta description.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"title","description":"The SEO title.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"ScriptDiscountApplication","description":"Script discount applications capture the intentions of a discount that\nwas created by a Shopify Script.\n","fields":[{"name":"allocationMethod","description":"The method by which the discount's value is allocated to its entitled items.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"DiscountApplicationAllocationMethod","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"targetSelection","description":"Which lines of targetType that the discount is allocated over.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"DiscountApplicationTargetSelection","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"targetType","description":"The type of line that the discount is applicable towards.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"DiscountApplicationTargetType","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"title","description":"The title of the application as defined by the Script.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"value","description":"The value of the discount application.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"UNION","name":"PricingValue","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"DiscountApplication","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"SelectedOption","description":"Properties used by customers to select a product variant.\nProducts can have multiple options, like different sizes or colors.\n","fields":[{"name":"name","description":"The product option’s name.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"value","description":"The product option’s value.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"SelectedOptionInput","description":"Specifies the input fields required for a selected option.","fields":null,"inputFields":[{"name":"name","description":"The product option’s name.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"value","description":"The product option’s value.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"SellingPlan","description":"Represents how products and variants can be sold and purchased.","fields":[{"name":"description","description":"The description of the selling plan.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"name","description":"The name of the selling plan. For example, '6 weeks of prepaid granola, delivered weekly'.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"options","description":"The selling plan options available in the drop-down list in the storefront. For example, 'Delivery every week' or 'Delivery every 2 weeks' specifies the delivery frequency options for the product.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"SellingPlanOption","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"priceAdjustments","description":"The price adjustments that a selling plan makes when a variant is purchased with a selling plan.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"SellingPlanPriceAdjustment","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"recurringDeliveries","description":"Whether purchasing the selling plan will result in multiple deliveries.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"SellingPlanAllocation","description":"Represents an association between a variant and a selling plan. Selling plan allocations describe the options offered for each variant, and the price of the variant when purchased with a selling plan.","fields":[{"name":"priceAdjustments","description":"A list of price adjustments, with a maximum of two. When there are two, the first price adjustment goes into effect at the time of purchase, while the second one starts after a certain number of orders. A price adjustment represents how a selling plan affects pricing when a variant is purchased with a selling plan. Prices display in the customer's currency if the shop is configured for it.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"SellingPlanAllocationPriceAdjustment","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"sellingPlan","description":"A representation of how products and variants can be sold and purchased. For example, an individual selling plan could be '6 weeks of prepaid granola, delivered weekly'.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"SellingPlan","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"SellingPlanAllocationConnection","description":"An auto-generated type for paginating through multiple SellingPlanAllocations.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"SellingPlanAllocationEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in SellingPlanAllocationEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"SellingPlanAllocation","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"SellingPlanAllocationEdge","description":"An auto-generated type which holds one SellingPlanAllocation and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of SellingPlanAllocationEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"SellingPlanAllocation","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"SellingPlanAllocationPriceAdjustment","description":"The resulting prices for variants when they're purchased with a specific selling plan.","fields":[{"name":"compareAtPrice","description":"The price of the variant when it's purchased without a selling plan for the same number of deliveries. For example, if a customer purchases 6 deliveries of $10.00 granola separately, then the price is 6 x $10.00 = $60.00.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"perDeliveryPrice","description":"The effective price for a single delivery. For example, for a prepaid subscription plan that includes 6 deliveries at the price of $48.00, the per delivery price is $8.00.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"price","description":"The price of the variant when it's purchased with a selling plan For example, for a prepaid subscription plan that includes 6 deliveries of $10.00 granola, where the customer gets 20% off, the price is 6 x $10.00 x 0.80 = $48.00.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"unitPrice","description":"The resulting price per unit for the variant associated with the selling plan. If the variant isn't sold by quantity or measurement, then this field returns `null`.","args":[],"type":{"kind":"OBJECT","name":"MoneyV2","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"SellingPlanConnection","description":"An auto-generated type for paginating through multiple SellingPlans.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"SellingPlanEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in SellingPlanEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"SellingPlan","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"SellingPlanEdge","description":"An auto-generated type which holds one SellingPlan and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of SellingPlanEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"SellingPlan","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"SellingPlanFixedAmountPriceAdjustment","description":"A fixed amount that's deducted from the original variant price. For example, $10.00 off.","fields":[{"name":"adjustmentAmount","description":"The money value of the price adjustment.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"SellingPlanFixedPriceAdjustment","description":"A fixed price adjustment for a variant that's purchased with a selling plan.","fields":[{"name":"price","description":"A new price of the variant when it's purchased with the selling plan.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"SellingPlanGroup","description":"Represents a selling method. For example, 'Subscribe and save' is a selling method where customers pay for goods or services per delivery. A selling plan group contains individual selling plans.","fields":[{"name":"appName","description":"A display friendly name for the app that created the selling plan group.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"name","description":"The name of the selling plan group.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"options","description":"Represents the selling plan options available in the drop-down list in the storefront. For example, 'Delivery every week' or 'Delivery every 2 weeks' specifies the delivery frequency options for the product.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"SellingPlanGroupOption","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"sellingPlans","description":"A list of selling plans in a selling plan group. A selling plan is a representation of how products and variants can be sold and purchased. For example, an individual selling plan could be '6 weeks of prepaid granola, delivered weekly'.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"SellingPlanConnection","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"SellingPlanGroupConnection","description":"An auto-generated type for paginating through multiple SellingPlanGroups.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"SellingPlanGroupEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in SellingPlanGroupEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"SellingPlanGroup","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"SellingPlanGroupEdge","description":"An auto-generated type which holds one SellingPlanGroup and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of SellingPlanGroupEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"SellingPlanGroup","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"SellingPlanGroupOption","description":"Represents an option on a selling plan group that's available in the drop-down list in the storefront.","fields":[{"name":"name","description":"The name of the option. For example, 'Delivery every'.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"values","description":"The values for the options specified by the selling plans in the selling plan group. For example, '1 week', '2 weeks', '3 weeks'.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"SellingPlanOption","description":"An option provided by a Selling Plan.","fields":[{"name":"name","description":"The name of the option (ie \"Delivery every\").","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"value","description":"The value of the option (ie \"Month\").","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"SellingPlanPercentagePriceAdjustment","description":"A percentage amount that's deducted from the original variant price. For example, 10% off.","fields":[{"name":"adjustmentPercentage","description":"The percentage value of the price adjustment.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Int","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"SellingPlanPriceAdjustment","description":"Represents by how much the price of a variant associated with a selling plan is adjusted. Each variant can have up to two price adjustments.","fields":[{"name":"adjustmentValue","description":"The type of price adjustment. An adjustment value can have one of three types: percentage, amount off, or a new price.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"UNION","name":"SellingPlanPriceAdjustmentValue","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"orderCount","description":"The number of orders that the price adjustment applies to If the price adjustment always applies, then this field is `null`.","args":[],"type":{"kind":"SCALAR","name":"Int","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"UNION","name":"SellingPlanPriceAdjustmentValue","description":"Represents by how much the price of a variant associated with a selling plan is adjusted. Each variant can have up to two price adjustments.","fields":null,"inputFields":null,"interfaces":null,"enumValues":null,"possibleTypes":[{"kind":"OBJECT","name":"SellingPlanFixedAmountPriceAdjustment","ofType":null},{"kind":"OBJECT","name":"SellingPlanFixedPriceAdjustment","ofType":null},{"kind":"OBJECT","name":"SellingPlanPercentagePriceAdjustment","ofType":null}]},{"kind":"OBJECT","name":"ShippingRate","description":"A shipping rate to be applied to a checkout.","fields":[{"name":"handle","description":"Human-readable unique identifier for this shipping rate.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"price","description":"Price of this shipping rate.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Money","ofType":null}},"isDeprecated":true,"deprecationReason":"Use `priceV2` instead"},{"name":"priceV2","description":"Price of this shipping rate.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"title","description":"Title of this shipping rate.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"Shop","description":"Shop represents a collection of the general settings and information about the shop.","fields":[{"name":"description","description":"A description of the shop.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"metafield","description":"Returns a metafield found by namespace and key.","args":[{"name":"key","description":"Identifier for the metafield (maximum of 30 characters).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"namespace","description":"Container for a set of metafields (maximum of 20 characters).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"type":{"kind":"OBJECT","name":"Metafield","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"metafields","description":"A paginated list of metafields associated with the resource.","args":[{"name":"after","description":"Returns the elements that come after the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"before","description":"Returns the elements that come before the specified cursor.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"first","description":"Returns up to the first `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"last","description":"Returns up to the last `n` elements from the list.","type":{"kind":"SCALAR","name":"Int","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"namespace","description":"Container for a set of metafields (maximum of 20 characters).","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"reverse","description":"Reverse the order of the underlying list.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MetafieldConnection","ofType":null}},"isDeprecated":true,"deprecationReason":"The `metafields` field will be removed in the future in favor of using [aliases](https://graphql.org/learn/queries/#aliases) with the `metafield` field.\n"},{"name":"moneyFormat","description":"A string representing the way currency is formatted when the currency isn’t specified.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"name","description":"The shop’s name.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"paymentSettings","description":"Settings related to payments.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PaymentSettings","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"primaryDomain","description":"The shop’s primary domain.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Domain","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"privacyPolicy","description":"The shop’s privacy policy.","args":[],"type":{"kind":"OBJECT","name":"ShopPolicy","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"refundPolicy","description":"The shop’s refund policy.","args":[],"type":{"kind":"OBJECT","name":"ShopPolicy","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"shippingPolicy","description":"The shop’s shipping policy.","args":[],"type":{"kind":"OBJECT","name":"ShopPolicy","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"shipsToCountries","description":"Countries that the shop ships to.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"CountryCode","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"subscriptionPolicy","description":"The shop’s subscription policy.","args":[],"type":{"kind":"OBJECT","name":"ShopPolicyWithDefault","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"termsOfService","description":"The shop’s terms of service.","args":[],"type":{"kind":"OBJECT","name":"ShopPolicy","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"HasMetafields","ofType":null},{"kind":"INTERFACE","name":"Node","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"ShopPolicy","description":"Policy that a merchant has configured for their store, such as their refund or privacy policy.","fields":[{"name":"body","description":"Policy text, maximum size of 64kb.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"handle","description":"Policy’s handle.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"title","description":"Policy’s title.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"url","description":"Public URL to the policy.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"URL","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"Node","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"ShopPolicyWithDefault","description":"A policy for the store that comes with a default value, such as a subscription policy.\nIf the merchant hasn't configured a policy for their store, then the policy will return the default value.\nOtherwise, the policy will return the merchant-configured value.\n","fields":[{"name":"body","description":"The text of the policy. Maximum size: 64KB.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"handle","description":"The handle of the policy.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"The unique identifier of the policy. A default policy doesn't have an ID.","args":[],"type":{"kind":"SCALAR","name":"ID","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"title","description":"The title of the policy.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"url","description":"Public URL to the policy.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"URL","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"StoreAvailability","description":"The availability of a product variant at a particular location.\nLocal pick-up must be enabled in the store's shipping settings, otherwise this will return an empty result.\n","fields":[{"name":"available","description":"Whether or not this product variant is in-stock at this location.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"location","description":"The location where this product variant is stocked at.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"Location","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"pickUpTime","description":"Returns the estimated amount of time it takes for pickup to be ready (Example: Usually ready in 24 hours).","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"StoreAvailabilityConnection","description":"An auto-generated type for paginating through multiple StoreAvailabilities.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"StoreAvailabilityEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in StoreAvailabilityEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"StoreAvailability","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"StoreAvailabilityEdge","description":"An auto-generated type which holds one StoreAvailability and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of StoreAvailabilityEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"StoreAvailability","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"SCALAR","name":"String","description":"The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.","fields":null,"inputFields":null,"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"StringConnection","description":"An auto-generated type for paginating through a list of Strings.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"StringEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"StringEdge","description":"An auto-generated type which holds one String and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of StringEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"TokenizedPaymentInput","description":"Specifies the fields required to complete a checkout with\na tokenized payment.\n","fields":null,"inputFields":[{"name":"amount","description":"The amount of the payment.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Money","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"billingAddress","description":"The billing address for the payment.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"MailingAddressInput","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"idempotencyKey","description":"A unique client generated key used to avoid duplicate charges. When a duplicate payment is found, the original is returned instead of creating a new one. For more information, refer to [Idempotent requests](https://shopify.dev/api/usage/idempotent-requests).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"identifier","description":"Public Hash Key used for AndroidPay payments only.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"paymentData","description":"A simple string or JSON containing the required payment data for the tokenized payment.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"test","description":"Executes the payment in test mode if possible. Defaults to `false`.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null},{"name":"type","description":"The type of payment token.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"TokenizedPaymentInputV2","description":"Specifies the fields required to complete a checkout with\na tokenized payment.\n","fields":null,"inputFields":[{"name":"billingAddress","description":"The billing address for the payment.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"MailingAddressInput","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"idempotencyKey","description":"A unique client generated key used to avoid duplicate charges. When a duplicate payment is found, the original is returned instead of creating a new one. For more information, refer to [Idempotent requests](https://shopify.dev/api/usage/idempotent-requests).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"identifier","description":"Public Hash Key used for AndroidPay payments only.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"paymentAmount","description":"The amount and currency of the payment.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"MoneyInput","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"paymentData","description":"A simple string or JSON containing the required payment data for the tokenized payment.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"test","description":"Whether to execute the payment in test mode, if possible. Test mode is not supported in production stores. Defaults to `false`.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null},{"name":"type","description":"The type of payment token.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"TokenizedPaymentInputV3","description":"Specifies the fields required to complete a checkout with\na tokenized payment.\n","fields":null,"inputFields":[{"name":"billingAddress","description":"The billing address for the payment.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"MailingAddressInput","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"idempotencyKey","description":"A unique client generated key used to avoid duplicate charges. When a duplicate payment is found, the original is returned instead of creating a new one. For more information, refer to [Idempotent requests](https://shopify.dev/api/usage/idempotent-requests).","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"identifier","description":"Public Hash Key used for AndroidPay payments only.","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"paymentAmount","description":"The amount and currency of the payment.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"INPUT_OBJECT","name":"MoneyInput","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"paymentData","description":"A simple string or JSON containing the required payment data for the tokenized payment.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"test","description":"Whether to execute the payment in test mode, if possible. Test mode is not supported in production stores. Defaults to `false`.","type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null},{"name":"type","description":"The type of payment token.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"PaymentTokenType","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"Transaction","description":"An object representing exchange of money for a product or service.","fields":[{"name":"amount","description":"The amount of money that the transaction was for.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Money","ofType":null}},"isDeprecated":true,"deprecationReason":"Use `amountV2` instead"},{"name":"amountV2","description":"The amount of money that the transaction was for.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"MoneyV2","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"kind","description":"The kind of the transaction.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"TransactionKind","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"status","description":"The status of the transaction.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"TransactionStatus","ofType":null}},"isDeprecated":true,"deprecationReason":"Use `statusV2` instead"},{"name":"statusV2","description":"The status of the transaction.","args":[],"type":{"kind":"ENUM","name":"TransactionStatus","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"test","description":"Whether the transaction was done in test mode or not.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"TransactionKind","description":"The different kinds of order transactions.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"AUTHORIZATION","description":"An amount reserved against the cardholder's funding source.\nMoney does not change hands until the authorization is captured.\n","isDeprecated":false,"deprecationReason":null},{"name":"CAPTURE","description":"A transfer of the money that was reserved during the authorization stage.","isDeprecated":false,"deprecationReason":null},{"name":"CHANGE","description":"Money returned to the customer when they have paid too much.","isDeprecated":false,"deprecationReason":null},{"name":"EMV_AUTHORIZATION","description":"An authorization for a payment taken with an EMV credit card reader.","isDeprecated":false,"deprecationReason":null},{"name":"SALE","description":"An authorization and capture performed together in a single step.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"ENUM","name":"TransactionStatus","description":"Transaction statuses describe the status of a transaction.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"ERROR","description":"There was an error while processing the transaction.","isDeprecated":false,"deprecationReason":null},{"name":"FAILURE","description":"The transaction failed.","isDeprecated":false,"deprecationReason":null},{"name":"PENDING","description":"The transaction is pending.","isDeprecated":false,"deprecationReason":null},{"name":"SUCCESS","description":"The transaction succeeded.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"SCALAR","name":"URL","description":"Represents an [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986) and\n[RFC 3987](https://datatracker.ietf.org/doc/html/rfc3987)-compliant URI string.\n\nFor example, `\"https://johns-apparel.myshopify.com\"` is a valid URL. It includes a scheme (`https`) and a host\n(`johns-apparel.myshopify.com`).\n","fields":null,"inputFields":null,"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"UnitPriceMeasurement","description":"The measurement used to calculate a unit price for a product variant (e.g. $9.99 / 100ml).\n","fields":[{"name":"measuredType","description":"The type of unit of measurement for the unit price measurement.","args":[],"type":{"kind":"ENUM","name":"UnitPriceMeasurementMeasuredType","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"quantityUnit","description":"The quantity unit for the unit price measurement.","args":[],"type":{"kind":"ENUM","name":"UnitPriceMeasurementMeasuredUnit","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"quantityValue","description":"The quantity value for the unit price measurement.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Float","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"referenceUnit","description":"The reference unit for the unit price measurement.","args":[],"type":{"kind":"ENUM","name":"UnitPriceMeasurementMeasuredUnit","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"referenceValue","description":"The reference value for the unit price measurement.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Int","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"UnitPriceMeasurementMeasuredType","description":"The accepted types of unit of measurement.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"AREA","description":"Unit of measurements representing areas.","isDeprecated":false,"deprecationReason":null},{"name":"LENGTH","description":"Unit of measurements representing lengths.","isDeprecated":false,"deprecationReason":null},{"name":"VOLUME","description":"Unit of measurements representing volumes.","isDeprecated":false,"deprecationReason":null},{"name":"WEIGHT","description":"Unit of measurements representing weights.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"ENUM","name":"UnitPriceMeasurementMeasuredUnit","description":"The valid units of measurement for a unit price measurement.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"CL","description":"100 centiliters equals 1 liter.","isDeprecated":false,"deprecationReason":null},{"name":"CM","description":"100 centimeters equals 1 meter.","isDeprecated":false,"deprecationReason":null},{"name":"G","description":"Metric system unit of weight.","isDeprecated":false,"deprecationReason":null},{"name":"KG","description":"1 kilogram equals 1000 grams.","isDeprecated":false,"deprecationReason":null},{"name":"L","description":"Metric system unit of volume.","isDeprecated":false,"deprecationReason":null},{"name":"M","description":"Metric system unit of length.","isDeprecated":false,"deprecationReason":null},{"name":"M2","description":"Metric system unit of area.","isDeprecated":false,"deprecationReason":null},{"name":"M3","description":"1 cubic meter equals 1000 liters.","isDeprecated":false,"deprecationReason":null},{"name":"MG","description":"1000 milligrams equals 1 gram.","isDeprecated":false,"deprecationReason":null},{"name":"ML","description":"1000 milliliters equals 1 liter.","isDeprecated":false,"deprecationReason":null},{"name":"MM","description":"1000 millimeters equals 1 meter.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"ENUM","name":"UnitSystem","description":"Systems of weights and measures.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"IMPERIAL_SYSTEM","description":"Imperial system of weights and measures.","isDeprecated":false,"deprecationReason":null},{"name":"METRIC_SYSTEM","description":"Metric system of weights and measures.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"UrlRedirect","description":"A redirect on the online store.","fields":[{"name":"id","description":"The ID of the URL redirect.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"path","description":"The old path to be redirected from. When the user visits this path, they'll be redirected to the target location.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"target","description":"The target location where the user will be redirected to.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"Node","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"UrlRedirectConnection","description":"An auto-generated type for paginating through multiple UrlRedirects.\n","fields":[{"name":"edges","description":"A list of edges.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UrlRedirectEdge","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"nodes","description":"A list of the nodes contained in UrlRedirectEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UrlRedirect","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"pageInfo","description":"Information to aid in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"PageInfo","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"UrlRedirectEdge","description":"An auto-generated type which holds one UrlRedirect and a cursor during pagination.\n","fields":[{"name":"cursor","description":"A cursor for use in pagination.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"node","description":"The item at the end of UrlRedirectEdge.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"UrlRedirect","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"UserError","description":"Represents an error in the input of a mutation.","fields":[{"name":"field","description":"The path to the input field that caused the error.","args":[],"type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}}},"isDeprecated":false,"deprecationReason":null},{"name":"message","description":"The error message.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"DisplayableError","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"INPUT_OBJECT","name":"VariantOptionFilter","description":"A filter used to view a subset of products in a collection matching a specific variant option.","fields":null,"inputFields":[{"name":"name","description":"The name of the variant option to filter on.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"value","description":"The value of the variant option to filter on.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}],"interfaces":null,"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"Video","description":"Represents a Shopify hosted video.","fields":[{"name":"alt","description":"A word or phrase to share the nature or contents of a media.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"id","description":"A globally-unique identifier.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"ID","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"mediaContentType","description":"The media content type.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"MediaContentType","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"previewImage","description":"The preview image for the media.","args":[],"type":{"kind":"OBJECT","name":"Image","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"sources","description":"The sources for a video.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"VideoSource","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[{"kind":"INTERFACE","name":"Media","ofType":null},{"kind":"INTERFACE","name":"Node","ofType":null}],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"VideoSource","description":"Represents a source for a Shopify hosted video.","fields":[{"name":"format","description":"The format of the video source.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"height","description":"The height of the video.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Int","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"mimeType","description":"The video MIME type.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"url","description":"The URL of the video.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"width","description":"The width of the video.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Int","ofType":null}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"WeightUnit","description":"Units of measurement for weight.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"GRAMS","description":"Metric system unit of mass.","isDeprecated":false,"deprecationReason":null},{"name":"KILOGRAMS","description":"1 kilogram equals 1000 grams.","isDeprecated":false,"deprecationReason":null},{"name":"OUNCES","description":"Imperial system unit of mass.","isDeprecated":false,"deprecationReason":null},{"name":"POUNDS","description":"1 pound equals 16 ounces.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"__Directive","description":"A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\n\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.","fields":[{"name":"name","description":null,"args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"description","description":null,"args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"isRepeatable","description":null,"args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"locations","description":null,"args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"__DirectiveLocation","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"args","description":null,"args":[{"name":"includeDeprecated","description":null,"type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"__InputValue","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"__DirectiveLocation","description":"A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"QUERY","description":"Location adjacent to a query operation.","isDeprecated":false,"deprecationReason":null},{"name":"MUTATION","description":"Location adjacent to a mutation operation.","isDeprecated":false,"deprecationReason":null},{"name":"SUBSCRIPTION","description":"Location adjacent to a subscription operation.","isDeprecated":false,"deprecationReason":null},{"name":"FIELD","description":"Location adjacent to a field.","isDeprecated":false,"deprecationReason":null},{"name":"FRAGMENT_DEFINITION","description":"Location adjacent to a fragment definition.","isDeprecated":false,"deprecationReason":null},{"name":"FRAGMENT_SPREAD","description":"Location adjacent to a fragment spread.","isDeprecated":false,"deprecationReason":null},{"name":"INLINE_FRAGMENT","description":"Location adjacent to an inline fragment.","isDeprecated":false,"deprecationReason":null},{"name":"VARIABLE_DEFINITION","description":"Location adjacent to a variable definition.","isDeprecated":false,"deprecationReason":null},{"name":"SCHEMA","description":"Location adjacent to a schema definition.","isDeprecated":false,"deprecationReason":null},{"name":"SCALAR","description":"Location adjacent to a scalar definition.","isDeprecated":false,"deprecationReason":null},{"name":"OBJECT","description":"Location adjacent to an object type definition.","isDeprecated":false,"deprecationReason":null},{"name":"FIELD_DEFINITION","description":"Location adjacent to a field definition.","isDeprecated":false,"deprecationReason":null},{"name":"ARGUMENT_DEFINITION","description":"Location adjacent to an argument definition.","isDeprecated":false,"deprecationReason":null},{"name":"INTERFACE","description":"Location adjacent to an interface definition.","isDeprecated":false,"deprecationReason":null},{"name":"UNION","description":"Location adjacent to a union definition.","isDeprecated":false,"deprecationReason":null},{"name":"ENUM","description":"Location adjacent to an enum definition.","isDeprecated":false,"deprecationReason":null},{"name":"ENUM_VALUE","description":"Location adjacent to an enum value definition.","isDeprecated":false,"deprecationReason":null},{"name":"INPUT_OBJECT","description":"Location adjacent to an input object type definition.","isDeprecated":false,"deprecationReason":null},{"name":"INPUT_FIELD_DEFINITION","description":"Location adjacent to an input object field definition.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null},{"kind":"OBJECT","name":"__EnumValue","description":"One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.","fields":[{"name":"name","description":null,"args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"description","description":null,"args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"isDeprecated","description":null,"args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"deprecationReason","description":null,"args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"__Field","description":"Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.","fields":[{"name":"name","description":null,"args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"description","description":null,"args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"args","description":null,"args":[{"name":"includeDeprecated","description":null,"type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"__InputValue","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"type","description":null,"args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"__Type","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"isDeprecated","description":null,"args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"deprecationReason","description":null,"args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"__InputValue","description":"Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.","fields":[{"name":"name","description":null,"args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"description","description":null,"args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"type","description":null,"args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"__Type","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"defaultValue","description":"A GraphQL-formatted string representing the default value for this input value.","args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"isDeprecated","description":null,"args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"deprecationReason","description":null,"args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"__Schema","description":"A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.","fields":[{"name":"description","description":null,"args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"types","description":"A list of all types supported by this server.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"__Type","ofType":null}}}},"isDeprecated":false,"deprecationReason":null},{"name":"queryType","description":"The type that query operations will be rooted at.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"__Type","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"mutationType","description":"If this server supports mutation, the type that mutation operations will be rooted at.","args":[],"type":{"kind":"OBJECT","name":"__Type","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"subscriptionType","description":"If this server support subscription, the type that subscription operations will be rooted at.","args":[],"type":{"kind":"OBJECT","name":"__Type","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"directives","description":"A list of all directives supported by this server.","args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"__Directive","ofType":null}}}},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"OBJECT","name":"__Type","description":"The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\n\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name, description and optional `specifiedByURL`, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.","fields":[{"name":"kind","description":null,"args":[],"type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"ENUM","name":"__TypeKind","ofType":null}},"isDeprecated":false,"deprecationReason":null},{"name":"name","description":null,"args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"description","description":null,"args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"specifiedByURL","description":null,"args":[],"type":{"kind":"SCALAR","name":"String","ofType":null},"isDeprecated":false,"deprecationReason":null},{"name":"fields","description":null,"args":[{"name":"includeDeprecated","description":null,"type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"__Field","ofType":null}}},"isDeprecated":false,"deprecationReason":null},{"name":"interfaces","description":null,"args":[],"type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"__Type","ofType":null}}},"isDeprecated":false,"deprecationReason":null},{"name":"possibleTypes","description":null,"args":[],"type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"__Type","ofType":null}}},"isDeprecated":false,"deprecationReason":null},{"name":"enumValues","description":null,"args":[{"name":"includeDeprecated","description":null,"type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"__EnumValue","ofType":null}}},"isDeprecated":false,"deprecationReason":null},{"name":"inputFields","description":null,"args":[{"name":"includeDeprecated","description":null,"type":{"kind":"SCALAR","name":"Boolean","ofType":null},"defaultValue":"false","isDeprecated":false,"deprecationReason":null}],"type":{"kind":"LIST","name":null,"ofType":{"kind":"NON_NULL","name":null,"ofType":{"kind":"OBJECT","name":"__InputValue","ofType":null}}},"isDeprecated":false,"deprecationReason":null},{"name":"ofType","description":null,"args":[],"type":{"kind":"OBJECT","name":"__Type","ofType":null},"isDeprecated":false,"deprecationReason":null}],"inputFields":null,"interfaces":[],"enumValues":null,"possibleTypes":null},{"kind":"ENUM","name":"__TypeKind","description":"An enum describing what kind of type a given `__Type` is.","fields":null,"inputFields":null,"interfaces":null,"enumValues":[{"name":"SCALAR","description":"Indicates this type is a scalar.","isDeprecated":false,"deprecationReason":null},{"name":"OBJECT","description":"Indicates this type is an object. `fields` and `interfaces` are valid fields.","isDeprecated":false,"deprecationReason":null},{"name":"INTERFACE","description":"Indicates this type is an interface. `fields`, `interfaces`, and `possibleTypes` are valid fields.","isDeprecated":false,"deprecationReason":null},{"name":"UNION","description":"Indicates this type is a union. `possibleTypes` is a valid field.","isDeprecated":false,"deprecationReason":null},{"name":"ENUM","description":"Indicates this type is an enum. `enumValues` is a valid field.","isDeprecated":false,"deprecationReason":null},{"name":"INPUT_OBJECT","description":"Indicates this type is an input object. `inputFields` is a valid field.","isDeprecated":false,"deprecationReason":null},{"name":"LIST","description":"Indicates this type is a list. `ofType` is a valid field.","isDeprecated":false,"deprecationReason":null},{"name":"NON_NULL","description":"Indicates this type is a non-null. `ofType` is a valid field.","isDeprecated":false,"deprecationReason":null}],"possibleTypes":null}],"directives":[{"name":"accessRestricted","description":"Marks an element of a GraphQL schema as having restricted access.","isRepeatable":false,"locations":["FIELD_DEFINITION","OBJECT"],"args":[{"name":"reason","description":"Explains the reason around this restriction","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":"null","isDeprecated":false,"deprecationReason":null}]},{"name":"deprecated","description":"Marks an element of a GraphQL schema as no longer supported.","isRepeatable":false,"locations":["ARGUMENT_DEFINITION","ENUM_VALUE","FIELD_DEFINITION","INPUT_FIELD_DEFINITION"],"args":[{"name":"reason","description":"Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax, as specified by [CommonMark](https://commonmark.org/).","type":{"kind":"SCALAR","name":"String","ofType":null},"defaultValue":"\"No longer supported\"","isDeprecated":false,"deprecationReason":null}]},{"name":"inContext","description":"Contextualizes data based on the additional information provided by the directive. For example, you can use the `@inContext(country: CA)` directive to [query a product's price](https://shopify.dev/api/examples/international-pricing#query-product-prices) in a storefront within the context of Canada.","isRepeatable":false,"locations":["MUTATION","QUERY"],"args":[{"name":"country","description":"The country code for context. For example, `CA`.","type":{"kind":"ENUM","name":"CountryCode","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"language","description":"The language code for context. For example, `EN`.","type":{"kind":"ENUM","name":"LanguageCode","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null},{"name":"preferredLocationId","description":"The identifier of the customer's preferred location.","type":{"kind":"SCALAR","name":"ID","ofType":null},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}]},{"name":"include","description":"Directs the executor to include this field or fragment only when the `if` argument is true.","isRepeatable":false,"locations":["FIELD","FRAGMENT_SPREAD","INLINE_FRAGMENT"],"args":[{"name":"if","description":"Included when true.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}]},{"name":"skip","description":"Directs the executor to skip this field or fragment when the `if` argument is true.","isRepeatable":false,"locations":["FIELD","FRAGMENT_SPREAD","INLINE_FRAGMENT"],"args":[{"name":"if","description":"Skipped when true.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"Boolean","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}]},{"name":"specifiedBy","description":"Exposes a URL that specifies the behavior of this scalar.","isRepeatable":false,"locations":["SCALAR"],"args":[{"name":"url","description":"The URL that specifies the behavior of this scalar.","type":{"kind":"NON_NULL","name":null,"ofType":{"kind":"SCALAR","name":"String","ofType":null}},"defaultValue":null,"isDeprecated":false,"deprecationReason":null}]}]}} \ No newline at end of file diff --git a/packages/hydrogen/src/storefront-api-types.ts b/packages/hydrogen/src/storefront-api-types.ts index 7ddd5537ad..263f2f1cbe 100644 --- a/packages/hydrogen/src/storefront-api-types.ts +++ b/packages/hydrogen/src/storefront-api-types.ts @@ -751,7 +751,7 @@ export type CartLineEstimatedCost = { /** The amount of the merchandise line. */ amount: MoneyV2; /** The compare at amount of the merchandise line. */ - compareAtAmount: MoneyV2; + compareAtAmount?: Maybe; /** The estimated cost of the merchandise line before discounts. */ subtotalAmount: MoneyV2; /** The estimated total cost of the merchandise line. */ From e0ffbf66179f847d6c69f1edb4563488c42d9e10 Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Mon, 30 May 2022 12:11:19 +0900 Subject: [PATCH 20/24] Disable rules-of-hooks in server components --- .eslintrc.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.eslintrc.js b/.eslintrc.js index 7070fdbbc5..e054ed25d0 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -107,5 +107,11 @@ module.exports = { 'node/no-missing-import': 'off', }, }, + { + files: ['**/*.server.*'], + rules: { + 'react-hooks/rules-of-hooks': 'off', + }, + }, ], }; From d130f1c9d61b959218f4bc6ce040018d46f1ea47 Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Mon, 30 May 2022 12:24:07 +0900 Subject: [PATCH 21/24] Disable prefer-gql in test --- packages/hydrogen/src/utilities/tests/graphql-tag.test.ts | 1 + packages/hydrogen/src/utilities/tests/graphql-tracker.test.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/packages/hydrogen/src/utilities/tests/graphql-tag.test.ts b/packages/hydrogen/src/utilities/tests/graphql-tag.test.ts index c1ecf768d0..3e8eeb9a9c 100644 --- a/packages/hydrogen/src/utilities/tests/graphql-tag.test.ts +++ b/packages/hydrogen/src/utilities/tests/graphql-tag.test.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line hydrogen/prefer-gql import {gql} from '../graphql-tag'; import ast from 'graphql-tag'; diff --git a/packages/hydrogen/src/utilities/tests/graphql-tracker.test.ts b/packages/hydrogen/src/utilities/tests/graphql-tracker.test.ts index d2a86d9166..72c9cb8f86 100644 --- a/packages/hydrogen/src/utilities/tests/graphql-tracker.test.ts +++ b/packages/hydrogen/src/utilities/tests/graphql-tracker.test.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line hydrogen/prefer-gql import {gql} from '../graphql-tag'; import {injectGraphQLTracker, TIMEOUT_MS} from '../graphql-tracker'; From 720d78631ba76eb5d975b49449b93a23ac5cff77 Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Tue, 31 May 2022 10:34:29 +0900 Subject: [PATCH 22/24] Apply suggestions from code review Co-authored-by: Michelle Vinci --- docs/components/framework/fileroutes.md | 6 +++--- docs/framework/hydrogen-config.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/components/framework/fileroutes.md b/docs/components/framework/fileroutes.md index 013a09d998..f733227f1f 100644 --- a/docs/components/framework/fileroutes.md +++ b/docs/components/framework/fileroutes.md @@ -1,12 +1,12 @@ --- gid: 182b039d-d09d-4513-8759-b51412cc8293 title: FileRoutes -description: The `FileRoutes` component builds a set of Hydrogen routes. +description: The FileRoutes component builds a set of Hydrogen routes. --- -The `FileRoutes` component builds a set of Hydrogen routes. By default, it loads the routes specified in [the `hydrogen.config.js` file](https://shopify.dev/custom-storefronts/hydrogen/framework/hydrogen-config) when no props are passed. +The `FileRoutes` component builds a set of Hydrogen routes. By default, it loads the routes specified in [the Hydrogen configuration file](https://shopify.dev/custom-storefronts/hydrogen/framework/hydrogen-config) when no props are passed. -It is also possible to override the default behavior and use custom routes based on the output provided by Vite's [import.meta.globEager](https://vitejs.dev/guide/features.html#glob-import) method. You can have multiple instances of this component to source file routes from multiple locations. +You can override the default behavior and use custom routes based on the output provided by Vite's [import.meta.globEager](https://vitejs.dev/guide/features.html#glob-import) method. You can have multiple instances of the `FileRoutes` component to source file routes from multiple locations. ## Example code diff --git a/docs/framework/hydrogen-config.md b/docs/framework/hydrogen-config.md index 5bc5bb743d..690f7e4d87 100644 --- a/docs/framework/hydrogen-config.md +++ b/docs/framework/hydrogen-config.md @@ -47,7 +47,7 @@ The following groupings of configuration properties can exist in Hydrogen: ### `routes` -The `routes` property is where you can provide a path to find server components and API handlers. Its default value is `/src/routes` but it can be customized to any directory specified **from the project root**: +The `routes` property specifies a path to find server components and API handlers. The default value is `/src/routes`, but you can customize the value to any directory specified from the project root: {% codeblock file, filename: 'hydrogen.config.js' %} From e9b51a54744ddbe20eda1ee6fb98c9eeebeb53a3 Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Tue, 31 May 2022 11:18:36 +0900 Subject: [PATCH 23/24] Revert "Disable prefer-gql in test" This reverts commit d130f1c9d61b959218f4bc6ce040018d46f1ea47. --- packages/hydrogen/src/utilities/tests/graphql-tag.test.ts | 1 - packages/hydrogen/src/utilities/tests/graphql-tracker.test.ts | 1 - 2 files changed, 2 deletions(-) diff --git a/packages/hydrogen/src/utilities/tests/graphql-tag.test.ts b/packages/hydrogen/src/utilities/tests/graphql-tag.test.ts index 3e8eeb9a9c..c1ecf768d0 100644 --- a/packages/hydrogen/src/utilities/tests/graphql-tag.test.ts +++ b/packages/hydrogen/src/utilities/tests/graphql-tag.test.ts @@ -1,4 +1,3 @@ -// eslint-disable-next-line hydrogen/prefer-gql import {gql} from '../graphql-tag'; import ast from 'graphql-tag'; diff --git a/packages/hydrogen/src/utilities/tests/graphql-tracker.test.ts b/packages/hydrogen/src/utilities/tests/graphql-tracker.test.ts index 72c9cb8f86..d2a86d9166 100644 --- a/packages/hydrogen/src/utilities/tests/graphql-tracker.test.ts +++ b/packages/hydrogen/src/utilities/tests/graphql-tracker.test.ts @@ -1,4 +1,3 @@ -// eslint-disable-next-line hydrogen/prefer-gql import {gql} from '../graphql-tag'; import {injectGraphQLTracker, TIMEOUT_MS} from '../graphql-tracker'; From 689c3dfedb9e647dcce7e3fea17542b0761b74e5 Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Tue, 31 May 2022 11:19:19 +0900 Subject: [PATCH 24/24] Revert "Disable rules-of-hooks in server components" This reverts commit e0ffbf66179f847d6c69f1edb4563488c42d9e10. --- .eslintrc.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index dbd0a44ff7..cb6eb5c419 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -113,11 +113,5 @@ module.exports = { 'node/no-missing-import': 'off', }, }, - { - files: ['**/*.server.*'], - rules: { - 'react-hooks/rules-of-hooks': 'off', - }, - }, ], };