From 77538e49f76f1c9194b340cf396a13b4d1fd5c91 Mon Sep 17 00:00:00 2001 From: Lukasz Ostrowski Date: Thu, 9 Feb 2023 11:58:20 +0100 Subject: [PATCH] Add slack app (#120) * add slack app * Update eslint * Remove gitignore --- .changeset/afraid-cameras-learn.md | 5 + apps/data-importer/.eslintrc | 3 +- apps/invoices/.eslintrc | 3 +- apps/klaviyo/.eslintrc | 1 + apps/klaviyo/generated/schema.graphql | 1140 +- apps/klaviyo/graphql/schema.graphql | 19221 ++-- apps/search/.eslintrc | 1 + apps/slack/.env.example | 2 + apps/slack/.eslintrc | 4 + apps/slack/.graphqlrc.yml | 20 + apps/slack/README.md | 92 + apps/slack/docs/images/dashboard-config.jpg | Bin 0 -> 162913 bytes apps/slack/docs/images/install-slack.jpg | Bin 0 -> 151575 bytes apps/slack/docs/images/readme.jpg | Bin 0 -> 171765 bytes apps/slack/docs/images/slack-permissions.jpg | Bin 0 -> 130742 bytes apps/slack/docs/images/slack-webhook-copy.jpg | Bin 0 -> 172965 bytes .../docs/images/slack-webook-channel.jpg | Bin 0 -> 96281 bytes .../docs/images/slack-workspace-button.jpg | Bin 0 -> 122604 bytes apps/slack/docs/images/slack-workspace.jpg | Bin 0 -> 120493 bytes apps/slack/docs/images/upstash.jpg | Bin 0 -> 122621 bytes apps/slack/docs/setup-slack-app.md | 41 + apps/slack/docs/upstash.md | 17 + apps/slack/env.d.ts | 5 + apps/slack/generated/graphql.ts | 72884 ++++++++++++++++ apps/slack/generated/schema.graphql | 29164 +++++++ .../mutations/UpdateAppMetadata.graphql | 10 + .../graphql/queries/FetchAppDetails.graphql | 9 + apps/slack/graphql/schema.graphql | 29077 ++++++ apps/slack/next-env.d.ts | 5 + apps/slack/next.config.js | 44 + apps/slack/package.json | 61 + apps/slack/pnpm-lock.yaml | 8984 ++ apps/slack/public/favicon.ico | Bin 0 -> 25931 bytes apps/slack/public/vercel.svg | 4 + apps/slack/sentry.client.config.js | 17 + apps/slack/sentry.edge.config.js | 17 + apps/slack/sentry.server.config.js | 17 + apps/slack/src/assets/saleor-logo-dark.svg | 31 + apps/slack/src/assets/saleor-logo.svg | 15 + .../AccessWarning/AccessWarning.tsx | 34 + .../AppColumnsLayout/AppColumnsLayout.tsx | 21 + apps/slack/src/components/AppIcon/AppIcon.tsx | 28 + .../ConfigurationError/ConfigurationError.tsx | 51 + .../components/LoadingPage/LoadingPage.tsx | 20 + .../src/components/LoadingPage/styles.ts | 14 + apps/slack/src/components/MainBar/MainBar.tsx | 52 + .../SlackAppMainBar/SlackAppMainBar.tsx | 60 + apps/slack/src/hooks/theme-synchronizer.tsx | 38 + apps/slack/src/hooks/useAppApi.ts | 64 + apps/slack/src/lib/graphql.ts | 48 + apps/slack/src/lib/is-in-iframe.ts | 7 + apps/slack/src/lib/metadata.ts | 61 + apps/slack/src/lib/no-ssr-wrapper.tsx | 8 + apps/slack/src/lib/saleor-app.ts | 51 + apps/slack/src/lib/slack.ts | 52 + apps/slack/src/pages/_app.tsx | 64 + apps/slack/src/pages/_document.tsx | 19 + apps/slack/src/pages/_error.js | 39 + apps/slack/src/pages/_error.tsx | 75 + apps/slack/src/pages/api/configuration.ts | 57 + apps/slack/src/pages/api/manifest.ts | 24 + apps/slack/src/pages/api/register.ts | 26 + .../slack/src/pages/api/slack-app-manifest.ts | 31 + .../src/pages/api/webhooks/order-created.ts | 118 + apps/slack/src/pages/configuration.tsx | 250 + apps/slack/src/pages/index.tsx | 141 + apps/slack/src/styles/globals.css | 26 + apps/slack/src/utils/useDashboardNotifier.ts | 12 + apps/slack/tsconfig.json | 20 + apps/slack/types.ts | 17 + package.json | 2 +- packages/eslint-config-saleor/index.js | 18 +- packages/eslint-config-saleor/package.json | 8 +- pnpm-lock.yaml | 864 +- turbo.json | 17 + 75 files changed, 156847 insertions(+), 6484 deletions(-) create mode 100644 .changeset/afraid-cameras-learn.md create mode 100644 apps/slack/.env.example create mode 100644 apps/slack/.eslintrc create mode 100644 apps/slack/.graphqlrc.yml create mode 100644 apps/slack/README.md create mode 100644 apps/slack/docs/images/dashboard-config.jpg create mode 100644 apps/slack/docs/images/install-slack.jpg create mode 100644 apps/slack/docs/images/readme.jpg create mode 100644 apps/slack/docs/images/slack-permissions.jpg create mode 100644 apps/slack/docs/images/slack-webhook-copy.jpg create mode 100644 apps/slack/docs/images/slack-webook-channel.jpg create mode 100644 apps/slack/docs/images/slack-workspace-button.jpg create mode 100644 apps/slack/docs/images/slack-workspace.jpg create mode 100644 apps/slack/docs/images/upstash.jpg create mode 100644 apps/slack/docs/setup-slack-app.md create mode 100644 apps/slack/docs/upstash.md create mode 100644 apps/slack/env.d.ts create mode 100644 apps/slack/generated/graphql.ts create mode 100644 apps/slack/generated/schema.graphql create mode 100644 apps/slack/graphql/mutations/UpdateAppMetadata.graphql create mode 100644 apps/slack/graphql/queries/FetchAppDetails.graphql create mode 100644 apps/slack/graphql/schema.graphql create mode 100644 apps/slack/next-env.d.ts create mode 100644 apps/slack/next.config.js create mode 100644 apps/slack/package.json create mode 100644 apps/slack/pnpm-lock.yaml create mode 100644 apps/slack/public/favicon.ico create mode 100644 apps/slack/public/vercel.svg create mode 100644 apps/slack/sentry.client.config.js create mode 100644 apps/slack/sentry.edge.config.js create mode 100644 apps/slack/sentry.server.config.js create mode 100644 apps/slack/src/assets/saleor-logo-dark.svg create mode 100644 apps/slack/src/assets/saleor-logo.svg create mode 100644 apps/slack/src/components/AccessWarning/AccessWarning.tsx create mode 100644 apps/slack/src/components/AppColumnsLayout/AppColumnsLayout.tsx create mode 100644 apps/slack/src/components/AppIcon/AppIcon.tsx create mode 100644 apps/slack/src/components/ConfigurationError/ConfigurationError.tsx create mode 100644 apps/slack/src/components/LoadingPage/LoadingPage.tsx create mode 100644 apps/slack/src/components/LoadingPage/styles.ts create mode 100644 apps/slack/src/components/MainBar/MainBar.tsx create mode 100644 apps/slack/src/components/SlackAppMainBar/SlackAppMainBar.tsx create mode 100644 apps/slack/src/hooks/theme-synchronizer.tsx create mode 100644 apps/slack/src/hooks/useAppApi.ts create mode 100644 apps/slack/src/lib/graphql.ts create mode 100644 apps/slack/src/lib/is-in-iframe.ts create mode 100644 apps/slack/src/lib/metadata.ts create mode 100644 apps/slack/src/lib/no-ssr-wrapper.tsx create mode 100644 apps/slack/src/lib/saleor-app.ts create mode 100644 apps/slack/src/lib/slack.ts create mode 100644 apps/slack/src/pages/_app.tsx create mode 100644 apps/slack/src/pages/_document.tsx create mode 100644 apps/slack/src/pages/_error.js create mode 100644 apps/slack/src/pages/_error.tsx create mode 100644 apps/slack/src/pages/api/configuration.ts create mode 100644 apps/slack/src/pages/api/manifest.ts create mode 100644 apps/slack/src/pages/api/register.ts create mode 100644 apps/slack/src/pages/api/slack-app-manifest.ts create mode 100644 apps/slack/src/pages/api/webhooks/order-created.ts create mode 100644 apps/slack/src/pages/configuration.tsx create mode 100644 apps/slack/src/pages/index.tsx create mode 100644 apps/slack/src/styles/globals.css create mode 100644 apps/slack/src/utils/useDashboardNotifier.ts create mode 100644 apps/slack/tsconfig.json create mode 100644 apps/slack/types.ts diff --git a/.changeset/afraid-cameras-learn.md b/.changeset/afraid-cameras-learn.md new file mode 100644 index 0000000..9d8f167 --- /dev/null +++ b/.changeset/afraid-cameras-learn.md @@ -0,0 +1,5 @@ +--- +"saleor-app-slack": major +--- + +Add slack into the workspace diff --git a/apps/data-importer/.eslintrc b/apps/data-importer/.eslintrc index 1d5c630..5470783 100644 --- a/apps/data-importer/.eslintrc +++ b/apps/data-importer/.eslintrc @@ -1,3 +1,4 @@ { + "root": true, "extends": ["saleor"] -} \ No newline at end of file +} diff --git a/apps/invoices/.eslintrc b/apps/invoices/.eslintrc index 1d5c630..5470783 100644 --- a/apps/invoices/.eslintrc +++ b/apps/invoices/.eslintrc @@ -1,3 +1,4 @@ { + "root": true, "extends": ["saleor"] -} \ No newline at end of file +} diff --git a/apps/klaviyo/.eslintrc b/apps/klaviyo/.eslintrc index 0784400..5470783 100644 --- a/apps/klaviyo/.eslintrc +++ b/apps/klaviyo/.eslintrc @@ -1,3 +1,4 @@ { + "root": true, "extends": ["saleor"] } diff --git a/apps/klaviyo/generated/schema.graphql b/apps/klaviyo/generated/schema.graphql index 31790bc..059bab7 100644 --- a/apps/klaviyo/generated/schema.graphql +++ b/apps/klaviyo/generated/schema.graphql @@ -1,5 +1,5 @@ """ -Create a new address for the customer. +Create a new address for the customer. Requires one of the following permissions: AUTHENTICATED_USER. """ @@ -37,7 +37,7 @@ type AccountAddressUpdate { } """ -Remove user account. +Remove user account. Requires one of the following permissions: AUTHENTICATED_USER. """ @@ -156,7 +156,7 @@ input AccountRegisterInput { } """ -Sends an email with the account removal link for the logged-in user. +Sends an email with the account removal link for the logged-in user. Requires one of the following permissions: AUTHENTICATED_USER. """ @@ -166,7 +166,7 @@ type AccountRequestDeletion { } """ -Sets a default address for the authenticated user. +Sets a default address for the authenticated user. Requires one of the following permissions: AUTHENTICATED_USER. """ @@ -179,7 +179,7 @@ type AccountSetDefaultAddress { } """ -Updates the account of the logged-in user. +Updates the account of the logged-in user. Requires one of the following permissions: AUTHENTICATED_USER. """ @@ -272,7 +272,7 @@ type Address implements Node & ObjectWithMetadata { } """ -Creates user address. +Creates user address. Requires one of the following permissions: MANAGE_USERS. """ @@ -310,7 +310,7 @@ type AddressCreated implements Event { } """ -Deletes an address. +Deletes an address. Requires one of the following permissions: MANAGE_USERS. """ @@ -383,7 +383,7 @@ input AddressInput { } """ -Sets a default address for the given user. +Sets a default address for the given user. Requires one of the following permissions: MANAGE_USERS. """ @@ -402,7 +402,7 @@ enum AddressTypeEnum { } """ -Updates an address. +Updates an address. Requires one of the following permissions: MANAGE_USERS. """ @@ -614,7 +614,7 @@ type App implements Node & ObjectWithMetadata { } """ -Activate the app. +Activate the app. Requires one of the following permissions: MANAGE_APPS. """ @@ -655,7 +655,7 @@ type AppCreate { } """ -Deactivate the app. +Deactivate the app. Requires one of the following permissions: MANAGE_APPS. """ @@ -666,7 +666,7 @@ type AppDeactivate { } """ -Deletes an app. +Deletes an app. Requires one of the following permissions: MANAGE_APPS. """ @@ -677,7 +677,7 @@ type AppDelete { } """ -Delete failed installation. +Delete failed installation. Requires one of the following permissions: MANAGE_APPS. """ @@ -821,7 +821,7 @@ enum AppExtensionTargetEnum { } """ -Fetch and validate manifest. +Fetch and validate manifest. Requires one of the following permissions: MANAGE_APPS. """ @@ -946,7 +946,7 @@ type AppManifestWebhook { } """ -Retry failed installation of new app. +Retry failed installation of new app. Requires one of the following permissions: MANAGE_APPS. """ @@ -1007,7 +1007,7 @@ type AppToken implements Node { } """ -Creates a new token. +Creates a new token. Requires one of the following permissions: MANAGE_APPS. """ @@ -1021,7 +1021,7 @@ type AppTokenCreate { } """ -Deletes an authentication token assigned to app. +Deletes an authentication token assigned to app. Requires one of the following permissions: MANAGE_APPS. """ @@ -1062,7 +1062,7 @@ enum AppTypeEnum { } """ -Updates an existing app. +Updates an existing app. Requires one of the following permissions: MANAGE_APPS. """ @@ -1107,7 +1107,7 @@ enum AreaUnitsEnum { } """ -Assigns storefront's navigation menus. +Assigns storefront's navigation menus. Requires one of the following permissions: MANAGE_MENUS, MANAGE_SETTINGS. """ @@ -1168,7 +1168,7 @@ type Attribute implements Node & ObjectWithMetadata { entityType: AttributeEntityTypeEnum """ - External ID of this attribute. + External ID of this attribute. Added in Saleor 3.10. """ @@ -1298,7 +1298,7 @@ type Attribute implements Node & ObjectWithMetadata { } """ -Deletes attributes. +Deletes attributes. Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ @@ -1429,7 +1429,7 @@ type AttributeCreated implements Event { } """ -Deletes an attribute. +Deletes an attribute. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ @@ -1497,7 +1497,7 @@ input AttributeFilterInput { availableInGrid: Boolean """ - Specifies the channel by which the data should be filtered. + Specifies the channel by which the data should be filtered. DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. """ @@ -1554,7 +1554,7 @@ enum AttributeInputTypeEnum { } """ -Reorder the values of an attribute. +Reorder the values of an attribute. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ @@ -1618,7 +1618,7 @@ type AttributeTranslatableContent implements Node { } """ -Creates/updates translations for an attribute. +Creates/updates translations for an attribute. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ @@ -1643,7 +1643,7 @@ enum AttributeTypeEnum { } """ -Updates attribute. +Updates attribute. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ @@ -1736,7 +1736,7 @@ type AttributeValue implements Node { dateTime: DateTime """ - External ID of this attribute value. + External ID of this attribute value. Added in Saleor 3.10. """ @@ -1783,7 +1783,7 @@ type AttributeValue implements Node { } """ -Deletes values of attributes. +Deletes values of attributes. Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ @@ -1814,7 +1814,7 @@ type AttributeValueCountableEdge { } """ -Creates a value for an attribute. +Creates a value for an attribute. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -1890,7 +1890,7 @@ type AttributeValueCreated implements Event { } """ -Deletes a value of an attribute. +Deletes a value of an attribute. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ @@ -1994,7 +1994,7 @@ input AttributeValueInput { } """ -Represents attribute value. If no ID provided, value will be resolved. +Represents attribute value. If no ID provided, value will be resolved. Added in Saleor 3.9. """ @@ -2039,7 +2039,7 @@ type AttributeValueTranslatableContent implements Node { } """ -Creates/updates translations for an attribute value. +Creates/updates translations for an attribute value. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ @@ -2082,7 +2082,7 @@ input AttributeValueTranslationInput { } """ -Updates value of an attribute. +Updates value of an attribute. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ @@ -2433,7 +2433,7 @@ type Category implements Node & ObjectWithMetadata { } """ -Deletes categories. +Deletes categories. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -2463,7 +2463,7 @@ type CategoryCountableEdge { } """ -Creates a new category. +Creates a new category. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -2498,7 +2498,7 @@ type CategoryCreated implements Event { } """ -Deletes a category. +Deletes a category. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -2633,7 +2633,7 @@ type CategoryTranslatableContent implements Node { } """ -Creates/updates translations for a category. +Creates/updates translations for a category. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ @@ -2667,7 +2667,7 @@ type CategoryTranslation implements Node { } """ -Updates a category. +Updates a category. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -2786,7 +2786,7 @@ type Channel implements Node { } """ -Activate a channel. +Activate a channel. Requires one of the following permissions: MANAGE_CHANNELS. """ @@ -2798,7 +2798,7 @@ type ChannelActivate { } """ -Creates new channel. +Creates new channel. Requires one of the following permissions: MANAGE_CHANNELS. """ @@ -2877,7 +2877,7 @@ type ChannelCreated implements Event { } """ -Deactivate a channel. +Deactivate a channel. Requires one of the following permissions: MANAGE_CHANNELS. """ @@ -2889,7 +2889,7 @@ type ChannelDeactivate { } """ -Delete a channel. Orders associated with the deleted channel will be moved to the target channel. Checkouts, product availability, and pricing will be removed. +Delete a channel. Orders associated with the deleted channel will be moved to the target channel. Checkouts, product availability, and pricing will be removed. Requires one of the following permissions: MANAGE_CHANNELS. """ @@ -2965,7 +2965,7 @@ Reorder the warehouses of a channel. Added in Saleor 3.7. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_CHANNELS. """ @@ -3000,7 +3000,7 @@ type ChannelStatusChanged implements Event { } """ -Update a channel. +Update a channel. Requires one of the following permissions: MANAGE_CHANNELS. """ @@ -3384,7 +3384,7 @@ type CheckoutCreated implements Event { } """ -Sets the customer as the owner of the checkout. +Sets the customer as the owner of the checkout. Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_USER. """ @@ -3396,7 +3396,7 @@ type CheckoutCustomerAttach { } """ -Removes the user assigned as the owner of the checkout. +Removes the user assigned as the owner of the checkout. Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_USER. """ @@ -3627,7 +3627,7 @@ type CheckoutLineDelete { input CheckoutLineInput { """ - Flag that allow force splitting the same variant into multiple lines by skipping the matching logic. + Flag that allow force splitting the same variant into multiple lines by skipping the matching logic. Added in Saleor 3.6. @@ -3681,7 +3681,7 @@ input CheckoutLineUpdateInput { quantity: Int """ - ID of the product variant. + ID of the product variant. DEPRECATED: this field will be removed in Saleor 4.0. Use `lineId` instead. """ @@ -3956,7 +3956,7 @@ type Collection implements Node & ObjectWithMetadata { } """ -Adds products to a collection. +Adds products to a collection. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -3968,7 +3968,7 @@ type CollectionAddProducts { } """ -Deletes collections. +Deletes collections. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -4018,7 +4018,7 @@ type CollectionChannelListingError { } """ -Manage collection's availability in channels. +Manage collection's availability in channels. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -4056,7 +4056,7 @@ type CollectionCountableEdge { } """ -Creates a new collection. +Creates a new collection. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -4104,7 +4104,7 @@ input CollectionCreateInput { products: [ID!] """ - Publication date. ISO 8601 standard. + Publication date. ISO 8601 standard. DEPRECATED: this field will be removed in Saleor 4.0. """ @@ -4145,7 +4145,7 @@ type CollectionCreated implements Event { } """ -Deletes a collection. +Deletes a collection. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -4211,7 +4211,7 @@ enum CollectionErrorCode { input CollectionFilterInput { """ - Specifies the channel by which the data should be filtered. + Specifies the channel by which the data should be filtered. DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. """ @@ -4258,7 +4258,7 @@ input CollectionInput { privateMetadata: [MetadataInput!] """ - Publication date. ISO 8601 standard. + Publication date. ISO 8601 standard. DEPRECATED: this field will be removed in Saleor 4.0. """ @@ -4304,7 +4304,7 @@ enum CollectionPublished { } """ -Remove products from a collection. +Remove products from a collection. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -4316,7 +4316,7 @@ type CollectionRemoveProducts { } """ -Reorder the products of a collection. +Reorder the products of a collection. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -4401,7 +4401,7 @@ type CollectionTranslatableContent implements Node { } """ -Creates/updates translations for a collection. +Creates/updates translations for a collection. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ @@ -4435,7 +4435,7 @@ type CollectionTranslation implements Node { } """ -Updates a collection. +Updates a collection. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -4519,7 +4519,7 @@ type ConfirmAccount { } """ -Confirm the email change of the logged-in user. +Confirm the email change of the logged-in user. Requires one of the following permissions: AUTHENTICATED_USER. """ @@ -4859,7 +4859,7 @@ type CreditCard { } """ -Deletes customers. +Deletes customers. Requires one of the following permissions: MANAGE_USERS. """ @@ -4872,7 +4872,7 @@ type CustomerBulkDelete { } """ -Creates a new customer. +Creates a new customer. Requires one of the following permissions: MANAGE_USERS. """ @@ -4907,7 +4907,7 @@ type CustomerCreated implements Event { } """ -Deletes a customer. +Deletes a customer. Requires one of the following permissions: MANAGE_USERS. """ @@ -4968,7 +4968,7 @@ input CustomerFilterInput { dateJoined: DateRangeInput """ - Filter by ids. + Filter by ids. Added in Saleor 3.8. """ @@ -5038,7 +5038,7 @@ type CustomerMetadataUpdated implements Event { } """ -Updates an existing customer. +Updates an existing customer. Requires one of the following permissions: MANAGE_USERS. """ @@ -5103,7 +5103,7 @@ input DateTimeRangeInput { } """ -Deactivate all JWT tokens of the currently authenticated user. +Deactivate all JWT tokens of the currently authenticated user. Requires one of the following permissions: AUTHENTICATED_USER. """ @@ -5219,7 +5219,7 @@ type DigitalContentCountableEdge { } """ -Create new digital content. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec +Create new digital content. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -5231,7 +5231,7 @@ type DigitalContentCreate { } """ -Remove digital content assigned to given variant. +Remove digital content assigned to given variant. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -5274,7 +5274,7 @@ input DigitalContentInput { } """ -Update digital content. +Update digital content. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -5334,7 +5334,7 @@ type DigitalContentUrl implements Node { } """ -Generate new URL to digital content. +Generate new URL to digital content. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -5414,7 +5414,7 @@ type Domain { } """ -Deletes draft orders. +Deletes draft orders. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -5426,7 +5426,7 @@ type DraftOrderBulkDelete { } """ -Completes creating an order. +Completes creating an order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -5439,7 +5439,7 @@ type DraftOrderComplete { } """ -Creates a new draft order. +Creates a new draft order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -5518,7 +5518,7 @@ type DraftOrderCreated implements Event { } """ -Deletes a draft order. +Deletes a draft order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -5594,7 +5594,7 @@ input DraftOrderInput { } """ -Deletes order lines. +Deletes order lines. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -5606,7 +5606,7 @@ type DraftOrderLinesBulkDelete { } """ -Updates a draft order. +Updates a draft order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -5769,7 +5769,7 @@ input EventDeliveryFilterInput { } """ -Retries event delivery. +Retries event delivery. Requires one of the following permissions: MANAGE_APPS. """ @@ -5925,7 +5925,7 @@ Export gift cards to csv file. Added in Saleor 3.1. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_GIFT_CARD. """ @@ -5967,7 +5967,7 @@ input ExportInfoInput { } """ -Export products to csv file. +Export products to csv file. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -6148,7 +6148,7 @@ enum FileTypesEnum { } """ -Upload a file. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec +Upload a file. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER. """ @@ -6225,7 +6225,7 @@ type Fulfillment implements Node & ObjectWithMetadata { """ Approve existing fulfillment. -Added in Saleor 3.1. +Added in Saleor 3.1. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -6268,7 +6268,7 @@ type FulfillmentApproved implements Event { } """ -Cancels existing fulfillment and optionally restocks items. +Cancels existing fulfillment and optionally restocks items. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -6379,7 +6379,7 @@ type FulfillmentMetadataUpdated implements Event { } """ -Refund products. +Refund products. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -6395,7 +6395,7 @@ type FulfillmentRefundProducts { } """ -Return products. +Return products. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -6428,7 +6428,7 @@ enum FulfillmentStatus { } """ -Updates a fulfillment for an order. +Updates a fulfillment for an order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -6638,7 +6638,7 @@ type GiftCard implements Node & ObjectWithMetadata { } """ -Activate a gift card. +Activate a gift card. Requires one of the following permissions: MANAGE_GIFT_CARD. """ @@ -6655,7 +6655,7 @@ Adds note to the gift card. Added in Saleor 3.1. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_GIFT_CARD. """ @@ -6679,7 +6679,7 @@ Activate gift cards. Added in Saleor 3.1. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_GIFT_CARD. """ @@ -6694,7 +6694,7 @@ Create gift cards. Added in Saleor 3.1. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_GIFT_CARD. """ @@ -6729,7 +6729,7 @@ Deactivate gift cards. Added in Saleor 3.1. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_GIFT_CARD. """ @@ -6744,7 +6744,7 @@ Delete gift cards. Added in Saleor 3.1. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_GIFT_CARD. """ @@ -6773,7 +6773,7 @@ type GiftCardCountableEdge { } """ -Creates a new gift card. +Creates a new gift card. Requires one of the following permissions: MANAGE_GIFT_CARD. """ @@ -6806,14 +6806,14 @@ input GiftCardCreateInput { channel: String """ - Code to use the gift card. + Code to use the gift card. DEPRECATED: this field will be removed in Saleor 4.0. The code is now auto generated. """ code: String """ - End date of the gift card in ISO 8601 format. + End date of the gift card in ISO 8601 format. DEPRECATED: this field will be removed in Saleor 4.0. Use `expiryDate` from `expirySettings` instead. """ @@ -6847,7 +6847,7 @@ input GiftCardCreateInput { note: String """ - Start date of the gift card in ISO 8601 format. + Start date of the gift card in ISO 8601 format. DEPRECATED: this field will be removed in Saleor 4.0. """ @@ -6882,7 +6882,7 @@ type GiftCardCreated implements Event { } """ -Deactivate a gift card. +Deactivate a gift card. Requires one of the following permissions: MANAGE_GIFT_CARD. """ @@ -6899,7 +6899,7 @@ Delete gift card. Added in Saleor 3.1. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_GIFT_CARD. """ @@ -7091,7 +7091,7 @@ Resend a gift card. Added in Saleor 3.1. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_GIFT_CARD. """ @@ -7149,7 +7149,7 @@ enum GiftCardSettingsExpiryTypeEnum { } """ -Update gift card settings. +Update gift card settings. Requires one of the following permissions: MANAGE_GIFT_CARD. """ @@ -7253,7 +7253,7 @@ input GiftCardTagFilterInput { } """ -Update a gift card. +Update a gift card. Requires one of the following permissions: MANAGE_GIFT_CARD. """ @@ -7283,7 +7283,7 @@ input GiftCardUpdateInput { balanceAmount: PositiveDecimal """ - End date of the gift card in ISO 8601 format. + End date of the gift card in ISO 8601 format. DEPRECATED: this field will be removed in Saleor 4.0. Use `expiryDate` from `expirySettings` instead. """ @@ -7308,7 +7308,7 @@ input GiftCardUpdateInput { removeTags: [String!] """ - Start date of the gift card in ISO 8601 format. + Start date of the gift card in ISO 8601 format. DEPRECATED: this field will be removed in Saleor 4.0. """ @@ -7467,7 +7467,7 @@ type Invoice implements Job & Node & ObjectWithMetadata { } """ -Creates a ready to send invoice. +Creates a ready to send invoice. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -7486,7 +7486,7 @@ input InvoiceCreateInput { } """ -Deletes an invoice. +Deletes an invoice. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -7553,7 +7553,7 @@ enum InvoiceErrorCode { } """ -Request an invoice for the order using plugin. +Request an invoice for the order using plugin. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -7567,7 +7567,7 @@ type InvoiceRequest { } """ -Requests deletion of an invoice. +Requests deletion of an invoice. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -7609,7 +7609,7 @@ type InvoiceRequested implements Event { } """ -Send an invoice notification to the customer. +Send an invoice notification to the customer. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -7651,7 +7651,7 @@ type InvoiceSent implements Event { } """ -Updates an invoice. +Updates an invoice. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -8642,7 +8642,7 @@ type Menu implements Node & ObjectWithMetadata { } """ -Deletes menus. +Deletes menus. Requires one of the following permissions: MANAGE_MENUS. """ @@ -8672,7 +8672,7 @@ type MenuCountableEdge { } """ -Creates a new Menu. +Creates a new Menu. Requires one of the following permissions: MANAGE_MENUS. """ @@ -8721,7 +8721,7 @@ type MenuCreated implements Event { } """ -Deletes a menu. +Deletes a menu. Requires one of the following permissions: MANAGE_MENUS. """ @@ -8878,7 +8878,7 @@ type MenuItem implements Node & ObjectWithMetadata { } """ -Deletes menu items. +Deletes menu items. Requires one of the following permissions: MANAGE_MENUS. """ @@ -8908,7 +8908,7 @@ type MenuItemCountableEdge { } """ -Creates a new menu item. +Creates a new menu item. Requires one of the following permissions: MANAGE_MENUS. """ @@ -8969,7 +8969,7 @@ type MenuItemCreated implements Event { } """ -Deletes a menu item. +Deletes a menu item. Requires one of the following permissions: MANAGE_MENUS. """ @@ -9029,7 +9029,7 @@ input MenuItemInput { } """ -Moves items of menus. +Moves items of menus. Requires one of the following permissions: MANAGE_MENUS. """ @@ -9079,7 +9079,7 @@ type MenuItemTranslatableContent implements Node { } """ -Creates/updates translations for a menu item. +Creates/updates translations for a menu item. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ @@ -9098,7 +9098,7 @@ type MenuItemTranslation implements Node { } """ -Updates a menu item. +Updates a menu item. Requires one of the following permissions: MANAGE_MENUS. """ @@ -9157,7 +9157,7 @@ input MenuSortingInput { } """ -Updates a menu. +Updates a menu. Requires one of the following permissions: MANAGE_MENUS. """ @@ -9291,7 +9291,7 @@ input MoveProductInput { type Mutation { """ - Create a new address for the customer. + Create a new address for the customer. Requires one of the following permissions: AUTHENTICATED_USER. """ @@ -9325,7 +9325,7 @@ type Mutation { ): AccountAddressUpdate """ - Remove user account. + Remove user account. Requires one of the following permissions: AUTHENTICATED_USER. """ @@ -9343,7 +9343,7 @@ type Mutation { ): AccountRegister """ - Sends an email with the account removal link for the logged-in user. + Sends an email with the account removal link for the logged-in user. Requires one of the following permissions: AUTHENTICATED_USER. """ @@ -9360,7 +9360,7 @@ type Mutation { ): AccountRequestDeletion """ - Sets a default address for the authenticated user. + Sets a default address for the authenticated user. Requires one of the following permissions: AUTHENTICATED_USER. """ @@ -9373,7 +9373,7 @@ type Mutation { ): AccountSetDefaultAddress """ - Updates the account of the logged-in user. + Updates the account of the logged-in user. Requires one of the following permissions: AUTHENTICATED_USER. """ @@ -9383,7 +9383,7 @@ type Mutation { ): AccountUpdate """ - Creates user address. + Creates user address. Requires one of the following permissions: MANAGE_USERS. """ @@ -9396,7 +9396,7 @@ type Mutation { ): AddressCreate """ - Deletes an address. + Deletes an address. Requires one of the following permissions: MANAGE_USERS. """ @@ -9406,7 +9406,7 @@ type Mutation { ): AddressDelete """ - Sets a default address for the given user. + Sets a default address for the given user. Requires one of the following permissions: MANAGE_USERS. """ @@ -9422,7 +9422,7 @@ type Mutation { ): AddressSetDefault """ - Updates an address. + Updates an address. Requires one of the following permissions: MANAGE_USERS. """ @@ -9435,7 +9435,7 @@ type Mutation { ): AddressUpdate """ - Activate the app. + Activate the app. Requires one of the following permissions: MANAGE_APPS. """ @@ -9453,7 +9453,7 @@ type Mutation { ): AppCreate """ - Deactivate the app. + Deactivate the app. Requires one of the following permissions: MANAGE_APPS. """ @@ -9463,7 +9463,7 @@ type Mutation { ): AppDeactivate """ - Deletes an app. + Deletes an app. Requires one of the following permissions: MANAGE_APPS. """ @@ -9473,7 +9473,7 @@ type Mutation { ): AppDelete """ - Delete failed installation. + Delete failed installation. Requires one of the following permissions: MANAGE_APPS. """ @@ -9483,7 +9483,7 @@ type Mutation { ): AppDeleteFailedInstallation """ - Fetch and validate manifest. + Fetch and validate manifest. Requires one of the following permissions: MANAGE_APPS. """ @@ -9498,7 +9498,7 @@ type Mutation { ): AppInstall """ - Retry failed installation of new app. + Retry failed installation of new app. Requires one of the following permissions: MANAGE_APPS. """ @@ -9511,7 +9511,7 @@ type Mutation { ): AppRetryInstall """ - Creates a new token. + Creates a new token. Requires one of the following permissions: MANAGE_APPS. """ @@ -9521,7 +9521,7 @@ type Mutation { ): AppTokenCreate """ - Deletes an authentication token assigned to app. + Deletes an authentication token assigned to app. Requires one of the following permissions: MANAGE_APPS. """ @@ -9537,7 +9537,7 @@ type Mutation { ): AppTokenVerify """ - Updates an existing app. + Updates an existing app. Requires one of the following permissions: MANAGE_APPS. """ @@ -9550,7 +9550,7 @@ type Mutation { ): AppUpdate """ - Assigns storefront's navigation menus. + Assigns storefront's navigation menus. Requires one of the following permissions: MANAGE_MENUS, MANAGE_SETTINGS. """ @@ -9563,7 +9563,7 @@ type Mutation { ): AssignNavigation """ - Add shipping zone to given warehouse. + Add shipping zone to given warehouse. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -9576,7 +9576,7 @@ type Mutation { ): WarehouseShippingZoneAssign """ - Deletes attributes. + Deletes attributes. Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ @@ -9592,13 +9592,13 @@ type Mutation { ): AttributeCreate """ - Deletes an attribute. + Deletes an attribute. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ attributeDelete( """ - External ID of an attribute to delete. + External ID of an attribute to delete. Added in Saleor 3.10. """ @@ -9609,7 +9609,7 @@ type Mutation { ): AttributeDelete """ - Reorder the values of an attribute. + Reorder the values of an attribute. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ @@ -9622,7 +9622,7 @@ type Mutation { ): AttributeReorderValues """ - Creates/updates translations for an attribute. + Creates/updates translations for an attribute. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ @@ -9636,13 +9636,13 @@ type Mutation { ): AttributeTranslate """ - Updates attribute. + Updates attribute. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ attributeUpdate( """ - External ID of an attribute to update. + External ID of an attribute to update. Added in Saleor 3.10. """ @@ -9656,7 +9656,7 @@ type Mutation { ): AttributeUpdate """ - Deletes values of attributes. + Deletes values of attributes. Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ @@ -9666,7 +9666,7 @@ type Mutation { ): AttributeValueBulkDelete """ - Creates a value for an attribute. + Creates a value for an attribute. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -9679,13 +9679,13 @@ type Mutation { ): AttributeValueCreate """ - Deletes a value of an attribute. + Deletes a value of an attribute. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ attributeValueDelete( """ - External ID of a value to delete. + External ID of a value to delete. Added in Saleor 3.10. """ @@ -9696,7 +9696,7 @@ type Mutation { ): AttributeValueDelete """ - Creates/updates translations for an attribute value. + Creates/updates translations for an attribute value. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ @@ -9710,13 +9710,13 @@ type Mutation { ): AttributeValueTranslate """ - Updates value of an attribute. + Updates value of an attribute. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ attributeValueUpdate( """ - External ID of an AttributeValue to update. + External ID of an AttributeValue to update. Added in Saleor 3.10. """ @@ -9730,7 +9730,7 @@ type Mutation { ): AttributeValueUpdate """ - Deletes categories. + Deletes categories. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -9740,7 +9740,7 @@ type Mutation { ): CategoryBulkDelete """ - Creates a new category. + Creates a new category. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -9755,7 +9755,7 @@ type Mutation { ): CategoryCreate """ - Deletes a category. + Deletes a category. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -9765,7 +9765,7 @@ type Mutation { ): CategoryDelete """ - Creates/updates translations for a category. + Creates/updates translations for a category. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ @@ -9779,7 +9779,7 @@ type Mutation { ): CategoryTranslate """ - Updates a category. + Updates a category. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -9792,7 +9792,7 @@ type Mutation { ): CategoryUpdate """ - Activate a channel. + Activate a channel. Requires one of the following permissions: MANAGE_CHANNELS. """ @@ -9802,7 +9802,7 @@ type Mutation { ): ChannelActivate """ - Creates new channel. + Creates new channel. Requires one of the following permissions: MANAGE_CHANNELS. """ @@ -9812,7 +9812,7 @@ type Mutation { ): ChannelCreate """ - Deactivate a channel. + Deactivate a channel. Requires one of the following permissions: MANAGE_CHANNELS. """ @@ -9822,7 +9822,7 @@ type Mutation { ): ChannelDeactivate """ - Delete a channel. Orders associated with the deleted channel will be moved to the target channel. Checkouts, product availability, and pricing will be removed. + Delete a channel. Orders associated with the deleted channel will be moved to the target channel. Checkouts, product availability, and pricing will be removed. Requires one of the following permissions: MANAGE_CHANNELS. """ @@ -9839,7 +9839,7 @@ type Mutation { Added in Saleor 3.7. - Note: this API is currently in Feature Preview and can be subject to changes at later point. + Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_CHANNELS. """ @@ -9852,7 +9852,7 @@ type Mutation { ): ChannelReorderWarehouses """ - Update a channel. + Update a channel. Requires one of the following permissions: MANAGE_CHANNELS. """ @@ -9897,7 +9897,7 @@ type Mutation { billingAddress: AddressInput! """ - The ID of the checkout. + The ID of the checkout. DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ @@ -9932,7 +9932,7 @@ type Mutation { """ checkoutComplete( """ - The ID of the checkout. + The ID of the checkout. DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ @@ -9961,7 +9961,7 @@ type Mutation { redirectUrl: String """ - Determines whether to store the payment source for future usage. + Determines whether to store the payment source for future usage. DEPRECATED: this field will be removed in Saleor 4.0. Use checkoutPaymentCreate for this action. """ @@ -9982,13 +9982,13 @@ type Mutation { ): CheckoutCreate """ - Sets the customer as the owner of the checkout. + Sets the customer as the owner of the checkout. Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_USER. """ checkoutCustomerAttach( """ - The ID of the checkout. + The ID of the checkout. DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ @@ -10015,13 +10015,13 @@ type Mutation { ): CheckoutCustomerAttach """ - Removes the user assigned as the owner of the checkout. + Removes the user assigned as the owner of the checkout. Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_USER. """ checkoutCustomerDetach( """ - The ID of the checkout. + The ID of the checkout. DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ @@ -10071,7 +10071,7 @@ type Mutation { """Updates email address in the existing checkout object.""" checkoutEmailUpdate( """ - The ID of the checkout. + The ID of the checkout. DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ @@ -10098,7 +10098,7 @@ type Mutation { """Update language code in the existing checkout.""" checkoutLanguageCodeUpdate( """ - The ID of the checkout. + The ID of the checkout. DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ @@ -10125,7 +10125,7 @@ type Mutation { """Deletes a CheckoutLine.""" checkoutLineDelete( """ - The ID of the checkout. + The ID of the checkout. DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ @@ -10154,7 +10154,7 @@ type Mutation { """ checkoutLinesAdd( """ - The ID of the checkout. + The ID of the checkout. DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ @@ -10203,7 +10203,7 @@ type Mutation { """Updates checkout line in the existing checkout.""" checkoutLinesUpdate( """ - The ID of the checkout. + The ID of the checkout. DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ @@ -10232,7 +10232,7 @@ type Mutation { """Create a new payment for given checkout.""" checkoutPaymentCreate( """ - The ID of the checkout. + The ID of the checkout. DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ @@ -10259,7 +10259,7 @@ type Mutation { """Remove a gift card or a voucher from a checkout.""" checkoutRemovePromoCode( """ - The ID of the checkout. + The ID of the checkout. DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ @@ -10289,7 +10289,7 @@ type Mutation { """Update shipping address in the existing checkout.""" checkoutShippingAddressUpdate( """ - The ID of the checkout. + The ID of the checkout. DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ @@ -10325,7 +10325,7 @@ type Mutation { """Updates the shipping method of the checkout.""" checkoutShippingMethodUpdate( """ - The ID of the checkout. + The ID of the checkout. DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ @@ -10350,7 +10350,7 @@ type Mutation { ): CheckoutShippingMethodUpdate @deprecated(reason: "This field will be removed in Saleor 4.0. Use `checkoutDeliveryMethodUpdate` instead.") """ - Adds products to a collection. + Adds products to a collection. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -10363,7 +10363,7 @@ type Mutation { ): CollectionAddProducts """ - Deletes collections. + Deletes collections. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -10373,7 +10373,7 @@ type Mutation { ): CollectionBulkDelete """ - Manage collection's availability in channels. + Manage collection's availability in channels. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -10386,7 +10386,7 @@ type Mutation { ): CollectionChannelListingUpdate """ - Creates a new collection. + Creates a new collection. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -10396,7 +10396,7 @@ type Mutation { ): CollectionCreate """ - Deletes a collection. + Deletes a collection. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -10406,7 +10406,7 @@ type Mutation { ): CollectionDelete """ - Remove products from a collection. + Remove products from a collection. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -10419,7 +10419,7 @@ type Mutation { ): CollectionRemoveProducts """ - Reorder the products of a collection. + Reorder the products of a collection. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -10432,7 +10432,7 @@ type Mutation { ): CollectionReorderProducts """ - Creates/updates translations for a collection. + Creates/updates translations for a collection. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ @@ -10446,7 +10446,7 @@ type Mutation { ): CollectionTranslate """ - Updates a collection. + Updates a collection. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -10468,7 +10468,7 @@ type Mutation { ): ConfirmAccount """ - Confirm the email change of the logged-in user. + Confirm the email change of the logged-in user. Requires one of the following permissions: AUTHENTICATED_USER. """ @@ -10483,7 +10483,7 @@ type Mutation { ): ConfirmEmailChange """ - Creates new warehouse. + Creates new warehouse. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -10493,7 +10493,7 @@ type Mutation { ): WarehouseCreate """ - Deletes customers. + Deletes customers. Requires one of the following permissions: MANAGE_USERS. """ @@ -10503,7 +10503,7 @@ type Mutation { ): CustomerBulkDelete """ - Creates a new customer. + Creates a new customer. Requires one of the following permissions: MANAGE_USERS. """ @@ -10513,13 +10513,13 @@ type Mutation { ): CustomerCreate """ - Deletes a customer. + Deletes a customer. Requires one of the following permissions: MANAGE_USERS. """ customerDelete( """ - External ID of a customer to update. + External ID of a customer to update. Added in Saleor 3.10. """ @@ -10530,13 +10530,13 @@ type Mutation { ): CustomerDelete """ - Updates an existing customer. + Updates an existing customer. Requires one of the following permissions: MANAGE_USERS. """ customerUpdate( """ - External ID of a customer to update. + External ID of a customer to update. Added in Saleor 3.10. """ @@ -10572,7 +10572,7 @@ type Mutation { ): DeletePrivateMetadata """ - Deletes selected warehouse. + Deletes selected warehouse. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -10582,7 +10582,7 @@ type Mutation { ): WarehouseDelete """ - Create new digital content. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + Create new digital content. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -10595,7 +10595,7 @@ type Mutation { ): DigitalContentCreate """ - Remove digital content assigned to given variant. + Remove digital content assigned to given variant. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -10605,7 +10605,7 @@ type Mutation { ): DigitalContentDelete """ - Update digital content. + Update digital content. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -10618,7 +10618,7 @@ type Mutation { ): DigitalContentUpdate """ - Generate new URL to digital content. + Generate new URL to digital content. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -10628,7 +10628,7 @@ type Mutation { ): DigitalContentUrlCreate """ - Deletes draft orders. + Deletes draft orders. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -10638,7 +10638,7 @@ type Mutation { ): DraftOrderBulkDelete """ - Completes creating an order. + Completes creating an order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -10648,7 +10648,7 @@ type Mutation { ): DraftOrderComplete """ - Creates a new draft order. + Creates a new draft order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -10658,13 +10658,13 @@ type Mutation { ): DraftOrderCreate """ - Deletes a draft order. + Deletes a draft order. Requires one of the following permissions: MANAGE_ORDERS. """ draftOrderDelete( """ - External ID of a product to delete. + External ID of a product to delete. Added in Saleor 3.10. """ @@ -10675,7 +10675,7 @@ type Mutation { ): DraftOrderDelete """ - Deletes order lines. + Deletes order lines. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -10685,13 +10685,13 @@ type Mutation { ): DraftOrderLinesBulkDelete @deprecated(reason: "This field will be removed in Saleor 4.0.") """ - Updates a draft order. + Updates a draft order. Requires one of the following permissions: MANAGE_ORDERS. """ draftOrderUpdate( """ - External ID of a draft order to update. + External ID of a draft order to update. Added in Saleor 3.10. """ @@ -10705,7 +10705,7 @@ type Mutation { ): DraftOrderUpdate """ - Retries event delivery. + Retries event delivery. Requires one of the following permissions: MANAGE_APPS. """ @@ -10719,7 +10719,7 @@ type Mutation { Added in Saleor 3.1. - Note: this API is currently in Feature Preview and can be subject to changes at later point. + Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_GIFT_CARD. """ @@ -10729,7 +10729,7 @@ type Mutation { ): ExportGiftCards """ - Export products to csv file. + Export products to csv file. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -10802,7 +10802,7 @@ type Mutation { ): ExternalVerify """ - Upload a file. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + Upload a file. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER. """ @@ -10812,7 +10812,7 @@ type Mutation { ): FileUpload """ - Activate a gift card. + Activate a gift card. Requires one of the following permissions: MANAGE_GIFT_CARD. """ @@ -10826,7 +10826,7 @@ type Mutation { Added in Saleor 3.1. - Note: this API is currently in Feature Preview and can be subject to changes at later point. + Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_GIFT_CARD. """ @@ -10843,7 +10843,7 @@ type Mutation { Added in Saleor 3.1. - Note: this API is currently in Feature Preview and can be subject to changes at later point. + Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_GIFT_CARD. """ @@ -10857,7 +10857,7 @@ type Mutation { Added in Saleor 3.1. - Note: this API is currently in Feature Preview and can be subject to changes at later point. + Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_GIFT_CARD. """ @@ -10871,7 +10871,7 @@ type Mutation { Added in Saleor 3.1. - Note: this API is currently in Feature Preview and can be subject to changes at later point. + Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_GIFT_CARD. """ @@ -10885,7 +10885,7 @@ type Mutation { Added in Saleor 3.1. - Note: this API is currently in Feature Preview and can be subject to changes at later point. + Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_GIFT_CARD. """ @@ -10895,7 +10895,7 @@ type Mutation { ): GiftCardBulkDelete """ - Creates a new gift card. + Creates a new gift card. Requires one of the following permissions: MANAGE_GIFT_CARD. """ @@ -10905,7 +10905,7 @@ type Mutation { ): GiftCardCreate """ - Deactivate a gift card. + Deactivate a gift card. Requires one of the following permissions: MANAGE_GIFT_CARD. """ @@ -10919,7 +10919,7 @@ type Mutation { Added in Saleor 3.1. - Note: this API is currently in Feature Preview and can be subject to changes at later point. + Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_GIFT_CARD. """ @@ -10933,7 +10933,7 @@ type Mutation { Added in Saleor 3.1. - Note: this API is currently in Feature Preview and can be subject to changes at later point. + Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_GIFT_CARD. """ @@ -10943,7 +10943,7 @@ type Mutation { ): GiftCardResend """ - Update gift card settings. + Update gift card settings. Requires one of the following permissions: MANAGE_GIFT_CARD. """ @@ -10953,7 +10953,7 @@ type Mutation { ): GiftCardSettingsUpdate """ - Update a gift card. + Update a gift card. Requires one of the following permissions: MANAGE_GIFT_CARD. """ @@ -10966,7 +10966,7 @@ type Mutation { ): GiftCardUpdate """ - Creates a ready to send invoice. + Creates a ready to send invoice. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -10979,7 +10979,7 @@ type Mutation { ): InvoiceCreate """ - Deletes an invoice. + Deletes an invoice. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -10989,7 +10989,7 @@ type Mutation { ): InvoiceDelete """ - Request an invoice for the order using plugin. + Request an invoice for the order using plugin. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11002,7 +11002,7 @@ type Mutation { ): InvoiceRequest """ - Requests deletion of an invoice. + Requests deletion of an invoice. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11012,7 +11012,7 @@ type Mutation { ): InvoiceRequestDelete """ - Send an invoice notification to the customer. + Send an invoice notification to the customer. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11022,7 +11022,7 @@ type Mutation { ): InvoiceSendNotification """ - Updates an invoice. + Updates an invoice. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11035,7 +11035,7 @@ type Mutation { ): InvoiceUpdate """ - Deletes menus. + Deletes menus. Requires one of the following permissions: MANAGE_MENUS. """ @@ -11045,7 +11045,7 @@ type Mutation { ): MenuBulkDelete """ - Creates a new Menu. + Creates a new Menu. Requires one of the following permissions: MANAGE_MENUS. """ @@ -11055,7 +11055,7 @@ type Mutation { ): MenuCreate """ - Deletes a menu. + Deletes a menu. Requires one of the following permissions: MANAGE_MENUS. """ @@ -11065,7 +11065,7 @@ type Mutation { ): MenuDelete """ - Deletes menu items. + Deletes menu items. Requires one of the following permissions: MANAGE_MENUS. """ @@ -11075,7 +11075,7 @@ type Mutation { ): MenuItemBulkDelete """ - Creates a new menu item. + Creates a new menu item. Requires one of the following permissions: MANAGE_MENUS. """ @@ -11087,7 +11087,7 @@ type Mutation { ): MenuItemCreate """ - Deletes a menu item. + Deletes a menu item. Requires one of the following permissions: MANAGE_MENUS. """ @@ -11097,7 +11097,7 @@ type Mutation { ): MenuItemDelete """ - Moves items of menus. + Moves items of menus. Requires one of the following permissions: MANAGE_MENUS. """ @@ -11110,7 +11110,7 @@ type Mutation { ): MenuItemMove """ - Creates/updates translations for a menu item. + Creates/updates translations for a menu item. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ @@ -11124,7 +11124,7 @@ type Mutation { ): MenuItemTranslate """ - Updates a menu item. + Updates a menu item. Requires one of the following permissions: MANAGE_MENUS. """ @@ -11139,7 +11139,7 @@ type Mutation { ): MenuItemUpdate """ - Updates a menu. + Updates a menu. Requires one of the following permissions: MANAGE_MENUS. """ @@ -11152,7 +11152,7 @@ type Mutation { ): MenuUpdate """ - Adds note to the order. + Adds note to the order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11165,7 +11165,7 @@ type Mutation { ): OrderAddNote """ - Cancels orders. + Cancels orders. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11175,7 +11175,7 @@ type Mutation { ): OrderBulkCancel """ - Cancel an order. + Cancel an order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11185,7 +11185,7 @@ type Mutation { ): OrderCancel """ - Capture an order. + Capture an order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11198,7 +11198,7 @@ type Mutation { ): OrderCapture """ - Confirms an unconfirmed order by changing status to unfulfilled. + Confirms an unconfirmed order by changing status to unfulfilled. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11239,7 +11239,7 @@ type Mutation { ): OrderCreateFromCheckout """ - Adds discount to the order. + Adds discount to the order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11252,7 +11252,7 @@ type Mutation { ): OrderDiscountAdd """ - Remove discount from the order. + Remove discount from the order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11262,7 +11262,7 @@ type Mutation { ): OrderDiscountDelete """ - Update discount for the order. + Update discount for the order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11275,7 +11275,7 @@ type Mutation { ): OrderDiscountUpdate """ - Creates new fulfillments for an order. + Creates new fulfillments for an order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11290,7 +11290,7 @@ type Mutation { """ Approve existing fulfillment. - Added in Saleor 3.1. + Added in Saleor 3.1. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11306,7 +11306,7 @@ type Mutation { ): FulfillmentApprove """ - Cancels existing fulfillment and optionally restocks items. + Cancels existing fulfillment and optionally restocks items. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11319,7 +11319,7 @@ type Mutation { ): FulfillmentCancel """ - Refund products. + Refund products. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11332,7 +11332,7 @@ type Mutation { ): FulfillmentRefundProducts """ - Return products. + Return products. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11345,7 +11345,7 @@ type Mutation { ): FulfillmentReturnProducts """ - Updates a fulfillment for an order. + Updates a fulfillment for an order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11358,7 +11358,7 @@ type Mutation { ): FulfillmentUpdateTracking """ - Deletes an order line from an order. + Deletes an order line from an order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11368,7 +11368,7 @@ type Mutation { ): OrderLineDelete """ - Remove discount applied to the order line. + Remove discount applied to the order line. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11378,7 +11378,7 @@ type Mutation { ): OrderLineDiscountRemove """ - Update discount for the order line. + Update discount for the order line. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11391,7 +11391,7 @@ type Mutation { ): OrderLineDiscountUpdate """ - Updates an order line of an order. + Updates an order line of an order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11404,7 +11404,7 @@ type Mutation { ): OrderLineUpdate """ - Create order lines for an order. + Create order lines for an order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11417,7 +11417,7 @@ type Mutation { ): OrderLinesCreate """ - Mark order as manually paid. + Mark order as manually paid. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11430,7 +11430,7 @@ type Mutation { ): OrderMarkAsPaid """ - Refund an order. + Refund an order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11443,7 +11443,7 @@ type Mutation { ): OrderRefund """ - Update shop order settings. + Update shop order settings. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11453,13 +11453,13 @@ type Mutation { ): OrderSettingsUpdate """ - Updates an order. + Updates an order. Requires one of the following permissions: MANAGE_ORDERS. """ orderUpdate( """ - External ID of an order to update. + External ID of an order to update. Added in Saleor 3.10. """ @@ -11473,7 +11473,7 @@ type Mutation { ): OrderUpdate """ - Updates a shipping method of the order. Requires shipping method ID to update, when null is passed then currently assigned shipping method is removed. + Updates a shipping method of the order. Requires shipping method ID to update, when null is passed then currently assigned shipping method is removed. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11486,7 +11486,7 @@ type Mutation { ): OrderUpdateShipping """ - Void an order. + Void an order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11496,7 +11496,7 @@ type Mutation { ): OrderVoid """ - Assign attributes to a given page type. + Assign attributes to a given page type. Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ @@ -11509,7 +11509,7 @@ type Mutation { ): PageAttributeAssign """ - Unassign attributes from a given page type. + Unassign attributes from a given page type. Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ @@ -11522,7 +11522,7 @@ type Mutation { ): PageAttributeUnassign """ - Deletes pages. + Deletes pages. Requires one of the following permissions: MANAGE_PAGES. """ @@ -11532,7 +11532,7 @@ type Mutation { ): PageBulkDelete """ - Publish pages. + Publish pages. Requires one of the following permissions: MANAGE_PAGES. """ @@ -11545,7 +11545,7 @@ type Mutation { ): PageBulkPublish """ - Creates a new page. + Creates a new page. Requires one of the following permissions: MANAGE_PAGES. """ @@ -11555,7 +11555,7 @@ type Mutation { ): PageCreate """ - Deletes a page. + Deletes a page. Requires one of the following permissions: MANAGE_PAGES. """ @@ -11565,7 +11565,7 @@ type Mutation { ): PageDelete """ - Reorder page attribute values. + Reorder page attribute values. Requires one of the following permissions: MANAGE_PAGES. """ @@ -11581,7 +11581,7 @@ type Mutation { ): PageReorderAttributeValues """ - Creates/updates translations for a page. + Creates/updates translations for a page. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ @@ -11595,7 +11595,7 @@ type Mutation { ): PageTranslate """ - Delete page types. + Delete page types. Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ @@ -11605,7 +11605,7 @@ type Mutation { ): PageTypeBulkDelete """ - Create a new page type. + Create a new page type. Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ @@ -11615,7 +11615,7 @@ type Mutation { ): PageTypeCreate """ - Delete a page type. + Delete a page type. Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ @@ -11625,7 +11625,7 @@ type Mutation { ): PageTypeDelete """ - Reorder the attributes of a page type. + Reorder the attributes of a page type. Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ @@ -11638,7 +11638,7 @@ type Mutation { ): PageTypeReorderAttributes """ - Update page type. + Update page type. Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ @@ -11651,7 +11651,7 @@ type Mutation { ): PageTypeUpdate """ - Updates an existing page. + Updates an existing page. Requires one of the following permissions: MANAGE_PAGES. """ @@ -11664,7 +11664,7 @@ type Mutation { ): PageUpdate """ - Change the password of the logged in user. + Change the password of the logged in user. Requires one of the following permissions: AUTHENTICATED_USER. """ @@ -11677,7 +11677,7 @@ type Mutation { ): PasswordChange """ - Captures the authorized payment amount. + Captures the authorized payment amount. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11708,7 +11708,7 @@ type Mutation { ): PaymentInitialize """ - Refunds the captured payment amount. + Refunds the captured payment amount. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11721,7 +11721,7 @@ type Mutation { ): PaymentRefund """ - Voids the authorized payment. + Voids the authorized payment. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -11731,7 +11731,7 @@ type Mutation { ): PaymentVoid """ - Create new permission group. Apps are not allowed to perform this mutation. + Create new permission group. Apps are not allowed to perform this mutation. Requires one of the following permissions: MANAGE_STAFF. """ @@ -11741,7 +11741,7 @@ type Mutation { ): PermissionGroupCreate """ - Delete permission group. Apps are not allowed to perform this mutation. + Delete permission group. Apps are not allowed to perform this mutation. Requires one of the following permissions: MANAGE_STAFF. """ @@ -11751,7 +11751,7 @@ type Mutation { ): PermissionGroupDelete """ - Update permission group. Apps are not allowed to perform this mutation. + Update permission group. Apps are not allowed to perform this mutation. Requires one of the following permissions: MANAGE_STAFF. """ @@ -11764,7 +11764,7 @@ type Mutation { ): PermissionGroupUpdate """ - Update plugin configuration. + Update plugin configuration. Requires one of the following permissions: MANAGE_PLUGINS. """ @@ -11780,7 +11780,7 @@ type Mutation { ): PluginUpdate """ - Assign attributes to a given product type. + Assign attributes to a given product type. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ @@ -11795,7 +11795,7 @@ type Mutation { """ Update attributes assigned to product variant for given product type. - Added in Saleor 3.1. + Added in Saleor 3.1. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ @@ -11808,7 +11808,7 @@ type Mutation { ): ProductAttributeAssignmentUpdate """ - Un-assign attributes from a given product type. + Un-assign attributes from a given product type. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ @@ -11821,7 +11821,7 @@ type Mutation { ): ProductAttributeUnassign """ - Deletes products. + Deletes products. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -11831,7 +11831,7 @@ type Mutation { ): ProductBulkDelete """ - Manage product's availability in channels. + Manage product's availability in channels. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -11844,7 +11844,7 @@ type Mutation { ): ProductChannelListingUpdate """ - Creates a new product. + Creates a new product. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -11854,13 +11854,13 @@ type Mutation { ): ProductCreate """ - Deletes a product. + Deletes a product. Requires one of the following permissions: MANAGE_PRODUCTS. """ productDelete( """ - External ID of a product to delete. + External ID of a product to delete. Added in Saleor 3.10. """ @@ -11871,7 +11871,7 @@ type Mutation { ): ProductDelete """ - Deletes product media. + Deletes product media. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -11881,7 +11881,7 @@ type Mutation { ): ProductMediaBulkDelete """ - Create a media object (image or video URL) associated with product. For image, this mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + Create a media object (image or video URL) associated with product. For image, this mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -11891,7 +11891,7 @@ type Mutation { ): ProductMediaCreate """ - Deletes a product media. + Deletes a product media. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -11901,7 +11901,7 @@ type Mutation { ): ProductMediaDelete """ - Changes ordering of the product media. + Changes ordering of the product media. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -11914,7 +11914,7 @@ type Mutation { ): ProductMediaReorder """ - Updates a product media. + Updates a product media. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -11927,7 +11927,7 @@ type Mutation { ): ProductMediaUpdate """ - Reorder product attribute values. + Reorder product attribute values. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -11943,7 +11943,7 @@ type Mutation { ): ProductReorderAttributeValues """ - Creates/updates translations for a product. + Creates/updates translations for a product. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ @@ -11957,7 +11957,7 @@ type Mutation { ): ProductTranslate """ - Deletes product types. + Deletes product types. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ @@ -11967,7 +11967,7 @@ type Mutation { ): ProductTypeBulkDelete """ - Creates a new product type. + Creates a new product type. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ @@ -11977,7 +11977,7 @@ type Mutation { ): ProductTypeCreate """ - Deletes a product type. + Deletes a product type. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ @@ -11987,7 +11987,7 @@ type Mutation { ): ProductTypeDelete """ - Reorder the attributes of a product type. + Reorder the attributes of a product type. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ @@ -12003,7 +12003,7 @@ type Mutation { ): ProductTypeReorderAttributes """ - Updates an existing product type. + Updates an existing product type. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ @@ -12016,13 +12016,13 @@ type Mutation { ): ProductTypeUpdate """ - Updates an existing product. + Updates an existing product. Requires one of the following permissions: MANAGE_PRODUCTS. """ productUpdate( """ - External ID of a product to update. + External ID of a product to update. Added in Saleor 3.10. """ @@ -12036,7 +12036,7 @@ type Mutation { ): ProductUpdate """ - Creates product variants for a given product. + Creates product variants for a given product. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -12049,7 +12049,7 @@ type Mutation { ): ProductVariantBulkCreate """ - Deletes product variants. + Deletes product variants. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -12066,7 +12066,7 @@ type Mutation { ): ProductVariantBulkDelete """ - Manage product variant prices in channels. + Manage product variant prices in channels. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -12088,7 +12088,7 @@ type Mutation { ): ProductVariantChannelListingUpdate """ - Creates a new variant for a product. + Creates a new variant for a product. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -12098,13 +12098,13 @@ type Mutation { ): ProductVariantCreate """ - Deletes a product variant. + Deletes a product variant. Requires one of the following permissions: MANAGE_PRODUCTS. """ productVariantDelete( """ - External ID of a product variant to update. + External ID of a product variant to update. Added in Saleor 3.10. """ @@ -12126,7 +12126,7 @@ type Mutation { Added in Saleor 3.1. - Note: this API is currently in Feature Preview and can be subject to changes at later point. + Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -12136,7 +12136,7 @@ type Mutation { ): ProductVariantPreorderDeactivate """ - Reorder the variants of a product. Mutation updates updated_at on product and triggers PRODUCT_UPDATED webhook. + Reorder the variants of a product. Mutation updates updated_at on product and triggers PRODUCT_UPDATED webhook. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -12149,7 +12149,7 @@ type Mutation { ): ProductVariantReorder """ - Reorder product variant attribute values. + Reorder product variant attribute values. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -12165,7 +12165,7 @@ type Mutation { ): ProductVariantReorderAttributeValues """ - Set default variant for a product. Mutation triggers PRODUCT_UPDATED webhook. + Set default variant for a product. Mutation triggers PRODUCT_UPDATED webhook. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -12178,7 +12178,7 @@ type Mutation { ): ProductVariantSetDefault """ - Creates stocks for product variant. + Creates stocks for product variant. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -12191,7 +12191,7 @@ type Mutation { ): ProductVariantStocksCreate """ - Delete stocks from product variant. + Delete stocks from product variant. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -12207,7 +12207,7 @@ type Mutation { ): ProductVariantStocksDelete """ - Update stocks for product variant. + Update stocks for product variant. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -12223,7 +12223,7 @@ type Mutation { ): ProductVariantStocksUpdate """ - Creates/updates translations for a product variant. + Creates/updates translations for a product variant. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ @@ -12237,13 +12237,13 @@ type Mutation { ): ProductVariantTranslate """ - Updates an existing variant for product. + Updates an existing variant for product. Requires one of the following permissions: MANAGE_PRODUCTS. """ productVariantUpdate( """ - External ID of a product variant to update. + External ID of a product variant to update. Added in Saleor 3.10. """ @@ -12264,7 +12264,7 @@ type Mutation { ): ProductVariantUpdate """ - Request email change of the logged in user. + Request email change of the logged in user. Requires one of the following permissions: AUTHENTICATED_USER. """ @@ -12303,7 +12303,7 @@ type Mutation { ): RequestPasswordReset """ - Deletes sales. + Deletes sales. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -12313,7 +12313,7 @@ type Mutation { ): SaleBulkDelete """ - Adds products, categories, collections to a voucher. + Adds products, categories, collections to a voucher. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -12326,7 +12326,7 @@ type Mutation { ): SaleAddCatalogues """ - Removes products, categories, collections from a sale. + Removes products, categories, collections from a sale. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -12339,7 +12339,7 @@ type Mutation { ): SaleRemoveCatalogues """ - Manage sale's availability in channels. + Manage sale's availability in channels. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -12352,7 +12352,7 @@ type Mutation { ): SaleChannelListingUpdate """ - Creates a new sale. + Creates a new sale. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -12362,7 +12362,7 @@ type Mutation { ): SaleCreate """ - Deletes a sale. + Deletes a sale. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -12372,7 +12372,7 @@ type Mutation { ): SaleDelete """ - Creates/updates translations for a sale. + Creates/updates translations for a sale. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ @@ -12386,7 +12386,7 @@ type Mutation { ): SaleTranslate """ - Updates a sale. + Updates a sale. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -12413,7 +12413,7 @@ type Mutation { ): SetPassword """ - Manage shipping method's availability in channels. + Manage shipping method's availability in channels. Requires one of the following permissions: MANAGE_SHIPPING. """ @@ -12426,7 +12426,7 @@ type Mutation { ): ShippingMethodChannelListingUpdate """ - Deletes shipping prices. + Deletes shipping prices. Requires one of the following permissions: MANAGE_SHIPPING. """ @@ -12436,7 +12436,7 @@ type Mutation { ): ShippingPriceBulkDelete """ - Creates a new shipping price. + Creates a new shipping price. Requires one of the following permissions: MANAGE_SHIPPING. """ @@ -12446,7 +12446,7 @@ type Mutation { ): ShippingPriceCreate """ - Deletes a shipping price. + Deletes a shipping price. Requires one of the following permissions: MANAGE_SHIPPING. """ @@ -12456,7 +12456,7 @@ type Mutation { ): ShippingPriceDelete """ - Exclude products from shipping price. + Exclude products from shipping price. Requires one of the following permissions: MANAGE_SHIPPING. """ @@ -12469,7 +12469,7 @@ type Mutation { ): ShippingPriceExcludeProducts """ - Remove product from excluded list for shipping price. + Remove product from excluded list for shipping price. Requires one of the following permissions: MANAGE_SHIPPING. """ @@ -12482,7 +12482,7 @@ type Mutation { ): ShippingPriceRemoveProductFromExclude """ - Creates/updates translations for a shipping method. + Creates/updates translations for a shipping method. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ @@ -12496,7 +12496,7 @@ type Mutation { ): ShippingPriceTranslate """ - Updates a new shipping price. + Updates a new shipping price. Requires one of the following permissions: MANAGE_SHIPPING. """ @@ -12509,7 +12509,7 @@ type Mutation { ): ShippingPriceUpdate """ - Deletes shipping zones. + Deletes shipping zones. Requires one of the following permissions: MANAGE_SHIPPING. """ @@ -12519,7 +12519,7 @@ type Mutation { ): ShippingZoneBulkDelete """ - Creates a new shipping zone. + Creates a new shipping zone. Requires one of the following permissions: MANAGE_SHIPPING. """ @@ -12529,7 +12529,7 @@ type Mutation { ): ShippingZoneCreate """ - Deletes a shipping zone. + Deletes a shipping zone. Requires one of the following permissions: MANAGE_SHIPPING. """ @@ -12539,7 +12539,7 @@ type Mutation { ): ShippingZoneDelete """ - Updates a new shipping zone. + Updates a new shipping zone. Requires one of the following permissions: MANAGE_SHIPPING. """ @@ -12552,7 +12552,7 @@ type Mutation { ): ShippingZoneUpdate """ - Update the shop's address. If the `null` value is passed, the currently selected address will be deleted. + Update the shop's address. If the `null` value is passed, the currently selected address will be deleted. Requires one of the following permissions: MANAGE_SETTINGS. """ @@ -12562,7 +12562,7 @@ type Mutation { ): ShopAddressUpdate """ - Updates site domain of the shop. + Updates site domain of the shop. Requires one of the following permissions: MANAGE_SETTINGS. """ @@ -12572,14 +12572,14 @@ type Mutation { ): ShopDomainUpdate """ - Fetch tax rates. + Fetch tax rates. Requires one of the following permissions: MANAGE_SETTINGS. """ shopFetchTaxRates: ShopFetchTaxRates @deprecated(reason: "\\n\\nDEPRECATED: this mutation will be removed in Saleor 4.0.") """ - Creates/updates translations for shop settings. + Creates/updates translations for shop settings. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ @@ -12592,7 +12592,7 @@ type Mutation { ): ShopSettingsTranslate """ - Updates shop settings. + Updates shop settings. Requires one of the following permissions: MANAGE_SETTINGS. """ @@ -12602,7 +12602,7 @@ type Mutation { ): ShopSettingsUpdate """ - Deletes staff users. Apps are not allowed to perform this mutation. + Deletes staff users. Apps are not allowed to perform this mutation. Requires one of the following permissions: MANAGE_STAFF. """ @@ -12612,7 +12612,7 @@ type Mutation { ): StaffBulkDelete """ - Creates a new staff user. Apps are not allowed to perform this mutation. + Creates a new staff user. Apps are not allowed to perform this mutation. Requires one of the following permissions: MANAGE_STAFF. """ @@ -12622,7 +12622,7 @@ type Mutation { ): StaffCreate """ - Deletes a staff user. Apps are not allowed to perform this mutation. + Deletes a staff user. Apps are not allowed to perform this mutation. Requires one of the following permissions: MANAGE_STAFF. """ @@ -12632,7 +12632,7 @@ type Mutation { ): StaffDelete """ - Creates a new staff notification recipient. + Creates a new staff notification recipient. Requires one of the following permissions: MANAGE_SETTINGS. """ @@ -12642,7 +12642,7 @@ type Mutation { ): StaffNotificationRecipientCreate """ - Delete staff notification recipient. + Delete staff notification recipient. Requires one of the following permissions: MANAGE_SETTINGS. """ @@ -12652,7 +12652,7 @@ type Mutation { ): StaffNotificationRecipientDelete """ - Updates a staff notification recipient. + Updates a staff notification recipient. Requires one of the following permissions: MANAGE_SETTINGS. """ @@ -12665,7 +12665,7 @@ type Mutation { ): StaffNotificationRecipientUpdate """ - Updates an existing staff user. Apps are not allowed to perform this mutation. + Updates an existing staff user. Apps are not allowed to perform this mutation. Requires one of the following permissions: MANAGE_STAFF. """ @@ -12682,7 +12682,7 @@ type Mutation { Added in Saleor 3.9. - Note: this API is currently in Feature Preview and can be subject to changes at later point. + Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_TAXES. """ @@ -12696,7 +12696,7 @@ type Mutation { Added in Saleor 3.9. - Note: this API is currently in Feature Preview and can be subject to changes at later point. + Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_TAXES. """ @@ -12710,7 +12710,7 @@ type Mutation { Added in Saleor 3.9. - Note: this API is currently in Feature Preview and can be subject to changes at later point. + Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_TAXES. """ @@ -12727,7 +12727,7 @@ type Mutation { Added in Saleor 3.9. - Note: this API is currently in Feature Preview and can be subject to changes at later point. + Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_TAXES. """ @@ -12744,7 +12744,7 @@ type Mutation { Added in Saleor 3.9. - Note: this API is currently in Feature Preview and can be subject to changes at later point. + Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_TAXES. """ @@ -12758,7 +12758,7 @@ type Mutation { Added in Saleor 3.9. - Note: this API is currently in Feature Preview and can be subject to changes at later point. + Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_TAXES. """ @@ -12777,7 +12777,7 @@ type Mutation { Added in Saleor 3.8. - Note: this API is currently in Feature Preview and can be subject to changes at later point. + Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_TAXES. """ @@ -12827,7 +12827,7 @@ type Mutation { ): VerifyToken """ - Deactivate all JWT tokens of the currently authenticated user. + Deactivate all JWT tokens of the currently authenticated user. Requires one of the following permissions: AUTHENTICATED_USER. """ @@ -12856,7 +12856,7 @@ type Mutation { Added in Saleor 3.4. - Note: this API is currently in Feature Preview and can be subject to changes at later point. + Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: HANDLE_PAYMENTS, MANAGE_ORDERS. """ @@ -12892,7 +12892,7 @@ type Mutation { ): TransactionUpdate """ - Remove shipping zone from given warehouse. + Remove shipping zone from given warehouse. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -12927,7 +12927,7 @@ type Mutation { ): UpdatePrivateMetadata """ - Updates given warehouse. + Updates given warehouse. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -12940,14 +12940,14 @@ type Mutation { ): WarehouseUpdate """ - Deletes a user avatar. Only for staff members. + Deletes a user avatar. Only for staff members. Requires one of the following permissions: AUTHENTICATED_STAFF_USER. """ userAvatarDelete: UserAvatarDelete """ - Create a user avatar. Only for staff members. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + Create a user avatar. Only for staff members. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec Requires one of the following permissions: AUTHENTICATED_STAFF_USER. """ @@ -12957,7 +12957,7 @@ type Mutation { ): UserAvatarUpdate """ - Activate or deactivate users. + Activate or deactivate users. Requires one of the following permissions: MANAGE_USERS. """ @@ -12970,7 +12970,7 @@ type Mutation { ): UserBulkSetActive """ - Assign an media to a product variant. + Assign an media to a product variant. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -12983,7 +12983,7 @@ type Mutation { ): VariantMediaAssign """ - Unassign an media from a product variant. + Unassign an media from a product variant. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -12996,7 +12996,7 @@ type Mutation { ): VariantMediaUnassign """ - Deletes vouchers. + Deletes vouchers. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -13006,7 +13006,7 @@ type Mutation { ): VoucherBulkDelete """ - Adds products, categories, collections to a voucher. + Adds products, categories, collections to a voucher. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -13019,7 +13019,7 @@ type Mutation { ): VoucherAddCatalogues """ - Removes products, categories, collections from a voucher. + Removes products, categories, collections from a voucher. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -13032,7 +13032,7 @@ type Mutation { ): VoucherRemoveCatalogues """ - Manage voucher's availability in channels. + Manage voucher's availability in channels. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -13045,7 +13045,7 @@ type Mutation { ): VoucherChannelListingUpdate """ - Creates a new voucher. + Creates a new voucher. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -13055,7 +13055,7 @@ type Mutation { ): VoucherCreate """ - Deletes a voucher. + Deletes a voucher. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -13065,7 +13065,7 @@ type Mutation { ): VoucherDelete """ - Creates/updates translations for a voucher. + Creates/updates translations for a voucher. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ @@ -13079,7 +13079,7 @@ type Mutation { ): VoucherTranslate """ - Updates a voucher. + Updates a voucher. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -13092,7 +13092,7 @@ type Mutation { ): VoucherUpdate """ - Creates a new webhook subscription. + Creates a new webhook subscription. Requires one of the following permissions: MANAGE_APPS, AUTHENTICATED_APP. """ @@ -13102,7 +13102,7 @@ type Mutation { ): WebhookCreate """ - Delete a webhook. Before the deletion, the webhook is deactivated to pause any deliveries that are already scheduled. The deletion might fail if delivery is in progress. In such a case, the webhook is not deleted but remains deactivated. + Delete a webhook. Before the deletion, the webhook is deactivated to pause any deliveries that are already scheduled. The deletion might fail if delivery is in progress. In such a case, the webhook is not deleted but remains deactivated. Requires one of the following permissions: MANAGE_APPS, AUTHENTICATED_APP. """ @@ -13112,7 +13112,7 @@ type Mutation { ): WebhookDelete """ - Updates a webhook subscription. + Updates a webhook subscription. Requires one of the following permissions: MANAGE_APPS. """ @@ -13280,7 +13280,7 @@ type Order implements Node & ObjectWithMetadata { events: [OrderEvent!]! """ - External ID of this order. + External ID of this order. Added in Saleor 3.10. """ @@ -13506,7 +13506,7 @@ enum OrderAction { } """ -Adds note to the order. +Adds note to the order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -13548,7 +13548,7 @@ enum OrderAuthorizeStatusEnum { } """ -Cancels orders. +Cancels orders. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -13560,7 +13560,7 @@ type OrderBulkCancel { } """ -Cancel an order. +Cancel an order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -13597,7 +13597,7 @@ type OrderCancelled implements Event { } """ -Capture an order. +Capture an order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -13630,7 +13630,7 @@ enum OrderChargeStatusEnum { } """ -Confirms an unconfirmed order by changing status to unfulfilled. +Confirms an unconfirmed order by changing status to unfulfilled. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -13789,7 +13789,7 @@ type OrderDiscount implements Node { } """ -Adds discount to the order. +Adds discount to the order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -13813,7 +13813,7 @@ input OrderDiscountCommonInput { } """ -Remove discount from the order. +Remove discount from the order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -13832,7 +13832,7 @@ enum OrderDiscountType { } """ -Update discount for the order. +Update discount for the order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -14162,7 +14162,7 @@ type OrderFilterShippingMethods implements Event { } """ -Creates new fulfillments for an order. +Creates new fulfillments for an order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -14419,7 +14419,7 @@ type OrderLine implements Node & ObjectWithMetadata { input OrderLineCreateInput { """ - Flag that allow force splitting the same variant into multiple lines by skipping the matching logic. + Flag that allow force splitting the same variant into multiple lines by skipping the matching logic. Added in Saleor 3.6. @@ -14435,7 +14435,7 @@ input OrderLineCreateInput { } """ -Deletes an order line from an order. +Deletes an order line from an order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -14451,7 +14451,7 @@ type OrderLineDelete { } """ -Remove discount applied to the order line. +Remove discount applied to the order line. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -14467,7 +14467,7 @@ type OrderLineDiscountRemove { } """ -Update discount for the order line. +Update discount for the order line. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -14488,7 +14488,7 @@ input OrderLineInput { } """ -Updates an order line of an order. +Updates an order line of an order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -14502,7 +14502,7 @@ type OrderLineUpdate { } """ -Create order lines for an order. +Create order lines for an order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -14518,7 +14518,7 @@ type OrderLinesCreate { } """ -Mark order as manually paid. +Mark order as manually paid. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -14562,7 +14562,7 @@ enum OrderOriginEnum { } """ -Refund an order. +Refund an order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -14672,7 +14672,7 @@ enum OrderSettingsErrorCode { } """ -Update shop order settings. +Update shop order settings. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -14698,14 +14698,14 @@ input OrderSettingsUpdateInput { enum OrderSortField { """ - Sort orders by creation date. + Sort orders by creation date. DEPRECATED: this field will be removed in Saleor 4.0. """ CREATED_AT """ - Sort orders by creation date. + Sort orders by creation date. DEPRECATED: this field will be removed in Saleor 4.0. """ @@ -14763,7 +14763,7 @@ enum OrderStatusFilter { } """ -Updates an order. +Updates an order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -14792,7 +14792,7 @@ input OrderUpdateInput { } """ -Updates a shipping method of the order. Requires shipping method ID to update, when null is passed then currently assigned shipping method is removed. +Updates a shipping method of the order. Requires shipping method ID to update, when null is passed then currently assigned shipping method is removed. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -14836,7 +14836,7 @@ type OrderUpdated implements Event { } """ -Void an order. +Void an order. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -14939,7 +14939,7 @@ type Page implements Node & ObjectWithMetadata { } """ -Assign attributes to a given page type. +Assign attributes to a given page type. Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ @@ -14952,7 +14952,7 @@ type PageAttributeAssign { } """ -Unassign attributes from a given page type. +Unassign attributes from a given page type. Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ @@ -14965,7 +14965,7 @@ type PageAttributeUnassign { } """ -Deletes pages. +Deletes pages. Requires one of the following permissions: MANAGE_PAGES. """ @@ -14977,7 +14977,7 @@ type PageBulkDelete { } """ -Publish pages. +Publish pages. Requires one of the following permissions: MANAGE_PAGES. """ @@ -15007,7 +15007,7 @@ type PageCountableEdge { } """ -Creates a new page. +Creates a new page. Requires one of the following permissions: MANAGE_PAGES. """ @@ -15035,7 +15035,7 @@ input PageCreateInput { pageType: ID! """ - Publication date. ISO 8601 standard. + Publication date. ISO 8601 standard. DEPRECATED: this field will be removed in Saleor 4.0. Use `publishedAt` field instead. """ @@ -15083,7 +15083,7 @@ type PageCreated implements Event { } """ -Deletes a page. +Deletes a page. Requires one of the following permissions: MANAGE_PAGES. """ @@ -15187,7 +15187,7 @@ input PageInput { isPublished: Boolean """ - Publication date. ISO 8601 standard. + Publication date. ISO 8601 standard. DEPRECATED: this field will be removed in Saleor 4.0. Use `publishedAt` field instead. """ @@ -15211,7 +15211,7 @@ input PageInput { } """ -Reorder page attribute values. +Reorder page attribute values. Requires one of the following permissions: MANAGE_PAGES. """ @@ -15305,7 +15305,7 @@ type PageTranslatableContent implements Node { } """ -Creates/updates translations for a page. +Creates/updates translations for a page. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ @@ -15435,7 +15435,7 @@ type PageType implements Node & ObjectWithMetadata { } """ -Delete page types. +Delete page types. Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ @@ -15465,7 +15465,7 @@ type PageTypeCountableEdge { } """ -Create a new page type. +Create a new page type. Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ @@ -15511,7 +15511,7 @@ type PageTypeCreated implements Event { } """ -Delete a page type. +Delete a page type. Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ @@ -15551,7 +15551,7 @@ input PageTypeFilterInput { } """ -Reorder the attributes of a page type. +Reorder the attributes of a page type. Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ @@ -15580,7 +15580,7 @@ input PageTypeSortingInput { } """ -Update page type. +Update page type. Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ @@ -15629,7 +15629,7 @@ type PageTypeUpdated implements Event { } """ -Updates an existing page. +Updates an existing page. Requires one of the following permissions: MANAGE_PAGES. """ @@ -15664,7 +15664,7 @@ type PageUpdated implements Event { } """ -Change the password of the logged in user. +Change the password of the logged in user. Requires one of the following permissions: AUTHENTICATED_USER. """ @@ -15806,7 +15806,7 @@ type PaymentAuthorize implements Event { } """ -Captures the authorized payment amount. +Captures the authorized payment amount. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -15959,7 +15959,7 @@ input PaymentFilterInput { checkouts: [ID!] """ - Filter by ids. + Filter by ids. Added in Saleor 3.8. """ @@ -16087,7 +16087,7 @@ type PaymentProcessEvent implements Event { } """ -Refunds the captured payment amount. +Refunds the captured payment amount. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -16147,7 +16147,7 @@ type PaymentSource { } """ -Voids the authorized payment. +Voids the authorized payment. Requires one of the following permissions: MANAGE_ORDERS. """ @@ -16220,7 +16220,7 @@ enum PermissionEnum { } """ -Create new permission group. Apps are not allowed to perform this mutation. +Create new permission group. Apps are not allowed to perform this mutation. Requires one of the following permissions: MANAGE_STAFF. """ @@ -16266,7 +16266,7 @@ type PermissionGroupCreated implements Event { } """ -Delete permission group. Apps are not allowed to perform this mutation. +Delete permission group. Apps are not allowed to perform this mutation. Requires one of the following permissions: MANAGE_STAFF. """ @@ -16350,7 +16350,7 @@ input PermissionGroupSortingInput { } """ -Update permission group. Apps are not allowed to perform this mutation. +Update permission group. Apps are not allowed to perform this mutation. Requires one of the following permissions: MANAGE_STAFF. """ @@ -16502,7 +16502,7 @@ input PluginStatusInChannelsInput { } """ -Update plugin configuration. +Update plugin configuration. Requires one of the following permissions: MANAGE_PLUGINS. """ @@ -16643,7 +16643,7 @@ type Product implements Node & ObjectWithMetadata { descriptionJson: JSONString @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `description` field instead.") """ - External ID of this product. + External ID of this product. Added in Saleor 3.10. """ @@ -16673,7 +16673,7 @@ type Product implements Node & ObjectWithMetadata { """List of media for the product.""" media( """ - Sort media. + Sort media. Added in Saleor 3.9. """ @@ -16781,7 +16781,7 @@ type Product implements Node & ObjectWithMetadata { updatedAt: DateTime! """ - Get a single variant by SKU or ID. + Get a single variant by SKU or ID. Added in Saleor 3.9. """ @@ -16801,7 +16801,7 @@ type Product implements Node & ObjectWithMetadata { } """ -Assign attributes to a given product type. +Assign attributes to a given product type. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ @@ -16831,7 +16831,7 @@ input ProductAttributeAssignInput { """ Update attributes assigned to product variant for given product type. -Added in Saleor 3.1. +Added in Saleor 3.1. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ @@ -16861,7 +16861,7 @@ enum ProductAttributeType { } """ -Un-assign attributes from a given product type. +Un-assign attributes from a given product type. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ @@ -16874,7 +16874,7 @@ type ProductAttributeUnassign { } """ -Deletes products. +Deletes products. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -16951,7 +16951,7 @@ input ProductChannelListingAddInput { availableForPurchaseAt: DateTime """ - A start date from which a product will be available for purchase. When not set and isAvailable is set to True, the current day is assumed. + A start date from which a product will be available for purchase. When not set and isAvailable is set to True, the current day is assumed. DEPRECATED: this field will be removed in Saleor 4.0. Use `availableForPurchaseAt` field instead. """ @@ -16967,7 +16967,7 @@ input ProductChannelListingAddInput { isPublished: Boolean """ - Publication date. ISO 8601 standard. + Publication date. ISO 8601 standard. DEPRECATED: this field will be removed in Saleor 4.0. Use `publishedAt` field instead. """ @@ -17015,7 +17015,7 @@ type ProductChannelListingError { } """ -Manage product's availability in channels. +Manage product's availability in channels. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -17054,7 +17054,7 @@ type ProductCountableEdge { } """ -Creates a new product. +Creates a new product. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -17072,7 +17072,7 @@ input ProductCreateInput { category: ID """ - Determine if taxes are being charged for the product. + Determine if taxes are being charged for the product. DEPRECATED: this field will be removed in Saleor 4.0. Use `Channel.taxConfiguration` to configure whether tax collection is enabled. """ @@ -17130,7 +17130,7 @@ input ProductCreateInput { taxClass: ID """ - Tax rate for enabled tax gateway. + Tax rate for enabled tax gateway. DEPRECATED: this field will be removed in Saleor 4.0. Use tax classes to control the tax calculation for a product. """ @@ -17171,7 +17171,7 @@ type ProductCreated implements Event { } """ -Deletes a product. +Deletes a product. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -17272,7 +17272,7 @@ input ProductFilterInput { attributes: [AttributeInput!] """ - Filter by the date of availability for purchase. + Filter by the date of availability for purchase. Added in Saleor 3.8. """ @@ -17280,7 +17280,7 @@ input ProductFilterInput { categories: [ID!] """ - Specifies the channel by which the data should be filtered. + Specifies the channel by which the data should be filtered. DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. """ @@ -17294,7 +17294,7 @@ input ProductFilterInput { ids: [ID!] """ - Filter by availability for purchase. + Filter by availability for purchase. Added in Saleor 3.8. """ @@ -17302,7 +17302,7 @@ input ProductFilterInput { isPublished: Boolean """ - Filter by visibility in product listings. + Filter by visibility in product listings. Added in Saleor 3.8. """ @@ -17315,7 +17315,7 @@ input ProductFilterInput { productTypes: [ID!] """ - Filter by the publication date. + Filter by the publication date. Added in Saleor 3.8. """ @@ -17368,7 +17368,7 @@ input ProductInput { category: ID """ - Determine if taxes are being charged for the product. + Determine if taxes are being charged for the product. DEPRECATED: this field will be removed in Saleor 4.0. Use `Channel.taxConfiguration` to configure whether tax collection is enabled. """ @@ -17423,7 +17423,7 @@ input ProductInput { taxClass: ID """ - Tax rate for enabled tax gateway. + Tax rate for enabled tax gateway. DEPRECATED: this field will be removed in Saleor 4.0. Use tax classes to control the tax calculation for a product. """ @@ -17458,7 +17458,7 @@ type ProductMedia implements Node { } """ -Deletes product media. +Deletes product media. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -17470,7 +17470,7 @@ type ProductMediaBulkDelete { } """ -Create a media object (image or video URL) associated with product. For image, this mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec +Create a media object (image or video URL) associated with product. For image, this mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -17496,7 +17496,7 @@ input ProductMediaCreateInput { } """ -Deletes a product media. +Deletes a product media. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -17508,7 +17508,7 @@ type ProductMediaDelete { } """ -Changes ordering of the product media. +Changes ordering of the product media. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -17526,7 +17526,7 @@ enum ProductMediaType { } """ -Updates a product media. +Updates a product media. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -17700,7 +17700,7 @@ type ProductPricingInfo { } """ -Reorder product attribute values. +Reorder product attribute values. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -17750,7 +17750,7 @@ type ProductTranslatableContent implements Node { } """ -Creates/updates translations for a product. +Creates/updates translations for a product. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ @@ -17912,7 +17912,7 @@ type ProductType implements Node & ObjectWithMetadata { } """ -Deletes product types. +Deletes product types. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ @@ -17947,7 +17947,7 @@ type ProductTypeCountableEdge { } """ -Creates a new product type. +Creates a new product type. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ @@ -17958,7 +17958,7 @@ type ProductTypeCreate { } """ -Deletes a product type. +Deletes a product type. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ @@ -18013,7 +18013,7 @@ input ProductTypeInput { taxClass: ID """ - Tax rate for enabled tax gateway. + Tax rate for enabled tax gateway. DEPRECATED: this field will be removed in Saleor 4.0.. Use tax classes to control the tax calculation for a product type. """ @@ -18035,7 +18035,7 @@ enum ProductTypeKindEnum { } """ -Reorder the attributes of a product type. +Reorder the attributes of a product type. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ @@ -18067,7 +18067,7 @@ input ProductTypeSortingInput { } """ -Updates an existing product type. +Updates an existing product type. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ @@ -18078,7 +18078,7 @@ type ProductTypeUpdate { } """ -Updates an existing product. +Updates an existing product. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -18147,7 +18147,7 @@ type ProductVariant implements Node & ObjectWithMetadata { digitalContent: DigitalContent """ - External ID of this product. + External ID of this product. Added in Saleor 3.10. """ @@ -18240,7 +18240,7 @@ type ProductVariant implements Node & ObjectWithMetadata { address: AddressInput """ - Two-letter ISO 3166-1 country code. When provided, the exact quantity from a warehouse operating in shipping zones that contain this country will be returned. Otherwise, it will return the maximum quantity from all shipping zones. + Two-letter ISO 3166-1 country code. When provided, the exact quantity from a warehouse operating in shipping zones that contain this country will be returned. Otherwise, it will return the maximum quantity from all shipping zones. DEPRECATED: this field will be removed in Saleor 4.0. Use `address` argument instead. """ @@ -18275,7 +18275,7 @@ type ProductVariant implements Node & ObjectWithMetadata { address: AddressInput """ - Two-letter ISO 3166-1 country code. + Two-letter ISO 3166-1 country code. DEPRECATED: this field will be removed in Saleor 4.0. Use `address` argument instead. """ @@ -18323,7 +18323,7 @@ type ProductVariantBackInStock implements Event { } """ -Creates product variants for a given product. +Creates product variants for a given product. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -18403,7 +18403,7 @@ input ProductVariantBulkCreateInput { } """ -Deletes product variants. +Deletes product variants. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -18461,7 +18461,7 @@ input ProductVariantChannelListingAddInput { } """ -Manage product variant prices in channels. +Manage product variant prices in channels. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -18492,7 +18492,7 @@ type ProductVariantCountableEdge { } """ -Creates a new variant for a product. +Creates a new variant for a product. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -18594,7 +18594,7 @@ type ProductVariantCreated implements Event { } """ -Deletes a product variant. +Deletes a product variant. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -18759,7 +18759,7 @@ Deactivates product variant preorder. It changes all preorder allocation into re Added in Saleor 3.1. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -18771,7 +18771,7 @@ type ProductVariantPreorderDeactivate { } """ -Reorder the variants of a product. Mutation updates updated_at on product and triggers PRODUCT_UPDATED webhook. +Reorder the variants of a product. Mutation updates updated_at on product and triggers PRODUCT_UPDATED webhook. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -18782,7 +18782,7 @@ type ProductVariantReorder { } """ -Reorder product variant attribute values. +Reorder product variant attribute values. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -18795,7 +18795,7 @@ type ProductVariantReorderAttributeValues { } """ -Set default variant for a product. Mutation triggers PRODUCT_UPDATED webhook. +Set default variant for a product. Mutation triggers PRODUCT_UPDATED webhook. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -18819,7 +18819,7 @@ input ProductVariantSortingInput { } """ -Creates stocks for product variant. +Creates stocks for product variant. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -18832,7 +18832,7 @@ type ProductVariantStocksCreate { } """ -Delete stocks from product variant. +Delete stocks from product variant. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -18845,7 +18845,7 @@ type ProductVariantStocksDelete { } """ -Update stocks for product variant. +Update stocks for product variant. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -18874,7 +18874,7 @@ type ProductVariantTranslatableContent implements Node { } """ -Creates/updates translations for a product variant. +Creates/updates translations for a product variant. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ @@ -18893,7 +18893,7 @@ type ProductVariantTranslation implements Node { } """ -Updates an existing variant for product. +Updates an existing variant for product. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -18938,7 +18938,7 @@ input PublishableChannelListingInput { isPublished: Boolean """ - Publication date. ISO 8601 standard. + Publication date. ISO 8601 standard. DEPRECATED: this field will be removed in Saleor 4.0. Use `publishedAt` field instead. """ @@ -19062,7 +19062,7 @@ type Query { """Look up an attribute by ID, slug or external reference.""" attribute( """ - External ID of the attribute. + External ID of the attribute. Added in Saleor 3.10. """ @@ -19553,7 +19553,7 @@ type Query { channel: String """ - Filtering options for menus. + Filtering options for menus. `slug`: This field will be removed in Saleor 4.0. Use `slugs` instead. """ @@ -19572,7 +19572,7 @@ type Query { """Look up an order by ID or external reference.""" order( """ - External ID of an order. + External ID of an order. Added in Saleor 3.10. """ @@ -19803,7 +19803,7 @@ type Query { channel: String """ - External ID of the product. + External ID of the product. Added in Saleor 3.10. """ @@ -19851,7 +19851,7 @@ type Query { channel: String """ - External ID of the product. + External ID of the product. Added in Saleor 3.10. """ @@ -19982,7 +19982,7 @@ type Query { last: Int """ - Search sales by name, value or type. + Search sales by name, value or type. DEPRECATED: this field will be removed in Saleor 4.0. Use `filter.search` input instead. """ @@ -20248,7 +20248,7 @@ type Query { email: String """ - External ID of the user. + External ID of the user. Added in Saleor 3.10. """ @@ -20296,7 +20296,7 @@ type Query { last: Int """ - Search vouchers by name or code. + Search vouchers by name or code. DEPRECATED: this field will be removed in Saleor 4.0. Use `filter.search` input instead. """ @@ -20313,7 +20313,7 @@ type Query { """ warehouse( """ - External ID of a warehouse. + External ID of a warehouse. Added in Saleor 3.10. """ @@ -20407,7 +20407,7 @@ enum ReportingPeriod { } """ -Request email change of the logged in user. +Request email change of the logged in user. Requires one of the following permissions: AUTHENTICATED_USER. """ @@ -20577,7 +20577,7 @@ type Sale implements Node & ObjectWithMetadata { } """ -Adds products, categories, collections to a voucher. +Adds products, categories, collections to a voucher. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -20590,7 +20590,7 @@ type SaleAddCatalogues { } """ -Deletes sales. +Deletes sales. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -20626,7 +20626,7 @@ input SaleChannelListingInput { } """ -Manage sale's availability in channels. +Manage sale's availability in channels. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -20657,7 +20657,7 @@ type SaleCountableEdge { } """ -Creates a new sale. +Creates a new sale. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -20695,7 +20695,7 @@ type SaleCreated implements Event { } """ -Deletes a sale. +Deletes a sale. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -20769,7 +20769,7 @@ input SaleInput { } """ -Removes products, categories, collections from a sale. +Removes products, categories, collections from a sale. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -20875,7 +20875,7 @@ type SaleTranslatableContent implements Node { } """ -Creates/updates translations for a sale. +Creates/updates translations for a sale. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ @@ -20899,7 +20899,7 @@ enum SaleType { } """ -Updates a sale. +Updates a sale. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -21169,7 +21169,7 @@ input ShippingMethodChannelListingInput { } """ -Manage shipping method's availability in channels. +Manage shipping method's availability in channels. Requires one of the following permissions: MANAGE_SHIPPING. """ @@ -21393,7 +21393,7 @@ input ShippingPostalCodeRulesCreateInputRange { } """ -Deletes shipping prices. +Deletes shipping prices. Requires one of the following permissions: MANAGE_SHIPPING. """ @@ -21405,7 +21405,7 @@ type ShippingPriceBulkDelete { } """ -Creates a new shipping price. +Creates a new shipping price. Requires one of the following permissions: MANAGE_SHIPPING. """ @@ -21452,7 +21452,7 @@ type ShippingPriceCreated implements Event { } """ -Deletes a shipping price. +Deletes a shipping price. Requires one of the following permissions: MANAGE_SHIPPING. """ @@ -21501,7 +21501,7 @@ type ShippingPriceDeleted implements Event { } """ -Exclude products from shipping price. +Exclude products from shipping price. Requires one of the following permissions: MANAGE_SHIPPING. """ @@ -21559,7 +21559,7 @@ input ShippingPriceInput { } """ -Remove product from excluded list for shipping price. +Remove product from excluded list for shipping price. Requires one of the following permissions: MANAGE_SHIPPING. """ @@ -21572,7 +21572,7 @@ type ShippingPriceRemoveProductFromExclude { } """ -Creates/updates translations for a shipping method. +Creates/updates translations for a shipping method. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ @@ -21593,7 +21593,7 @@ input ShippingPriceTranslationInput { } """ -Updates a new shipping price. +Updates a new shipping price. Requires one of the following permissions: MANAGE_SHIPPING. """ @@ -21714,7 +21714,7 @@ type ShippingZone implements Node & ObjectWithMetadata { } """ -Deletes shipping zones. +Deletes shipping zones. Requires one of the following permissions: MANAGE_SHIPPING. """ @@ -21744,7 +21744,7 @@ type ShippingZoneCountableEdge { } """ -Creates a new shipping zone. +Creates a new shipping zone. Requires one of the following permissions: MANAGE_SHIPPING. """ @@ -21804,7 +21804,7 @@ type ShippingZoneCreated implements Event { } """ -Deletes a shipping zone. +Deletes a shipping zone. Requires one of the following permissions: MANAGE_SHIPPING. """ @@ -21874,7 +21874,7 @@ type ShippingZoneMetadataUpdated implements Event { } """ -Updates a new shipping zone. +Updates a new shipping zone. Requires one of the following permissions: MANAGE_SHIPPING. """ @@ -21959,7 +21959,7 @@ type Shop { channel: String """ - A currency for which gateways will be returned. + A currency for which gateways will be returned. DEPRECATED: this field will be removed in Saleor 4.0. Use `channel` argument instead. """ @@ -21996,7 +21996,7 @@ type Shop { filter: CountryFilterInput """ - A language code to return the translation for. + A language code to return the translation for. DEPRECATED: this field will be removed in Saleor 4.0. """ @@ -22149,7 +22149,7 @@ type Shop { } """ -Update the shop's address. If the `null` value is passed, the currently selected address will be deleted. +Update the shop's address. If the `null` value is passed, the currently selected address will be deleted. Requires one of the following permissions: MANAGE_SETTINGS. """ @@ -22162,7 +22162,7 @@ type ShopAddressUpdate { } """ -Updates site domain of the shop. +Updates site domain of the shop. Requires one of the following permissions: MANAGE_SETTINGS. """ @@ -22199,7 +22199,7 @@ enum ShopErrorCode { } """ -Fetch tax rates. +Fetch tax rates. Requires one of the following permissions: MANAGE_SETTINGS. """ @@ -22216,7 +22216,7 @@ input ShopSettingsInput { automaticFulfillmentDigitalProducts: Boolean """ - Charge taxes on shipping. + Charge taxes on shipping. DEPRECATED: this field will be removed in Saleor 4.0. To enable taxes for a shipping method, assign a tax class to the shipping method with `shippingPriceCreate` or `shippingPriceUpdate` mutations. """ @@ -22244,7 +22244,7 @@ input ShopSettingsInput { description: String """ - Display prices with tax in store. + Display prices with tax in store. DEPRECATED: this field will be removed in Saleor 4.0. Use `taxConfigurationUpdate` mutation to configure this setting per channel or country. """ @@ -22268,7 +22268,7 @@ input ShopSettingsInput { headerText: String """ - Include taxes in prices. + Include taxes in prices. DEPRECATED: this field will be removed in Saleor 4.0. Use `taxConfigurationUpdate` mutation to configure this setting per channel or country. """ @@ -22302,7 +22302,7 @@ input ShopSettingsInput { } """ -Creates/updates translations for shop settings. +Creates/updates translations for shop settings. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ @@ -22320,7 +22320,7 @@ input ShopSettingsTranslationInput { } """ -Updates shop settings. +Updates shop settings. Requires one of the following permissions: MANAGE_SETTINGS. """ @@ -22350,7 +22350,7 @@ input SiteDomainInput { } """ -Deletes staff users. Apps are not allowed to perform this mutation. +Deletes staff users. Apps are not allowed to perform this mutation. Requires one of the following permissions: MANAGE_STAFF. """ @@ -22362,7 +22362,7 @@ type StaffBulkDelete { } """ -Creates a new staff user. Apps are not allowed to perform this mutation. +Creates a new staff user. Apps are not allowed to perform this mutation. Requires one of the following permissions: MANAGE_STAFF. """ @@ -22422,7 +22422,7 @@ type StaffCreated implements Event { } """ -Deletes a staff user. Apps are not allowed to perform this mutation. +Deletes a staff user. Apps are not allowed to perform this mutation. Requires one of the following permissions: MANAGE_STAFF. """ @@ -22505,7 +22505,7 @@ type StaffNotificationRecipient implements Node { } """ -Creates a new staff notification recipient. +Creates a new staff notification recipient. Requires one of the following permissions: MANAGE_SETTINGS. """ @@ -22516,7 +22516,7 @@ type StaffNotificationRecipientCreate { } """ -Delete staff notification recipient. +Delete staff notification recipient. Requires one of the following permissions: MANAGE_SETTINGS. """ @@ -22538,7 +22538,7 @@ input StaffNotificationRecipientInput { } """ -Updates a staff notification recipient. +Updates a staff notification recipient. Requires one of the following permissions: MANAGE_SETTINGS. """ @@ -22549,7 +22549,7 @@ type StaffNotificationRecipientUpdate { } """ -Updates an existing staff user. Apps are not allowed to perform this mutation. +Updates an existing staff user. Apps are not allowed to perform this mutation. Requires one of the following permissions: MANAGE_STAFF. """ @@ -22857,7 +22857,7 @@ Create a tax class. Added in Saleor 3.9. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_TAXES. """ @@ -22902,7 +22902,7 @@ Delete a tax class. After deleting the tax class any products, product types or Added in Saleor 3.9. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_TAXES. """ @@ -22963,7 +22963,7 @@ Update a tax class. Added in Saleor 3.9. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_TAXES. """ @@ -23162,7 +23162,7 @@ Update tax configuration for a channel. Added in Saleor 3.9. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_TAXES. """ @@ -23241,7 +23241,7 @@ Remove all tax class rates for a specific country. Added in Saleor 3.9. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_TAXES. """ @@ -23277,7 +23277,7 @@ Update tax class rates for a specific country. Added in Saleor 3.9. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_TAXES. """ @@ -23318,7 +23318,7 @@ Exempt checkout or order from charging the taxes. When tax exemption is enabled, Added in Saleor 3.8. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_TAXES. """ @@ -23788,7 +23788,7 @@ Request an action for payment transaction. Added in Saleor 3.4. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: HANDLE_PAYMENTS, MANAGE_ORDERS. """ @@ -24131,7 +24131,7 @@ type User implements Node & ObjectWithMetadata { events: [CustomerEvent!] """ - External ID of this user. + External ID of this user. Added in Saleor 3.10. """ @@ -24246,7 +24246,7 @@ type User implements Node & ObjectWithMetadata { } """ -Deletes a user avatar. Only for staff members. +Deletes a user avatar. Only for staff members. Requires one of the following permissions: AUTHENTICATED_STAFF_USER. """ @@ -24259,7 +24259,7 @@ type UserAvatarDelete { } """ -Create a user avatar. Only for staff members. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec +Create a user avatar. Only for staff members. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec Requires one of the following permissions: AUTHENTICATED_STAFF_USER. """ @@ -24272,7 +24272,7 @@ type UserAvatarUpdate { } """ -Activate or deactivate users. +Activate or deactivate users. Requires one of the following permissions: MANAGE_USERS. """ @@ -24406,7 +24406,7 @@ enum VariantAttributeScope { } """ -Assign an media to a product variant. +Assign an media to a product variant. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -24418,7 +24418,7 @@ type VariantMediaAssign { } """ -Unassign an media from a product variant. +Unassign an media from a product variant. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -24651,7 +24651,7 @@ type Voucher implements Node & ObjectWithMetadata { } """ -Adds products, categories, collections to a voucher. +Adds products, categories, collections to a voucher. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -24664,7 +24664,7 @@ type VoucherAddCatalogues { } """ -Deletes vouchers. +Deletes vouchers. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -24704,7 +24704,7 @@ input VoucherChannelListingInput { } """ -Manage voucher's availability in channels. +Manage voucher's availability in channels. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -24735,7 +24735,7 @@ type VoucherCountableEdge { } """ -Creates a new voucher. +Creates a new voucher. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -24773,7 +24773,7 @@ type VoucherCreated implements Event { } """ -Deletes a voucher. +Deletes a voucher. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -24908,7 +24908,7 @@ type VoucherMetadataUpdated implements Event { } """ -Removes products, categories, collections from a voucher. +Removes products, categories, collections from a voucher. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -24985,7 +24985,7 @@ type VoucherTranslatableContent implements Node { } """ -Creates/updates translations for a voucher. +Creates/updates translations for a voucher. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ @@ -25010,7 +25010,7 @@ enum VoucherTypeEnum { } """ -Updates a voucher. +Updates a voucher. Requires one of the following permissions: MANAGE_DISCOUNTS. """ @@ -25065,7 +25065,7 @@ type Warehouse implements Node & ObjectWithMetadata { email: String! """ - External ID of this warehouse. + External ID of this warehouse. Added in Saleor 3.10. """ @@ -25161,7 +25161,7 @@ type WarehouseCountableEdge { } """ -Creates new warehouse. +Creates new warehouse. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -25224,7 +25224,7 @@ type WarehouseCreated implements Event { } """ -Deletes selected warehouse. +Deletes selected warehouse. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -25318,7 +25318,7 @@ type WarehouseMetadataUpdated implements Event { } """ -Add shipping zone to given warehouse. +Add shipping zone to given warehouse. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -25329,7 +25329,7 @@ type WarehouseShippingZoneAssign { } """ -Remove shipping zone from given warehouse. +Remove shipping zone from given warehouse. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -25353,7 +25353,7 @@ input WarehouseSortingInput { } """ -Updates given warehouse. +Updates given warehouse. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -25476,7 +25476,7 @@ type Webhook implements Node { } """ -Creates a new webhook subscription. +Creates a new webhook subscription. Requires one of the following permissions: MANAGE_APPS, AUTHENTICATED_APP. """ @@ -25494,7 +25494,7 @@ input WebhookCreateInput { asyncEvents: [WebhookEventTypeAsyncEnum!] """ - The events that webhook wants to subscribe. + The events that webhook wants to subscribe. DEPRECATED: this field will be removed in Saleor 4.0. Use `asyncEvents` or `syncEvents` instead. """ @@ -25530,7 +25530,7 @@ input WebhookCreateInput { } """ -Delete a webhook. Before the deletion, the webhook is deactivated to pause any deliveries that are already scheduled. The deletion might fail if delivery is in progress. In such a case, the webhook is not deleted but remains deactivated. +Delete a webhook. Before the deletion, the webhook is deactivated to pause any deliveries that are already scheduled. The deletion might fail if delivery is in progress. In such a case, the webhook is not deleted but remains deactivated. Requires one of the following permissions: MANAGE_APPS, AUTHENTICATED_APP. """ @@ -26604,7 +26604,7 @@ enum WebhookSampleEventTypeEnum { } """ -Updates a webhook subscription. +Updates a webhook subscription. Requires one of the following permissions: MANAGE_APPS. """ @@ -26622,7 +26622,7 @@ input WebhookUpdateInput { asyncEvents: [WebhookEventTypeAsyncEnum!] """ - The events that webhook wants to subscribe. + The events that webhook wants to subscribe. DEPRECATED: this field will be removed in Saleor 4.0. Use `asyncEvents` or `syncEvents` instead. """ diff --git a/apps/klaviyo/graphql/schema.graphql b/apps/klaviyo/graphql/schema.graphql index bd0b177..ec5f771 100644 --- a/apps/klaviyo/graphql/schema.graphql +++ b/apps/klaviyo/graphql/schema.graphql @@ -9,37 +9,46 @@ type Query { Look up a webhook by ID. Requires one of the following permissions: MANAGE_APPS, OWNER. """ webhook( - """ID of the webhook.""" + """ + ID of the webhook. + """ id: ID! ): Webhook """ List of all available webhook events. - + Requires one of the following permissions: MANAGE_APPS. """ - webhookEvents: [WebhookEvent!] @deprecated(reason: "This field will be removed in Saleor 4.0. Use `WebhookEventTypeAsyncEnum` and `WebhookEventTypeSyncEnum` to get available event types.") + webhookEvents: [WebhookEvent!] + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use `WebhookEventTypeAsyncEnum` and `WebhookEventTypeSyncEnum` to get available event types." + ) """ Retrieve a sample payload for a given webhook event based on real data. It can be useful for some integrations where sample payload is required. """ webhookSamplePayload( - """Name of the requested event type.""" + """ + Name of the requested event type. + """ eventType: WebhookSampleEventTypeEnum! ): JSONString """ Look up a warehouse by ID. - + Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS, MANAGE_SHIPPING. """ warehouse( - """ID of a warehouse.""" + """ + ID of a warehouse. + """ id: ID """ - External ID of a warehouse. - + External ID of a warehouse. + Added in Saleor 3.10. """ externalReference: String @@ -47,151 +56,201 @@ type Query { """ List of warehouses. - + Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS, MANAGE_SHIPPING. """ warehouses( filter: WarehouseFilterInput sortBy: WarehouseSortingInput - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): WarehouseCountableConnection """ Returns a list of all translatable items of a given kind. - + Requires one of the following permissions: MANAGE_TRANSLATIONS. """ translations( - """Kind of objects to retrieve.""" + """ + Kind of objects to retrieve. + """ kind: TranslatableKinds! - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): TranslatableItemConnection """ Lookup a translatable item by ID. - + Requires one of the following permissions: MANAGE_TRANSLATIONS. """ translation( - """ID of the object to retrieve.""" + """ + ID of the object to retrieve. + """ id: ID! - """Kind of the object to retrieve.""" + """ + Kind of the object to retrieve. + """ kind: TranslatableKinds! ): TranslatableItem """ Look up a tax configuration. - + Added in Saleor 3.9. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. - + Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP. """ taxConfiguration( - """ID of a tax configuration.""" + """ + ID of a tax configuration. + """ id: ID! ): TaxConfiguration """ List of tax configurations. - + Added in Saleor 3.9. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. - + Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP. """ taxConfigurations( - """Filtering options for tax configurations.""" + """ + Filtering options for tax configurations. + """ filter: TaxConfigurationFilterInput - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): TaxConfigurationCountableConnection """ Look up a tax class. - + Added in Saleor 3.9. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. - + Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP. """ taxClass( - """ID of a tax class.""" + """ + ID of a tax class. + """ id: ID! ): TaxClass """ List of tax classes. - + Added in Saleor 3.9. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. - + Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP. """ taxClasses( - """Sort tax classes.""" + """ + Sort tax classes. + """ sortBy: TaxClassSortingInput - """Filtering options for tax classes.""" + """ + Filtering options for tax classes. + """ filter: TaxClassFilterInput - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): TaxClassCountableConnection """ Tax class rates grouped by country. - + Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP. """ taxCountryConfiguration( - """Country for which to return tax class rates.""" + """ + Country for which to return tax class rates. + """ countryCode: CountryCode! ): TaxCountryConfiguration @@ -200,149 +259,209 @@ type Query { """ Look up a stock by ID - + Requires one of the following permissions: MANAGE_PRODUCTS. """ stock( - """ID of an warehouse""" + """ + ID of an warehouse + """ id: ID! ): Stock """ List of stocks. - + Requires one of the following permissions: MANAGE_PRODUCTS. """ stocks( filter: StockFilterInput - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): StockCountableConnection - """Return information about the shop.""" + """ + Return information about the shop. + """ shop: Shop! """ Order related settings from site settings. - + Requires one of the following permissions: MANAGE_ORDERS. """ orderSettings: OrderSettings """ Gift card related settings from site settings. - + Requires one of the following permissions: MANAGE_GIFT_CARD. """ giftCardSettings: GiftCardSettings! """ Look up a shipping zone by ID. - + Requires one of the following permissions: MANAGE_SHIPPING. """ shippingZone( - """ID of the shipping zone.""" + """ + ID of the shipping zone. + """ id: ID! - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): ShippingZone """ List of the shop's shipping zones. - + Requires one of the following permissions: MANAGE_SHIPPING. """ shippingZones( - """Filtering options for shipping zones.""" + """ + Filtering options for shipping zones. + """ filter: ShippingZoneFilterInput - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): ShippingZoneCountableConnection """ Look up digital content by ID. - + Requires one of the following permissions: MANAGE_PRODUCTS. """ digitalContent( - """ID of the digital content.""" + """ + ID of the digital content. + """ id: ID! ): DigitalContent """ List of digital content. - + Requires one of the following permissions: MANAGE_PRODUCTS. """ digitalContents( - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): DigitalContentCountableConnection - """List of the shop's categories.""" + """ + List of the shop's categories. + """ categories( - """Filtering options for categories.""" + """ + Filtering options for categories. + """ filter: CategoryFilterInput - """Sort categories.""" + """ + Sort categories. + """ sortBy: CategorySortingInput - """Filter categories by the nesting level in the category tree.""" + """ + Filter categories by the nesting level in the category tree. + """ level: Int - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): CategoryCountableConnection - """Look up a category by ID or slug.""" + """ + Look up a category by ID or slug. + """ category( - """ID of the category.""" + """ + ID of the category. + """ id: ID - """Slug of the category""" + """ + Slug of the category + """ slug: String ): Category @@ -350,13 +469,19 @@ type Query { Look up a collection by ID. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. """ collection( - """ID of the collection.""" + """ + ID of the collection. + """ id: ID - """Slug of the category""" + """ + Slug of the category + """ slug: String - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): Collection @@ -364,25 +489,39 @@ type Query { List of the shop's collections. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. """ collections( - """Filtering options for collections.""" + """ + Filtering options for collections. + """ filter: CollectionFilterInput - """Sort collections.""" + """ + Sort collections. + """ sortBy: CollectionSortingInput - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): CollectionCountableConnection @@ -390,20 +529,26 @@ type Query { Look up a product by ID. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. """ product( - """ID of the product.""" + """ + ID of the product. + """ id: ID - """Slug of the product.""" + """ + Slug of the product. + """ slug: String """ - External ID of the product. - + External ID of the product. + Added in Saleor 3.10. """ externalReference: String - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): Product @@ -411,52 +556,84 @@ type Query { List of the shop's products. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. """ products( - """Filtering options for products.""" + """ + Filtering options for products. + """ filter: ProductFilterInput - """Sort products.""" + """ + Sort products. + """ sortBy: ProductOrder - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): ProductCountableConnection - """Look up a product type by ID.""" + """ + Look up a product type by ID. + """ productType( - """ID of the product type.""" + """ + ID of the product type. + """ id: ID! ): ProductType - """List of the shop's product types.""" + """ + List of the shop's product types. + """ productTypes( - """Filtering options for product types.""" + """ + Filtering options for product types. + """ filter: ProductTypeFilterInput - """Sort product types.""" + """ + Sort product types. + """ sortBy: ProductTypeSortingInput - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): ProductTypeCountableConnection @@ -464,20 +641,26 @@ type Query { Look up a product variant by ID or SKU. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. """ productVariant( - """ID of the product variant.""" + """ + ID of the product variant. + """ id: ID - """Sku of the product variant.""" + """ + Sku of the product variant. + """ sku: String """ - External ID of the product. - + External ID of the product. + Added in Saleor 3.10. """ externalReference: String - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): ProductVariant @@ -485,186 +668,278 @@ type Query { List of product variants. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. """ productVariants( - """Filter product variants by given IDs.""" + """ + Filter product variants by given IDs. + """ ids: [ID!] - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String - """Filtering options for product variant.""" + """ + Filtering options for product variant. + """ filter: ProductVariantFilterInput - """Sort products variants.""" + """ + Sort products variants. + """ sortBy: ProductVariantSortingInput - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): ProductVariantCountableConnection """ List of top selling products. - + Requires one of the following permissions: MANAGE_PRODUCTS. """ reportProductSales( - """Span of time.""" + """ + Span of time. + """ period: ReportingPeriod! - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String! - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): ProductVariantCountableConnection """ Look up a payment by ID. - + Requires one of the following permissions: MANAGE_ORDERS. """ payment( - """ID of the payment.""" + """ + ID of the payment. + """ id: ID! ): Payment """ List of payments. - + Requires one of the following permissions: MANAGE_ORDERS. """ payments( - """Filtering options for payments.""" + """ + Filtering options for payments. + """ filter: PaymentFilterInput - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): PaymentCountableConnection """ Look up a transaction by ID. - + Added in Saleor 3.6. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. - + Requires one of the following permissions: HANDLE_PAYMENTS. """ transaction( - """ID of a transaction.""" + """ + ID of a transaction. + """ id: ID! ): TransactionItem - """Look up a page by ID or slug.""" + """ + Look up a page by ID or slug. + """ page( - """ID of the page.""" + """ + ID of the page. + """ id: ID - """The slug of the page.""" + """ + The slug of the page. + """ slug: String ): Page - """List of the shop's pages.""" + """ + List of the shop's pages. + """ pages( - """Sort pages.""" + """ + Sort pages. + """ sortBy: PageSortingInput - """Filtering options for pages.""" + """ + Filtering options for pages. + """ filter: PageFilterInput - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): PageCountableConnection - """Look up a page type by ID.""" + """ + Look up a page type by ID. + """ pageType( - """ID of the page type.""" + """ + ID of the page type. + """ id: ID! ): PageType - """List of the page types.""" + """ + List of the page types. + """ pageTypes( - """Sort page types.""" + """ + Sort page types. + """ sortBy: PageTypeSortingInput - """Filtering options for page types.""" + """ + Filtering options for page types. + """ filter: PageTypeFilterInput - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): PageTypeCountableConnection """ List of activity events to display on homepage (at the moment it only contains order-events). - + Requires one of the following permissions: MANAGE_ORDERS. """ homepageEvents( - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): OrderEventCountableConnection - """Look up an order by ID or external reference.""" + """ + Look up an order by ID or external reference. + """ order( - """ID of an order.""" + """ + ID of an order. + """ id: ID """ - External ID of an order. - + External ID of an order. + Added in Saleor 3.10. """ externalReference: String @@ -672,417 +947,585 @@ type Query { """ List of orders. - + Requires one of the following permissions: MANAGE_ORDERS. """ orders( - """Sort orders.""" + """ + Sort orders. + """ sortBy: OrderSortingInput - """Filtering options for orders.""" + """ + Filtering options for orders. + """ filter: OrderFilterInput - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): OrderCountableConnection """ List of draft orders. - + Requires one of the following permissions: MANAGE_ORDERS. """ draftOrders( - """Sort draft orders.""" + """ + Sort draft orders. + """ sortBy: OrderSortingInput - """Filtering options for draft orders.""" + """ + Filtering options for draft orders. + """ filter: OrderDraftFilterInput - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): OrderCountableConnection """ Return the total sales amount from a specific period. - + Requires one of the following permissions: MANAGE_ORDERS. """ ordersTotal( - """A period of time.""" + """ + A period of time. + """ period: ReportingPeriod - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): TaxedMoney - """Look up an order by token.""" + """ + Look up an order by token. + """ orderByToken( - """The order's token.""" + """ + The order's token. + """ token: UUID! ): Order @deprecated(reason: "This field will be removed in Saleor 4.0.") - """Look up a navigation menu by ID or name.""" + """ + Look up a navigation menu by ID or name. + """ menu( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String - """ID of the menu.""" + """ + ID of the menu. + """ id: ID - """The menu's name.""" + """ + The menu's name. + """ name: String - """The menu's slug.""" + """ + The menu's slug. + """ slug: String ): Menu - """List of the storefront's menus.""" + """ + List of the storefront's menus. + """ menus( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String - """Sort menus.""" + """ + Sort menus. + """ sortBy: MenuSortingInput """ - Filtering options for menus. - + Filtering options for menus. + `slug`: This field will be removed in Saleor 4.0. Use `slugs` instead. """ filter: MenuFilterInput - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): MenuCountableConnection - """Look up a menu item by ID.""" + """ + Look up a menu item by ID. + """ menuItem( - """ID of the menu item.""" + """ + ID of the menu item. + """ id: ID! - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): MenuItem - """List of the storefronts's menu items.""" + """ + List of the storefronts's menu items. + """ menuItems( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String - """Sort menus items.""" + """ + Sort menus items. + """ sortBy: MenuItemSortingInput - """Filtering options for menu items.""" + """ + Filtering options for menu items. + """ filter: MenuItemFilterInput - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): MenuItemCountableConnection """ Look up a gift card by ID. - + Requires one of the following permissions: MANAGE_GIFT_CARD. """ giftCard( - """ID of the gift card.""" + """ + ID of the gift card. + """ id: ID! ): GiftCard """ List of gift cards. - + Requires one of the following permissions: MANAGE_GIFT_CARD. """ giftCards( """ Sort gift cards. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ sortBy: GiftCardSortingInput """ Filtering options for gift cards. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ filter: GiftCardFilterInput - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): GiftCardCountableConnection """ List of gift card currencies. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. - + Requires one of the following permissions: MANAGE_GIFT_CARD. """ giftCardCurrencies: [String!]! """ List of gift card tags. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. - + Requires one of the following permissions: MANAGE_GIFT_CARD. """ giftCardTags( - """Filtering options for gift card tags.""" + """ + Filtering options for gift card tags. + """ filter: GiftCardTagFilterInput - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): GiftCardTagCountableConnection """ Look up a plugin by ID. - + Requires one of the following permissions: MANAGE_PLUGINS. """ plugin( - """ID of the plugin.""" + """ + ID of the plugin. + """ id: ID! ): Plugin """ List of plugins. - + Requires one of the following permissions: MANAGE_PLUGINS. """ plugins( - """Filtering options for plugins.""" + """ + Filtering options for plugins. + """ filter: PluginFilterInput - """Sort plugins.""" + """ + Sort plugins. + """ sortBy: PluginSortingInput - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): PluginCountableConnection """ Look up a sale by ID. - + Requires one of the following permissions: MANAGE_DISCOUNTS. """ sale( - """ID of the sale.""" + """ + ID of the sale. + """ id: ID! - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): Sale """ List of the shop's sales. - + Requires one of the following permissions: MANAGE_DISCOUNTS. """ sales( - """Filtering options for sales.""" + """ + Filtering options for sales. + """ filter: SaleFilterInput - """Sort sales.""" + """ + Sort sales. + """ sortBy: SaleSortingInput """ - Search sales by name, value or type. - + Search sales by name, value or type. + DEPRECATED: this field will be removed in Saleor 4.0. Use `filter.search` input instead. """ query: String - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): SaleCountableConnection """ Look up a voucher by ID. - + Requires one of the following permissions: MANAGE_DISCOUNTS. """ voucher( - """ID of the voucher.""" + """ + ID of the voucher. + """ id: ID! - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): Voucher """ List of the shop's vouchers. - + Requires one of the following permissions: MANAGE_DISCOUNTS. """ vouchers( - """Filtering options for vouchers.""" + """ + Filtering options for vouchers. + """ filter: VoucherFilterInput - """Sort voucher.""" + """ + Sort voucher. + """ sortBy: VoucherSortingInput """ - Search vouchers by name or code. - + Search vouchers by name or code. + DEPRECATED: this field will be removed in Saleor 4.0. Use `filter.search` input instead. """ query: String - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): VoucherCountableConnection """ Look up a export file by ID. - + Requires one of the following permissions: MANAGE_PRODUCTS. """ exportFile( - """ID of the export file job.""" + """ + ID of the export file job. + """ id: ID! ): ExportFile """ List of export files. - + Requires one of the following permissions: MANAGE_PRODUCTS. """ exportFiles( - """Filtering options for export files.""" + """ + Filtering options for export files. + """ filter: ExportFileFilterInput - """Sort export files.""" + """ + Sort export files. + """ sortBy: ExportFileSortingInput - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): ExportFileCountableConnection - """List of all tax rates available from tax gateway.""" + """ + List of all tax rates available from tax gateway. + """ taxTypes: [TaxType!] - """Look up a checkout by token and slug of channel.""" + """ + Look up a checkout by token and slug of channel. + """ checkout( """ The checkout's ID. - + Added in Saleor 3.4. """ id: ID """ The checkout's token. - + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ token: UUID @@ -1090,69 +1533,91 @@ type Query { """ List of checkouts. - + Requires one of the following permissions: MANAGE_CHECKOUTS. """ checkouts( """ Sort checkouts. - + Added in Saleor 3.1. """ sortBy: CheckoutSortingInput """ Filtering options for checkouts. - + Added in Saleor 3.1. """ filter: CheckoutFilterInput - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): CheckoutCountableConnection """ List of checkout lines. - + Requires one of the following permissions: MANAGE_CHECKOUTS. """ checkoutLines( - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): CheckoutLineCountableConnection - """Look up a channel by ID or slug.""" + """ + Look up a channel by ID or slug. + """ channel( - """ID of the channel.""" + """ + ID of the channel. + """ id: ID """ Slug of the channel. - + Added in Saleor 3.6. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ slug: String @@ -1160,46 +1625,68 @@ type Query { """ List of all channels. - + Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER. """ channels: [Channel!] - """List of the shop's attributes.""" + """ + List of the shop's attributes. + """ attributes( - """Filtering options for attributes.""" + """ + Filtering options for attributes. + """ filter: AttributeFilterInput - """Sorting options for attributes.""" + """ + Sorting options for attributes. + """ sortBy: AttributeSortingInput - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): AttributeCountableConnection - """Look up an attribute by ID, slug or external reference.""" + """ + Look up an attribute by ID, slug or external reference. + """ attribute( - """ID of the attribute.""" + """ + ID of the attribute. + """ id: ID - """Slug of the attribute.""" + """ + Slug of the attribute. + """ slug: String """ - External ID of the attribute. - + External ID of the attribute. + Added in Saleor 3.10. """ externalReference: String @@ -1207,210 +1694,294 @@ type Query { """ List of all apps installations - + Requires one of the following permissions: MANAGE_APPS. """ appsInstallations: [AppInstallation!]! """ List of the apps. - + Requires one of the following permissions: AUTHENTICATED_STAFF_USER, MANAGE_APPS. """ apps( - """Filtering options for apps.""" + """ + Filtering options for apps. + """ filter: AppFilterInput - """Sort apps.""" + """ + Sort apps. + """ sortBy: AppSortingInput - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): AppCountableConnection """ Look up an app by ID. If ID is not provided, return the currently authenticated app. - + Requires one of the following permissions: AUTHENTICATED_STAFF_USER AUTHENTICATED_APP. The authenticated app has access to its resources. Fetching different apps requires MANAGE_APPS permission. """ app( - """ID of the app.""" + """ + ID of the app. + """ id: ID ): App """ List of all extensions. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. - + Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP. """ appExtensions( - """Filtering options for apps extensions.""" + """ + Filtering options for apps extensions. + """ filter: AppExtensionFilterInput - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): AppExtensionCountableConnection """ Look up an app extension by ID. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. - + Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP. """ appExtension( - """ID of the app extension.""" + """ + ID of the app extension. + """ id: ID! ): AppExtension - """Returns address validation rules.""" + """ + Returns address validation rules. + """ addressValidationRules( - """Two-letter ISO 3166-1 country code.""" + """ + Two-letter ISO 3166-1 country code. + """ countryCode: CountryCode! - """Designation of a region, province or state.""" + """ + Designation of a region, province or state. + """ countryArea: String - """City or a town name.""" + """ + City or a town name. + """ city: String - """Sublocality like a district.""" + """ + Sublocality like a district. + """ cityArea: String ): AddressValidationData - """Look up an address by ID.""" + """ + Look up an address by ID. + """ address( - """ID of an address.""" + """ + ID of an address. + """ id: ID! ): Address """ List of the shop's customers. - + Requires one of the following permissions: MANAGE_ORDERS, MANAGE_USERS. """ customers( - """Filtering options for customers.""" + """ + Filtering options for customers. + """ filter: CustomerFilterInput - """Sort customers.""" + """ + Sort customers. + """ sortBy: UserSortingInput - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): UserCountableConnection """ List of permission groups. - + Requires one of the following permissions: MANAGE_STAFF. """ permissionGroups( - """Filtering options for permission groups.""" + """ + Filtering options for permission groups. + """ filter: PermissionGroupFilterInput - """Sort permission groups.""" + """ + Sort permission groups. + """ sortBy: PermissionGroupSortingInput - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): GroupCountableConnection """ Look up permission group by ID. - + Requires one of the following permissions: MANAGE_STAFF. """ permissionGroup( - """ID of the group.""" + """ + ID of the group. + """ id: ID! ): Group - """Return the currently authenticated user.""" + """ + Return the currently authenticated user. + """ me: User """ List of the shop's staff users. - + Requires one of the following permissions: MANAGE_STAFF. """ staffUsers( - """Filtering options for staff users.""" + """ + Filtering options for staff users. + """ filter: StaffUserInput - """Sort staff users.""" + """ + Sort staff users. + """ sortBy: UserSortingInput - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): UserCountableConnection """ Look up a user by ID or email address. - + Requires one of the following permissions: MANAGE_STAFF, MANAGE_USERS, MANAGE_ORDERS. """ user( - """ID of the user.""" + """ + ID of the user. + """ id: ID - """Email address of the user.""" + """ + Email address of the user. + """ email: String """ - External ID of the user. - + External ID of the user. + Added in Saleor 3.10. """ externalReference: String @@ -1419,175 +1990,287 @@ type Query { _service: _Service } -"""Webhook.""" +""" +Webhook. +""" type Webhook implements Node { id: ID! name: String! - """List of webhook events.""" - events: [WebhookEvent!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `asyncEvents` or `syncEvents` instead.") + """ + List of webhook events. + """ + events: [WebhookEvent!]! + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use `asyncEvents` or `syncEvents` instead." + ) - """List of synchronous webhook events.""" + """ + List of synchronous webhook events. + """ syncEvents: [WebhookEventSync!]! - """List of asynchronous webhook events.""" + """ + List of asynchronous webhook events. + """ asyncEvents: [WebhookEventAsync!]! app: App! - """Event deliveries.""" + """ + Event deliveries. + """ eventDeliveries( - """Event delivery sorter.""" + """ + Event delivery sorter. + """ sortBy: EventDeliverySortingInput - """Event delivery filter options.""" + """ + Event delivery filter options. + """ filter: EventDeliveryFilterInput - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): EventDeliveryCountableConnection - """Target URL for webhook.""" + """ + Target URL for webhook. + """ targetUrl: String! - """Informs if webhook is activated.""" + """ + Informs if webhook is activated. + """ isActive: Boolean! - """Used to create a hash signature for each payload.""" - secretKey: String @deprecated(reason: "This field will be removed in Saleor 4.0. As of Saleor 3.5, webhook payloads default to signing using a verifiable JWS.") + """ + Used to create a hash signature for each payload. + """ + secretKey: String + @deprecated( + reason: "This field will be removed in Saleor 4.0. As of Saleor 3.5, webhook payloads default to signing using a verifiable JWS." + ) - """Used to define payloads for specific events.""" + """ + Used to define payloads for specific events. + """ subscriptionQuery: String } -"""An object with an ID""" +""" +An object with an ID +""" interface Node { - """The ID of the object.""" + """ + The ID of the object. + """ id: ID! } -"""Webhook event.""" +""" +Webhook event. +""" type WebhookEvent { - """Display name of the event.""" + """ + Display name of the event. + """ name: String! - """Internal name of the event type.""" + """ + Internal name of the event type. + """ eventType: WebhookEventTypeEnum! } -"""Enum determining type of webhook.""" +""" +Enum determining type of webhook. +""" enum WebhookEventTypeEnum { - """All the events.""" + """ + All the events. + """ ANY_EVENTS - """A new address created.""" + """ + A new address created. + """ ADDRESS_CREATED - """An address updated.""" + """ + An address updated. + """ ADDRESS_UPDATED - """An address deleted.""" + """ + An address deleted. + """ ADDRESS_DELETED - """A new app installed.""" + """ + A new app installed. + """ APP_INSTALLED - """An app updated.""" + """ + An app updated. + """ APP_UPDATED - """An app deleted.""" + """ + An app deleted. + """ APP_DELETED - """An app status is changed.""" + """ + An app status is changed. + """ APP_STATUS_CHANGED - """A new attribute is created.""" + """ + A new attribute is created. + """ ATTRIBUTE_CREATED - """An attribute is updated.""" + """ + An attribute is updated. + """ ATTRIBUTE_UPDATED - """An attribute is deleted.""" + """ + An attribute is deleted. + """ ATTRIBUTE_DELETED - """A new attribute value is created.""" + """ + A new attribute value is created. + """ ATTRIBUTE_VALUE_CREATED - """An attribute value is updated.""" + """ + An attribute value is updated. + """ ATTRIBUTE_VALUE_UPDATED - """An attribute value is deleted.""" + """ + An attribute value is deleted. + """ ATTRIBUTE_VALUE_DELETED - """A new category created.""" + """ + A new category created. + """ CATEGORY_CREATED - """A category is updated.""" + """ + A category is updated. + """ CATEGORY_UPDATED - """A category is deleted.""" + """ + A category is deleted. + """ CATEGORY_DELETED - """A new channel created.""" + """ + A new channel created. + """ CHANNEL_CREATED - """A channel is updated.""" + """ + A channel is updated. + """ CHANNEL_UPDATED - """A channel is deleted.""" + """ + A channel is deleted. + """ CHANNEL_DELETED - """A channel status is changed.""" + """ + A channel status is changed. + """ CHANNEL_STATUS_CHANGED - """A new gift card created.""" + """ + A new gift card created. + """ GIFT_CARD_CREATED - """A gift card is updated.""" + """ + A gift card is updated. + """ GIFT_CARD_UPDATED - """A gift card is deleted.""" + """ + A gift card is deleted. + """ GIFT_CARD_DELETED - """A gift card status is changed.""" + """ + A gift card status is changed. + """ GIFT_CARD_STATUS_CHANGED """ A gift card metadata is updated. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ GIFT_CARD_METADATA_UPDATED - """A new menu created.""" + """ + A new menu created. + """ MENU_CREATED - """A menu is updated.""" + """ + A menu is updated. + """ MENU_UPDATED - """A menu is deleted.""" + """ + A menu is deleted. + """ MENU_DELETED - """A new menu item created.""" + """ + A new menu item created. + """ MENU_ITEM_CREATED - """A menu item is updated.""" + """ + A menu item is updated. + """ MENU_ITEM_UPDATED - """A menu item is deleted.""" + """ + A menu item is deleted. + """ MENU_ITEM_DELETED - """A new order is placed.""" + """ + A new order is placed. + """ ORDER_CREATED """ @@ -1595,7 +2278,9 @@ enum WebhookEventTypeEnum { """ ORDER_CONFIRMED - """Payment is made and an order is fully paid.""" + """ + Payment is made and an order is fully paid. + """ ORDER_FULLY_PAID """ @@ -1603,130 +2288,184 @@ enum WebhookEventTypeEnum { """ ORDER_UPDATED - """An order is cancelled.""" + """ + An order is cancelled. + """ ORDER_CANCELLED - """An order is fulfilled.""" + """ + An order is fulfilled. + """ ORDER_FULFILLED """ An order metadata is updated. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ ORDER_METADATA_UPDATED - """A draft order is created.""" + """ + A draft order is created. + """ DRAFT_ORDER_CREATED - """A draft order is updated.""" + """ + A draft order is updated. + """ DRAFT_ORDER_UPDATED - """A draft order is deleted.""" + """ + A draft order is deleted. + """ DRAFT_ORDER_DELETED - """A sale is created.""" + """ + A sale is created. + """ SALE_CREATED - """A sale is updated.""" + """ + A sale is updated. + """ SALE_UPDATED - """A sale is deleted.""" + """ + A sale is deleted. + """ SALE_DELETED - """A sale is activated or deactivated.""" + """ + A sale is activated or deactivated. + """ SALE_TOGGLE - """An invoice for order requested.""" + """ + An invoice for order requested. + """ INVOICE_REQUESTED - """An invoice is deleted.""" + """ + An invoice is deleted. + """ INVOICE_DELETED - """Invoice has been sent.""" + """ + Invoice has been sent. + """ INVOICE_SENT - """A new customer account is created.""" + """ + A new customer account is created. + """ CUSTOMER_CREATED - """A customer account is updated.""" + """ + A customer account is updated. + """ CUSTOMER_UPDATED - """A customer account is deleted.""" + """ + A customer account is deleted. + """ CUSTOMER_DELETED """ A customer account metadata is updated. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ CUSTOMER_METADATA_UPDATED - """A new collection is created.""" + """ + A new collection is created. + """ COLLECTION_CREATED - """A collection is updated.""" + """ + A collection is updated. + """ COLLECTION_UPDATED - """A collection is deleted.""" + """ + A collection is deleted. + """ COLLECTION_DELETED """ A collection metadata is updated. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ COLLECTION_METADATA_UPDATED - """A new product is created.""" + """ + A new product is created. + """ PRODUCT_CREATED - """A product is updated.""" + """ + A product is updated. + """ PRODUCT_UPDATED - """A product is deleted.""" + """ + A product is deleted. + """ PRODUCT_DELETED """ A product metadata is updated. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ PRODUCT_METADATA_UPDATED - """A new product variant is created.""" + """ + A new product variant is created. + """ PRODUCT_VARIANT_CREATED - """A product variant is updated.""" + """ + A product variant is updated. + """ PRODUCT_VARIANT_UPDATED - """A product variant is deleted.""" + """ + A product variant is deleted. + """ PRODUCT_VARIANT_DELETED - """A product variant is out of stock.""" + """ + A product variant is out of stock. + """ PRODUCT_VARIANT_OUT_OF_STOCK - """A product variant is back in stock.""" + """ + A product variant is back in stock. + """ PRODUCT_VARIANT_BACK_IN_STOCK """ A product variant metadata is updated. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ PRODUCT_VARIANT_METADATA_UPDATED - """A new checkout is created.""" + """ + A new checkout is created. + """ CHECKOUT_CREATED """ @@ -1736,377 +2475,561 @@ enum WebhookEventTypeEnum { """ A checkout metadata is updated. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ CHECKOUT_METADATA_UPDATED - """A new fulfillment is created.""" + """ + A new fulfillment is created. + """ FULFILLMENT_CREATED - """A fulfillment is cancelled.""" + """ + A fulfillment is cancelled. + """ FULFILLMENT_CANCELED - """A fulfillment is approved.""" + """ + A fulfillment is approved. + """ FULFILLMENT_APPROVED """ A fulfillment metadata is updated. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ FULFILLMENT_METADATA_UPDATED - """User notification triggered.""" + """ + User notification triggered. + """ NOTIFY_USER - """A new page is created.""" + """ + A new page is created. + """ PAGE_CREATED - """A page is updated.""" + """ + A page is updated. + """ PAGE_UPDATED - """A page is deleted.""" + """ + A page is deleted. + """ PAGE_DELETED - """A new page type is created.""" + """ + A new page type is created. + """ PAGE_TYPE_CREATED - """A page type is updated.""" + """ + A page type is updated. + """ PAGE_TYPE_UPDATED - """A page type is deleted.""" + """ + A page type is deleted. + """ PAGE_TYPE_DELETED - """A new permission group is created.""" + """ + A new permission group is created. + """ PERMISSION_GROUP_CREATED - """A permission group is updated.""" + """ + A permission group is updated. + """ PERMISSION_GROUP_UPDATED - """A permission group is deleted.""" + """ + A permission group is deleted. + """ PERMISSION_GROUP_DELETED - """A new shipping price is created.""" + """ + A new shipping price is created. + """ SHIPPING_PRICE_CREATED - """A shipping price is updated.""" + """ + A shipping price is updated. + """ SHIPPING_PRICE_UPDATED - """A shipping price is deleted.""" + """ + A shipping price is deleted. + """ SHIPPING_PRICE_DELETED - """A new shipping zone is created.""" + """ + A new shipping zone is created. + """ SHIPPING_ZONE_CREATED - """A shipping zone is updated.""" + """ + A shipping zone is updated. + """ SHIPPING_ZONE_UPDATED - """A shipping zone is deleted.""" + """ + A shipping zone is deleted. + """ SHIPPING_ZONE_DELETED """ A shipping zone metadata is updated. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ SHIPPING_ZONE_METADATA_UPDATED - """A new staff user is created.""" + """ + A new staff user is created. + """ STAFF_CREATED - """A staff user is updated.""" + """ + A staff user is updated. + """ STAFF_UPDATED - """A staff user is deleted.""" + """ + A staff user is deleted. + """ STAFF_DELETED - """An action requested for transaction.""" + """ + An action requested for transaction. + """ TRANSACTION_ACTION_REQUEST """ Transaction item metadata is updated. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ TRANSACTION_ITEM_METADATA_UPDATED - """A new translation is created.""" + """ + A new translation is created. + """ TRANSLATION_CREATED - """A translation is updated.""" + """ + A translation is updated. + """ TRANSLATION_UPDATED - """A new warehouse created.""" + """ + A new warehouse created. + """ WAREHOUSE_CREATED - """A warehouse is updated.""" + """ + A warehouse is updated. + """ WAREHOUSE_UPDATED - """A warehouse is deleted.""" + """ + A warehouse is deleted. + """ WAREHOUSE_DELETED """ A warehouse metadata is updated. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ WAREHOUSE_METADATA_UPDATED - """A new voucher created.""" + """ + A new voucher created. + """ VOUCHER_CREATED - """A voucher is updated.""" + """ + A voucher is updated. + """ VOUCHER_UPDATED - """A voucher is deleted.""" + """ + A voucher is deleted. + """ VOUCHER_DELETED """ A voucher metadata is updated. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ VOUCHER_METADATA_UPDATED - """An observability event is created.""" + """ + An observability event is created. + """ OBSERVABILITY - """Authorize payment.""" + """ + Authorize payment. + """ PAYMENT_AUTHORIZE - """Capture payment.""" + """ + Capture payment. + """ PAYMENT_CAPTURE - """Confirm payment.""" + """ + Confirm payment. + """ PAYMENT_CONFIRM - """Listing available payment gateways.""" + """ + Listing available payment gateways. + """ PAYMENT_LIST_GATEWAYS - """Process payment.""" + """ + Process payment. + """ PAYMENT_PROCESS - """Refund payment.""" + """ + Refund payment. + """ PAYMENT_REFUND - """Void payment.""" + """ + Void payment. + """ PAYMENT_VOID """ Event called for checkout tax calculation. - + Added in Saleor 3.6. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ CHECKOUT_CALCULATE_TAXES """ Event called for order tax calculation. - + Added in Saleor 3.6. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ ORDER_CALCULATE_TAXES - """Fetch external shipping methods for checkout.""" + """ + Fetch external shipping methods for checkout. + """ SHIPPING_LIST_METHODS_FOR_CHECKOUT - """Filter shipping methods for order.""" + """ + Filter shipping methods for order. + """ ORDER_FILTER_SHIPPING_METHODS - """Filter shipping methods for checkout.""" + """ + Filter shipping methods for checkout. + """ CHECKOUT_FILTER_SHIPPING_METHODS } -"""Synchronous webhook event.""" +""" +Synchronous webhook event. +""" type WebhookEventSync { - """Display name of the event.""" + """ + Display name of the event. + """ name: String! - """Internal name of the event type.""" + """ + Internal name of the event type. + """ eventType: WebhookEventTypeSyncEnum! } -"""Enum determining type of webhook.""" +""" +Enum determining type of webhook. +""" enum WebhookEventTypeSyncEnum { - """Authorize payment.""" + """ + Authorize payment. + """ PAYMENT_AUTHORIZE - """Capture payment.""" + """ + Capture payment. + """ PAYMENT_CAPTURE - """Confirm payment.""" + """ + Confirm payment. + """ PAYMENT_CONFIRM - """Listing available payment gateways.""" + """ + Listing available payment gateways. + """ PAYMENT_LIST_GATEWAYS - """Process payment.""" + """ + Process payment. + """ PAYMENT_PROCESS - """Refund payment.""" + """ + Refund payment. + """ PAYMENT_REFUND - """Void payment.""" + """ + Void payment. + """ PAYMENT_VOID """ Event called for checkout tax calculation. - + Added in Saleor 3.6. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ CHECKOUT_CALCULATE_TAXES """ Event called for order tax calculation. - + Added in Saleor 3.6. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ ORDER_CALCULATE_TAXES - """Fetch external shipping methods for checkout.""" + """ + Fetch external shipping methods for checkout. + """ SHIPPING_LIST_METHODS_FOR_CHECKOUT - """Filter shipping methods for order.""" + """ + Filter shipping methods for order. + """ ORDER_FILTER_SHIPPING_METHODS - """Filter shipping methods for checkout.""" + """ + Filter shipping methods for checkout. + """ CHECKOUT_FILTER_SHIPPING_METHODS } -"""Asynchronous webhook event.""" +""" +Asynchronous webhook event. +""" type WebhookEventAsync { - """Display name of the event.""" + """ + Display name of the event. + """ name: String! - """Internal name of the event type.""" + """ + Internal name of the event type. + """ eventType: WebhookEventTypeAsyncEnum! } -"""Enum determining type of webhook.""" +""" +Enum determining type of webhook. +""" enum WebhookEventTypeAsyncEnum { - """All the events.""" + """ + All the events. + """ ANY_EVENTS - """A new address created.""" + """ + A new address created. + """ ADDRESS_CREATED - """An address updated.""" + """ + An address updated. + """ ADDRESS_UPDATED - """An address deleted.""" + """ + An address deleted. + """ ADDRESS_DELETED - """A new app installed.""" + """ + A new app installed. + """ APP_INSTALLED - """An app updated.""" + """ + An app updated. + """ APP_UPDATED - """An app deleted.""" + """ + An app deleted. + """ APP_DELETED - """An app status is changed.""" + """ + An app status is changed. + """ APP_STATUS_CHANGED - """A new attribute is created.""" + """ + A new attribute is created. + """ ATTRIBUTE_CREATED - """An attribute is updated.""" + """ + An attribute is updated. + """ ATTRIBUTE_UPDATED - """An attribute is deleted.""" + """ + An attribute is deleted. + """ ATTRIBUTE_DELETED - """A new attribute value is created.""" + """ + A new attribute value is created. + """ ATTRIBUTE_VALUE_CREATED - """An attribute value is updated.""" + """ + An attribute value is updated. + """ ATTRIBUTE_VALUE_UPDATED - """An attribute value is deleted.""" + """ + An attribute value is deleted. + """ ATTRIBUTE_VALUE_DELETED - """A new category created.""" + """ + A new category created. + """ CATEGORY_CREATED - """A category is updated.""" + """ + A category is updated. + """ CATEGORY_UPDATED - """A category is deleted.""" + """ + A category is deleted. + """ CATEGORY_DELETED - """A new channel created.""" + """ + A new channel created. + """ CHANNEL_CREATED - """A channel is updated.""" + """ + A channel is updated. + """ CHANNEL_UPDATED - """A channel is deleted.""" + """ + A channel is deleted. + """ CHANNEL_DELETED - """A channel status is changed.""" + """ + A channel status is changed. + """ CHANNEL_STATUS_CHANGED - """A new gift card created.""" + """ + A new gift card created. + """ GIFT_CARD_CREATED - """A gift card is updated.""" + """ + A gift card is updated. + """ GIFT_CARD_UPDATED - """A gift card is deleted.""" + """ + A gift card is deleted. + """ GIFT_CARD_DELETED - """A gift card status is changed.""" + """ + A gift card status is changed. + """ GIFT_CARD_STATUS_CHANGED """ A gift card metadata is updated. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ GIFT_CARD_METADATA_UPDATED - """A new menu created.""" + """ + A new menu created. + """ MENU_CREATED - """A menu is updated.""" + """ + A menu is updated. + """ MENU_UPDATED - """A menu is deleted.""" + """ + A menu is deleted. + """ MENU_DELETED - """A new menu item created.""" + """ + A new menu item created. + """ MENU_ITEM_CREATED - """A menu item is updated.""" + """ + A menu item is updated. + """ MENU_ITEM_UPDATED - """A menu item is deleted.""" + """ + A menu item is deleted. + """ MENU_ITEM_DELETED - """A new order is placed.""" + """ + A new order is placed. + """ ORDER_CREATED """ @@ -2114,7 +3037,9 @@ enum WebhookEventTypeAsyncEnum { """ ORDER_CONFIRMED - """Payment is made and an order is fully paid.""" + """ + Payment is made and an order is fully paid. + """ ORDER_FULLY_PAID """ @@ -2122,130 +3047,184 @@ enum WebhookEventTypeAsyncEnum { """ ORDER_UPDATED - """An order is cancelled.""" + """ + An order is cancelled. + """ ORDER_CANCELLED - """An order is fulfilled.""" + """ + An order is fulfilled. + """ ORDER_FULFILLED """ An order metadata is updated. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ ORDER_METADATA_UPDATED - """A draft order is created.""" + """ + A draft order is created. + """ DRAFT_ORDER_CREATED - """A draft order is updated.""" + """ + A draft order is updated. + """ DRAFT_ORDER_UPDATED - """A draft order is deleted.""" + """ + A draft order is deleted. + """ DRAFT_ORDER_DELETED - """A sale is created.""" + """ + A sale is created. + """ SALE_CREATED - """A sale is updated.""" + """ + A sale is updated. + """ SALE_UPDATED - """A sale is deleted.""" + """ + A sale is deleted. + """ SALE_DELETED - """A sale is activated or deactivated.""" + """ + A sale is activated or deactivated. + """ SALE_TOGGLE - """An invoice for order requested.""" + """ + An invoice for order requested. + """ INVOICE_REQUESTED - """An invoice is deleted.""" + """ + An invoice is deleted. + """ INVOICE_DELETED - """Invoice has been sent.""" + """ + Invoice has been sent. + """ INVOICE_SENT - """A new customer account is created.""" + """ + A new customer account is created. + """ CUSTOMER_CREATED - """A customer account is updated.""" + """ + A customer account is updated. + """ CUSTOMER_UPDATED - """A customer account is deleted.""" + """ + A customer account is deleted. + """ CUSTOMER_DELETED """ A customer account metadata is updated. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ CUSTOMER_METADATA_UPDATED - """A new collection is created.""" + """ + A new collection is created. + """ COLLECTION_CREATED - """A collection is updated.""" + """ + A collection is updated. + """ COLLECTION_UPDATED - """A collection is deleted.""" + """ + A collection is deleted. + """ COLLECTION_DELETED """ A collection metadata is updated. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ COLLECTION_METADATA_UPDATED - """A new product is created.""" + """ + A new product is created. + """ PRODUCT_CREATED - """A product is updated.""" + """ + A product is updated. + """ PRODUCT_UPDATED - """A product is deleted.""" + """ + A product is deleted. + """ PRODUCT_DELETED """ A product metadata is updated. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ PRODUCT_METADATA_UPDATED - """A new product variant is created.""" + """ + A new product variant is created. + """ PRODUCT_VARIANT_CREATED - """A product variant is updated.""" + """ + A product variant is updated. + """ PRODUCT_VARIANT_UPDATED - """A product variant is deleted.""" + """ + A product variant is deleted. + """ PRODUCT_VARIANT_DELETED - """A product variant is out of stock.""" + """ + A product variant is out of stock. + """ PRODUCT_VARIANT_OUT_OF_STOCK - """A product variant is back in stock.""" + """ + A product variant is back in stock. + """ PRODUCT_VARIANT_BACK_IN_STOCK """ A product variant metadata is updated. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ PRODUCT_VARIANT_METADATA_UPDATED - """A new checkout is created.""" + """ + A new checkout is created. + """ CHECKOUT_CREATED """ @@ -2255,331 +3234,439 @@ enum WebhookEventTypeAsyncEnum { """ A checkout metadata is updated. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ CHECKOUT_METADATA_UPDATED - """A new fulfillment is created.""" + """ + A new fulfillment is created. + """ FULFILLMENT_CREATED - """A fulfillment is cancelled.""" + """ + A fulfillment is cancelled. + """ FULFILLMENT_CANCELED - """A fulfillment is approved.""" + """ + A fulfillment is approved. + """ FULFILLMENT_APPROVED """ A fulfillment metadata is updated. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ FULFILLMENT_METADATA_UPDATED - """User notification triggered.""" + """ + User notification triggered. + """ NOTIFY_USER - """A new page is created.""" + """ + A new page is created. + """ PAGE_CREATED - """A page is updated.""" + """ + A page is updated. + """ PAGE_UPDATED - """A page is deleted.""" + """ + A page is deleted. + """ PAGE_DELETED - """A new page type is created.""" + """ + A new page type is created. + """ PAGE_TYPE_CREATED - """A page type is updated.""" + """ + A page type is updated. + """ PAGE_TYPE_UPDATED - """A page type is deleted.""" + """ + A page type is deleted. + """ PAGE_TYPE_DELETED - """A new permission group is created.""" + """ + A new permission group is created. + """ PERMISSION_GROUP_CREATED - """A permission group is updated.""" + """ + A permission group is updated. + """ PERMISSION_GROUP_UPDATED - """A permission group is deleted.""" + """ + A permission group is deleted. + """ PERMISSION_GROUP_DELETED - """A new shipping price is created.""" + """ + A new shipping price is created. + """ SHIPPING_PRICE_CREATED - """A shipping price is updated.""" + """ + A shipping price is updated. + """ SHIPPING_PRICE_UPDATED - """A shipping price is deleted.""" + """ + A shipping price is deleted. + """ SHIPPING_PRICE_DELETED - """A new shipping zone is created.""" + """ + A new shipping zone is created. + """ SHIPPING_ZONE_CREATED - """A shipping zone is updated.""" + """ + A shipping zone is updated. + """ SHIPPING_ZONE_UPDATED - """A shipping zone is deleted.""" + """ + A shipping zone is deleted. + """ SHIPPING_ZONE_DELETED """ A shipping zone metadata is updated. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ SHIPPING_ZONE_METADATA_UPDATED - """A new staff user is created.""" + """ + A new staff user is created. + """ STAFF_CREATED - """A staff user is updated.""" + """ + A staff user is updated. + """ STAFF_UPDATED - """A staff user is deleted.""" + """ + A staff user is deleted. + """ STAFF_DELETED - """An action requested for transaction.""" + """ + An action requested for transaction. + """ TRANSACTION_ACTION_REQUEST """ Transaction item metadata is updated. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ TRANSACTION_ITEM_METADATA_UPDATED - """A new translation is created.""" + """ + A new translation is created. + """ TRANSLATION_CREATED - """A translation is updated.""" + """ + A translation is updated. + """ TRANSLATION_UPDATED - """A new warehouse created.""" + """ + A new warehouse created. + """ WAREHOUSE_CREATED - """A warehouse is updated.""" + """ + A warehouse is updated. + """ WAREHOUSE_UPDATED - """A warehouse is deleted.""" + """ + A warehouse is deleted. + """ WAREHOUSE_DELETED """ A warehouse metadata is updated. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ WAREHOUSE_METADATA_UPDATED - """A new voucher created.""" + """ + A new voucher created. + """ VOUCHER_CREATED - """A voucher is updated.""" + """ + A voucher is updated. + """ VOUCHER_UPDATED - """A voucher is deleted.""" + """ + A voucher is deleted. + """ VOUCHER_DELETED """ A voucher metadata is updated. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ VOUCHER_METADATA_UPDATED - """An observability event is created.""" + """ + An observability event is created. + """ OBSERVABILITY } -"""Represents app data.""" +""" +Represents app data. +""" type App implements Node & ObjectWithMetadata { id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata - """List of the app's permissions.""" + """ + List of the app's permissions. + """ permissions: [Permission!] - """The date and time when the app was created.""" + """ + The date and time when the app was created. + """ created: DateTime - """Determine if app will be set active or not.""" + """ + Determine if app will be set active or not. + """ isActive: Boolean - """Name of the app.""" + """ + Name of the app. + """ name: String - """Type of the app.""" + """ + Type of the app. + """ type: AppTypeEnum """ Last 4 characters of the tokens. - + Requires one of the following permissions: MANAGE_APPS, OWNER. """ tokens: [AppToken!] """ List of webhooks assigned to this app. - + Requires one of the following permissions: MANAGE_APPS, OWNER. """ webhooks: [Webhook!] - """Description of this app.""" + """ + Description of this app. + """ aboutApp: String - """Description of the data privacy defined for this app.""" - dataPrivacy: String @deprecated(reason: "This field will be removed in Saleor 4.0. Use `dataPrivacyUrl` instead.") + """ + Description of the data privacy defined for this app. + """ + dataPrivacy: String + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `dataPrivacyUrl` instead.") - """URL to details about the privacy policy on the app owner page.""" + """ + URL to details about the privacy policy on the app owner page. + """ dataPrivacyUrl: String - """Homepage of the app.""" + """ + Homepage of the app. + """ homepageUrl: String - """Support page for the app.""" + """ + Support page for the app. + """ supportUrl: String - """URL to iframe with the configuration for the app.""" - configurationUrl: String @deprecated(reason: "This field will be removed in Saleor 4.0. Use `appUrl` instead.") + """ + URL to iframe with the configuration for the app. + """ + configurationUrl: String + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `appUrl` instead.") - """URL to iframe with the app.""" + """ + URL to iframe with the app. + """ appUrl: String """ URL to manifest used during app's installation. - + Added in Saleor 3.5. """ manifestUrl: String - """Version number of the app.""" + """ + Version number of the app. + """ version: String - """JWT token used to authenticate by thridparty app.""" + """ + JWT token used to authenticate by thridparty app. + """ accessToken: String """ App's dashboard extensions. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ extensions: [AppExtension!]! } interface ObjectWithMetadata { - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata } type MetadataItem { - """Key of a metadata item.""" + """ + Key of a metadata item. + """ key: String! - """Value of a metadata item.""" + """ + Value of a metadata item. + """ value: String! } @@ -2596,16 +3683,24 @@ Example: """ scalar Metadata -"""Represents a permission object in a friendly form.""" +""" +Represents a permission object in a friendly form. +""" type Permission { - """Internal code for permission.""" + """ + Internal code for permission. + """ code: PermissionEnum! - """Describe action(s) allowed to do by permission.""" + """ + Describe action(s) allowed to do by permission. + """ name: String! } -"""An enumeration.""" +""" +An enumeration. +""" enum PermissionEnum { MANAGE_USERS MANAGE_STAFF @@ -2639,7 +3734,9 @@ value as specified by """ scalar DateTime -"""Enum determining type of your App.""" +""" +Enum determining type of your App. +""" enum AppTypeEnum { """ Local Saleor App. The app is fully manageable from dashboard. You can change assigned permissions, add webhooks, or authentication token @@ -2652,42 +3749,64 @@ enum AppTypeEnum { THIRDPARTY } -"""Represents token data.""" +""" +Represents token data. +""" type AppToken implements Node { id: ID! - """Name of the authenticated token.""" + """ + Name of the authenticated token. + """ name: String - """Last 4 characters of the token.""" + """ + Last 4 characters of the token. + """ authToken: String } -"""Represents app data.""" +""" +Represents app data. +""" type AppExtension implements Node { id: ID! - """List of the app extension's permissions.""" + """ + List of the app extension's permissions. + """ permissions: [Permission!]! - """Label of the extension to show in the dashboard.""" + """ + Label of the extension to show in the dashboard. + """ label: String! - """URL of a view where extension's iframe is placed.""" + """ + URL of a view where extension's iframe is placed. + """ url: String! - """Place where given extension will be mounted.""" + """ + Place where given extension will be mounted. + """ mount: AppExtensionMountEnum! - """Type of way how app extension will be opened.""" + """ + Type of way how app extension will be opened. + """ target: AppExtensionTargetEnum! app: App! - """JWT token used to authenticate by thridparty app extension.""" + """ + JWT token used to authenticate by thridparty app extension. + """ accessToken: String } -"""All places where app extension can be mounted.""" +""" +All places where app extension can be mounted. +""" enum AppExtensionMountEnum { CUSTOMER_OVERVIEW_CREATE CUSTOMER_OVERVIEW_MORE_ACTIONS @@ -2718,11 +3837,15 @@ enum AppExtensionTargetEnum { } type EventDeliveryCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [EventDeliveryCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } @@ -2730,57 +3853,89 @@ type EventDeliveryCountableConnection { The Relay compliant `PageInfo` type, containing data necessary to paginate this connection. """ type PageInfo { - """When paginating forwards, are there more items?""" + """ + When paginating forwards, are there more items? + """ hasNextPage: Boolean! - """When paginating backwards, are there more items?""" + """ + When paginating backwards, are there more items? + """ hasPreviousPage: Boolean! - """When paginating backwards, the cursor to continue.""" + """ + When paginating backwards, the cursor to continue. + """ startCursor: String - """When paginating forwards, the cursor to continue.""" + """ + When paginating forwards, the cursor to continue. + """ endCursor: String } type EventDeliveryCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: EventDelivery! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } -"""Event delivery.""" +""" +Event delivery. +""" type EventDelivery implements Node { id: ID! createdAt: DateTime! - """Event delivery status.""" + """ + Event delivery status. + """ status: EventDeliveryStatusEnum! - """Webhook event type.""" + """ + Webhook event type. + """ eventType: WebhookEventTypeEnum! - """Event delivery attempts.""" + """ + Event delivery attempts. + """ attempts( - """Event delivery sorter""" + """ + Event delivery sorter + """ sortBy: EventDeliveryAttemptSortingInput - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): EventDeliveryAttemptCountableConnection - """Event payload.""" + """ + Event payload. + """ payload: String } @@ -2791,82 +3946,124 @@ enum EventDeliveryStatusEnum { } type EventDeliveryAttemptCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [EventDeliveryAttemptCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type EventDeliveryAttemptCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: EventDeliveryAttempt! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } -"""Event delivery attempts.""" +""" +Event delivery attempts. +""" type EventDeliveryAttempt implements Node { id: ID! - """Event delivery creation date and time.""" + """ + Event delivery creation date and time. + """ createdAt: DateTime! - """Task id for delivery attempt.""" + """ + Task id for delivery attempt. + """ taskId: String - """Delivery attempt duration.""" + """ + Delivery attempt duration. + """ duration: Float - """Delivery attempt response content.""" + """ + Delivery attempt response content. + """ response: String - """Response headers for delivery attempt.""" + """ + Response headers for delivery attempt. + """ responseHeaders: String - """Delivery attempt response status code.""" + """ + Delivery attempt response status code. + """ responseStatusCode: Int - """Request headers for delivery attempt.""" + """ + Request headers for delivery attempt. + """ requestHeaders: String - """Event delivery status.""" + """ + Event delivery status. + """ status: EventDeliveryStatusEnum! } input EventDeliveryAttemptSortingInput { - """Specifies the direction in which to sort products.""" + """ + Specifies the direction in which to sort products. + """ direction: OrderDirection! - """Sort attempts by the selected field.""" + """ + Sort attempts by the selected field. + """ field: EventDeliveryAttemptSortField! } enum OrderDirection { - """Specifies an ascending sort order.""" + """ + Specifies an ascending sort order. + """ ASC - """Specifies a descending sort order.""" + """ + Specifies a descending sort order. + """ DESC } enum EventDeliveryAttemptSortField { - """Sort event delivery attempts by created at.""" + """ + Sort event delivery attempts by created at. + """ CREATED_AT } input EventDeliverySortingInput { - """Specifies the direction in which to sort products.""" + """ + Specifies the direction in which to sort products. + """ direction: OrderDirection! - """Sort deliveries by the selected field.""" + """ + Sort deliveries by the selected field. + """ field: EventDeliverySortField! } enum EventDeliverySortField { - """Sort event deliveries by created at.""" + """ + Sort event deliveries by created at. + """ CREATED_AT } @@ -2877,7 +4074,9 @@ input EventDeliveryFilterInput { scalar JSONString -"""An enumeration.""" +""" +An enumeration. +""" enum WebhookSampleEventTypeEnum { ADDRESS_CREATED ADDRESS_UPDATED @@ -2987,52 +4186,58 @@ enum WebhookSampleEventTypeEnum { OBSERVABILITY } -"""Represents warehouse.""" +""" +Represents warehouse. +""" type Warehouse implements Node & ObjectWithMetadata { id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata @@ -3042,97 +4247,112 @@ type Warehouse implements Node & ObjectWithMetadata { isPrivate: Boolean! address: Address! - """Warehouse company name.""" - companyName: String! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `Address.companyName` instead.") + """ + Warehouse company name. + """ + companyName: String! + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use `Address.companyName` instead." + ) """ Click and collect options: local, all or disabled. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ clickAndCollectOption: WarehouseClickAndCollectOptionEnum! shippingZones( - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): ShippingZoneCountableConnection! """ - External ID of this warehouse. - + External ID of this warehouse. + Added in Saleor 3.10. """ externalReference: String } -"""Represents user address data.""" +""" +Represents user address data. +""" type Address implements Node & ObjectWithMetadata { id: ID! """ List of private metadata items. Requires staff permissions to access. - + Added in Saleor 3.10. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.10. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.10. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata """ List of public metadata items. Can be accessed without permissions. - + Added in Saleor 3.10. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.10. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.10. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata @@ -3145,51 +4365,82 @@ type Address implements Node & ObjectWithMetadata { cityArea: String! postalCode: String! - """Shop's default country.""" + """ + Shop's default country. + """ country: CountryDisplay! countryArea: String! phone: String - """Address is user's default shipping address.""" + """ + Address is user's default shipping address. + """ isDefaultShippingAddress: Boolean - """Address is user's default billing address.""" + """ + Address is user's default billing address. + """ isDefaultBillingAddress: Boolean } type CountryDisplay { - """Country code.""" + """ + Country code. + """ code: String! - """Country name.""" + """ + Country name. + """ country: String! - """Country tax.""" - vat: VAT @deprecated(reason: "This field will be removed in Saleor 4.0. Use `TaxClassCountryRate` type to manage tax rates per country.") + """ + Country tax. + """ + vat: VAT + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use `TaxClassCountryRate` type to manage tax rates per country." + ) } -"""Represents a VAT rate for a country.""" +""" +Represents a VAT rate for a country. +""" type VAT { - """Country code.""" + """ + Country code. + """ countryCode: String! - """Standard VAT rate in percent.""" + """ + Standard VAT rate in percent. + """ standardRate: Float - """Country's VAT rate exceptions for specific types of goods.""" + """ + Country's VAT rate exceptions for specific types of goods. + """ reducedRates: [ReducedRate!]! } -"""Represents a reduced VAT rate for a particular type of goods.""" +""" +Represents a reduced VAT rate for a particular type of goods. +""" type ReducedRate { - """Reduced VAT rate in percent.""" + """ + Reduced VAT rate in percent. + """ rate: Float! - """A type of goods.""" + """ + A type of goods. + """ rateType: String! } -"""An enumeration.""" +""" +An enumeration. +""" enum WarehouseClickAndCollectOptionEnum { DISABLED LOCAL @@ -3197,19 +4448,27 @@ enum WarehouseClickAndCollectOptionEnum { } type ShippingZoneCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [ShippingZoneCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type ShippingZoneCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: ShippingZone! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } @@ -3219,58 +4478,66 @@ Represents a shipping zone in the shop. Zones are the concept used only for grou type ShippingZone implements Node & ObjectWithMetadata { id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata name: String! default: Boolean! - """Lowest and highest prices for the shipping.""" + """ + Lowest and highest prices for the shipping. + """ priceRange: MoneyRange - """List of countries available for the method.""" + """ + List of countries available for the method. + """ countries: [CountryDisplay!]! """ @@ -3278,31 +4545,49 @@ type ShippingZone implements Node & ObjectWithMetadata { """ shippingMethods: [ShippingMethodType!] - """List of warehouses for shipping zone.""" + """ + List of warehouses for shipping zone. + """ warehouses: [Warehouse!]! - """List of channels for shipping zone.""" + """ + List of channels for shipping zone. + """ channels: [Channel!]! - """Description of a shipping zone.""" + """ + Description of a shipping zone. + """ description: String } -"""Represents a range of amounts of money.""" +""" +Represents a range of amounts of money. +""" type MoneyRange { - """Lower bound of a price range.""" + """ + Lower bound of a price range. + """ start: Money - """Upper bound of a price range.""" + """ + Upper bound of a price range. + """ stop: Money } -"""Represents amount of money in specific currency.""" +""" +Represents amount of money in specific currency. +""" type Money { - """Currency code.""" + """ + Currency code. + """ currency: String! - """Amount of money.""" + """ + Amount of money. + """ amount: Float! } @@ -3310,85 +4595,103 @@ type Money { Shipping method are the methods you'll use to get customer's orders to them. They are directly exposed to the customers. """ type ShippingMethodType implements Node & ObjectWithMetadata { - """Shipping method ID.""" + """ + Shipping method ID. + """ id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata - """Shipping method name.""" + """ + Shipping method name. + """ name: String! """ Shipping method description. - + Rich text format. For reference see https://editorjs.io/ """ description: JSONString - """Type of the shipping method.""" + """ + Type of the shipping method. + """ type: ShippingMethodTypeEnum - """Returns translated shipping method fields for the given language code.""" + """ + Returns translated shipping method fields for the given language code. + """ translation( - """A language code to return the translation for shipping method.""" + """ + A language code to return the translation for shipping method. + """ languageCode: LanguageCodeEnum! ): ShippingMethodTranslation """ List of channels available for the method. - + Requires one of the following permissions: MANAGE_SHIPPING. """ channelListings: [ShippingMethodChannelListing!] - """The price of the cheapest variant (including discounts).""" + """ + The price of the cheapest variant (including discounts). + """ maximumOrderPrice: Money - """The price of the cheapest variant (including discounts).""" + """ + The price of the cheapest variant (including discounts). + """ minimumOrderPrice: Money """ @@ -3398,44 +4701,62 @@ type ShippingMethodType implements Node & ObjectWithMetadata { """ List of excluded products for the shipping method. - + Requires one of the following permissions: MANAGE_SHIPPING. """ excludedProducts( - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): ProductCountableConnection - """Minimum order weight to use this shipping method.""" + """ + Minimum order weight to use this shipping method. + """ minimumOrderWeight: Weight - """Maximum order weight to use this shipping method.""" + """ + Maximum order weight to use this shipping method. + """ maximumOrderWeight: Weight - """Maximum number of days for delivery.""" + """ + Maximum number of days for delivery. + """ maximumDeliveryDays: Int - """Minimal number of days for delivery.""" + """ + Minimal number of days for delivery. + """ minimumDeliveryDays: Int """ Tax class assigned to this shipping method. - + Requires one of the following permissions: MANAGE_TAXES, MANAGE_SHIPPING. """ taxClass: TaxClass } -"""An enumeration.""" +""" +An enumeration. +""" enum ShippingMethodTypeEnum { PRICE WEIGHT @@ -3444,27 +4765,35 @@ enum ShippingMethodTypeEnum { type ShippingMethodTranslation implements Node { id: ID! - """Translation language.""" + """ + Translation language. + """ language: LanguageDisplay! name: String """ Translated description of the shipping method. - + Rich text format. For reference see https://editorjs.io/ """ description: JSONString } type LanguageDisplay { - """ISO 639 representation of the language name.""" + """ + ISO 639 representation of the language name. + """ code: LanguageCodeEnum! - """Full name of the language.""" + """ + Full name of the language. + """ language: String! } -"""An enumeration.""" +""" +An enumeration. +""" enum LanguageCodeEnum { AF AF_NA @@ -4247,7 +5576,9 @@ enum LanguageCodeEnum { ZU_ZA } -"""Represents shipping method channel listing.""" +""" +Represents shipping method channel listing. +""" type ShippingMethodChannelListing implements Node { id: ID! channel: Channel! @@ -4256,86 +5587,90 @@ type ShippingMethodChannelListing implements Node { price: Money } -"""Represents channel.""" +""" +Represents channel. +""" type Channel implements Node { id: ID! - """Slug of the channel.""" + """ + Slug of the channel. + """ slug: String! """ Name of the channel. - + Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER. """ name: String! """ Whether the channel is active. - + Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER. """ isActive: Boolean! """ A currency that is assigned to the channel. - + Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER. """ currencyCode: String! """ Whether a channel has associated orders. - + Requires one of the following permissions: MANAGE_CHANNELS. """ hasOrders: Boolean! """ Default country for the channel. Default country can be used in checkout to determine the stock quantities or calculate taxes when the country was not explicitly provided. - + Added in Saleor 3.1. - + Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER. """ defaultCountry: CountryDisplay! """ List of warehouses assigned to this channel. - + Added in Saleor 3.5. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. - + Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER. """ warehouses: [Warehouse!]! """ List of shippable countries for the channel. - + Added in Saleor 3.6. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ countries: [CountryDisplay!] """ Shipping methods that are available for the channel. - + Added in Saleor 3.6. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ availableShippingMethodsPerCountry(countries: [CountryCode!]): [ShippingMethodsPerCountry!] """ Define the stock setting for this channel. - + Added in Saleor 3.7. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. - + Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER. """ stockSettings: StockSettings! @@ -4349,14 +5684,20 @@ Added in Saleor 3.6. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type ShippingMethodsPerCountry { - """The country code.""" + """ + The country code. + """ countryCode: CountryCode! - """List of available shipping methods.""" + """ + List of available shipping methods. + """ shippingMethods: [ShippingMethod!] } -"""An enumeration.""" +""" +An enumeration. +""" enum CountryCode { AF AX @@ -4614,112 +5955,152 @@ enum CountryCode { Shipping methods that can be used as means of shipping for orders and checkouts. """ type ShippingMethod implements Node & ObjectWithMetadata { - """Unique ID of ShippingMethod available for Order.""" + """ + Unique ID of ShippingMethod available for Order. + """ id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata - """Type of the shipping method.""" + """ + Type of the shipping method. + """ type: ShippingMethodTypeEnum @deprecated(reason: "This field will be removed in Saleor 4.0.") - """Shipping method name.""" + """ + Shipping method name. + """ name: String! """ Shipping method description. - + Rich text format. For reference see https://editorjs.io/ """ description: JSONString - """Maximum delivery days for this shipping method.""" + """ + Maximum delivery days for this shipping method. + """ maximumDeliveryDays: Int - """Minimum delivery days for this shipping method.""" + """ + Minimum delivery days for this shipping method. + """ minimumDeliveryDays: Int - """Maximum order weight for this shipping method.""" + """ + Maximum order weight for this shipping method. + """ maximumOrderWeight: Weight @deprecated(reason: "This field will be removed in Saleor 4.0.") - """Minimum order weight for this shipping method.""" + """ + Minimum order weight for this shipping method. + """ minimumOrderWeight: Weight @deprecated(reason: "This field will be removed in Saleor 4.0.") - """Returns translated shipping method fields for the given language code.""" + """ + Returns translated shipping method fields for the given language code. + """ translation( - """A language code to return the translation for shipping method.""" + """ + A language code to return the translation for shipping method. + """ languageCode: LanguageCodeEnum! ): ShippingMethodTranslation - """The price of selected shipping method.""" + """ + The price of selected shipping method. + """ price: Money! - """Maximum order price for this shipping method.""" + """ + Maximum order price for this shipping method. + """ maximumOrderPrice: Money - """Minimal order price for this shipping method.""" + """ + Minimal order price for this shipping method. + """ minimumOrderPrice: Money - """Describes if this shipping method is active and can be selected.""" + """ + Describes if this shipping method is active and can be selected. + """ active: Boolean! - """Message connected to this shipping method.""" + """ + Message connected to this shipping method. + """ message: String } -"""Represents weight value in a specific weight unit.""" +""" +Represents weight value in a specific weight unit. +""" type Weight { - """Weight unit.""" + """ + Weight unit. + """ unit: WeightUnitsEnum! - """Weight value.""" + """ + Weight value. + """ value: Float! } -"""An enumeration.""" +""" +An enumeration. +""" enum WeightUnitsEnum { G LB @@ -4755,90 +6136,116 @@ enum AllocationStrategyEnum { PRIORITIZE_HIGH_STOCK } -"""Represents shipping method postal code rule.""" +""" +Represents shipping method postal code rule. +""" type ShippingMethodPostalCodeRule implements Node { - """The ID of the object.""" + """ + The ID of the object. + """ id: ID! - """Start address range.""" + """ + Start address range. + """ start: String - """End address range.""" + """ + End address range. + """ end: String - """Inclusion type of the postal code rule.""" + """ + Inclusion type of the postal code rule. + """ inclusionType: PostalCodeRuleInclusionTypeEnum } -"""An enumeration.""" +""" +An enumeration. +""" enum PostalCodeRuleInclusionTypeEnum { INCLUDE EXCLUDE } type ProductCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [ProductCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type ProductCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: Product! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } -"""Represents an individual item for sale in the storefront.""" +""" +Represents an individual item for sale in the storefront. +""" type Product implements Node & ObjectWithMetadata { id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata @@ -4848,7 +6255,7 @@ type Product implements Node & ObjectWithMetadata { """ Description of the product. - + Rich text format. For reference see https://editorjs.io/ """ description: JSONString @@ -4857,7 +6264,10 @@ type Product implements Node & ObjectWithMetadata { category: Category created: DateTime! updatedAt: DateTime! - chargeTaxes: Boolean! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `Channel.taxConfiguration` field to determine whether tax collection is enabled.") + chargeTaxes: Boolean! + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use `Channel.taxConfiguration` field to determine whether tax collection is enabled." + ) weight: Weight defaultVariant: ProductVariant rating: Float @@ -4869,10 +6279,13 @@ type Product implements Node & ObjectWithMetadata { """ Description of the product. - + Rich text format. For reference see https://editorjs.io/ """ - descriptionJson: JSONString @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `description` field instead.") + descriptionJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `description` field instead." + ) thumbnail( """ Size of the image. If not provided, the original image will be returned. @@ -4881,9 +6294,9 @@ type Product implements Node & ObjectWithMetadata { """ The format of the image. When not provided, format of the original image will be used. Must be provided together with the size value, otherwise original image will be returned. - + Added in Saleor 3.6. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ format: ThumbnailFormatEnum @@ -4899,7 +6312,9 @@ type Product implements Node & ObjectWithMetadata { address: AddressInput ): ProductPricingInfo - """Whether the product is in stock and visible or not.""" + """ + Whether the product is in stock and visible or not. + """ isAvailable( """ Destination address used to find warehouses where stock availability for this product is checked. If address is empty, uses `Shop.companyAddress` or fallbacks to server's `settings.DEFAULT_COUNTRY` configuration. @@ -4907,51 +6322,73 @@ type Product implements Node & ObjectWithMetadata { address: AddressInput ): Boolean - """A type of tax. Assigned by enabled tax gateway""" - taxType: TaxType @deprecated(reason: "This field will be removed in Saleor 4.0. Use `taxClass` field instead.") + """ + A type of tax. Assigned by enabled tax gateway + """ + taxType: TaxType + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `taxClass` field instead.") """ Get a single attribute attached to product by attribute slug. - + Added in Saleor 3.9. """ attribute( - """Slug of the attribute""" + """ + Slug of the attribute + """ slug: String! ): SelectedAttribute - """List of attributes assigned to this product.""" + """ + List of attributes assigned to this product. + """ attributes: [SelectedAttribute!]! """ List of availability in channels for the product. - + Requires one of the following permissions: MANAGE_PRODUCTS. """ channelListings: [ProductChannelListing!] - """Get a single product media by ID.""" + """ + Get a single product media by ID. + """ mediaById( - """ID of a product media.""" + """ + ID of a product media. + """ id: ID ): ProductMedia - """Get a single product image by ID.""" + """ + Get a single product image by ID. + """ imageById( - """ID of a product image.""" + """ + ID of a product image. + """ id: ID - ): ProductImage @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `mediaById` field instead.") + ): ProductImage + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `mediaById` field instead." + ) """ - Get a single variant by SKU or ID. - + Get a single variant by SKU or ID. + Added in Saleor 3.9. """ variant( - """ID of the variant.""" + """ + ID of the variant. + """ id: ID - """SKU of the variant.""" + """ + SKU of the variant. + """ sku: String ): ProductVariant @@ -4960,49 +6397,67 @@ type Product implements Node & ObjectWithMetadata { """ variants: [ProductVariant!] - """List of media for the product.""" + """ + List of media for the product. + """ media( """ - Sort media. - + Sort media. + Added in Saleor 3.9. """ sortBy: MediaSortingInput ): [ProductMedia!] - """List of images for the product.""" - images: [ProductImage!] @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `media` field instead.") + """ + List of images for the product. + """ + images: [ProductImage!] + @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `media` field instead.") """ List of collections for the product. Requires the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. """ collections: [Collection!] - """Returns translated product fields for the given language code.""" + """ + Returns translated product fields for the given language code. + """ translation( - """A language code to return the translation for product.""" + """ + A language code to return the translation for product. + """ languageCode: LanguageCodeEnum! ): ProductTranslation - """Date when product is available for purchase.""" - availableForPurchase: Date @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `availableForPurchaseAt` field to fetch the available for purchase date.") + """ + Date when product is available for purchase. + """ + availableForPurchase: Date + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `availableForPurchaseAt` field to fetch the available for purchase date." + ) - """Date when product is available for purchase.""" + """ + Date when product is available for purchase. + """ availableForPurchaseAt: DateTime - """Whether the product is available for purchase.""" + """ + Whether the product is available for purchase. + """ isAvailableForPurchase: Boolean """ Tax class assigned to this product type. All products of this product type use this tax class, unless it's overridden in the `Product` type. - + Requires one of the following permissions: AUTHENTICATED_STAFF_USER. """ taxClass: TaxClass """ - External ID of this product. - + External ID of this product. + Added in Saleor 3.10. """ externalReference: String @@ -5014,48 +6469,52 @@ Represents a type of product. It defines what attributes are available to produc type ProductType implements Node & ObjectWithMetadata { id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata @@ -5066,90 +6525,137 @@ type ProductType implements Node & ObjectWithMetadata { isDigital: Boolean! weight: Weight - """The product type kind.""" + """ + The product type kind. + """ kind: ProductTypeKindEnum! - """List of products of this type.""" + """ + List of products of this type. + """ products( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int - ): ProductCountableConnection @deprecated(reason: "This field will be removed in Saleor 4.0. Use the top-level `products` query with the `productTypes` filter.") + ): ProductCountableConnection + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the top-level `products` query with the `productTypes` filter." + ) - """A type of tax. Assigned by enabled tax gateway""" - taxType: TaxType @deprecated(reason: "This field will be removed in Saleor 4.0. Use `taxClass` field instead.") + """ + A type of tax. Assigned by enabled tax gateway + """ + taxType: TaxType + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `taxClass` field instead.") """ Tax class assigned to this product type. All products of this product type use this tax class, unless it's overridden in the `Product` type. - + Requires one of the following permissions: AUTHENTICATED_STAFF_USER. """ taxClass: TaxClass - """Variant attributes of that product type.""" + """ + Variant attributes of that product type. + """ variantAttributes( - """Define scope of returned attributes.""" + """ + Define scope of returned attributes. + """ variantSelection: VariantAttributeScope - ): [Attribute!] @deprecated(reason: "This field will be removed in Saleor 4.0. Use `assignedVariantAttributes` instead.") + ): [Attribute!] + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use `assignedVariantAttributes` instead." + ) """ Variant attributes of that product type with attached variant selection. - + Added in Saleor 3.1. """ assignedVariantAttributes( - """Define scope of returned attributes.""" + """ + Define scope of returned attributes. + """ variantSelection: VariantAttributeScope ): [AssignedVariantAttribute!] - """Product attributes of that product type.""" + """ + Product attributes of that product type. + """ productAttributes: [Attribute!] """ List of attributes which can be assigned to this product type. - + Requires one of the following permissions: MANAGE_PRODUCTS. """ availableAttributes( filter: AttributeFilterInput - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): AttributeCountableConnection } -"""An enumeration.""" +""" +An enumeration. +""" enum ProductTypeKindEnum { NORMAL GIFT_CARD } -"""Representation of tax types fetched from tax gateway.""" +""" +Representation of tax types fetched from tax gateway. +""" type TaxType { - """Description of the tax type.""" + """ + Description of the tax type. + """ description: String - """External tax code used to identify given tax group.""" + """ + External tax code used to identify given tax group. + """ taxCode: String } @@ -5161,59 +6667,69 @@ Added in Saleor 3.9. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type TaxClass implements Node & ObjectWithMetadata { - """The ID of the object.""" + """ + The ID of the object. + """ id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata - """Name of the tax class.""" + """ + Name of the tax class. + """ name: String! - """Country-specific tax rates for this tax class.""" + """ + Country-specific tax rates for this tax class. + """ countries: [TaxClassCountryRate!]! } @@ -5225,13 +6741,19 @@ Added in Saleor 3.9. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type TaxClassCountryRate { - """Country in which this tax rate applies.""" + """ + Country in which this tax rate applies. + """ country: CountryDisplay! - """Tax rate value.""" + """ + Tax rate value. + """ rate: Float! - """Related tax class.""" + """ + Related tax class. + """ taxClass: TaxClass } @@ -5241,88 +6763,118 @@ Custom attribute of a product. Attributes can be assigned to products and varian type Attribute implements Node & ObjectWithMetadata { id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata - """The input type to use for entering attribute values in the dashboard.""" + """ + The input type to use for entering attribute values in the dashboard. + """ inputType: AttributeInputTypeEnum - """The entity type which can be used as a reference.""" + """ + The entity type which can be used as a reference. + """ entityType: AttributeEntityTypeEnum - """Name of an attribute displayed in the interface.""" + """ + Name of an attribute displayed in the interface. + """ name: String - """Internal representation of an attribute name.""" + """ + Internal representation of an attribute name. + """ slug: String - """The attribute type.""" + """ + The attribute type. + """ type: AttributeTypeEnum - """The unit of attribute values.""" + """ + The unit of attribute values. + """ unit: MeasurementUnitsEnum - """List of attribute's values.""" + """ + List of attribute's values. + """ choices( - """Sort attribute choices.""" + """ + Sort attribute choices. + """ sortBy: AttributeChoicesSortingInput - """Filtering options for attribute choices.""" + """ + Filtering options for attribute choices. + """ filter: AttributeValueFilterInput - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): AttributeValueCountableConnection @@ -5356,50 +6908,74 @@ type Attribute implements Node & ObjectWithMetadata { """ storefrontSearchPosition: Int! - """Returns translated attribute fields for the given language code.""" + """ + Returns translated attribute fields for the given language code. + """ translation( - """A language code to return the translation for attribute.""" + """ + A language code to return the translation for attribute. + """ languageCode: LanguageCodeEnum! ): AttributeTranslation - """Flag indicating that attribute has predefined choices.""" + """ + Flag indicating that attribute has predefined choices. + """ withChoices: Boolean! productTypes( - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): ProductTypeCountableConnection! productVariantTypes( - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): ProductTypeCountableConnection! """ - External ID of this attribute. - + External ID of this attribute. + Added in Saleor 3.10. """ externalReference: String } -"""An enumeration.""" +""" +An enumeration. +""" enum AttributeInputTypeEnum { DROPDOWN MULTISELECT @@ -5414,20 +6990,26 @@ enum AttributeInputTypeEnum { DATE_TIME } -"""An enumeration.""" +""" +An enumeration. +""" enum AttributeEntityTypeEnum { PAGE PRODUCT PRODUCT_VARIANT } -"""An enumeration.""" +""" +An enumeration. +""" enum AttributeTypeEnum { PRODUCT_TYPE PAGE_TYPE } -"""An enumeration.""" +""" +An enumeration. +""" enum MeasurementUnitsEnum { CM M @@ -5462,30 +7044,44 @@ enum MeasurementUnitsEnum { } type AttributeValueCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [AttributeValueCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type AttributeValueCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: AttributeValue! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } -"""Represents a value of an attribute.""" +""" +Represents a value of an attribute. +""" type AttributeValue implements Node { id: ID! - """Name of a value displayed in the interface.""" + """ + Name of a value displayed in the interface. + """ name: String - """Internal representation of a value (unique per attribute).""" + """ + Internal representation of a value (unique per attribute). + """ slug: String """ @@ -5493,24 +7089,34 @@ type AttributeValue implements Node { """ value: String - """Returns translated attribute value fields for the given language code.""" + """ + Returns translated attribute value fields for the given language code. + """ translation( - """A language code to return the translation for attribute value.""" + """ + A language code to return the translation for attribute value. + """ languageCode: LanguageCodeEnum! ): AttributeValueTranslation - """The input type to use for entering attribute values in the dashboard.""" + """ + The input type to use for entering attribute values in the dashboard. + """ inputType: AttributeInputTypeEnum - """The ID of the attribute reference.""" + """ + The ID of the attribute reference. + """ reference: ID - """Represents file URL and content type (if attribute value is a file).""" + """ + Represents file URL and content type (if attribute value is a file). + """ file: File """ Represents the text of the attribute value, includes formatting. - + Rich text format. For reference see https://editorjs.io/ """ richText: JSONString @@ -5520,18 +7126,24 @@ type AttributeValue implements Node { """ plainText: String - """Represents the boolean value of the attribute value.""" + """ + Represents the boolean value of the attribute value. + """ boolean: Boolean - """Represents the date value of the attribute value.""" + """ + Represents the date value of the attribute value. + """ date: Date - """Represents the date/time value of the attribute value.""" + """ + Represents the date/time value of the attribute value. + """ dateTime: DateTime """ - External ID of this attribute value. - + External ID of this attribute value. + Added in Saleor 3.10. """ externalReference: String @@ -5540,26 +7152,34 @@ type AttributeValue implements Node { type AttributeValueTranslation implements Node { id: ID! - """Translation language.""" + """ + Translation language. + """ language: LanguageDisplay! name: String! """ Attribute value. - + Rich text format. For reference see https://editorjs.io/ """ richText: JSONString - """Attribute plain text value.""" + """ + Attribute plain text value. + """ plainText: String } type File { - """The URL of the file.""" + """ + The URL of the file. + """ url: String! - """Content type of the file.""" + """ + Content type of the file. + """ contentType: String } @@ -5571,18 +7191,26 @@ value as specified by scalar Date input AttributeChoicesSortingInput { - """Specifies the direction in which to sort products.""" + """ + Specifies the direction in which to sort products. + """ direction: OrderDirection! - """Sort attribute choices by the selected field.""" + """ + Sort attribute choices by the selected field. + """ field: AttributeChoicesSortField! } enum AttributeChoicesSortField { - """Sort attribute choice by name.""" + """ + Sort attribute choice by name. + """ NAME - """Sort attribute choice by slug.""" + """ + Sort attribute choice by slug. + """ SLUG } @@ -5594,25 +7222,35 @@ input AttributeValueFilterInput { type AttributeTranslation implements Node { id: ID! - """Translation language.""" + """ + Translation language. + """ language: LanguageDisplay! name: String! } type ProductTypeCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [ProductTypeCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type ProductTypeCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: ProductType! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } @@ -5628,7 +7266,9 @@ Represents assigned attribute to variant with variant selection attached. Added in Saleor 3.1. """ type AssignedVariantAttribute { - """Attribute assigned to variant.""" + """ + Attribute assigned to variant. + """ attribute: Attribute! """ @@ -5638,19 +7278,27 @@ type AssignedVariantAttribute { } type AttributeCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [AttributeCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type AttributeCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: Attribute! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } @@ -5670,18 +7318,22 @@ input AttributeFilterInput { slugs: [String!] """ - Specifies the channel by which the data should be filtered. - + Specifies the channel by which the data should be filtered. + DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. """ channel: String } input MetadataFilter { - """Key of a metadata item.""" + """ + Key of a metadata item. + """ key: String! - """Value of a metadata item.""" + """ + Value of a metadata item. + """ value: String } @@ -5691,48 +7343,52 @@ Represents a single category of products. Categories allow to organize products type Category implements Node & ObjectWithMetadata { id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata @@ -5742,7 +7398,7 @@ type Category implements Node & ObjectWithMetadata { """ Description of the category. - + Rich text format. For reference see https://editorjs.io/ """ description: JSONString @@ -5752,23 +7408,36 @@ type Category implements Node & ObjectWithMetadata { """ Description of the category. - + Rich text format. For reference see https://editorjs.io/ """ - descriptionJson: JSONString @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `description` field instead.") + descriptionJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `description` field instead." + ) - """List of ancestors of the category.""" + """ + List of ancestors of the category. + """ ancestors( - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): CategoryCountableConnection @@ -5778,46 +7447,66 @@ type Category implements Node & ObjectWithMetadata { products( """ Filtering options for products. - + Added in Saleor 3.10. """ filter: ProductFilterInput """ Sort products. - + Added in Saleor 3.10. """ sortBy: ProductOrder - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): ProductCountableConnection - """List of children of the category.""" + """ + List of children of the category. + """ children( - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): CategoryCountableConnection backgroundImage( @@ -5828,35 +7517,47 @@ type Category implements Node & ObjectWithMetadata { """ The format of the image. When not provided, format of the original image will be used. Must be provided together with the size value, otherwise original image will be returned. - + Added in Saleor 3.6. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ format: ThumbnailFormatEnum ): Image - """Returns translated category fields for the given language code.""" + """ + Returns translated category fields for the given language code. + """ translation( - """A language code to return the translation for category.""" + """ + A language code to return the translation for category. + """ languageCode: LanguageCodeEnum! ): CategoryTranslation } type CategoryCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [CategoryCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type CategoryCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: Category! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } @@ -5867,73 +7568,89 @@ input ProductFilterInput { hasCategory: Boolean attributes: [AttributeInput!] - """Filter by variants having specific stock status.""" + """ + Filter by variants having specific stock status. + """ stockAvailability: StockAvailability stocks: ProductStockFilterInput search: String metadata: [MetadataFilter!] """ - Filter by the publication date. - + Filter by the publication date. + Added in Saleor 3.8. """ publishedFrom: DateTime """ - Filter by availability for purchase. - + Filter by availability for purchase. + Added in Saleor 3.8. """ isAvailable: Boolean """ - Filter by the date of availability for purchase. - + Filter by the date of availability for purchase. + Added in Saleor 3.8. """ availableFrom: DateTime """ - Filter by visibility in product listings. - + Filter by visibility in product listings. + Added in Saleor 3.8. """ isVisibleInListing: Boolean price: PriceRangeInput - """Filter by the lowest variant price after discounts.""" + """ + Filter by the lowest variant price after discounts. + """ minimalPrice: PriceRangeInput - """Filter by when was the most recent update.""" + """ + Filter by when was the most recent update. + """ updatedAt: DateTimeRangeInput productTypes: [ID!] - """Filter on whether product is a gift card or not.""" + """ + Filter on whether product is a gift card or not. + """ giftCard: Boolean ids: [ID!] hasPreorderedVariants: Boolean slugs: [String!] """ - Specifies the channel by which the data should be filtered. - + Specifies the channel by which the data should be filtered. + DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. """ channel: String } input AttributeInput { - """Internal representation of an attribute name.""" + """ + Internal representation of an attribute name. + """ slug: String! - """Internal representation of a value (unique per attribute).""" + """ + Internal representation of a value (unique per attribute). + """ values: [String!] - """The range that the returned values should be in.""" + """ + The range that the returned values should be in. + """ valuesRange: IntRangeInput - """The date/time range that the returned values should be in.""" + """ + The date/time range that the returned values should be in. + """ dateTime: DateTimeRangeInput """ @@ -5941,31 +7658,45 @@ input AttributeInput { """ date: DateRangeInput - """The boolean value of the attribute.""" + """ + The boolean value of the attribute. + """ boolean: Boolean } input IntRangeInput { - """Value greater than or equal to.""" + """ + Value greater than or equal to. + """ gte: Int - """Value less than or equal to.""" + """ + Value less than or equal to. + """ lte: Int } input DateTimeRangeInput { - """Start date.""" + """ + Start date. + """ gte: DateTime - """End date.""" + """ + End date. + """ lte: DateTime } input DateRangeInput { - """Start date.""" + """ + Start date. + """ gte: Date - """End date.""" + """ + End date. + """ lte: Date } @@ -5980,20 +7711,26 @@ input ProductStockFilterInput { } input PriceRangeInput { - """Price greater than or equal to.""" + """ + Price greater than or equal to. + """ gte: Float - """Price less than or equal to.""" + """ + Price less than or equal to. + """ lte: Float } input ProductOrder { - """Specifies the direction in which to sort products.""" + """ + Specifies the direction in which to sort products. + """ direction: OrderDirection! """ Specifies the channel in which to sort the data. - + DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. """ channel: String @@ -6004,12 +7741,16 @@ input ProductOrder { """ attributeId: ID - """Sort products by the selected field.""" + """ + Sort products by the selected field. + """ field: ProductOrderField } enum ProductOrderField { - """Sort products by name.""" + """ + Sort products by name. + """ NAME """ @@ -6019,79 +7760,97 @@ enum ProductOrderField { """ Sort products by price. - + This option requires a channel filter to work as the values can vary between channels. """ PRICE """ Sort products by a minimal price of a product's variant. - + This option requires a channel filter to work as the values can vary between channels. """ MINIMAL_PRICE - """Sort products by update date.""" + """ + Sort products by update date. + """ LAST_MODIFIED - """Sort products by update date.""" + """ + Sort products by update date. + """ DATE - """Sort products by type.""" + """ + Sort products by type. + """ TYPE """ Sort products by publication status. - + This option requires a channel filter to work as the values can vary between channels. """ PUBLISHED """ Sort products by publication date. - + This option requires a channel filter to work as the values can vary between channels. """ PUBLICATION_DATE """ Sort products by publication date. - + This option requires a channel filter to work as the values can vary between channels. """ PUBLISHED_AT - """Sort products by update date.""" + """ + Sort products by update date. + """ LAST_MODIFIED_AT """ Sort products by collection. Note: This option is available only for the `Collection.products` query. - + This option requires a channel filter to work as the values can vary between channels. """ COLLECTION - """Sort products by rating.""" + """ + Sort products by rating. + """ RATING """ Sort products by creation date. - + Added in Saleor 3.8. """ CREATED_AT } -"""Represents an image.""" +""" +Represents an image. +""" type Image { - """The URL of the image.""" + """ + The URL of the image. + """ url: String! - """Alt text for an image.""" + """ + Alt text for an image. + """ alt: String } -"""An enumeration.""" +""" +An enumeration. +""" enum ThumbnailFormatEnum { WEBP } @@ -6099,7 +7858,9 @@ enum ThumbnailFormatEnum { type CategoryTranslation implements Node { id: ID! - """Translation language.""" + """ + Translation language. + """ language: LanguageDisplay! seoTitle: String seoDescription: String @@ -6107,65 +7868,74 @@ type CategoryTranslation implements Node { """ Translated description of the category. - + Rich text format. For reference see https://editorjs.io/ """ description: JSONString """ Translated description of the category. - + Rich text format. For reference see https://editorjs.io/ """ - descriptionJson: JSONString @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `description` field instead.") + descriptionJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `description` field instead." + ) } -"""Represents a version of a product such as different size or color.""" +""" +Represents a version of a product such as different size or color. +""" type ProductVariant implements Node & ObjectWithMetadata { id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata @@ -6183,7 +7953,7 @@ type ProductVariant implements Node & ObjectWithMetadata { """ List of price information in channels for the product. - + Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER. """ channelListings: [ProductVariantChannelListing!] @@ -6198,51 +7968,66 @@ type ProductVariant implements Node & ObjectWithMetadata { address: AddressInput ): VariantPricingInfo - """List of attributes assigned to this variant.""" + """ + List of attributes assigned to this variant. + """ attributes( - """Define scope of returned attributes.""" + """ + Define scope of returned attributes. + """ variantSelection: VariantAttributeScope ): [SelectedAttribute!]! - """Gross margin percentage value.""" + """ + Gross margin percentage value. + """ margin: Int """ Total quantity ordered. - + Requires one of the following permissions: MANAGE_PRODUCTS. """ quantityOrdered: Int """ Total revenue generated by a variant in given period of time. Note: this field should be queried using `reportProductSales` query as it uses optimizations suitable for such calculations. - + Requires one of the following permissions: MANAGE_PRODUCTS. """ revenue(period: ReportingPeriod): TaxedMoney - """List of images for the product variant.""" - images: [ProductImage!] @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `media` field instead.") + """ + List of images for the product variant. + """ + images: [ProductImage!] + @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `media` field instead.") - """List of media for the product variant.""" + """ + List of media for the product variant. + """ media: [ProductMedia!] - """Returns translated product variant fields for the given language code.""" + """ + Returns translated product variant fields for the given language code. + """ translation( - """A language code to return the translation for product variant.""" + """ + A language code to return the translation for product variant. + """ languageCode: LanguageCodeEnum! ): ProductVariantTranslation """ Digital content for the product variant. - + Requires one of the following permissions: MANAGE_PRODUCTS. """ digitalContent: DigitalContent """ Stocks for the product variant. - + Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. """ stocks( @@ -6252,8 +8037,8 @@ type ProductVariant implements Node & ObjectWithMetadata { address: AddressInput """ - Two-letter ISO 3166-1 country code. - + Two-letter ISO 3166-1 country code. + DEPRECATED: this field will be removed in Saleor 4.0. Use `address` argument instead. """ countryCode: CountryCode @@ -6269,8 +8054,8 @@ type ProductVariant implements Node & ObjectWithMetadata { address: AddressInput """ - Two-letter ISO 3166-1 country code. When provided, the exact quantity from a warehouse operating in shipping zones that contain this country will be returned. Otherwise, it will return the maximum quantity from all shipping zones. - + Two-letter ISO 3166-1 country code. When provided, the exact quantity from a warehouse operating in shipping zones that contain this country will be returned. Otherwise, it will return the maximum quantity from all shipping zones. + DEPRECATED: this field will be removed in Saleor 4.0. Use `address` argument instead. """ countryCode: CountryCode @@ -6278,9 +8063,9 @@ type ProductVariant implements Node & ObjectWithMetadata { """ Preorder data for product variant. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ preorder: PreorderData @@ -6288,66 +8073,90 @@ type ProductVariant implements Node & ObjectWithMetadata { updatedAt: DateTime! """ - External ID of this product. - + External ID of this product. + Added in Saleor 3.10. """ externalReference: String } -"""Represents product varaint channel listing.""" +""" +Represents product varaint channel listing. +""" type ProductVariantChannelListing implements Node { id: ID! channel: Channel! price: Money - """Cost price of the variant.""" + """ + Cost price of the variant. + """ costPrice: Money """ Gross margin percentage value. - + Requires one of the following permissions: MANAGE_PRODUCTS. """ margin: Int """ Preorder variant data. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ preorderThreshold: PreorderThreshold } -"""Represents preorder variant data for channel.""" +""" +Represents preorder variant data for channel. +""" type PreorderThreshold { - """Preorder threshold for product variant in this channel.""" + """ + Preorder threshold for product variant in this channel. + """ quantity: Int - """Number of sold product variant in this channel.""" + """ + Number of sold product variant in this channel. + """ soldUnits: Int! } -"""Represents availability of a variant in the storefront.""" +""" +Represents availability of a variant in the storefront. +""" type VariantPricingInfo { - """Whether it is in sale or not.""" + """ + Whether it is in sale or not. + """ onSale: Boolean - """The discount amount if in sale (null otherwise).""" + """ + The discount amount if in sale (null otherwise). + """ discount: TaxedMoney - """The discount amount in the local currency.""" + """ + The discount amount in the local currency. + """ discountLocalCurrency: TaxedMoney - """The price, with any discount subtracted.""" + """ + The price, with any discount subtracted. + """ price: TaxedMoney - """The price without any discount.""" + """ + The price without any discount. + """ priceUndiscounted: TaxedMoney - """The discounted price in the local currency.""" + """ + The discounted price in the local currency. + """ priceLocalCurrency: TaxedMoney } @@ -6355,60 +8164,96 @@ type VariantPricingInfo { Represents a monetary value with taxes. In cases where taxes were not applied, net and gross values will be equal. """ type TaxedMoney { - """Currency code.""" + """ + Currency code. + """ currency: String! - """Amount of money including taxes.""" + """ + Amount of money including taxes. + """ gross: Money! - """Amount of money without taxes.""" + """ + Amount of money without taxes. + """ net: Money! - """Amount of taxes.""" + """ + Amount of taxes. + """ tax: Money! } input AddressInput { - """Given name.""" + """ + Given name. + """ firstName: String - """Family name.""" + """ + Family name. + """ lastName: String - """Company or organization.""" + """ + Company or organization. + """ companyName: String - """Address.""" + """ + Address. + """ streetAddress1: String - """Address.""" + """ + Address. + """ streetAddress2: String - """City.""" + """ + City. + """ city: String - """District.""" + """ + District. + """ cityArea: String - """Postal code.""" + """ + Postal code. + """ postalCode: String - """Country.""" + """ + Country. + """ country: CountryCode - """State or province.""" + """ + State or province. + """ countryArea: String - """Phone number.""" + """ + Phone number. + """ phone: String } -"""Represents a custom attribute.""" +""" +Represents a custom attribute. +""" type SelectedAttribute { - """Name of an attribute displayed in the interface.""" + """ + Name of an attribute displayed in the interface. + """ attribute: Attribute! - """Values of an attribute.""" + """ + Values of an attribute. + """ values: [AttributeValue!]! } @@ -6417,12 +8262,18 @@ enum ReportingPeriod { THIS_MONTH } -"""Represents a product image.""" +""" +Represents a product image. +""" type ProductImage { - """The ID of the image.""" + """ + The ID of the image. + """ id: ID! - """The alt text of the image.""" + """ + The alt text of the image. + """ alt: String """ @@ -6437,16 +8288,18 @@ type ProductImage { """ The format of the image. When not provided, format of the original image will be used. Must be provided together with the size value, otherwise original image will be returned. - + Added in Saleor 3.6. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ format: ThumbnailFormatEnum ): String! } -"""Represents a product media.""" +""" +Represents a product media. +""" type ProductMedia implements Node { id: ID! sortOrder: Int @@ -6461,16 +8314,18 @@ type ProductMedia implements Node { """ The format of the image. When not provided, format of the original image will be used. Must be provided together with the size value, otherwise original image will be returned. - + Added in Saleor 3.6. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ format: ThumbnailFormatEnum ): String! } -"""An enumeration.""" +""" +An enumeration. +""" enum ProductMediaType { IMAGE VIDEO @@ -6479,7 +8334,9 @@ enum ProductMediaType { type ProductVariantTranslation implements Node { id: ID! - """Translation language.""" + """ + Translation language. + """ language: LanguageDisplay! name: String! } @@ -6487,48 +8344,52 @@ type ProductVariantTranslation implements Node { type DigitalContent implements Node & ObjectWithMetadata { id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata @@ -6538,10 +8399,14 @@ type DigitalContent implements Node & ObjectWithMetadata { maxDownloads: Int urlValidDays: Int - """List of URLs for the digital variant.""" + """ + List of URLs for the digital variant. + """ urls: [DigitalContentUrl!] - """Product variant assigned to digital content.""" + """ + Product variant assigned to digital content. + """ productVariant: ProductVariant! } @@ -6551,16 +8416,22 @@ type DigitalContentUrl implements Node { created: DateTime! downloadNum: Int! - """URL for digital content.""" + """ + URL for digital content. + """ url: String - """UUID of digital content.""" + """ + UUID of digital content. + """ token: UUID! } scalar UUID -"""Represents stock.""" +""" +Represents stock. +""" type Stock implements Node { id: ID! warehouse: Warehouse! @@ -6568,61 +8439,77 @@ type Stock implements Node { """ Quantity of a product in the warehouse's possession, including the allocated stock that is waiting for shipment. - + Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. """ quantity: Int! """ Quantity allocated for orders. - + Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. """ quantityAllocated: Int! """ Quantity reserved for checkouts. - + Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. """ quantityReserved: Int! } -"""Represents preorder settings for product variant.""" +""" +Represents preorder settings for product variant. +""" type PreorderData { """ The global preorder threshold for product variant. - + Requires one of the following permissions: MANAGE_PRODUCTS. """ globalThreshold: Int """ Total number of sold product variant during preorder. - + Requires one of the following permissions: MANAGE_PRODUCTS. """ globalSoldUnits: Int! - """Preorder end date.""" + """ + Preorder end date. + """ endDate: DateTime } -"""Represents availability of a product in the storefront.""" +""" +Represents availability of a product in the storefront. +""" type ProductPricingInfo { - """Whether it is in sale or not.""" + """ + Whether it is in sale or not. + """ onSale: Boolean - """The discount amount if in sale (null otherwise).""" + """ + The discount amount if in sale (null otherwise). + """ discount: TaxedMoney - """The discount amount in the local currency.""" + """ + The discount amount in the local currency. + """ discountLocalCurrency: TaxedMoney - """The discounted price range of the product variants.""" + """ + The discounted price range of the product variants. + """ priceRange: TaxedMoneyRange - """The undiscounted price range of the product variants.""" + """ + The undiscounted price range of the product variants. + """ priceRangeUndiscounted: TaxedMoneyRange """ @@ -6632,64 +8519,82 @@ type ProductPricingInfo { """ Determines whether this product's price displayed in a storefront should include taxes. - + Added in Saleor 3.9. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ displayGrossPrices: Boolean! } -"""Represents a range of monetary values.""" +""" +Represents a range of monetary values. +""" type TaxedMoneyRange { - """Lower bound of a price range.""" + """ + Lower bound of a price range. + """ start: TaxedMoney - """Upper bound of a price range.""" + """ + Upper bound of a price range. + """ stop: TaxedMoney } -"""Represents product channel listing.""" +""" +Represents product channel listing. +""" type ProductChannelListing implements Node { id: ID! - publicationDate: Date @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `publishedAt` field to fetch the publication date.") + publicationDate: Date + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `publishedAt` field to fetch the publication date." + ) """ The product publication date time. - + Added in Saleor 3.3. """ publishedAt: DateTime isPublished: Boolean! channel: Channel! visibleInListings: Boolean! - availableForPurchase: Date @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `availableForPurchaseAt` field to fetch the available for purchase date.") + availableForPurchase: Date + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `availableForPurchaseAt` field to fetch the available for purchase date." + ) """ The product available for purchase date time. - + Added in Saleor 3.3. """ availableForPurchaseAt: DateTime - """The price of the cheapest variant (including discounts).""" + """ + The price of the cheapest variant (including discounts). + """ discountedPrice: Money """ Purchase cost of product. - + Requires one of the following permissions: MANAGE_PRODUCTS. """ purchaseCost: MoneyRange """ Range of margin percentage value. - + Requires one of the following permissions: MANAGE_PRODUCTS. """ margin: Margin - """Whether the product is available for purchase.""" + """ + Whether the product is available for purchase. + """ isAvailableForPurchase: Boolean """ @@ -6709,64 +8614,76 @@ type Margin { } input MediaSortingInput { - """Specifies the direction in which to sort products.""" + """ + Specifies the direction in which to sort products. + """ direction: OrderDirection! - """Sort media by the selected field.""" + """ + Sort media by the selected field. + """ field: MediaChoicesSortField! } enum MediaChoicesSortField { - """Sort media by ID.""" + """ + Sort media by ID. + """ ID } -"""Represents a collection of products.""" +""" +Represents a collection of products. +""" type Collection implements Node & ObjectWithMetadata { id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata @@ -6776,7 +8693,7 @@ type Collection implements Node & ObjectWithMetadata { """ Description of the collection. - + Rich text format. For reference see https://editorjs.io/ """ description: JSONString @@ -6789,29 +8706,46 @@ type Collection implements Node & ObjectWithMetadata { """ Description of the collection. - + Rich text format. For reference see https://editorjs.io/ """ - descriptionJson: JSONString @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `description` field instead.") + descriptionJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `description` field instead." + ) - """List of products in this collection.""" + """ + List of products in this collection. + """ products( - """Filtering options for products.""" + """ + Filtering options for products. + """ filter: ProductFilterInput - """Sort products.""" + """ + Sort products. + """ sortBy: ProductOrder - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): ProductCountableConnection backgroundImage( @@ -6822,23 +8756,27 @@ type Collection implements Node & ObjectWithMetadata { """ The format of the image. When not provided, format of the original image will be used. Must be provided together with the size value, otherwise original image will be returned. - + Added in Saleor 3.6. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ format: ThumbnailFormatEnum ): Image - """Returns translated collection fields for the given language code.""" + """ + Returns translated collection fields for the given language code. + """ translation( - """A language code to return the translation for collection.""" + """ + A language code to return the translation for collection. + """ languageCode: LanguageCodeEnum! ): CollectionTranslation """ List of channels in which the collection is available. - + Requires one of the following permissions: MANAGE_PRODUCTS. """ channelListings: [CollectionChannelListing!] @@ -6847,7 +8785,9 @@ type Collection implements Node & ObjectWithMetadata { type CollectionTranslation implements Node { id: ID! - """Translation language.""" + """ + Translation language. + """ language: LanguageDisplay! seoTitle: String seoDescription: String @@ -6855,27 +8795,35 @@ type CollectionTranslation implements Node { """ Translated description of the collection. - + Rich text format. For reference see https://editorjs.io/ """ description: JSONString """ Translated description of the collection. - + Rich text format. For reference see https://editorjs.io/ """ - descriptionJson: JSONString @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `description` field instead.") + descriptionJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `description` field instead." + ) } -"""Represents collection channel listing.""" +""" +Represents collection channel listing. +""" type CollectionChannelListing implements Node { id: ID! - publicationDate: Date @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `publishedAt` field to fetch the publication date.") + publicationDate: Date + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `publishedAt` field to fetch the publication date." + ) """ The collection publication date. - + Added in Saleor 3.3. """ publishedAt: DateTime @@ -6886,7 +8834,9 @@ type CollectionChannelListing implements Node { type ProductTranslation implements Node { id: ID! - """Translation language.""" + """ + Translation language. + """ language: LanguageDisplay! seoTitle: String seoDescription: String @@ -6894,33 +8844,44 @@ type ProductTranslation implements Node { """ Translated description of the product. - + Rich text format. For reference see https://editorjs.io/ """ description: JSONString """ Translated description of the product. - + Rich text format. For reference see https://editorjs.io/ """ - descriptionJson: JSONString @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `description` field instead.") + descriptionJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `description` field instead." + ) } type WarehouseCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [WarehouseCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type WarehouseCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: Warehouse! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } @@ -6934,36 +8895,61 @@ input WarehouseFilterInput { } input WarehouseSortingInput { - """Specifies the direction in which to sort products.""" + """ + Specifies the direction in which to sort products. + """ direction: OrderDirection! - """Sort warehouses by the selected field.""" + """ + Sort warehouses by the selected field. + """ field: WarehouseSortField! } enum WarehouseSortField { - """Sort warehouses by name.""" + """ + Sort warehouses by name. + """ NAME } type TranslatableItemConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [TranslatableItemEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type TranslatableItemEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: TranslatableItem! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } -union TranslatableItem = ProductTranslatableContent | CollectionTranslatableContent | CategoryTranslatableContent | AttributeTranslatableContent | AttributeValueTranslatableContent | ProductVariantTranslatableContent | PageTranslatableContent | ShippingMethodTranslatableContent | SaleTranslatableContent | VoucherTranslatableContent | MenuItemTranslatableContent +union TranslatableItem = + ProductTranslatableContent + | CollectionTranslatableContent + | CategoryTranslatableContent + | AttributeTranslatableContent + | AttributeValueTranslatableContent + | ProductVariantTranslatableContent + | PageTranslatableContent + | ShippingMethodTranslatableContent + | SaleTranslatableContent + | VoucherTranslatableContent + | MenuItemTranslatableContent type ProductTranslatableContent implements Node { id: ID! @@ -6973,28 +8959,42 @@ type ProductTranslatableContent implements Node { """ Description of the product. - + Rich text format. For reference see https://editorjs.io/ """ description: JSONString """ Description of the product. - + Rich text format. For reference see https://editorjs.io/ """ - descriptionJson: JSONString @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `description` field instead.") + descriptionJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `description` field instead." + ) - """Returns translated product fields for the given language code.""" + """ + Returns translated product fields for the given language code. + """ translation( - """A language code to return the translation for product.""" + """ + A language code to return the translation for product. + """ languageCode: LanguageCodeEnum! ): ProductTranslation - """Represents an individual item for sale in the storefront.""" - product: Product @deprecated(reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries.") + """ + Represents an individual item for sale in the storefront. + """ + product: Product + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) - """List of product attribute values that can be translated.""" + """ + List of product attribute values that can be translated. + """ attributeValues: [AttributeValueTranslatableContent!]! } @@ -7004,26 +9004,37 @@ type AttributeValueTranslatableContent implements Node { """ Attribute value. - + Rich text format. For reference see https://editorjs.io/ """ richText: JSONString - """Attribute plain text value.""" + """ + Attribute plain text value. + """ plainText: String - """Returns translated attribute value fields for the given language code.""" + """ + Returns translated attribute value fields for the given language code. + """ translation( - """A language code to return the translation for attribute value.""" + """ + A language code to return the translation for attribute value. + """ languageCode: LanguageCodeEnum! ): AttributeValueTranslation - """Represents a value of an attribute.""" - attributeValue: AttributeValue @deprecated(reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries.") + """ + Represents a value of an attribute. + """ + attributeValue: AttributeValue + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) """ Associated attribute that can be translated. - + Added in Saleor 3.9. """ attribute: AttributeTranslatableContent @@ -7033,14 +9044,23 @@ type AttributeTranslatableContent implements Node { id: ID! name: String! - """Returns translated attribute fields for the given language code.""" + """ + Returns translated attribute fields for the given language code. + """ translation( - """A language code to return the translation for attribute.""" + """ + A language code to return the translation for attribute. + """ languageCode: LanguageCodeEnum! ): AttributeTranslation - """Custom attribute of a product.""" - attribute: Attribute @deprecated(reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries.") + """ + Custom attribute of a product. + """ + attribute: Attribute + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) } type CollectionTranslatableContent implements Node { @@ -7051,26 +9071,38 @@ type CollectionTranslatableContent implements Node { """ Description of the collection. - + Rich text format. For reference see https://editorjs.io/ """ description: JSONString """ Description of the collection. - + Rich text format. For reference see https://editorjs.io/ """ - descriptionJson: JSONString @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `description` field instead.") + descriptionJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `description` field instead." + ) - """Returns translated collection fields for the given language code.""" + """ + Returns translated collection fields for the given language code. + """ translation( - """A language code to return the translation for collection.""" + """ + A language code to return the translation for collection. + """ languageCode: LanguageCodeEnum! ): CollectionTranslation - """Represents a collection of products.""" - collection: Collection @deprecated(reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries.") + """ + Represents a collection of products. + """ + collection: Collection + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) } type CategoryTranslatableContent implements Node { @@ -7081,42 +9113,65 @@ type CategoryTranslatableContent implements Node { """ Description of the category. - + Rich text format. For reference see https://editorjs.io/ """ description: JSONString """ Description of the category. - + Rich text format. For reference see https://editorjs.io/ """ - descriptionJson: JSONString @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `description` field instead.") + descriptionJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `description` field instead." + ) - """Returns translated category fields for the given language code.""" + """ + Returns translated category fields for the given language code. + """ translation( - """A language code to return the translation for category.""" + """ + A language code to return the translation for category. + """ languageCode: LanguageCodeEnum! ): CategoryTranslation - """Represents a single category of products.""" - category: Category @deprecated(reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries.") + """ + Represents a single category of products. + """ + category: Category + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) } type ProductVariantTranslatableContent implements Node { id: ID! name: String! - """Returns translated product variant fields for the given language code.""" + """ + Returns translated product variant fields for the given language code. + """ translation( - """A language code to return the translation for product variant.""" + """ + A language code to return the translation for product variant. + """ languageCode: LanguageCodeEnum! ): ProductVariantTranslation - """Represents a version of a product such as different size or color.""" - productVariant: ProductVariant @deprecated(reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries.") + """ + Represents a version of a product such as different size or color. + """ + productVariant: ProductVariant + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) - """List of product variant attribute values that can be translated.""" + """ + List of product variant attribute values that can be translated. + """ attributeValues: [AttributeValueTranslatableContent!]! } @@ -7128,37 +9183,51 @@ type PageTranslatableContent implements Node { """ Content of the page. - + Rich text format. For reference see https://editorjs.io/ """ content: JSONString """ Content of the page. - + Rich text format. For reference see https://editorjs.io/ """ - contentJson: JSONString @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `content` field instead.") + contentJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `content` field instead." + ) - """Returns translated page fields for the given language code.""" + """ + Returns translated page fields for the given language code. + """ translation( - """A language code to return the translation for page.""" + """ + A language code to return the translation for page. + """ languageCode: LanguageCodeEnum! ): PageTranslation """ A static page that can be manually added by a shop operator through the dashboard. """ - page: Page @deprecated(reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries.") + page: Page + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) - """List of page content attribute values that can be translated.""" + """ + List of page content attribute values that can be translated. + """ attributeValues: [AttributeValueTranslatableContent!]! } type PageTranslation implements Node { id: ID! - """Translation language.""" + """ + Translation language. + """ language: LanguageDisplay! seoTitle: String seoDescription: String @@ -7166,17 +9235,20 @@ type PageTranslation implements Node { """ Translated content of the page. - + Rich text format. For reference see https://editorjs.io/ """ content: JSONString """ Translated description of the page. - + Rich text format. For reference see https://editorjs.io/ """ - contentJson: JSONString @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `content` field instead.") + contentJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `content` field instead." + ) } """ @@ -7185,48 +9257,52 @@ A static page that can be manually added by a shop operator through the dashboar type Page implements Node & ObjectWithMetadata { id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata @@ -7236,15 +9312,18 @@ type Page implements Node & ObjectWithMetadata { """ Content of the page. - + Rich text format. For reference see https://editorjs.io/ """ content: JSONString - publicationDate: Date @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `publishedAt` field to fetch the publication date.") + publicationDate: Date + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `publishedAt` field to fetch the publication date." + ) """ The page publication date. - + Added in Saleor 3.3. """ publishedAt: DateTime @@ -7255,18 +9334,27 @@ type Page implements Node & ObjectWithMetadata { """ Content of the page. - + Rich text format. For reference see https://editorjs.io/ """ - contentJson: JSONString! @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `content` field instead.") + contentJson: JSONString! + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `content` field instead." + ) - """Returns translated page fields for the given language code.""" + """ + Returns translated page fields for the given language code. + """ translation( - """A language code to return the translation for page.""" + """ + A language code to return the translation for page. + """ languageCode: LanguageCodeEnum! ): PageTranslation - """List of attributes assigned to this product.""" + """ + List of attributes assigned to this product. + """ attributes: [SelectedAttribute!]! } @@ -7276,81 +9364,95 @@ Represents a type of page. It defines what attributes are available to pages of type PageType implements Node & ObjectWithMetadata { id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata name: String! slug: String! - """Page attributes of that page type.""" + """ + Page attributes of that page type. + """ attributes: [Attribute!] """ Attributes that can be assigned to the page type. - + Requires one of the following permissions: MANAGE_PAGES. """ availableAttributes( filter: AttributeFilterInput - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): AttributeCountableConnection """ Whether page type has pages assigned. - + Requires one of the following permissions: MANAGE_PAGES. """ hasPages: Boolean @@ -7362,47 +9464,63 @@ type ShippingMethodTranslatableContent implements Node { """ Description of the shipping method. - + Rich text format. For reference see https://editorjs.io/ """ description: JSONString - """Returns translated shipping method fields for the given language code.""" + """ + Returns translated shipping method fields for the given language code. + """ translation( - """A language code to return the translation for shipping method.""" + """ + A language code to return the translation for shipping method. + """ languageCode: LanguageCodeEnum! ): ShippingMethodTranslation """ Shipping method are the methods you'll use to get customer's orders to them. They are directly exposed to the customers. - + Requires one of the following permissions: MANAGE_SHIPPING. """ - shippingMethod: ShippingMethodType @deprecated(reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries.") + shippingMethod: ShippingMethodType + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) } type SaleTranslatableContent implements Node { id: ID! name: String! - """Returns translated sale fields for the given language code.""" + """ + Returns translated sale fields for the given language code. + """ translation( - """A language code to return the translation for sale.""" + """ + A language code to return the translation for sale. + """ languageCode: LanguageCodeEnum! ): SaleTranslation """ Sales allow creating discounts for categories, collections or products and are visible to all the customers. - + Requires one of the following permissions: MANAGE_DISCOUNTS. """ - sale: Sale @deprecated(reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries.") + sale: Sale + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) } type SaleTranslation implements Node { id: ID! - """Translation language.""" + """ + Translation language. + """ language: LanguageDisplay! name: String } @@ -7413,48 +9531,52 @@ Sales allow creating discounts for categories, collections or products and are v type Sale implements Node & ObjectWithMetadata { id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata @@ -7465,97 +9587,139 @@ type Sale implements Node & ObjectWithMetadata { created: DateTime! updatedAt: DateTime! - """List of categories this sale applies to.""" + """ + List of categories this sale applies to. + """ categories( - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): CategoryCountableConnection """ List of collections this sale applies to. - + Requires one of the following permissions: MANAGE_DISCOUNTS. """ collections( - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): CollectionCountableConnection """ List of products this sale applies to. - + Requires one of the following permissions: MANAGE_DISCOUNTS. """ products( - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): ProductCountableConnection """ List of product variants this sale applies to. - + Added in Saleor 3.1. - + Requires one of the following permissions: MANAGE_DISCOUNTS. """ variants( - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): ProductVariantCountableConnection - """Returns translated sale fields for the given language code.""" + """ + Returns translated sale fields for the given language code. + """ translation( - """A language code to return the translation for sale.""" + """ + A language code to return the translation for sale. + """ languageCode: LanguageCodeEnum! ): SaleTranslation """ List of channels available for the sale. - + Requires one of the following permissions: MANAGE_DISCOUNTS. """ channelListings: [SaleChannelListing!] - """Sale value.""" + """ + Sale value. + """ discountValue: Float - """Currency code for sale.""" + """ + Currency code for sale. + """ currency: String } @@ -7565,40 +9729,58 @@ enum SaleType { } type CollectionCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [CollectionCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type CollectionCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: Collection! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } type ProductVariantCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [ProductVariantCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type ProductVariantCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: ProductVariant! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } -"""Represents sale channel listing.""" +""" +Represents sale channel listing. +""" type SaleChannelListing implements Node { id: ID! channel: Channel! @@ -7610,24 +9792,33 @@ type VoucherTranslatableContent implements Node { id: ID! name: String - """Returns translated voucher fields for the given language code.""" + """ + Returns translated voucher fields for the given language code. + """ translation( - """A language code to return the translation for voucher.""" + """ + A language code to return the translation for voucher. + """ languageCode: LanguageCodeEnum! ): VoucherTranslation """ Vouchers allow giving discounts to particular customers on categories, collections or specific products. They can be used during checkout by providing valid voucher codes. - + Requires one of the following permissions: MANAGE_DISCOUNTS. """ - voucher: Voucher @deprecated(reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries.") + voucher: Voucher + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) } type VoucherTranslation implements Node { id: ID! - """Translation language.""" + """ + Translation language. + """ language: LanguageDisplay! name: String } @@ -7638,48 +9829,52 @@ Vouchers allow giving discounts to particular customers on categories, collectio type Voucher implements Node & ObjectWithMetadata { id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata @@ -7694,107 +9889,157 @@ type Voucher implements Node & ObjectWithMetadata { onlyForStaff: Boolean! minCheckoutItemsQuantity: Int - """List of categories this voucher applies to.""" + """ + List of categories this voucher applies to. + """ categories( - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): CategoryCountableConnection """ List of collections this voucher applies to. - + Requires one of the following permissions: MANAGE_DISCOUNTS. """ collections( - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): CollectionCountableConnection """ List of products this voucher applies to. - + Requires one of the following permissions: MANAGE_DISCOUNTS. """ products( - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): ProductCountableConnection """ List of product variants this voucher applies to. - + Added in Saleor 3.1. - + Requires one of the following permissions: MANAGE_DISCOUNTS. """ variants( - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): ProductVariantCountableConnection - """List of countries available for the shipping voucher.""" + """ + List of countries available for the shipping voucher. + """ countries: [CountryDisplay!] - """Returns translated voucher fields for the given language code.""" + """ + Returns translated voucher fields for the given language code. + """ translation( - """A language code to return the translation for voucher.""" + """ + A language code to return the translation for voucher. + """ languageCode: LanguageCodeEnum! ): VoucherTranslation - """Determines a type of discount for voucher - value or percentage""" + """ + Determines a type of discount for voucher - value or percentage + """ discountValueType: DiscountValueTypeEnum! - """Voucher value.""" + """ + Voucher value. + """ discountValue: Float - """Currency code for voucher.""" + """ + Currency code for voucher. + """ currency: String - """Minimum order value to apply voucher.""" + """ + Minimum order value to apply voucher. + """ minSpent: Money - """Determines a type of voucher.""" + """ + Determines a type of voucher. + """ type: VoucherTypeEnum! """ List of availability in channels for the voucher. - + Requires one of the following permissions: MANAGE_DISCOUNTS. """ channelListings: [VoucherChannelListing!] @@ -7811,7 +10056,9 @@ enum VoucherTypeEnum { SPECIFIC_PRODUCT } -"""Represents voucher channel listing.""" +""" +Represents voucher channel listing. +""" type VoucherChannelListing implements Node { id: ID! channel: Channel! @@ -7824,22 +10071,31 @@ type MenuItemTranslatableContent implements Node { id: ID! name: String! - """Returns translated menu item fields for the given language code.""" + """ + Returns translated menu item fields for the given language code. + """ translation( - """A language code to return the translation for menu item.""" + """ + A language code to return the translation for menu item. + """ languageCode: LanguageCodeEnum! ): MenuItemTranslation """ Represents a single item of the related menu. Can store categories, collection or pages. """ - menuItem: MenuItem @deprecated(reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries.") + menuItem: MenuItem + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) } type MenuItemTranslation implements Node { id: ID! - """Translation language.""" + """ + Translation language. + """ language: LanguageDisplay! name: String! } @@ -7850,48 +10106,52 @@ Represents a single item of the related menu. Can store categories, collection o type MenuItem implements Node & ObjectWithMetadata { id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata @@ -7912,12 +10172,18 @@ type MenuItem implements Node & ObjectWithMetadata { level: Int! children: [MenuItem!] - """URL to the menu item.""" + """ + URL to the menu item. + """ url: String - """Returns translated menu item fields for the given language code.""" + """ + Returns translated menu item fields for the given language code. + """ translation( - """A language code to return the translation for menu item.""" + """ + A language code to return the translation for menu item. + """ languageCode: LanguageCodeEnum! ): MenuItemTranslation } @@ -7928,48 +10194,52 @@ Represents a single menu - an object that is used to help navigate through the s type Menu implements Node & ObjectWithMetadata { id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata @@ -8000,59 +10270,69 @@ Added in Saleor 3.9. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type TaxConfiguration implements Node & ObjectWithMetadata { - """The ID of the object.""" + """ + The ID of the object. + """ id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata - """A channel to which the tax configuration applies to.""" + """ + A channel to which the tax configuration applies to. + """ channel: Channel! - """Determines whether taxes are charged in the given channel.""" + """ + Determines whether taxes are charged in the given channel. + """ chargeTaxes: Boolean! """ @@ -8065,10 +10345,14 @@ type TaxConfiguration implements Node & ObjectWithMetadata { """ displayGrossPrices: Boolean! - """Determines whether prices are entered with the tax included.""" + """ + Determines whether prices are entered with the tax included. + """ pricesEnteredWithTax: Boolean! - """List of country-specific exceptions in tax configuration.""" + """ + List of country-specific exceptions in tax configuration. + """ countries: [TaxConfigurationPerCountry!]! } @@ -8085,10 +10369,14 @@ Added in Saleor 3.9. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type TaxConfigurationPerCountry { - """Country in which this configuration applies.""" + """ + Country in which this configuration applies. + """ country: CountryDisplay! - """Determines whether taxes are charged in this country.""" + """ + Determines whether taxes are charged in this country. + """ chargeTaxes: Boolean! """ @@ -8103,19 +10391,27 @@ type TaxConfigurationPerCountry { } type TaxConfigurationCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [TaxConfigurationCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type TaxConfigurationCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: TaxConfiguration! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } @@ -8125,32 +10421,46 @@ input TaxConfigurationFilterInput { } type TaxClassCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [TaxClassCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type TaxClassCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: TaxClass! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } input TaxClassSortingInput { - """Specifies the direction in which to sort products.""" + """ + Specifies the direction in which to sort products. + """ direction: OrderDirection! - """Sort tax classes by the selected field.""" + """ + Sort tax classes by the selected field. + """ field: TaxClassSortField! } enum TaxClassSortField { - """Sort tax classes by name.""" + """ + Sort tax classes by name. + """ NAME } @@ -8168,27 +10478,39 @@ Added in Saleor 3.9. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type TaxCountryConfiguration { - """A country for which tax class rates are grouped.""" + """ + A country for which tax class rates are grouped. + """ country: CountryDisplay! - """List of tax class rates.""" + """ + List of tax class rates. + """ taxClassCountryRates: [TaxClassCountryRate!]! } type StockCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [StockCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type StockCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: Stock! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } @@ -8201,242 +10523,319 @@ input StockFilterInput { Represents a shop resource containing general shop data and configuration. """ type Shop { - """List of available payment gateways.""" + """ + List of available payment gateways. + """ availablePaymentGateways( """ - A currency for which gateways will be returned. - + A currency for which gateways will be returned. + DEPRECATED: this field will be removed in Saleor 4.0. Use `channel` argument instead. """ currency: String - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): [PaymentGateway!]! - """List of available external authentications.""" + """ + List of available external authentications. + """ availableExternalAuthentications: [ExternalAuthentication!]! - """Shipping methods that are available for the shop.""" + """ + Shipping methods that are available for the shop. + """ availableShippingMethods( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String! - """Address for which available shipping methods should be returned.""" + """ + Address for which available shipping methods should be returned. + """ address: AddressInput ): [ShippingMethod!] """ List of all currencies supported by shop's channels. - + Added in Saleor 3.1. - + Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP. """ channelCurrencies: [String!]! - """List of countries available in the shop.""" + """ + List of countries available in the shop. + """ countries( """ - A language code to return the translation for. - + A language code to return the translation for. + DEPRECATED: this field will be removed in Saleor 4.0. """ languageCode: LanguageCodeEnum - """Filtering options for countries""" + """ + Filtering options for countries + """ filter: CountryFilterInput ): [CountryDisplay!]! - """Shop's default country.""" + """ + Shop's default country. + """ defaultCountry: CountryDisplay """ Default shop's email sender's name. - + Requires one of the following permissions: MANAGE_SETTINGS. """ defaultMailSenderName: String """ Default shop's email sender's address. - + Requires one of the following permissions: MANAGE_SETTINGS. """ defaultMailSenderAddress: String - """Shop's description.""" + """ + Shop's description. + """ description: String - """Shop's domain data.""" + """ + Shop's domain data. + """ domain: Domain! - """List of the shops's supported languages.""" + """ + List of the shops's supported languages. + """ languages: [LanguageDisplay!]! - """Shop's name.""" + """ + Shop's name. + """ name: String! - """List of available permissions.""" + """ + List of available permissions. + """ permissions: [Permission!]! - """List of possible phone prefixes.""" + """ + List of possible phone prefixes. + """ phonePrefixes: [String!]! - """Header text.""" + """ + Header text. + """ headerText: String """ Automatically approve all new fulfillments. - + Added in Saleor 3.1. """ fulfillmentAutoApprove: Boolean! """ Allow to approve fulfillments which are unpaid. - + Added in Saleor 3.1. """ fulfillmentAllowUnpaid: Boolean! - """Enable inventory tracking.""" + """ + Enable inventory tracking. + """ trackInventoryByDefault: Boolean - """Default weight unit.""" + """ + Default weight unit. + """ defaultWeightUnit: WeightUnitsEnum - """Returns translated shop fields for the given language code.""" + """ + Returns translated shop fields for the given language code. + """ translation( - """A language code to return the translation for shop.""" + """ + A language code to return the translation for shop. + """ languageCode: LanguageCodeEnum! ): ShopTranslation """ Enable automatic fulfillment for all digital products. - + Requires one of the following permissions: MANAGE_SETTINGS. """ automaticFulfillmentDigitalProducts: Boolean """ Default number of minutes stock will be reserved for anonymous checkout or null when stock reservation is disabled. - + Added in Saleor 3.1. - + Requires one of the following permissions: MANAGE_SETTINGS. """ reserveStockDurationAnonymousUser: Int """ Default number of minutes stock will be reserved for authenticated checkout or null when stock reservation is disabled. - + Added in Saleor 3.1. - + Requires one of the following permissions: MANAGE_SETTINGS. """ reserveStockDurationAuthenticatedUser: Int """ Default number of maximum line quantity in single checkout (per single checkout line). - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. - + Requires one of the following permissions: MANAGE_SETTINGS. """ limitQuantityPerCheckout: Int """ Default number of max downloads per digital content URL. - + Requires one of the following permissions: MANAGE_SETTINGS. """ defaultDigitalMaxDownloads: Int """ Default number of days which digital content URL will be valid. - + Requires one of the following permissions: MANAGE_SETTINGS. """ defaultDigitalUrlValidDays: Int - """Company address.""" + """ + Company address. + """ companyAddress: Address - """URL of a view where customers can set their password.""" + """ + URL of a view where customers can set their password. + """ customerSetPasswordUrl: String """ List of staff notification recipients. - + Requires one of the following permissions: MANAGE_SETTINGS. """ staffNotificationRecipients: [StaffNotificationRecipient!] """ Resource limitations and current usage if any set for a shop - + Requires one of the following permissions: AUTHENTICATED_STAFF_USER. """ limits: LimitInfo! """ Saleor API version. - + Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP. """ version: String! """ Minor Saleor API version. - + Added in Saleor 3.5. """ schemaVersion: String! - """Include taxes in prices.""" - includeTaxesInPrices: Boolean! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `Channel.taxConfiguration.pricesEnteredWithTax` to determine whether prices are entered with tax.") + """ + Include taxes in prices. + """ + includeTaxesInPrices: Boolean! + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use `Channel.taxConfiguration.pricesEnteredWithTax` to determine whether prices are entered with tax." + ) - """Display prices with tax in store.""" - displayGrossPrices: Boolean! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `Channel.taxConfiguration` to determine whether to display gross or net prices.") + """ + Display prices with tax in store. + """ + displayGrossPrices: Boolean! + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use `Channel.taxConfiguration` to determine whether to display gross or net prices." + ) - """Charge taxes on shipping.""" - chargeTaxesOnShipping: Boolean! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `ShippingMethodType.taxClass` to determine whether taxes are calculated for shipping methods; if a tax class is set, the taxes will be calculated, otherwise no tax rate will be applied.") + """ + Charge taxes on shipping. + """ + chargeTaxesOnShipping: Boolean! + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use `ShippingMethodType.taxClass` to determine whether taxes are calculated for shipping methods; if a tax class is set, the taxes will be calculated, otherwise no tax rate will be applied." + ) } """ Available payment gateway backend with configuration necessary to setup client. """ type PaymentGateway { - """Payment gateway name.""" + """ + Payment gateway name. + """ name: String! - """Payment gateway ID.""" + """ + Payment gateway ID. + """ id: ID! - """Payment gateway client configuration.""" + """ + Payment gateway client configuration. + """ config: [GatewayConfigLine!]! - """Payment gateway supported currencies.""" + """ + Payment gateway supported currencies. + """ currencies: [String!]! } -"""Payment gateway client configuration key and value pair.""" +""" +Payment gateway client configuration key and value pair. +""" type GatewayConfigLine { - """Gateway config key.""" + """ + Gateway config key. + """ field: String! - """Gateway config value for key.""" + """ + Gateway config value for key. + """ value: String } type ExternalAuthentication { - """ID of external authentication plugin.""" + """ + ID of external authentication plugin. + """ id: String! - """Name of external authentication plugin.""" + """ + Name of external authentication plugin. + """ name: String } @@ -8447,22 +10846,32 @@ input CountryFilterInput { attachedToShippingZones: Boolean } -"""Represents shop's domain.""" +""" +Represents shop's domain. +""" type Domain { - """The host name of the domain.""" + """ + The host name of the domain. + """ host: String! - """Inform if SSL is enabled.""" + """ + Inform if SSL is enabled. + """ sslEnabled: Boolean! - """Shop's absolute URL.""" + """ + Shop's absolute URL. + """ url: String! } type ShopTranslation implements Node { id: ID! - """Translation language.""" + """ + Translation language. + """ language: LanguageDisplay! headerText: String! description: String! @@ -8474,62 +10883,74 @@ Represents a recipient of email notifications send by Saleor, such as notificati type StaffNotificationRecipient implements Node { id: ID! - """Returns a user subscribed to email notifications.""" + """ + Returns a user subscribed to email notifications. + """ user: User - """Returns email address of a user subscribed to email notifications.""" + """ + Returns email address of a user subscribed to email notifications. + """ email: String - """Determines if a notification active.""" + """ + Determines if a notification active. + """ active: Boolean } -"""Represents user data.""" +""" +Represents user data. +""" type User implements Node & ObjectWithMetadata { id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata @@ -8539,64 +10960,100 @@ type User implements Node & ObjectWithMetadata { isStaff: Boolean! isActive: Boolean! - """List of all user's addresses.""" + """ + List of all user's addresses. + """ addresses: [Address!]! - """Returns the last open checkout of this user.""" - checkout: Checkout @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `checkoutTokens` field to fetch the user checkouts.") + """ + Returns the last open checkout of this user. + """ + checkout: Checkout + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `checkoutTokens` field to fetch the user checkouts." + ) - """Returns the checkout UUID's assigned to this user.""" + """ + Returns the checkout UUID's assigned to this user. + """ checkoutTokens( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String - ): [UUID!] @deprecated(reason: "This field will be removed in Saleor 4.0. Use `checkoutIds` instead.") + ): [UUID!] + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `checkoutIds` instead.") - """Returns the checkout ID's assigned to this user.""" + """ + Returns the checkout ID's assigned to this user. + """ checkoutIds( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): [ID!] """ Returns checkouts assigned to this user. - + Added in Saleor 3.8. """ checkouts( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): CheckoutCountableConnection - """List of the user gift cards.""" + """ + List of the user gift cards. + """ giftCards( - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): GiftCardCountableConnection """ A note about the customer. - + Requires one of the following permissions: MANAGE_USERS, MANAGE_STAFF. """ note: String @@ -8605,26 +11062,40 @@ type User implements Node & ObjectWithMetadata { List of user's orders. Requires one of the following permissions: MANAGE_STAFF, OWNER. """ orders( - """Return the elements in the list that come before the specified cursor.""" + """ + Return the elements in the list that come before the specified cursor. + """ before: String - """Return the elements in the list that come after the specified cursor.""" + """ + Return the elements in the list that come after the specified cursor. + """ after: String - """Return the first n elements from the list.""" + """ + Return the first n elements from the list. + """ first: Int - """Return the last n elements from the list.""" + """ + Return the last n elements from the list. + """ last: Int ): OrderCountableConnection - """List of user's permissions.""" + """ + List of user's permissions. + """ userPermissions: [UserPermission!] - """List of user's permission groups.""" + """ + List of user's permission groups. + """ permissionGroups: [Group!] - """List of user's permission groups which user can manage.""" + """ + List of user's permission groups which user can manage. + """ editableGroups: [Group!] avatar( """ @@ -8634,9 +11105,9 @@ type User implements Node & ObjectWithMetadata { """ The format of the image. When not provided, format of the original image will be used. Must be provided together with the size value, otherwise original image will be returned. - + Added in Saleor 3.6. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ format: ThumbnailFormatEnum @@ -8644,25 +11115,31 @@ type User implements Node & ObjectWithMetadata { """ List of events associated with the user. - + Requires one of the following permissions: MANAGE_USERS, MANAGE_STAFF. """ events: [CustomerEvent!] - """List of stored payment sources.""" + """ + List of stored payment sources. + """ storedPaymentSources( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): [PaymentSource!] - """User language code.""" + """ + User language code. + """ languageCode: LanguageCodeEnum! defaultShippingAddress: Address defaultBillingAddress: Address """ - External ID of this user. - + External ID of this user. + Added in Saleor 3.10. """ externalReference: String @@ -8671,52 +11148,58 @@ type User implements Node & ObjectWithMetadata { updatedAt: DateTime! } -"""Checkout object.""" +""" +Checkout object. +""" type Checkout implements Node & ObjectWithMetadata { id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata @@ -8732,39 +11215,54 @@ type Checkout implements Node & ObjectWithMetadata { translatedDiscountName: String voucherCode: String - """Shipping methods that can be used with this checkout.""" - availableShippingMethods: [ShippingMethod!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `shippingMethods` instead.") + """ + Shipping methods that can be used with this checkout. + """ + availableShippingMethods: [ShippingMethod!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `shippingMethods` instead.") - """Shipping methods that can be used with this checkout.""" + """ + Shipping methods that can be used with this checkout. + """ shippingMethods: [ShippingMethod!]! """ Collection points that can be used for this order. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ availableCollectionPoints: [Warehouse!]! - """List of available payment gateways.""" + """ + List of available payment gateways. + """ availablePaymentGateways: [PaymentGateway!]! - """Email of a customer.""" + """ + Email of a customer. + """ email: String - """List of gift cards associated with this checkout.""" + """ + List of gift cards associated with this checkout. + """ giftCards: [GiftCard!]! - """Returns True, if checkout requires shipping.""" + """ + Returns True, if checkout requires shipping. + """ isShippingRequired: Boolean! - """The number of items purchased.""" + """ + The number of items purchased. + """ quantity: Int! """ Date when oldest stock reservation for this checkout expires or null if no stock is reserved. - + Added in Saleor 3.1. """ stockReservationExpires: DateTime @@ -8774,34 +11272,43 @@ type Checkout implements Node & ObjectWithMetadata { """ lines: [CheckoutLine!]! - """The price of the shipping, with all the taxes included.""" + """ + The price of the shipping, with all the taxes included. + """ shippingPrice: TaxedMoney! - """The shipping method related with checkout.""" - shippingMethod: ShippingMethod @deprecated(reason: "This field will be removed in Saleor 4.0. Use `deliveryMethod` instead.") + """ + The shipping method related with checkout. + """ + shippingMethod: ShippingMethod + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `deliveryMethod` instead.") """ The delivery method selected for this checkout. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ deliveryMethod: DeliveryMethod - """The price of the checkout before shipping, with taxes included.""" + """ + The price of the checkout before shipping, with taxes included. + """ subtotalPrice: TaxedMoney! """ Returns True if checkout has to be exempt from taxes. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ taxExemption: Boolean! - """The checkout's token.""" + """ + The checkout's token. + """ token: UUID! """ @@ -8809,23 +11316,25 @@ type Checkout implements Node & ObjectWithMetadata { """ totalPrice: TaxedMoney! - """Checkout language code.""" + """ + Checkout language code. + """ languageCode: LanguageCodeEnum! """ List of transactions for the checkout. Requires one of the following permissions: MANAGE_CHECKOUTS, HANDLE_PAYMENTS. - + Added in Saleor 3.4. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ transactions: [TransactionItem!] """ Determines whether checkout prices should include taxes when displayed in a storefront. - + Added in Saleor 3.9. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ displayGrossPrices: Boolean! @@ -8837,56 +11346,64 @@ A gift card is a prepaid electronic payment card accepted in stores. They can be type GiftCard implements Node & ObjectWithMetadata { id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata - """Code in format which allows displaying in a user interface.""" + """ + Code in format which allows displaying in a user interface. + """ displayCode: String! - """Last 4 characters of gift card code.""" + """ + Last 4 characters of gift card code. + """ last4CodeChars: String! """ @@ -8897,38 +11414,38 @@ type GiftCard implements Node & ObjectWithMetadata { """ The user who bought or issued a gift card. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ createdBy: User """ The customer who used a gift card. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ usedBy: User """ Email address of the user who bought or issued gift card. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. - + Requires one of the following permissions: MANAGE_USERS, OWNER. """ createdByEmail: String """ Email address of the customer who used a gift card. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ usedByEmail: String @@ -8937,54 +11454,56 @@ type GiftCard implements Node & ObjectWithMetadata { """ App which created the gift card. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. - + Requires one of the following permissions: MANAGE_APPS, OWNER. """ app: App """ Related gift card product. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ product: Product """ List of events associated with the gift card. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. - + Requires one of the following permissions: MANAGE_GIFT_CARD. """ events( - """Filtering options for gift card events.""" + """ + Filtering options for gift card events. + """ filter: GiftCardEventFilterInput ): [GiftCardEvent!]! """ The gift card tag. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. - + Requires one of the following permissions: MANAGE_GIFT_CARD. """ tags: [GiftCardTag!]! """ Slug of the channel where the gift card was bought. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ boughtInChannel: String @@ -8992,13 +11511,21 @@ type GiftCard implements Node & ObjectWithMetadata { initialBalance: Money! currentBalance: Money! - """The customer who bought a gift card.""" - user: User @deprecated(reason: "This field will be removed in Saleor 4.0. Use `createdBy` field instead.") + """ + The customer who bought a gift card. + """ + user: User + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `createdBy` field instead.") - """End date of gift card.""" - endDate: DateTime @deprecated(reason: "This field will be removed in Saleor 4.0. Use `expiryDate` field instead.") + """ + End date of gift card. + """ + endDate: DateTime + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `expiryDate` field instead.") - """Start date of gift card.""" + """ + Start date of gift card. + """ startDate: DateTime @deprecated(reason: "This field will be removed in Saleor 4.0.") } @@ -9012,10 +11539,14 @@ Note: this API is currently in Feature Preview and can be subject to changes at type GiftCardEvent implements Node { id: ID! - """Date when event happened at in ISO 8601 format.""" + """ + Date when event happened at in ISO 8601 format. + """ date: DateTime - """Gift card event type.""" + """ + Gift card event type. + """ type: GiftCardEventsEnum """ @@ -9028,35 +11559,55 @@ type GiftCardEvent implements Node { """ app: App - """Content of the event.""" + """ + Content of the event. + """ message: String - """Email of the customer.""" + """ + Email of the customer. + """ email: String - """The order ID where gift card was used or bought.""" + """ + The order ID where gift card was used or bought. + """ orderId: ID - """User-friendly number of an order where gift card was used or bought.""" + """ + User-friendly number of an order where gift card was used or bought. + """ orderNumber: String - """The list of gift card tags.""" + """ + The list of gift card tags. + """ tags: [String!] - """The list of old gift card tags.""" + """ + The list of old gift card tags. + """ oldTags: [String!] - """The gift card balance.""" + """ + The gift card balance. + """ balance: GiftCardEventBalance - """The gift card expiry date.""" + """ + The gift card expiry date. + """ expiryDate: Date - """Previous gift card expiry date.""" + """ + Previous gift card expiry date. + """ oldExpiryDate: Date } -"""An enumeration.""" +""" +An enumeration. +""" enum GiftCardEventsEnum { ISSUED BOUGHT @@ -9073,16 +11624,24 @@ enum GiftCardEventsEnum { } type GiftCardEventBalance { - """Initial balance of the gift card.""" + """ + Initial balance of the gift card. + """ initialBalance: Money - """Current balance of the gift card.""" + """ + Current balance of the gift card. + """ currentBalance: Money! - """Previous initial balance of the gift card.""" + """ + Previous initial balance of the gift card. + """ oldInitialBalance: Money - """Previous current balance of the gift card.""" + """ + Previous current balance of the gift card. + """ oldCurrentBalance: Money } @@ -9103,71 +11662,87 @@ type GiftCardTag implements Node { name: String! } -"""Represents an item in the checkout.""" +""" +Represents an item in the checkout. +""" type CheckoutLine implements Node & ObjectWithMetadata { id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata variant: ProductVariant! quantity: Int! - """The unit price of the checkout line, with taxes and discounts.""" + """ + The unit price of the checkout line, with taxes and discounts. + """ unitPrice: TaxedMoney! - """The unit price of the checkout line, without discounts.""" + """ + The unit price of the checkout line, without discounts. + """ undiscountedUnitPrice: Money! - """The sum of the checkout line price, taxes and discounts.""" + """ + The sum of the checkout line price, taxes and discounts. + """ totalPrice: TaxedMoney! - """The sum of the checkout line price, without discounts.""" + """ + The sum of the checkout line price, without discounts. + """ undiscountedTotalPrice: Money! - """Indicates whether the item need to be delivered.""" + """ + Indicates whether the item need to be delivered. + """ requiresShipping: Boolean! } @@ -9188,51 +11763,57 @@ Added in Saleor 3.4. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type TransactionItem implements Node & ObjectWithMetadata { - """The ID of the object.""" + """ + The ID of the object. + """ id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata @@ -9244,35 +11825,51 @@ type TransactionItem implements Node & ObjectWithMetadata { """ actions: [TransactionActionEnum!]! - """Total amount authorized for this payment.""" + """ + Total amount authorized for this payment. + """ authorizedAmount: Money! - """Total amount refunded for this payment.""" + """ + Total amount refunded for this payment. + """ refundedAmount: Money! - """Total amount voided for this payment.""" + """ + Total amount voided for this payment. + """ voidedAmount: Money! - """Total amount charged for this payment.""" + """ + Total amount charged for this payment. + """ chargedAmount: Money! - """Status of transaction.""" + """ + Status of transaction. + """ status: String! - """Type of transaction.""" + """ + Type of transaction. + """ type: String! - """Reference of transaction.""" + """ + Reference of transaction. + """ reference: String! """ The related order. - + Added in Saleor 3.6. """ order: Order - """List of all transaction's events.""" + """ + List of all transaction's events. + """ events: [TransactionEvent!]! } @@ -9290,52 +11887,58 @@ enum TransactionActionEnum { VOID } -"""Represents an order in the shop.""" +""" +Represents an order in the shop. +""" type Order implements Node & ObjectWithMetadata { id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata @@ -9362,10 +11965,14 @@ type Order implements Node & ObjectWithMetadata { collectionPointName: String channel: Channel! - """List of shipments for the order.""" + """ + List of shipments for the order. + """ fulfillments: [Fulfillment!]! - """List of order lines.""" + """ + List of order lines. + """ lines: [OrderLine!]! """ @@ -9373,17 +11980,22 @@ type Order implements Node & ObjectWithMetadata { """ actions: [OrderAction!]! - """Shipping methods that can be used with this order.""" - availableShippingMethods: [ShippingMethod!] @deprecated(reason: "Use `shippingMethods`, this field will be removed in 4.0") + """ + Shipping methods that can be used with this order. + """ + availableShippingMethods: [ShippingMethod!] + @deprecated(reason: "Use `shippingMethods`, this field will be removed in 4.0") - """Shipping methods related to this order.""" + """ + Shipping methods related to this order. + """ shippingMethods: [ShippingMethod!]! """ Collection points that can be used for this order. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ availableCollectionPoints: [Warehouse!]! @@ -9393,128 +12005,159 @@ type Order implements Node & ObjectWithMetadata { """ invoices: [Invoice!]! - """User-friendly number of an order.""" + """ + User-friendly number of an order. + """ number: String! - """The ID of the order that was the base for this order.""" + """ + The ID of the order that was the base for this order. + """ original: ID - """The order origin.""" + """ + The order origin. + """ origin: OrderOriginEnum! - """Informs if an order is fully paid.""" + """ + Informs if an order is fully paid. + """ isPaid: Boolean! - """Internal payment status.""" + """ + Internal payment status. + """ paymentStatus: PaymentChargeStatusEnum! - """User-friendly payment status.""" + """ + User-friendly payment status. + """ paymentStatusDisplay: String! """ The authorize status of the order. - + Added in Saleor 3.4. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ authorizeStatus: OrderAuthorizeStatusEnum! """ The charge status of the order. - + Added in Saleor 3.4. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ chargeStatus: OrderChargeStatusEnum! """ Returns True if order has to be exempt from taxes. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ taxExemption: Boolean! """ List of transactions for the order. Requires one of the following permissions: MANAGE_ORDERS, HANDLE_PAYMENTS. - + Added in Saleor 3.4. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ transactions: [TransactionItem!]! - """List of payments for the order.""" + """ + List of payments for the order. + """ payments: [Payment!]! - """Total amount of the order.""" + """ + Total amount of the order. + """ total: TaxedMoney! - """Undiscounted total amount of the order.""" + """ + Undiscounted total amount of the order. + """ undiscountedTotal: TaxedMoney! - """Shipping method for this order.""" - shippingMethod: ShippingMethod @deprecated(reason: "This field will be removed in Saleor 4.0. Use `deliveryMethod` instead.") + """ + Shipping method for this order. + """ + shippingMethod: ShippingMethod + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `deliveryMethod` instead.") - """Total price of shipping.""" + """ + Total price of shipping. + """ shippingPrice: TaxedMoney! - """The shipping tax rate value.""" + """ + The shipping tax rate value. + """ shippingTaxRate: Float! """ Denormalized tax class assigned to the shipping method. - + Added in Saleor 3.9. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. - + Requires one of the following permissions: AUTHENTICATED_STAFF_USER. """ shippingTaxClass: TaxClass """ Denormalized name of the tax class assigned to the shipping method. - + Added in Saleor 3.9. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ shippingTaxClassName: String """ Denormalized public metadata of the shipping method's tax class. - + Added in Saleor 3.9. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ shippingTaxClassMetadata: [MetadataItem!]! """ Denormalized private metadata of the shipping method's tax class. Requires staff permissions to access. - + Added in Saleor 3.9. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ shippingTaxClassPrivateMetadata: [MetadataItem!]! token: String! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `id` instead.") voucher: Voucher - """List of user gift cards.""" + """ + List of user gift cards. + """ giftCards: [GiftCard!]! customerNote: String! weight: Weight! redirectUrl: String - """The sum of line prices not including shipping.""" + """ + The sum of line prices not including shipping. + """ subtotal: TaxedMoney! - """User-friendly order status.""" + """ + User-friendly order status. + """ statusDisplay: String! """ @@ -9522,20 +12165,26 @@ type Order implements Node & ObjectWithMetadata { """ canFinalize: Boolean! - """Amount authorized for the order.""" + """ + Amount authorized for the order. + """ totalAuthorized: Money! - """Amount captured by payment.""" + """ + Amount captured by payment. + """ totalCaptured: Money! """ List of events associated with the order. - + Requires one of the following permissions: MANAGE_ORDERS. """ events: [OrderEvent!]! - """The difference between the paid and the order total amount.""" + """ + The difference between the paid and the order total amount. + """ totalBalance: Money! """ @@ -9543,55 +12192,83 @@ type Order implements Node & ObjectWithMetadata { """ userEmail: String - """Returns True, if order requires shipping.""" + """ + Returns True, if order requires shipping. + """ isShippingRequired: Boolean! """ The delivery method selected for this order. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ deliveryMethod: DeliveryMethod - languageCode: String! @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `languageCodeEnum` field to fetch the language code. ") + languageCode: String! + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `languageCodeEnum` field to fetch the language code. " + ) - """Order language code.""" + """ + Order language code. + """ languageCodeEnum: LanguageCodeEnum! - """Returns applied discount.""" - discount: Money @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `discounts` field instead.") + """ + Returns applied discount. + """ + discount: Money + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `discounts` field instead." + ) - """Discount name.""" - discountName: String @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `discounts` field instead.") + """ + Discount name. + """ + discountName: String + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `discounts` field instead." + ) - """Translated discount name.""" - translatedDiscountName: String @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `discounts` field instead. ") + """ + Translated discount name. + """ + translatedDiscountName: String + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `discounts` field instead. " + ) - """List of all discounts assigned to the order.""" + """ + List of all discounts assigned to the order. + """ discounts: [OrderDiscount!]! - """List of errors that occurred during order validation.""" + """ + List of errors that occurred during order validation. + """ errors: [OrderError!]! """ Determines whether checkout prices should include taxes when displayed in a storefront. - + Added in Saleor 3.9. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ displayGrossPrices: Boolean! """ - External ID of this order. - + External ID of this order. + Added in Saleor 3.10. """ externalReference: String } -"""An enumeration.""" +""" +An enumeration. +""" enum OrderStatus { DRAFT UNCONFIRMED @@ -9603,52 +12280,58 @@ enum OrderStatus { CANCELED } -"""Represents order fulfillment.""" +""" +Represents order fulfillment. +""" type Fulfillment implements Node & ObjectWithMetadata { id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata @@ -9657,17 +12340,25 @@ type Fulfillment implements Node & ObjectWithMetadata { trackingNumber: String! created: DateTime! - """List of lines for the fulfillment.""" + """ + List of lines for the fulfillment. + """ lines: [FulfillmentLine!] - """User-friendly fulfillment status.""" + """ + User-friendly fulfillment status. + """ statusDisplay: String - """Warehouse from fulfillment was fulfilled.""" + """ + Warehouse from fulfillment was fulfilled. + """ warehouse: Warehouse } -"""An enumeration.""" +""" +An enumeration. +""" enum FulfillmentStatus { FULFILLED REFUNDED @@ -9678,59 +12369,67 @@ enum FulfillmentStatus { WAITING_FOR_APPROVAL } -"""Represents line of the fulfillment.""" +""" +Represents line of the fulfillment. +""" type FulfillmentLine implements Node { id: ID! quantity: Int! orderLine: OrderLine } -"""Represents order line of particular order.""" +""" +Represents order line of particular order. +""" type OrderLine implements Node & ObjectWithMetadata { id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata @@ -9752,15 +12451,17 @@ type OrderLine implements Node & ObjectWithMetadata { """ The format of the image. When not provided, format of the original image will be used. Must be provided together with the size value, otherwise original image will be returned. - + Added in Saleor 3.6. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ format: ThumbnailFormatEnum ): Image - """Price of the single item in the order line.""" + """ + Price of the single item in the order line. + """ unitPrice: TaxedMoney! """ @@ -9768,13 +12469,19 @@ type OrderLine implements Node & ObjectWithMetadata { """ undiscountedUnitPrice: TaxedMoney! - """The discount applied to the single order line.""" + """ + The discount applied to the single order line. + """ unitDiscount: Money! - """Value of the discount. Can store fixed value or percent value""" + """ + Value of the discount. Can store fixed value or percent value + """ unitDiscountValue: PositiveDecimal! - """Price of the order line.""" + """ + Price of the order line. + """ totalPrice: TaxedMoney! """ @@ -9782,63 +12489,69 @@ type OrderLine implements Node & ObjectWithMetadata { """ variant: ProductVariant - """Product name in the customer's language""" + """ + Product name in the customer's language + """ translatedProductName: String! - """Variant name in the customer's language""" + """ + Variant name in the customer's language + """ translatedVariantName: String! """ List of allocations across warehouses. - + Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. """ allocations: [Allocation!] """ A quantity of items remaining to be fulfilled. - + Added in Saleor 3.1. """ quantityToFulfill: Int! - """Type of the discount: fixed or percent""" + """ + Type of the discount: fixed or percent + """ unitDiscountType: DiscountValueTypeEnum """ Denormalized tax class of the product in this order line. - + Added in Saleor 3.9. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. - + Requires one of the following permissions: AUTHENTICATED_STAFF_USER. """ taxClass: TaxClass """ Denormalized name of the tax class. - + Added in Saleor 3.9. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ taxClassName: String """ Denormalized public metadata of the tax class. - + Added in Saleor 3.9. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ taxClassMetadata: [MetadataItem!]! """ Denormalized private metadata of the tax class. Requires staff permissions to access. - + Added in Saleor 3.9. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ taxClassPrivateMetadata: [MetadataItem!]! @@ -9851,124 +12564,156 @@ Should be used in places where value must be positive. """ scalar PositiveDecimal -"""Represents allocation.""" +""" +Represents allocation. +""" type Allocation implements Node { id: ID! """ Quantity allocated for orders. - + Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. """ quantity: Int! """ The warehouse were items were allocated. - + Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. """ warehouse: Warehouse! } enum OrderAction { - """Represents the capture action.""" + """ + Represents the capture action. + """ CAPTURE - """Represents a mark-as-paid action.""" + """ + Represents a mark-as-paid action. + """ MARK_AS_PAID - """Represents a refund action.""" + """ + Represents a refund action. + """ REFUND - """Represents a void action.""" + """ + Represents a void action. + """ VOID } -"""Represents an Invoice.""" +""" +Represents an Invoice. +""" type Invoice implements ObjectWithMetadata & Job & Node { - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata - """Job status.""" + """ + Job status. + """ status: JobStatusEnum! createdAt: DateTime! updatedAt: DateTime! message: String - """The ID of the object.""" + """ + The ID of the object. + """ id: ID! number: String externalUrl: String - """URL to download an invoice.""" + """ + URL to download an invoice. + """ url: String """ Order related to the invoice. - + Added in Saleor 3.10. """ order: Order } interface Job { - """Job status.""" + """ + Job status. + """ status: JobStatusEnum! - """Created date time of job in ISO 8601 format.""" + """ + Created date time of job in ISO 8601 format. + """ createdAt: DateTime! - """Date time of job last update in ISO 8601 format.""" + """ + Date time of job last update in ISO 8601 format. + """ updatedAt: DateTime! - """Job message.""" + """ + Job message. + """ message: String } -"""An enumeration.""" +""" +An enumeration. +""" enum JobStatusEnum { PENDING SUCCESS @@ -9976,14 +12721,18 @@ enum JobStatusEnum { DELETED } -"""An enumeration.""" +""" +An enumeration. +""" enum OrderOriginEnum { CHECKOUT DRAFT REISSUE } -"""An enumeration.""" +""" +An enumeration. +""" enum PaymentChargeStatusEnum { NOT_CHARGED PENDING @@ -10036,52 +12785,58 @@ enum OrderChargeStatusEnum { OVERCHARGED } -"""Represents a payment of a given type.""" +""" +Represents a payment of a given type. +""" type Payment implements Node & ObjectWithMetadata { id: ID! - """List of private metadata items. Requires staff permissions to access.""" + """ + List of private metadata items. Requires staff permissions to access. + """ privateMetadata: [MetadataItem!]! """ A single key from private metadata. Requires staff permissions to access. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafield(key: String!): String """ Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ privateMetafields(keys: [String!]): Metadata - """List of public metadata items. Can be accessed without permissions.""" + """ + List of public metadata items. Can be accessed without permissions. + """ metadata: [MetadataItem!]! """ A single key from public metadata. - + Tip: Use GraphQL aliases to fetch multiple keys. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafield(key: String!): String """ Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. - + Added in Saleor 3.3. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ metafields(keys: [String!]): Metadata @@ -10096,53 +12851,63 @@ type Payment implements Node & ObjectWithMetadata { """ IP address of the user who created the payment. - + Requires one of the following permissions: MANAGE_ORDERS. """ customerIpAddress: String - """Internal payment status.""" + """ + Internal payment status. + """ chargeStatus: PaymentChargeStatusEnum! """ List of actions that can be performed in the current state of a payment. - + Requires one of the following permissions: MANAGE_ORDERS. """ actions: [OrderAction!]! - """Total amount of the payment.""" + """ + Total amount of the payment. + """ total: Money - """Total amount captured for this payment.""" + """ + Total amount captured for this payment. + """ capturedAmount: Money """ List of all transactions within this payment. - + Requires one of the following permissions: MANAGE_ORDERS. """ transactions: [Transaction!] """ Maximum amount of money that can be captured. - + Requires one of the following permissions: MANAGE_ORDERS. """ availableCaptureAmount: Money """ Maximum amount of money that can be refunded. - + Requires one of the following permissions: MANAGE_ORDERS. """ availableRefundAmount: Money - """The details of the card used for this payment.""" + """ + The details of the card used for this payment. + """ creditCard: CreditCard } -"""An object representing a single payment.""" +""" +An object representing a single payment. +""" type Transaction implements Node { id: ID! created: DateTime! @@ -10153,11 +12918,15 @@ type Transaction implements Node { error: String gatewayResponse: JSONString! - """Total amount of the transaction.""" + """ + Total amount of the transaction. + """ amount: Money } -"""An enumeration.""" +""" +An enumeration. +""" enum TransactionKind { EXTERNAL AUTH @@ -10172,33 +12941,51 @@ enum TransactionKind { } type CreditCard { - """Card brand.""" + """ + Card brand. + """ brand: String! - """First 4 digits of the card number.""" + """ + First 4 digits of the card number. + """ firstDigits: String - """Last 4 digits of the card number.""" + """ + Last 4 digits of the card number. + """ lastDigits: String! - """Two-digit number representing the card’s expiration month.""" + """ + Two-digit number representing the card’s expiration month. + """ expMonth: Int - """Four-digit number representing the card’s expiration year.""" + """ + Four-digit number representing the card’s expiration year. + """ expYear: Int } -"""History log of the order.""" +""" +History log of the order. +""" type OrderEvent implements Node { id: ID! - """Date when event happened at in ISO 8601 format.""" + """ + Date when event happened at in ISO 8601 format. + """ date: DateTime - """Order event type.""" + """ + Order event type. + """ type: OrderEventsEnum - """User who performed the action.""" + """ + User who performed the action. + """ user: User """ @@ -10206,68 +12993,110 @@ type OrderEvent implements Node { """ app: App - """Content of the event.""" + """ + Content of the event. + """ message: String - """Email of the customer.""" + """ + Email of the customer. + """ email: String - """Type of an email sent to the customer.""" + """ + Type of an email sent to the customer. + """ emailType: OrderEventsEmailsEnum - """Amount of money.""" + """ + Amount of money. + """ amount: Float - """The payment reference from the payment provider.""" + """ + The payment reference from the payment provider. + """ paymentId: String - """The payment gateway of the payment.""" + """ + The payment gateway of the payment. + """ paymentGateway: String - """Number of items.""" + """ + Number of items. + """ quantity: Int - """Composed ID of the Fulfillment.""" + """ + Composed ID of the Fulfillment. + """ composedId: String - """User-friendly number of an order.""" + """ + User-friendly number of an order. + """ orderNumber: String - """Number of an invoice related to the order.""" + """ + Number of an invoice related to the order. + """ invoiceNumber: String - """List of oversold lines names.""" + """ + List of oversold lines names. + """ oversoldItems: [String!] - """The concerned lines.""" + """ + The concerned lines. + """ lines: [OrderEventOrderLineObject!] - """The lines fulfilled.""" + """ + The lines fulfilled. + """ fulfilledItems: [FulfillmentLine!] - """The warehouse were items were restocked.""" + """ + The warehouse were items were restocked. + """ warehouse: Warehouse - """The transaction reference of captured payment.""" + """ + The transaction reference of captured payment. + """ transactionReference: String - """Define if shipping costs were included to the refund.""" + """ + Define if shipping costs were included to the refund. + """ shippingCostsIncluded: Boolean - """The order which is related to this order.""" + """ + The order which is related to this order. + """ relatedOrder: Order - """The discount applied to the order.""" + """ + The discount applied to the order. + """ discount: OrderEventDiscountObject - """The status of payment's transaction.""" + """ + The status of payment's transaction. + """ status: TransactionStatus - """The reference of payment's transaction.""" + """ + The reference of payment's transaction. + """ reference: String } -"""An enumeration.""" +""" +An enumeration. +""" enum OrderEventsEnum { DRAFT_CREATED DRAFT_CREATED_FROM_REPLACE @@ -10317,7 +13146,9 @@ enum OrderEventsEnum { OTHER } -"""An enumeration.""" +""" +An enumeration. +""" enum OrderEventsEmailsEnum { PAYMENT_CONFIRMATION CONFIRMED @@ -10331,74 +13162,108 @@ enum OrderEventsEmailsEnum { } type OrderEventOrderLineObject { - """The variant quantity.""" + """ + The variant quantity. + """ quantity: Int - """The order line.""" + """ + The order line. + """ orderLine: OrderLine - """The variant name.""" + """ + The variant name. + """ itemName: String - """The discount applied to the order line.""" + """ + The discount applied to the order line. + """ discount: OrderEventDiscountObject } type OrderEventDiscountObject { - """Type of the discount: fixed or percent.""" + """ + Type of the discount: fixed or percent. + """ valueType: DiscountValueTypeEnum! - """Value of the discount. Can store fixed value or percent value.""" + """ + Value of the discount. Can store fixed value or percent value. + """ value: PositiveDecimal! - """Explanation for the applied discount.""" + """ + Explanation for the applied discount. + """ reason: String - """Returns amount of discount.""" + """ + Returns amount of discount. + """ amount: Money - """Type of the discount: fixed or percent.""" + """ + Type of the discount: fixed or percent. + """ oldValueType: DiscountValueTypeEnum - """Value of the discount. Can store fixed value or percent value.""" + """ + Value of the discount. Can store fixed value or percent value. + """ oldValue: PositiveDecimal - """Returns amount of discount.""" + """ + Returns amount of discount. + """ oldAmount: Money } -"""An enumeration.""" +""" +An enumeration. +""" enum TransactionStatus { PENDING SUCCESS FAILURE } -"""Contains all details related to the applied discount to the order.""" +""" +Contains all details related to the applied discount to the order. +""" type OrderDiscount implements Node { id: ID! type: OrderDiscountType! name: String translatedName: String - """Type of the discount: fixed or percent""" + """ + Type of the discount: fixed or percent + """ valueType: DiscountValueTypeEnum! - """Value of the discount. Can store fixed value or percent value""" + """ + Value of the discount. Can store fixed value or percent value + """ value: PositiveDecimal! """ Explanation for the applied discount. - + Requires one of the following permissions: MANAGE_ORDERS. """ reason: String - """Returns amount of discount.""" + """ + Returns amount of discount. + """ amount: Money! } -"""An enumeration.""" +""" +An enumeration. +""" enum OrderDiscountType { VOUCHER MANUAL @@ -10410,26 +13275,40 @@ type OrderError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: OrderErrorCode! - """Warehouse ID which causes the error.""" + """ + Warehouse ID which causes the error. + """ warehouse: ID - """List of order line IDs that cause the error.""" + """ + List of order line IDs that cause the error. + """ orderLines: [ID!] - """List of product variants that are associated with the error""" + """ + List of product variants that are associated with the error + """ variants: [ID!] - """A type of address that causes the error.""" + """ + A type of address that causes the error. + """ addressType: AddressTypeEnum } -"""An enumeration.""" +""" +An enumeration. +""" enum OrderErrorCode { BILLING_ADDRESS_NOT_SET CANNOT_CANCEL_FULFILLMENT @@ -10465,106 +13344,154 @@ enum OrderErrorCode { MISSING_TRANSACTION_ACTION_REQUEST_WEBHOOK } -"""An enumeration.""" +""" +An enumeration. +""" enum AddressTypeEnum { BILLING SHIPPING } -"""Represents transaction's event.""" +""" +Represents transaction's event. +""" type TransactionEvent implements Node { - """The ID of the object.""" + """ + The ID of the object. + """ id: ID! createdAt: DateTime! - """Status of transaction's event.""" + """ + Status of transaction's event. + """ status: TransactionStatus! - """Reference of transaction's event.""" + """ + Reference of transaction's event. + """ reference: String! - """Name of the transaction's event.""" + """ + Name of the transaction's event. + """ name: String } type CheckoutCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [CheckoutCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type CheckoutCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: Checkout! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } type GiftCardCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [GiftCardCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type GiftCardCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: GiftCard! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } type OrderCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [OrderCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type OrderCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: Order! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } type UserPermission { - """Internal code for permission.""" + """ + Internal code for permission. + """ code: PermissionEnum! - """Describe action(s) allowed to do by permission.""" + """ + Describe action(s) allowed to do by permission. + """ name: String! - """List of user permission groups which contains this permission.""" + """ + List of user permission groups which contains this permission. + """ sourcePermissionGroups( - """ID of user whose groups should be returned.""" + """ + ID of user whose groups should be returned. + """ userId: ID! ): [Group!] } -"""Represents permission group data.""" +""" +Represents permission group data. +""" type Group implements Node { id: ID! name: String! """ List of group users - + Requires one of the following permissions: MANAGE_STAFF. """ users: [User!] - """List of group permissions""" + """ + List of group permissions + """ permissions: [Permission!] """ @@ -10573,36 +13500,56 @@ type Group implements Node { userCanManage: Boolean! } -"""History log of the customer.""" +""" +History log of the customer. +""" type CustomerEvent implements Node { id: ID! - """Date when event happened at in ISO 8601 format.""" + """ + Date when event happened at in ISO 8601 format. + """ date: DateTime - """Customer event type.""" + """ + Customer event type. + """ type: CustomerEventsEnum - """User who performed the action.""" + """ + User who performed the action. + """ user: User - """App that performed the action.""" + """ + App that performed the action. + """ app: App - """Content of the event.""" + """ + Content of the event. + """ message: String - """Number of objects concerned by the event.""" + """ + Number of objects concerned by the event. + """ count: Int - """The concerned order.""" + """ + The concerned order. + """ order: Order - """The concerned order line.""" + """ + The concerned order line. + """ orderLine: OrderLine } -"""An enumeration.""" +""" +An enumeration. +""" enum CustomerEventsEnum { ACCOUNT_CREATED ACCOUNT_ACTIVATED @@ -10625,30 +13572,40 @@ enum CustomerEventsEnum { Represents a payment source stored for user in payment gateway, such as credit card. """ type PaymentSource { - """Payment gateway name.""" + """ + Payment gateway name. + """ gateway: String! - """ID of stored payment method.""" + """ + ID of stored payment method. + """ paymentMethodId: String - """Stored credit card details if available.""" + """ + Stored credit card details if available. + """ creditCardInfo: CreditCard """ List of public metadata items. - + Added in Saleor 3.1. - + Can be accessed without permissions. """ metadata: [MetadataItem!]! } type LimitInfo { - """Defines the current resource usage.""" + """ + Defines the current resource usage. + """ currentUsage: Limits! - """Defines the allowed maximum resource usage, null means unlimited.""" + """ + Defines the allowed maximum resource usage, null means unlimited. + """ allowedUsage: Limits! } @@ -10660,36 +13617,52 @@ type Limits { warehouses: Int } -"""Order related settings from site settings.""" +""" +Order related settings from site settings. +""" type OrderSettings { automaticallyConfirmAllNewOrders: Boolean! automaticallyFulfillNonShippableGiftCard: Boolean! } -"""Gift card related settings from site settings.""" +""" +Gift card related settings from site settings. +""" type GiftCardSettings { - """The gift card expiry type settings.""" + """ + The gift card expiry type settings. + """ expiryType: GiftCardSettingsExpiryTypeEnum! - """The gift card expiry period settings.""" + """ + The gift card expiry period settings. + """ expiryPeriod: TimePeriod } -"""An enumeration.""" +""" +An enumeration. +""" enum GiftCardSettingsExpiryTypeEnum { NEVER_EXPIRE EXPIRY_PERIOD } type TimePeriod { - """The length of the period.""" + """ + The length of the period. + """ amount: Int! - """The type of the period.""" + """ + The type of the period. + """ type: TimePeriodTypeEnum! } -"""An enumeration.""" +""" +An enumeration. +""" enum TimePeriodTypeEnum { DAY WEEK @@ -10703,19 +13676,27 @@ input ShippingZoneFilterInput { } type DigitalContentCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [DigitalContentCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type DigitalContentCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: DigitalContent! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } @@ -10727,28 +13708,38 @@ input CategoryFilterInput { } input CategorySortingInput { - """Specifies the direction in which to sort products.""" + """ + Specifies the direction in which to sort products. + """ direction: OrderDirection! """ Specifies the channel in which to sort the data. - + DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. """ channel: String - """Sort categories by the selected field.""" + """ + Sort categories by the selected field. + """ field: CategorySortField! } enum CategorySortField { - """Sort categories by name.""" + """ + Sort categories by name. + """ NAME - """Sort categories by product count.""" + """ + Sort categories by product count. + """ PRODUCT_COUNT - """Sort categories by subcategory count.""" + """ + Sort categories by subcategory count. + """ SUBCATEGORY_COUNT } @@ -10760,8 +13751,8 @@ input CollectionFilterInput { slugs: [String!] """ - Specifies the channel by which the data should be filtered. - + Specifies the channel by which the data should be filtered. + DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. """ channel: String @@ -10773,44 +13764,52 @@ enum CollectionPublished { } input CollectionSortingInput { - """Specifies the direction in which to sort products.""" + """ + Specifies the direction in which to sort products. + """ direction: OrderDirection! """ Specifies the channel in which to sort the data. - + DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. """ channel: String - """Sort collections by the selected field.""" + """ + Sort collections by the selected field. + """ field: CollectionSortField! } enum CollectionSortField { - """Sort collections by name.""" + """ + Sort collections by name. + """ NAME """ Sort collections by availability. - + This option requires a channel filter to work as the values can vary between channels. """ AVAILABILITY - """Sort collections by product count.""" + """ + Sort collections by product count. + """ PRODUCT_COUNT """ Sort collections by publication date. - + This option requires a channel filter to work as the values can vary between channels. """ PUBLICATION_DATE """ Sort collections by publication date. - + This option requires a channel filter to work as the values can vary between channels. """ PUBLISHED_AT @@ -10837,21 +13836,31 @@ enum ProductTypeEnum { } input ProductTypeSortingInput { - """Specifies the direction in which to sort products.""" + """ + Specifies the direction in which to sort products. + """ direction: OrderDirection! - """Sort product types by the selected field.""" + """ + Sort product types by the selected field. + """ field: ProductTypeSortField! } enum ProductTypeSortField { - """Sort products by name.""" + """ + Sort products by name. + """ NAME - """Sort products by type.""" + """ + Sort products by type. + """ DIGITAL - """Sort products by shipping.""" + """ + Sort products by shipping. + """ SHIPPING_REQUIRED } @@ -10864,39 +13873,53 @@ input ProductVariantFilterInput { } input ProductVariantSortingInput { - """Specifies the direction in which to sort products.""" + """ + Specifies the direction in which to sort products. + """ direction: OrderDirection! - """Sort productVariants by the selected field.""" + """ + Sort productVariants by the selected field. + """ field: ProductVariantSortField! } enum ProductVariantSortField { - """Sort products variants by last modified at.""" + """ + Sort products variants by last modified at. + """ LAST_MODIFIED_AT } type PaymentCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [PaymentCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type PaymentCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: Payment! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } input PaymentFilterInput { """ - Filter by ids. - + Filter by ids. + Added in Saleor 3.8. """ ids: [ID!] @@ -10904,64 +13927,82 @@ input PaymentFilterInput { } type PageCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [PageCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type PageCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: Page! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } input PageSortingInput { - """Specifies the direction in which to sort products.""" + """ + Specifies the direction in which to sort products. + """ direction: OrderDirection! - """Sort pages by the selected field.""" + """ + Sort pages by the selected field. + """ field: PageSortField! } enum PageSortField { - """Sort pages by title.""" + """ + Sort pages by title. + """ TITLE - """Sort pages by slug.""" + """ + Sort pages by slug. + """ SLUG - """Sort pages by visibility.""" + """ + Sort pages by visibility. + """ VISIBILITY """ Sort pages by creation date. - + DEPRECATED: this field will be removed in Saleor 4.0. """ CREATION_DATE """ Sort pages by publication date. - + DEPRECATED: this field will be removed in Saleor 4.0. """ PUBLICATION_DATE """ Sort pages by publication date. - + DEPRECATED: this field will be removed in Saleor 4.0. """ PUBLISHED_AT """ Sort pages by creation date. - + DEPRECATED: this field will be removed in Saleor 4.0. """ CREATED_AT @@ -10976,35 +14017,51 @@ input PageFilterInput { } type PageTypeCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [PageTypeCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type PageTypeCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: PageType! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } input PageTypeSortingInput { - """Specifies the direction in which to sort products.""" + """ + Specifies the direction in which to sort products. + """ direction: OrderDirection! - """Sort page types by the selected field.""" + """ + Sort page types by the selected field. + """ field: PageTypeSortField! } enum PageTypeSortField { - """Sort page types by name.""" + """ + Sort page types by name. + """ NAME - """Sort page types by slug.""" + """ + Sort page types by slug. + """ SLUG } @@ -11014,32 +14071,46 @@ input PageTypeFilterInput { } type OrderEventCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [OrderEventCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type OrderEventCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: OrderEvent! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } input OrderSortingInput { - """Specifies the direction in which to sort products.""" + """ + Specifies the direction in which to sort products. + """ direction: OrderDirection! - """Sort orders by the selected field.""" + """ + Sort orders by the selected field. + """ field: OrderSortField! } enum OrderSortField { - """Sort orders by number.""" + """ + Sort orders by number. + """ NUMBER """ @@ -11048,29 +14119,37 @@ enum OrderSortField { RANK """ - Sort orders by creation date. - + Sort orders by creation date. + DEPRECATED: this field will be removed in Saleor 4.0. """ CREATION_DATE """ - Sort orders by creation date. - + Sort orders by creation date. + DEPRECATED: this field will be removed in Saleor 4.0. """ CREATED_AT - """Sort orders by last modified at.""" + """ + Sort orders by last modified at. + """ LAST_MODIFIED_AT - """Sort orders by customer.""" + """ + Sort orders by customer. + """ CUSTOMER - """Sort orders by payment.""" + """ + Sort orders by payment. + """ PAYMENT - """Sort orders by fulfillment status.""" + """ + Sort orders by fulfillment status. + """ FULFILLMENT_STATUS } @@ -11112,35 +14191,51 @@ input OrderDraftFilterInput { } type MenuCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [MenuCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type MenuCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: Menu! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } input MenuSortingInput { - """Specifies the direction in which to sort products.""" + """ + Specifies the direction in which to sort products. + """ direction: OrderDirection! - """Sort menus by the selected field.""" + """ + Sort menus by the selected field. + """ field: MenuSortField! } enum MenuSortField { - """Sort menus by name.""" + """ + Sort menus by name. + """ NAME - """Sort menus by items count.""" + """ + Sort menus by items count. + """ ITEMS_COUNT } @@ -11152,32 +14247,46 @@ input MenuFilterInput { } type MenuItemCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [MenuItemCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type MenuItemCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: MenuItem! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } input MenuItemSortingInput { - """Specifies the direction in which to sort products.""" + """ + Specifies the direction in which to sort products. + """ direction: OrderDirection! - """Sort menu items by the selected field.""" + """ + Sort menu items by the selected field. + """ field: MenuItemsSortField! } enum MenuItemsSortField { - """Sort menu items by name.""" + """ + Sort menu items by name. + """ NAME } @@ -11187,26 +14296,36 @@ input MenuItemFilterInput { } input GiftCardSortingInput { - """Specifies the direction in which to sort products.""" + """ + Specifies the direction in which to sort products. + """ direction: OrderDirection! - """Sort gift cards by the selected field.""" + """ + Sort gift cards by the selected field. + """ field: GiftCardSortField! } enum GiftCardSortField { - """Sort gift cards by product.""" + """ + Sort gift cards by product. + """ PRODUCT - """Sort gift cards by used by.""" + """ + Sort gift cards by used by. + """ USED_BY - """Sort gift cards by current balance.""" + """ + Sort gift cards by current balance. + """ CURRENT_BALANCE """ Sort gift cards by created at. - + Added in Saleor 3.8. """ CREATED_AT @@ -11226,19 +14345,27 @@ input GiftCardFilterInput { } type GiftCardTagCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [GiftCardTagCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type GiftCardTagCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: GiftCardTag! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } @@ -11246,55 +14373,89 @@ input GiftCardTagFilterInput { search: String } -"""Plugin.""" +""" +Plugin. +""" type Plugin { - """Identifier of the plugin.""" + """ + Identifier of the plugin. + """ id: ID! - """Name of the plugin.""" + """ + Name of the plugin. + """ name: String! - """Description of the plugin.""" + """ + Description of the plugin. + """ description: String! - """Global configuration of the plugin (not channel-specific).""" + """ + Global configuration of the plugin (not channel-specific). + """ globalConfiguration: PluginConfiguration - """Channel-specific plugin configuration.""" + """ + Channel-specific plugin configuration. + """ channelConfigurations: [PluginConfiguration!]! } -"""Stores information about a configuration of plugin.""" +""" +Stores information about a configuration of plugin. +""" type PluginConfiguration { - """Determines if plugin is active or not.""" + """ + Determines if plugin is active or not. + """ active: Boolean! - """The channel to which the plugin configuration is assigned to.""" + """ + The channel to which the plugin configuration is assigned to. + """ channel: Channel - """Configuration of the plugin.""" + """ + Configuration of the plugin. + """ configuration: [ConfigurationItem!] } -"""Stores information about a single configuration field.""" +""" +Stores information about a single configuration field. +""" type ConfigurationItem { - """Name of the field.""" + """ + Name of the field. + """ name: String! - """Current value of the field.""" + """ + Current value of the field. + """ value: String - """Type of the field.""" + """ + Type of the field. + """ type: ConfigurationTypeFieldEnum - """Help text for the field.""" + """ + Help text for the field. + """ helpText: String - """Label for the field.""" + """ + Label for the field. + """ label: String } -"""An enumeration.""" +""" +An enumeration. +""" enum ConfigurationTypeFieldEnum { STRING MULTILINE @@ -11306,19 +14467,27 @@ enum ConfigurationTypeFieldEnum { } type PluginCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [PluginCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type PluginCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: Plugin! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } @@ -11339,10 +14508,14 @@ enum PluginConfigurationType { } input PluginSortingInput { - """Specifies the direction in which to sort products.""" + """ + Specifies the direction in which to sort products. + """ direction: OrderDirection! - """Sort plugins by the selected field.""" + """ + Sort plugins by the selected field. + """ field: PluginSortField! } @@ -11352,19 +14525,27 @@ enum PluginSortField { } type SaleCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [SaleCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type SaleCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: Sale! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } @@ -11384,61 +14565,85 @@ enum DiscountStatusEnum { } input SaleSortingInput { - """Specifies the direction in which to sort products.""" + """ + Specifies the direction in which to sort products. + """ direction: OrderDirection! """ Specifies the channel in which to sort the data. - + DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. """ channel: String - """Sort sales by the selected field.""" + """ + Sort sales by the selected field. + """ field: SaleSortField! } enum SaleSortField { - """Sort sales by name.""" + """ + Sort sales by name. + """ NAME - """Sort sales by start date.""" + """ + Sort sales by start date. + """ START_DATE - """Sort sales by end date.""" + """ + Sort sales by end date. + """ END_DATE """ Sort sales by value. - + This option requires a channel filter to work as the values can vary between channels. """ VALUE - """Sort sales by type.""" + """ + Sort sales by type. + """ TYPE - """Sort sales by created at.""" + """ + Sort sales by created at. + """ CREATED_AT - """Sort sales by last modified at.""" + """ + Sort sales by last modified at. + """ LAST_MODIFIED_AT } type VoucherCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [VoucherCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type VoucherCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: Voucher! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } @@ -11459,85 +14664,121 @@ enum VoucherDiscountType { } input VoucherSortingInput { - """Specifies the direction in which to sort products.""" + """ + Specifies the direction in which to sort products. + """ direction: OrderDirection! """ Specifies the channel in which to sort the data. - + DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. """ channel: String - """Sort vouchers by the selected field.""" + """ + Sort vouchers by the selected field. + """ field: VoucherSortField! } enum VoucherSortField { - """Sort vouchers by code.""" + """ + Sort vouchers by code. + """ CODE - """Sort vouchers by start date.""" + """ + Sort vouchers by start date. + """ START_DATE - """Sort vouchers by end date.""" + """ + Sort vouchers by end date. + """ END_DATE """ Sort vouchers by value. - + This option requires a channel filter to work as the values can vary between channels. """ VALUE - """Sort vouchers by type.""" + """ + Sort vouchers by type. + """ TYPE - """Sort vouchers by usage limit.""" + """ + Sort vouchers by usage limit. + """ USAGE_LIMIT """ Sort vouchers by minimum spent amount. - + This option requires a channel filter to work as the values can vary between channels. """ MINIMUM_SPENT_AMOUNT } -"""Represents a job data of exported file.""" +""" +Represents a job data of exported file. +""" type ExportFile implements Node & Job { id: ID! - """Job status.""" + """ + Job status. + """ status: JobStatusEnum! - """Created date time of job in ISO 8601 format.""" + """ + Created date time of job in ISO 8601 format. + """ createdAt: DateTime! - """Date time of job last update in ISO 8601 format.""" + """ + Date time of job last update in ISO 8601 format. + """ updatedAt: DateTime! - """Job message.""" + """ + Job message. + """ message: String - """The URL of field to download.""" + """ + The URL of field to download. + """ url: String - """List of events associated with the export.""" + """ + List of events associated with the export. + """ events: [ExportEvent!] user: User app: App } -"""History log of export file.""" +""" +History log of export file. +""" type ExportEvent implements Node { - """The ID of the object.""" + """ + The ID of the object. + """ id: ID! - """Date when event happened at in ISO 8601 format.""" + """ + Date when event happened at in ISO 8601 format. + """ date: DateTime! - """Export event type.""" + """ + Export event type. + """ type: ExportEventsEnum! """ @@ -11550,11 +14791,15 @@ type ExportEvent implements Node { """ app: App - """Content of the event.""" + """ + Content of the event. + """ message: String! } -"""An enumeration.""" +""" +An enumeration. +""" enum ExportEventsEnum { EXPORT_PENDING EXPORT_SUCCESS @@ -11565,19 +14810,27 @@ enum ExportEventsEnum { } type ExportFileCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [ExportFileCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type ExportFileCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: ExportFile! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } @@ -11590,10 +14843,14 @@ input ExportFileFilterInput { } input ExportFileSortingInput { - """Specifies the direction in which to sort products.""" + """ + Specifies the direction in which to sort products. + """ direction: OrderDirection! - """Sort export file by the selected field.""" + """ + Sort export file by the selected field. + """ field: ExportFileSortField! } @@ -11605,21 +14862,31 @@ enum ExportFileSortField { } input CheckoutSortingInput { - """Specifies the direction in which to sort products.""" + """ + Specifies the direction in which to sort products. + """ direction: OrderDirection! - """Sort checkouts by the selected field.""" + """ + Sort checkouts by the selected field. + """ field: CheckoutSortField! } enum CheckoutSortField { - """Sort checkouts by creation date.""" + """ + Sort checkouts by creation date. + """ CREATION_DATE - """Sort checkouts by customer.""" + """ + Sort checkouts by customer. + """ CUSTOMER - """Sort checkouts by payment.""" + """ + Sort checkouts by payment. + """ PAYMENT } @@ -11632,53 +14899,81 @@ input CheckoutFilterInput { } type CheckoutLineCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [CheckoutLineCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type CheckoutLineCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: CheckoutLine! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } input AttributeSortingInput { - """Specifies the direction in which to sort products.""" + """ + Specifies the direction in which to sort products. + """ direction: OrderDirection! - """Sort attributes by the selected field.""" + """ + Sort attributes by the selected field. + """ field: AttributeSortField! } enum AttributeSortField { - """Sort attributes by name""" + """ + Sort attributes by name + """ NAME - """Sort attributes by slug""" + """ + Sort attributes by slug + """ SLUG - """Sort attributes by the value required flag""" + """ + Sort attributes by the value required flag + """ VALUE_REQUIRED - """Sort attributes by the variant only flag""" + """ + Sort attributes by the variant only flag + """ IS_VARIANT_ONLY - """Sort attributes by visibility in the storefront""" + """ + Sort attributes by visibility in the storefront + """ VISIBLE_IN_STOREFRONT - """Sort attributes by the filterable in storefront flag""" + """ + Sort attributes by the filterable in storefront flag + """ FILTERABLE_IN_STOREFRONT - """Sort attributes by the filterable in dashboard flag""" + """ + Sort attributes by the filterable in dashboard flag + """ FILTERABLE_IN_DASHBOARD - """Sort attributes by their position in storefront""" + """ + Sort attributes by their position in storefront + """ STOREFRONT_SEARCH_POSITION """ @@ -11687,39 +14982,57 @@ enum AttributeSortField { AVAILABLE_IN_GRID } -"""Represents ongoing installation of app.""" +""" +Represents ongoing installation of app. +""" type AppInstallation implements Node & Job { id: ID! - """Job status.""" + """ + Job status. + """ status: JobStatusEnum! - """Created date time of job in ISO 8601 format.""" + """ + Created date time of job in ISO 8601 format. + """ createdAt: DateTime! - """Date time of job last update in ISO 8601 format.""" + """ + Date time of job last update in ISO 8601 format. + """ updatedAt: DateTime! - """Job message.""" + """ + Job message. + """ message: String appName: String! manifestUrl: String! } type AppCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [AppCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type AppCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: App! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } @@ -11730,35 +15043,51 @@ input AppFilterInput { } input AppSortingInput { - """Specifies the direction in which to sort products.""" + """ + Specifies the direction in which to sort products. + """ direction: OrderDirection! - """Sort apps by the selected field.""" + """ + Sort apps by the selected field. + """ field: AppSortField! } enum AppSortField { - """Sort apps by name.""" + """ + Sort apps by name. + """ NAME - """Sort apps by creation date.""" + """ + Sort apps by creation date. + """ CREATION_DATE } type AppExtensionCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [AppExtensionCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type AppExtensionCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: AppExtension! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } @@ -11793,19 +15122,27 @@ type ChoiceValue { } type UserCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [UserCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type UserCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: User! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } @@ -11817,8 +15154,8 @@ input CustomerFilterInput { metadata: [MetadataFilter!] """ - Filter by ids. - + Filter by ids. + Added in Saleor 3.8. """ ids: [ID!] @@ -11826,47 +15163,71 @@ input CustomerFilterInput { } input UserSortingInput { - """Specifies the direction in which to sort products.""" + """ + Specifies the direction in which to sort products. + """ direction: OrderDirection! - """Sort users by the selected field.""" + """ + Sort users by the selected field. + """ field: UserSortField! } enum UserSortField { - """Sort users by first name.""" + """ + Sort users by first name. + """ FIRST_NAME - """Sort users by last name.""" + """ + Sort users by last name. + """ LAST_NAME - """Sort users by email.""" + """ + Sort users by email. + """ EMAIL - """Sort users by order count.""" + """ + Sort users by order count. + """ ORDER_COUNT - """Sort users by created at.""" + """ + Sort users by created at. + """ CREATED_AT - """Sort users by last modified at.""" + """ + Sort users by last modified at. + """ LAST_MODIFIED_AT } type GroupCountableConnection { - """Pagination data for this connection.""" + """ + Pagination data for this connection. + """ pageInfo: PageInfo! edges: [GroupCountableEdge!]! - """A total count of items in the collection.""" + """ + A total count of items in the collection. + """ totalCount: Int } type GroupCountableEdge { - """The item at the end of the edge.""" + """ + The item at the end of the edge. + """ node: Group! - """A cursor for use in pagination.""" + """ + A cursor for use in pagination. + """ cursor: String! } @@ -11876,15 +15237,21 @@ input PermissionGroupFilterInput { } input PermissionGroupSortingInput { - """Specifies the direction in which to sort products.""" + """ + Specifies the direction in which to sort products. + """ direction: OrderDirection! - """Sort permission group by the selected field.""" + """ + Sort permission group by the selected field. + """ field: PermissionGroupSortField! } enum PermissionGroupSortField { - """Sort permission group accounts by name.""" + """ + Sort permission group accounts by name. + """ NAME } @@ -11895,189 +15262,233 @@ input StaffUserInput { } enum StaffMemberStatus { - """User account has been activated.""" + """ + User account has been activated. + """ ACTIVE - """User account has not been activated yet.""" + """ + User account has not been activated yet. + """ DEACTIVATED } type Mutation { """ - Creates a new webhook subscription. - + Creates a new webhook subscription. + Requires one of the following permissions: MANAGE_APPS, AUTHENTICATED_APP. """ webhookCreate( - """Fields required to create a webhook.""" + """ + Fields required to create a webhook. + """ input: WebhookCreateInput! ): WebhookCreate """ - Delete a webhook. Before the deletion, the webhook is deactivated to pause any deliveries that are already scheduled. The deletion might fail if delivery is in progress. In such a case, the webhook is not deleted but remains deactivated. - + Delete a webhook. Before the deletion, the webhook is deactivated to pause any deliveries that are already scheduled. The deletion might fail if delivery is in progress. In such a case, the webhook is not deleted but remains deactivated. + Requires one of the following permissions: MANAGE_APPS, AUTHENTICATED_APP. """ webhookDelete( - """ID of a webhook to delete.""" + """ + ID of a webhook to delete. + """ id: ID! ): WebhookDelete """ - Updates a webhook subscription. - + Updates a webhook subscription. + Requires one of the following permissions: MANAGE_APPS. """ webhookUpdate( - """ID of a webhook to update.""" + """ + ID of a webhook to update. + """ id: ID! - """Fields required to update a webhook.""" + """ + Fields required to update a webhook. + """ input: WebhookUpdateInput! ): WebhookUpdate """ - Retries event delivery. - + Retries event delivery. + Requires one of the following permissions: MANAGE_APPS. """ eventDeliveryRetry( - """ID of the event delivery to retry.""" + """ + ID of the event delivery to retry. + """ id: ID! ): EventDeliveryRetry """ - Creates new warehouse. - + Creates new warehouse. + Requires one of the following permissions: MANAGE_PRODUCTS. """ createWarehouse( - """Fields required to create warehouse.""" + """ + Fields required to create warehouse. + """ input: WarehouseCreateInput! ): WarehouseCreate """ - Updates given warehouse. - + Updates given warehouse. + Requires one of the following permissions: MANAGE_PRODUCTS. """ updateWarehouse( - """ID of a warehouse to update.""" + """ + ID of a warehouse to update. + """ id: ID! - """Fields required to update warehouse.""" + """ + Fields required to update warehouse. + """ input: WarehouseUpdateInput! ): WarehouseUpdate """ - Deletes selected warehouse. - + Deletes selected warehouse. + Requires one of the following permissions: MANAGE_PRODUCTS. """ deleteWarehouse( - """ID of a warehouse to delete.""" + """ + ID of a warehouse to delete. + """ id: ID! ): WarehouseDelete """ - Add shipping zone to given warehouse. - + Add shipping zone to given warehouse. + Requires one of the following permissions: MANAGE_PRODUCTS. """ assignWarehouseShippingZone( - """ID of a warehouse to update.""" + """ + ID of a warehouse to update. + """ id: ID! - """List of shipping zone IDs.""" + """ + List of shipping zone IDs. + """ shippingZoneIds: [ID!]! ): WarehouseShippingZoneAssign """ - Remove shipping zone from given warehouse. - + Remove shipping zone from given warehouse. + Requires one of the following permissions: MANAGE_PRODUCTS. """ unassignWarehouseShippingZone( - """ID of a warehouse to update.""" + """ + ID of a warehouse to update. + """ id: ID! - """List of shipping zone IDs.""" + """ + List of shipping zone IDs. + """ shippingZoneIds: [ID!]! ): WarehouseShippingZoneUnassign """ Create a tax class. - + Added in Saleor 3.9. - - Note: this API is currently in Feature Preview and can be subject to changes at later point. - + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + Requires one of the following permissions: MANAGE_TAXES. """ taxClassCreate( - """Fields required to create a tax class.""" + """ + Fields required to create a tax class. + """ input: TaxClassCreateInput! ): TaxClassCreate """ Delete a tax class. After deleting the tax class any products, product types or shipping methods using it are updated to use the default tax class. - + Added in Saleor 3.9. - - Note: this API is currently in Feature Preview and can be subject to changes at later point. - + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + Requires one of the following permissions: MANAGE_TAXES. """ taxClassDelete( - """ID of a tax class to delete.""" + """ + ID of a tax class to delete. + """ id: ID! ): TaxClassDelete """ Update a tax class. - + Added in Saleor 3.9. - - Note: this API is currently in Feature Preview and can be subject to changes at later point. - + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + Requires one of the following permissions: MANAGE_TAXES. """ taxClassUpdate( - """ID of the tax class.""" + """ + ID of the tax class. + """ id: ID! - """Fields required to update a tax class.""" + """ + Fields required to update a tax class. + """ input: TaxClassUpdateInput! ): TaxClassUpdate """ Update tax configuration for a channel. - + Added in Saleor 3.9. - - Note: this API is currently in Feature Preview and can be subject to changes at later point. - + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + Requires one of the following permissions: MANAGE_TAXES. """ taxConfigurationUpdate( - """ID of the tax configuration.""" + """ + ID of the tax configuration. + """ id: ID! - """Fields required to update the tax configuration.""" + """ + Fields required to update the tax configuration. + """ input: TaxConfigurationUpdateInput! ): TaxConfigurationUpdate """ Update tax class rates for a specific country. - + Added in Saleor 3.9. - - Note: this API is currently in Feature Preview and can be subject to changes at later point. - + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + Requires one of the following permissions: MANAGE_TAXES. """ taxCountryConfigurationUpdate( - """Country in which to update the tax class rates.""" + """ + Country in which to update the tax class rates. + """ countryCode: CountryCode! """ @@ -12088,325 +15499,404 @@ type Mutation { """ Remove all tax class rates for a specific country. - + Added in Saleor 3.9. - - Note: this API is currently in Feature Preview and can be subject to changes at later point. - + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + Requires one of the following permissions: MANAGE_TAXES. """ taxCountryConfigurationDelete( - """Country in which to update the tax class rates.""" + """ + Country in which to update the tax class rates. + """ countryCode: CountryCode! ): TaxCountryConfigurationDelete """ Exempt checkout or order from charging the taxes. When tax exemption is enabled, taxes won't be charged for the checkout or order. Taxes may still be calculated in cases when product prices are entered with the tax included and the net price needs to be known. - + Added in Saleor 3.8. - - Note: this API is currently in Feature Preview and can be subject to changes at later point. - + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + Requires one of the following permissions: MANAGE_TAXES. """ taxExemptionManage( - """ID of the Checkout or Order object.""" + """ + ID of the Checkout or Order object. + """ id: ID! - """Determines if a taxes should be exempt.""" + """ + Determines if a taxes should be exempt. + """ taxExemption: Boolean! ): TaxExemptionManage """ - Creates a new staff notification recipient. - + Creates a new staff notification recipient. + Requires one of the following permissions: MANAGE_SETTINGS. """ staffNotificationRecipientCreate( - """Fields required to create a staff notification recipient.""" + """ + Fields required to create a staff notification recipient. + """ input: StaffNotificationRecipientInput! ): StaffNotificationRecipientCreate """ - Updates a staff notification recipient. - + Updates a staff notification recipient. + Requires one of the following permissions: MANAGE_SETTINGS. """ staffNotificationRecipientUpdate( - """ID of a staff notification recipient to update.""" + """ + ID of a staff notification recipient to update. + """ id: ID! - """Fields required to update a staff notification recipient.""" + """ + Fields required to update a staff notification recipient. + """ input: StaffNotificationRecipientInput! ): StaffNotificationRecipientUpdate """ - Delete staff notification recipient. - + Delete staff notification recipient. + Requires one of the following permissions: MANAGE_SETTINGS. """ staffNotificationRecipientDelete( - """ID of a staff notification recipient to delete.""" + """ + ID of a staff notification recipient to delete. + """ id: ID! ): StaffNotificationRecipientDelete """ - Updates site domain of the shop. - + Updates site domain of the shop. + Requires one of the following permissions: MANAGE_SETTINGS. """ shopDomainUpdate( - """Fields required to update site.""" + """ + Fields required to update site. + """ input: SiteDomainInput ): ShopDomainUpdate """ - Updates shop settings. - + Updates shop settings. + Requires one of the following permissions: MANAGE_SETTINGS. """ shopSettingsUpdate( - """Fields required to update shop settings.""" + """ + Fields required to update shop settings. + """ input: ShopSettingsInput! ): ShopSettingsUpdate """ - Fetch tax rates. - + Fetch tax rates. + Requires one of the following permissions: MANAGE_SETTINGS. """ - shopFetchTaxRates: ShopFetchTaxRates @deprecated(reason: "\\n\\nDEPRECATED: this mutation will be removed in Saleor 4.0.") + shopFetchTaxRates: ShopFetchTaxRates + @deprecated(reason: "\\n\\nDEPRECATED: this mutation will be removed in Saleor 4.0.") """ - Creates/updates translations for shop settings. - + Creates/updates translations for shop settings. + Requires one of the following permissions: MANAGE_TRANSLATIONS. """ shopSettingsTranslate( - """Fields required to update shop settings translations.""" + """ + Fields required to update shop settings translations. + """ input: ShopSettingsTranslationInput! - """Translation language code.""" + """ + Translation language code. + """ languageCode: LanguageCodeEnum! ): ShopSettingsTranslate """ - Update the shop's address. If the `null` value is passed, the currently selected address will be deleted. - + Update the shop's address. If the `null` value is passed, the currently selected address will be deleted. + Requires one of the following permissions: MANAGE_SETTINGS. """ shopAddressUpdate( - """Fields required to update shop address.""" + """ + Fields required to update shop address. + """ input: AddressInput ): ShopAddressUpdate """ - Update shop order settings. - + Update shop order settings. + Requires one of the following permissions: MANAGE_ORDERS. """ orderSettingsUpdate( - """Fields required to update shop order settings.""" + """ + Fields required to update shop order settings. + """ input: OrderSettingsUpdateInput! ): OrderSettingsUpdate """ - Update gift card settings. - + Update gift card settings. + Requires one of the following permissions: MANAGE_GIFT_CARD. """ giftCardSettingsUpdate( - """Fields required to update gift card settings.""" + """ + Fields required to update gift card settings. + """ input: GiftCardSettingsUpdateInput! ): GiftCardSettingsUpdate """ - Manage shipping method's availability in channels. - + Manage shipping method's availability in channels. + Requires one of the following permissions: MANAGE_SHIPPING. """ shippingMethodChannelListingUpdate( - """ID of a shipping method to update.""" + """ + ID of a shipping method to update. + """ id: ID! - """Fields required to update shipping method channel listings.""" + """ + Fields required to update shipping method channel listings. + """ input: ShippingMethodChannelListingInput! ): ShippingMethodChannelListingUpdate """ - Creates a new shipping price. - + Creates a new shipping price. + Requires one of the following permissions: MANAGE_SHIPPING. """ shippingPriceCreate( - """Fields required to create a shipping price.""" + """ + Fields required to create a shipping price. + """ input: ShippingPriceInput! ): ShippingPriceCreate """ - Deletes a shipping price. - + Deletes a shipping price. + Requires one of the following permissions: MANAGE_SHIPPING. """ shippingPriceDelete( - """ID of a shipping price to delete.""" + """ + ID of a shipping price to delete. + """ id: ID! ): ShippingPriceDelete """ - Deletes shipping prices. - + Deletes shipping prices. + Requires one of the following permissions: MANAGE_SHIPPING. """ shippingPriceBulkDelete( - """List of shipping price IDs to delete.""" + """ + List of shipping price IDs to delete. + """ ids: [ID!]! ): ShippingPriceBulkDelete """ - Updates a new shipping price. - + Updates a new shipping price. + Requires one of the following permissions: MANAGE_SHIPPING. """ shippingPriceUpdate( - """ID of a shipping price to update.""" + """ + ID of a shipping price to update. + """ id: ID! - """Fields required to update a shipping price.""" + """ + Fields required to update a shipping price. + """ input: ShippingPriceInput! ): ShippingPriceUpdate """ - Creates/updates translations for a shipping method. - + Creates/updates translations for a shipping method. + Requires one of the following permissions: MANAGE_TRANSLATIONS. """ shippingPriceTranslate( - """ShippingMethodType ID or ShippingMethodTranslatableContent ID.""" + """ + ShippingMethodType ID or ShippingMethodTranslatableContent ID. + """ id: ID! input: ShippingPriceTranslationInput! - """Translation language code.""" + """ + Translation language code. + """ languageCode: LanguageCodeEnum! ): ShippingPriceTranslate """ - Exclude products from shipping price. - + Exclude products from shipping price. + Requires one of the following permissions: MANAGE_SHIPPING. """ shippingPriceExcludeProducts( - """ID of a shipping price.""" + """ + ID of a shipping price. + """ id: ID! - """Exclude products input.""" + """ + Exclude products input. + """ input: ShippingPriceExcludeProductsInput! ): ShippingPriceExcludeProducts """ - Remove product from excluded list for shipping price. - + Remove product from excluded list for shipping price. + Requires one of the following permissions: MANAGE_SHIPPING. """ shippingPriceRemoveProductFromExclude( - """ID of a shipping price.""" + """ + ID of a shipping price. + """ id: ID! - """List of products which will be removed from excluded list.""" + """ + List of products which will be removed from excluded list. + """ products: [ID!]! ): ShippingPriceRemoveProductFromExclude """ - Creates a new shipping zone. - + Creates a new shipping zone. + Requires one of the following permissions: MANAGE_SHIPPING. """ shippingZoneCreate( - """Fields required to create a shipping zone.""" + """ + Fields required to create a shipping zone. + """ input: ShippingZoneCreateInput! ): ShippingZoneCreate """ - Deletes a shipping zone. - + Deletes a shipping zone. + Requires one of the following permissions: MANAGE_SHIPPING. """ shippingZoneDelete( - """ID of a shipping zone to delete.""" + """ + ID of a shipping zone to delete. + """ id: ID! ): ShippingZoneDelete """ - Deletes shipping zones. - + Deletes shipping zones. + Requires one of the following permissions: MANAGE_SHIPPING. """ shippingZoneBulkDelete( - """List of shipping zone IDs to delete.""" + """ + List of shipping zone IDs to delete. + """ ids: [ID!]! ): ShippingZoneBulkDelete """ - Updates a new shipping zone. - + Updates a new shipping zone. + Requires one of the following permissions: MANAGE_SHIPPING. """ shippingZoneUpdate( - """ID of a shipping zone to update.""" + """ + ID of a shipping zone to update. + """ id: ID! - """Fields required to update a shipping zone.""" + """ + Fields required to update a shipping zone. + """ input: ShippingZoneUpdateInput! ): ShippingZoneUpdate """ - Assign attributes to a given product type. - + Assign attributes to a given product type. + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ productAttributeAssign( - """The operations to perform.""" + """ + The operations to perform. + """ operations: [ProductAttributeAssignInput!]! - """ID of the product type to assign the attributes into.""" + """ + ID of the product type to assign the attributes into. + """ productTypeId: ID! ): ProductAttributeAssign """ Update attributes assigned to product variant for given product type. - - Added in Saleor 3.1. - + + Added in Saleor 3.1. + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ productAttributeAssignmentUpdate( - """The operations to perform.""" + """ + The operations to perform. + """ operations: [ProductAttributeAssignmentUpdateInput!]! - """ID of the product type to assign the attributes into.""" + """ + ID of the product type to assign the attributes into. + """ productTypeId: ID! ): ProductAttributeAssignmentUpdate """ - Un-assign attributes from a given product type. - + Un-assign attributes from a given product type. + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ productAttributeUnassign( - """The IDs of the attributes to unassign.""" + """ + The IDs of the attributes to unassign. + """ attributeIds: [ID!]! - """ID of the product type from which the attributes should be unassigned.""" + """ + ID of the product type from which the attributes should be unassigned. + """ productTypeId: ID! ): ProductAttributeUnassign """ - Creates a new category. - + Creates a new category. + Requires one of the following permissions: MANAGE_PRODUCTS. """ categoryCreate( - """Fields required to create a category.""" + """ + Fields required to create a category. + """ input: CategoryInput! """ @@ -12416,605 +15906,757 @@ type Mutation { ): CategoryCreate """ - Deletes a category. - + Deletes a category. + Requires one of the following permissions: MANAGE_PRODUCTS. """ categoryDelete( - """ID of a category to delete.""" + """ + ID of a category to delete. + """ id: ID! ): CategoryDelete """ - Deletes categories. - + Deletes categories. + Requires one of the following permissions: MANAGE_PRODUCTS. """ categoryBulkDelete( - """List of category IDs to delete.""" + """ + List of category IDs to delete. + """ ids: [ID!]! ): CategoryBulkDelete """ - Updates a category. - + Updates a category. + Requires one of the following permissions: MANAGE_PRODUCTS. """ categoryUpdate( - """ID of a category to update.""" + """ + ID of a category to update. + """ id: ID! - """Fields required to update a category.""" + """ + Fields required to update a category. + """ input: CategoryInput! ): CategoryUpdate """ - Creates/updates translations for a category. - + Creates/updates translations for a category. + Requires one of the following permissions: MANAGE_TRANSLATIONS. """ categoryTranslate( - """Category ID or CategoryTranslatableContent ID.""" + """ + Category ID or CategoryTranslatableContent ID. + """ id: ID! input: TranslationInput! - """Translation language code.""" + """ + Translation language code. + """ languageCode: LanguageCodeEnum! ): CategoryTranslate """ - Adds products to a collection. - + Adds products to a collection. + Requires one of the following permissions: MANAGE_PRODUCTS. """ collectionAddProducts( - """ID of a collection.""" + """ + ID of a collection. + """ collectionId: ID! - """List of product IDs.""" + """ + List of product IDs. + """ products: [ID!]! ): CollectionAddProducts """ - Creates a new collection. - + Creates a new collection. + Requires one of the following permissions: MANAGE_PRODUCTS. """ collectionCreate( - """Fields required to create a collection.""" + """ + Fields required to create a collection. + """ input: CollectionCreateInput! ): CollectionCreate """ - Deletes a collection. - + Deletes a collection. + Requires one of the following permissions: MANAGE_PRODUCTS. """ collectionDelete( - """ID of a collection to delete.""" + """ + ID of a collection to delete. + """ id: ID! ): CollectionDelete """ - Reorder the products of a collection. - + Reorder the products of a collection. + Requires one of the following permissions: MANAGE_PRODUCTS. """ collectionReorderProducts( - """ID of a collection.""" + """ + ID of a collection. + """ collectionId: ID! - """The collection products position operations.""" + """ + The collection products position operations. + """ moves: [MoveProductInput!]! ): CollectionReorderProducts """ - Deletes collections. - + Deletes collections. + Requires one of the following permissions: MANAGE_PRODUCTS. """ collectionBulkDelete( - """List of collection IDs to delete.""" + """ + List of collection IDs to delete. + """ ids: [ID!]! ): CollectionBulkDelete """ - Remove products from a collection. - + Remove products from a collection. + Requires one of the following permissions: MANAGE_PRODUCTS. """ collectionRemoveProducts( - """ID of a collection.""" + """ + ID of a collection. + """ collectionId: ID! - """List of product IDs.""" + """ + List of product IDs. + """ products: [ID!]! ): CollectionRemoveProducts """ - Updates a collection. - + Updates a collection. + Requires one of the following permissions: MANAGE_PRODUCTS. """ collectionUpdate( - """ID of a collection to update.""" + """ + ID of a collection to update. + """ id: ID! - """Fields required to update a collection.""" + """ + Fields required to update a collection. + """ input: CollectionInput! ): CollectionUpdate """ - Creates/updates translations for a collection. - + Creates/updates translations for a collection. + Requires one of the following permissions: MANAGE_TRANSLATIONS. """ collectionTranslate( - """Collection ID or CollectionTranslatableContent ID.""" + """ + Collection ID or CollectionTranslatableContent ID. + """ id: ID! input: TranslationInput! - """Translation language code.""" + """ + Translation language code. + """ languageCode: LanguageCodeEnum! ): CollectionTranslate """ - Manage collection's availability in channels. - + Manage collection's availability in channels. + Requires one of the following permissions: MANAGE_PRODUCTS. """ collectionChannelListingUpdate( - """ID of a collection to update.""" + """ + ID of a collection to update. + """ id: ID! - """Fields required to create or update collection channel listings.""" + """ + Fields required to create or update collection channel listings. + """ input: CollectionChannelListingUpdateInput! ): CollectionChannelListingUpdate """ - Creates a new product. - + Creates a new product. + Requires one of the following permissions: MANAGE_PRODUCTS. """ productCreate( - """Fields required to create a product.""" + """ + Fields required to create a product. + """ input: ProductCreateInput! ): ProductCreate """ - Deletes a product. - + Deletes a product. + Requires one of the following permissions: MANAGE_PRODUCTS. """ productDelete( """ - External ID of a product to delete. - + External ID of a product to delete. + Added in Saleor 3.10. """ externalReference: String - """ID of a product to delete.""" + """ + ID of a product to delete. + """ id: ID ): ProductDelete """ - Deletes products. - + Deletes products. + Requires one of the following permissions: MANAGE_PRODUCTS. """ productBulkDelete( - """List of product IDs to delete.""" + """ + List of product IDs to delete. + """ ids: [ID!]! ): ProductBulkDelete """ - Updates an existing product. - + Updates an existing product. + Requires one of the following permissions: MANAGE_PRODUCTS. """ productUpdate( """ - External ID of a product to update. - + External ID of a product to update. + Added in Saleor 3.10. """ externalReference: String - """ID of a product to update.""" + """ + ID of a product to update. + """ id: ID - """Fields required to update a product.""" + """ + Fields required to update a product. + """ input: ProductInput! ): ProductUpdate """ - Creates/updates translations for a product. - + Creates/updates translations for a product. + Requires one of the following permissions: MANAGE_TRANSLATIONS. """ productTranslate( - """Product ID or ProductTranslatableContent ID.""" + """ + Product ID or ProductTranslatableContent ID. + """ id: ID! input: TranslationInput! - """Translation language code.""" + """ + Translation language code. + """ languageCode: LanguageCodeEnum! ): ProductTranslate """ - Manage product's availability in channels. - + Manage product's availability in channels. + Requires one of the following permissions: MANAGE_PRODUCTS. """ productChannelListingUpdate( - """ID of a product to update.""" + """ + ID of a product to update. + """ id: ID! - """Fields required to create or update product channel listings.""" + """ + Fields required to create or update product channel listings. + """ input: ProductChannelListingUpdateInput! ): ProductChannelListingUpdate """ - Create a media object (image or video URL) associated with product. For image, this mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec - + Create a media object (image or video URL) associated with product. For image, this mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + Requires one of the following permissions: MANAGE_PRODUCTS. """ productMediaCreate( - """Fields required to create a product media.""" + """ + Fields required to create a product media. + """ input: ProductMediaCreateInput! ): ProductMediaCreate """ - Reorder the variants of a product. Mutation updates updated_at on product and triggers PRODUCT_UPDATED webhook. - + Reorder the variants of a product. Mutation updates updated_at on product and triggers PRODUCT_UPDATED webhook. + Requires one of the following permissions: MANAGE_PRODUCTS. """ productVariantReorder( - """The list of variant reordering operations.""" + """ + The list of variant reordering operations. + """ moves: [ReorderInput!]! - """Id of product that variants order will be altered.""" + """ + Id of product that variants order will be altered. + """ productId: ID! ): ProductVariantReorder """ - Deletes a product media. - + Deletes a product media. + Requires one of the following permissions: MANAGE_PRODUCTS. """ productMediaDelete( - """ID of a product media to delete.""" + """ + ID of a product media to delete. + """ id: ID! ): ProductMediaDelete """ - Deletes product media. - + Deletes product media. + Requires one of the following permissions: MANAGE_PRODUCTS. """ productMediaBulkDelete( - """List of product media IDs to delete.""" + """ + List of product media IDs to delete. + """ ids: [ID!]! ): ProductMediaBulkDelete """ - Changes ordering of the product media. - + Changes ordering of the product media. + Requires one of the following permissions: MANAGE_PRODUCTS. """ productMediaReorder( - """IDs of a product media in the desired order.""" + """ + IDs of a product media in the desired order. + """ mediaIds: [ID!]! - """ID of product that media order will be altered.""" + """ + ID of product that media order will be altered. + """ productId: ID! ): ProductMediaReorder """ - Updates a product media. - + Updates a product media. + Requires one of the following permissions: MANAGE_PRODUCTS. """ productMediaUpdate( - """ID of a product media to update.""" + """ + ID of a product media to update. + """ id: ID! - """Fields required to update a product media.""" + """ + Fields required to update a product media. + """ input: ProductMediaUpdateInput! ): ProductMediaUpdate """ - Creates a new product type. - + Creates a new product type. + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ productTypeCreate( - """Fields required to create a product type.""" + """ + Fields required to create a product type. + """ input: ProductTypeInput! ): ProductTypeCreate """ - Deletes a product type. - + Deletes a product type. + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ productTypeDelete( - """ID of a product type to delete.""" + """ + ID of a product type to delete. + """ id: ID! ): ProductTypeDelete """ - Deletes product types. - + Deletes product types. + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ productTypeBulkDelete( - """List of product type IDs to delete.""" + """ + List of product type IDs to delete. + """ ids: [ID!]! ): ProductTypeBulkDelete """ - Updates an existing product type. - + Updates an existing product type. + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ productTypeUpdate( - """ID of a product type to update.""" + """ + ID of a product type to update. + """ id: ID! - """Fields required to update a product type.""" + """ + Fields required to update a product type. + """ input: ProductTypeInput! ): ProductTypeUpdate """ - Reorder the attributes of a product type. - + Reorder the attributes of a product type. + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ productTypeReorderAttributes( - """The list of attribute reordering operations.""" + """ + The list of attribute reordering operations. + """ moves: [ReorderInput!]! - """ID of a product type.""" + """ + ID of a product type. + """ productTypeId: ID! - """The attribute type to reorder.""" + """ + The attribute type to reorder. + """ type: ProductAttributeType! ): ProductTypeReorderAttributes """ - Reorder product attribute values. - + Reorder product attribute values. + Requires one of the following permissions: MANAGE_PRODUCTS. """ productReorderAttributeValues( - """ID of an attribute.""" + """ + ID of an attribute. + """ attributeId: ID! - """The list of reordering operations for given attribute values.""" + """ + The list of reordering operations for given attribute values. + """ moves: [ReorderInput!]! - """ID of a product.""" + """ + ID of a product. + """ productId: ID! ): ProductReorderAttributeValues """ - Create new digital content. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec - + Create new digital content. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + Requires one of the following permissions: MANAGE_PRODUCTS. """ digitalContentCreate( - """Fields required to create a digital content.""" + """ + Fields required to create a digital content. + """ input: DigitalContentUploadInput! - """ID of a product variant to upload digital content.""" + """ + ID of a product variant to upload digital content. + """ variantId: ID! ): DigitalContentCreate """ - Remove digital content assigned to given variant. - + Remove digital content assigned to given variant. + Requires one of the following permissions: MANAGE_PRODUCTS. """ digitalContentDelete( - """ID of a product variant with digital content to remove.""" + """ + ID of a product variant with digital content to remove. + """ variantId: ID! ): DigitalContentDelete """ - Update digital content. - + Update digital content. + Requires one of the following permissions: MANAGE_PRODUCTS. """ digitalContentUpdate( - """Fields required to update a digital content.""" + """ + Fields required to update a digital content. + """ input: DigitalContentInput! - """ID of a product variant with digital content to update.""" + """ + ID of a product variant with digital content to update. + """ variantId: ID! ): DigitalContentUpdate """ - Generate new URL to digital content. - + Generate new URL to digital content. + Requires one of the following permissions: MANAGE_PRODUCTS. """ digitalContentUrlCreate( - """Fields required to create a new url.""" + """ + Fields required to create a new url. + """ input: DigitalContentUrlCreateInput! ): DigitalContentUrlCreate """ - Creates a new variant for a product. - + Creates a new variant for a product. + Requires one of the following permissions: MANAGE_PRODUCTS. """ productVariantCreate( - """Fields required to create a product variant.""" + """ + Fields required to create a product variant. + """ input: ProductVariantCreateInput! ): ProductVariantCreate """ - Deletes a product variant. - + Deletes a product variant. + Requires one of the following permissions: MANAGE_PRODUCTS. """ productVariantDelete( """ - External ID of a product variant to update. - + External ID of a product variant to update. + Added in Saleor 3.10. """ externalReference: String - """ID of a product variant to delete.""" + """ + ID of a product variant to delete. + """ id: ID """ SKU of a product variant to delete. - + Added in Saleor 3.8. """ sku: String ): ProductVariantDelete """ - Creates product variants for a given product. - + Creates product variants for a given product. + Requires one of the following permissions: MANAGE_PRODUCTS. """ productVariantBulkCreate( - """ID of the product to create the variants for.""" + """ + ID of the product to create the variants for. + """ product: ID! - """Input list of product variants to create.""" + """ + Input list of product variants to create. + """ variants: [ProductVariantBulkCreateInput!]! ): ProductVariantBulkCreate """ - Deletes product variants. - + Deletes product variants. + Requires one of the following permissions: MANAGE_PRODUCTS. """ productVariantBulkDelete( - """List of product variant IDs to delete.""" + """ + List of product variant IDs to delete. + """ ids: [ID!] """ List of product variant SKUs to delete. - + Added in Saleor 3.8. """ skus: [String!] ): ProductVariantBulkDelete """ - Creates stocks for product variant. - + Creates stocks for product variant. + Requires one of the following permissions: MANAGE_PRODUCTS. """ productVariantStocksCreate( - """Input list of stocks to create.""" + """ + Input list of stocks to create. + """ stocks: [StockInput!]! - """ID of a product variant for which stocks will be created.""" + """ + ID of a product variant for which stocks will be created. + """ variantId: ID! ): ProductVariantStocksCreate """ - Delete stocks from product variant. - + Delete stocks from product variant. + Requires one of the following permissions: MANAGE_PRODUCTS. """ productVariantStocksDelete( - """SKU of product variant for which stocks will be deleted.""" + """ + SKU of product variant for which stocks will be deleted. + """ sku: String - """ID of product variant for which stocks will be deleted.""" + """ + ID of product variant for which stocks will be deleted. + """ variantId: ID - """Input list of warehouse IDs.""" + """ + Input list of warehouse IDs. + """ warehouseIds: [ID!] ): ProductVariantStocksDelete """ - Update stocks for product variant. - + Update stocks for product variant. + Requires one of the following permissions: MANAGE_PRODUCTS. """ productVariantStocksUpdate( - """SKU of product variant for which stocks will be updated.""" + """ + SKU of product variant for which stocks will be updated. + """ sku: String - """Input list of stocks to create or update.""" + """ + Input list of stocks to create or update. + """ stocks: [StockInput!]! - """ID of a product variant for which stocks will be updated.""" + """ + ID of a product variant for which stocks will be updated. + """ variantId: ID ): ProductVariantStocksUpdate """ - Updates an existing variant for product. - + Updates an existing variant for product. + Requires one of the following permissions: MANAGE_PRODUCTS. """ productVariantUpdate( """ - External ID of a product variant to update. - + External ID of a product variant to update. + Added in Saleor 3.10. """ externalReference: String - """ID of a product to update.""" + """ + ID of a product to update. + """ id: ID - """Fields required to update a product variant.""" + """ + Fields required to update a product variant. + """ input: ProductVariantInput! """ SKU of a product variant to update. - + Added in Saleor 3.8. """ sku: String ): ProductVariantUpdate """ - Set default variant for a product. Mutation triggers PRODUCT_UPDATED webhook. - + Set default variant for a product. Mutation triggers PRODUCT_UPDATED webhook. + Requires one of the following permissions: MANAGE_PRODUCTS. """ productVariantSetDefault( - """Id of a product that will have the default variant set.""" + """ + Id of a product that will have the default variant set. + """ productId: ID! - """Id of a variant that will be set as default.""" + """ + Id of a variant that will be set as default. + """ variantId: ID! ): ProductVariantSetDefault """ - Creates/updates translations for a product variant. - + Creates/updates translations for a product variant. + Requires one of the following permissions: MANAGE_TRANSLATIONS. """ productVariantTranslate( - """ProductVariant ID or ProductVariantTranslatableContent ID.""" + """ + ProductVariant ID or ProductVariantTranslatableContent ID. + """ id: ID! input: NameTranslationInput! - """Translation language code.""" + """ + Translation language code. + """ languageCode: LanguageCodeEnum! ): ProductVariantTranslate """ - Manage product variant prices in channels. - + Manage product variant prices in channels. + Requires one of the following permissions: MANAGE_PRODUCTS. """ productVariantChannelListingUpdate( - """ID of a product variant to update.""" + """ + ID of a product variant to update. + """ id: ID """ @@ -13024,169 +16666,221 @@ type Mutation { """ SKU of a product variant to update. - + Added in Saleor 3.8. """ sku: String ): ProductVariantChannelListingUpdate """ - Reorder product variant attribute values. - + Reorder product variant attribute values. + Requires one of the following permissions: MANAGE_PRODUCTS. """ productVariantReorderAttributeValues( - """ID of an attribute.""" + """ + ID of an attribute. + """ attributeId: ID! - """The list of reordering operations for given attribute values.""" + """ + The list of reordering operations for given attribute values. + """ moves: [ReorderInput!]! - """ID of a product variant.""" + """ + ID of a product variant. + """ variantId: ID! ): ProductVariantReorderAttributeValues """ Deactivates product variant preorder. It changes all preorder allocation into regular allocation. - + Added in Saleor 3.1. - - Note: this API is currently in Feature Preview and can be subject to changes at later point. - + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + Requires one of the following permissions: MANAGE_PRODUCTS. """ productVariantPreorderDeactivate( - """ID of a variant which preorder should be deactivated.""" + """ + ID of a variant which preorder should be deactivated. + """ id: ID! ): ProductVariantPreorderDeactivate """ - Assign an media to a product variant. - + Assign an media to a product variant. + Requires one of the following permissions: MANAGE_PRODUCTS. """ variantMediaAssign( - """ID of a product media to assign to a variant.""" + """ + ID of a product media to assign to a variant. + """ mediaId: ID! - """ID of a product variant.""" + """ + ID of a product variant. + """ variantId: ID! ): VariantMediaAssign """ - Unassign an media from a product variant. - + Unassign an media from a product variant. + Requires one of the following permissions: MANAGE_PRODUCTS. """ variantMediaUnassign( - """ID of a product media to unassign from a variant.""" + """ + ID of a product media to unassign from a variant. + """ mediaId: ID! - """ID of a product variant.""" + """ + ID of a product variant. + """ variantId: ID! ): VariantMediaUnassign """ - Captures the authorized payment amount. - + Captures the authorized payment amount. + Requires one of the following permissions: MANAGE_ORDERS. """ paymentCapture( - """Transaction amount.""" + """ + Transaction amount. + """ amount: PositiveDecimal - """Payment ID.""" + """ + Payment ID. + """ paymentId: ID! ): PaymentCapture """ - Refunds the captured payment amount. - + Refunds the captured payment amount. + Requires one of the following permissions: MANAGE_ORDERS. """ paymentRefund( - """Transaction amount.""" + """ + Transaction amount. + """ amount: PositiveDecimal - """Payment ID.""" + """ + Payment ID. + """ paymentId: ID! ): PaymentRefund """ - Voids the authorized payment. - + Voids the authorized payment. + Requires one of the following permissions: MANAGE_ORDERS. """ paymentVoid( - """Payment ID.""" + """ + Payment ID. + """ paymentId: ID! ): PaymentVoid - """Initializes payment process when it is required by gateway.""" + """ + Initializes payment process when it is required by gateway. + """ paymentInitialize( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String - """A gateway name used to initialize the payment.""" + """ + A gateway name used to initialize the payment. + """ gateway: String! - """Client-side generated data required to initialize the payment.""" + """ + Client-side generated data required to initialize the payment. + """ paymentData: JSONString ): PaymentInitialize - """Check payment balance.""" + """ + Check payment balance. + """ paymentCheckBalance( - """Fields required to check payment balance.""" + """ + Fields required to check payment balance. + """ input: PaymentCheckBalanceInput! ): PaymentCheckBalance """ Create transaction for checkout or order. Requires the following permissions: AUTHENTICATED_APP and HANDLE_PAYMENTS. - + Added in Saleor 3.4. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ transactionCreate( - """The ID of the checkout or order.""" + """ + The ID of the checkout or order. + """ id: ID! - """Input data required to create a new transaction object.""" + """ + Input data required to create a new transaction object. + """ transaction: TransactionCreateInput! - """Data that defines a transaction event.""" + """ + Data that defines a transaction event. + """ transactionEvent: TransactionEventInput ): TransactionCreate """ Create transaction for checkout or order. Requires the following permissions: AUTHENTICATED_APP and HANDLE_PAYMENTS. - + Added in Saleor 3.4. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ transactionUpdate( - """The ID of the transaction.""" + """ + The ID of the transaction. + """ id: ID! - """Input data required to create a new transaction object.""" + """ + Input data required to create a new transaction object. + """ transaction: TransactionUpdateInput - """Data that defines a transaction transaction.""" + """ + Data that defines a transaction transaction. + """ transactionEvent: TransactionEventInput ): TransactionUpdate """ Request an action for payment transaction. - + Added in Saleor 3.4. - - Note: this API is currently in Feature Preview and can be subject to changes at later point. - + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + Requires one of the following permissions: HANDLE_PAYMENTS, MANAGE_ORDERS. """ transactionRequestAction( - """Determines the action type.""" + """ + Determines the action type. + """ actionType: TransactionActionEnum! """ @@ -13194,555 +16888,701 @@ type Mutation { """ amount: PositiveDecimal - """The ID of the transaction.""" + """ + The ID of the transaction. + """ id: ID! ): TransactionRequestAction """ - Creates a new page. - + Creates a new page. + Requires one of the following permissions: MANAGE_PAGES. """ pageCreate( - """Fields required to create a page.""" + """ + Fields required to create a page. + """ input: PageCreateInput! ): PageCreate """ - Deletes a page. - + Deletes a page. + Requires one of the following permissions: MANAGE_PAGES. """ pageDelete( - """ID of a page to delete.""" + """ + ID of a page to delete. + """ id: ID! ): PageDelete """ - Deletes pages. - + Deletes pages. + Requires one of the following permissions: MANAGE_PAGES. """ pageBulkDelete( - """List of page IDs to delete.""" + """ + List of page IDs to delete. + """ ids: [ID!]! ): PageBulkDelete """ - Publish pages. - + Publish pages. + Requires one of the following permissions: MANAGE_PAGES. """ pageBulkPublish( - """List of page IDs to (un)publish.""" + """ + List of page IDs to (un)publish. + """ ids: [ID!]! - """Determine if pages will be published or not.""" + """ + Determine if pages will be published or not. + """ isPublished: Boolean! ): PageBulkPublish """ - Updates an existing page. - + Updates an existing page. + Requires one of the following permissions: MANAGE_PAGES. """ pageUpdate( - """ID of a page to update.""" + """ + ID of a page to update. + """ id: ID! - """Fields required to update a page.""" + """ + Fields required to update a page. + """ input: PageInput! ): PageUpdate """ - Creates/updates translations for a page. - + Creates/updates translations for a page. + Requires one of the following permissions: MANAGE_TRANSLATIONS. """ pageTranslate( - """Page ID or PageTranslatableContent ID.""" + """ + Page ID or PageTranslatableContent ID. + """ id: ID! input: PageTranslationInput! - """Translation language code.""" + """ + Translation language code. + """ languageCode: LanguageCodeEnum! ): PageTranslate """ - Create a new page type. - + Create a new page type. + Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ pageTypeCreate( - """Fields required to create page type.""" + """ + Fields required to create page type. + """ input: PageTypeCreateInput! ): PageTypeCreate """ - Update page type. - + Update page type. + Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ pageTypeUpdate( - """ID of the page type to update.""" + """ + ID of the page type to update. + """ id: ID - """Fields required to update page type.""" + """ + Fields required to update page type. + """ input: PageTypeUpdateInput! ): PageTypeUpdate """ - Delete a page type. - + Delete a page type. + Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ pageTypeDelete( - """ID of the page type to delete.""" + """ + ID of the page type to delete. + """ id: ID! ): PageTypeDelete """ - Delete page types. - + Delete page types. + Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ pageTypeBulkDelete( - """List of page type IDs to delete""" + """ + List of page type IDs to delete + """ ids: [ID!]! ): PageTypeBulkDelete """ - Assign attributes to a given page type. - + Assign attributes to a given page type. + Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ pageAttributeAssign( - """The IDs of the attributes to assign.""" + """ + The IDs of the attributes to assign. + """ attributeIds: [ID!]! - """ID of the page type to assign the attributes into.""" + """ + ID of the page type to assign the attributes into. + """ pageTypeId: ID! ): PageAttributeAssign """ - Unassign attributes from a given page type. - + Unassign attributes from a given page type. + Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ pageAttributeUnassign( - """The IDs of the attributes to unassign.""" + """ + The IDs of the attributes to unassign. + """ attributeIds: [ID!]! - """ID of the page type from which the attributes should be unassign.""" + """ + ID of the page type from which the attributes should be unassign. + """ pageTypeId: ID! ): PageAttributeUnassign """ - Reorder the attributes of a page type. - + Reorder the attributes of a page type. + Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ pageTypeReorderAttributes( - """The list of attribute reordering operations.""" + """ + The list of attribute reordering operations. + """ moves: [ReorderInput!]! - """ID of a page type.""" + """ + ID of a page type. + """ pageTypeId: ID! ): PageTypeReorderAttributes """ - Reorder page attribute values. - + Reorder page attribute values. + Requires one of the following permissions: MANAGE_PAGES. """ pageReorderAttributeValues( - """ID of an attribute.""" + """ + ID of an attribute. + """ attributeId: ID! - """The list of reordering operations for given attribute values.""" + """ + The list of reordering operations for given attribute values. + """ moves: [ReorderInput!]! - """ID of a page.""" + """ + ID of a page. + """ pageId: ID! ): PageReorderAttributeValues """ - Completes creating an order. - + Completes creating an order. + Requires one of the following permissions: MANAGE_ORDERS. """ draftOrderComplete( - """ID of the order that will be completed.""" + """ + ID of the order that will be completed. + """ id: ID! ): DraftOrderComplete """ - Creates a new draft order. - + Creates a new draft order. + Requires one of the following permissions: MANAGE_ORDERS. """ draftOrderCreate( - """Fields required to create an order.""" + """ + Fields required to create an order. + """ input: DraftOrderCreateInput! ): DraftOrderCreate """ - Deletes a draft order. - + Deletes a draft order. + Requires one of the following permissions: MANAGE_ORDERS. """ draftOrderDelete( """ - External ID of a product to delete. - + External ID of a product to delete. + Added in Saleor 3.10. """ externalReference: String - """ID of a product to delete.""" + """ + ID of a product to delete. + """ id: ID ): DraftOrderDelete """ - Deletes draft orders. - + Deletes draft orders. + Requires one of the following permissions: MANAGE_ORDERS. """ draftOrderBulkDelete( - """List of draft order IDs to delete.""" + """ + List of draft order IDs to delete. + """ ids: [ID!]! ): DraftOrderBulkDelete """ - Deletes order lines. - + Deletes order lines. + Requires one of the following permissions: MANAGE_ORDERS. """ draftOrderLinesBulkDelete( - """List of order lines IDs to delete.""" + """ + List of order lines IDs to delete. + """ ids: [ID!]! ): DraftOrderLinesBulkDelete @deprecated(reason: "This field will be removed in Saleor 4.0.") """ - Updates a draft order. - + Updates a draft order. + Requires one of the following permissions: MANAGE_ORDERS. """ draftOrderUpdate( """ - External ID of a draft order to update. - + External ID of a draft order to update. + Added in Saleor 3.10. """ externalReference: String - """ID of a draft order to update.""" + """ + ID of a draft order to update. + """ id: ID - """Fields required to update an order.""" + """ + Fields required to update an order. + """ input: DraftOrderInput! ): DraftOrderUpdate """ - Adds note to the order. - + Adds note to the order. + Requires one of the following permissions: MANAGE_ORDERS. """ orderAddNote( - """ID of the order to add a note for.""" + """ + ID of the order to add a note for. + """ order: ID! - """Fields required to create a note for the order.""" + """ + Fields required to create a note for the order. + """ input: OrderAddNoteInput! ): OrderAddNote """ - Cancel an order. - + Cancel an order. + Requires one of the following permissions: MANAGE_ORDERS. """ orderCancel( - """ID of the order to cancel.""" + """ + ID of the order to cancel. + """ id: ID! ): OrderCancel """ - Capture an order. - + Capture an order. + Requires one of the following permissions: MANAGE_ORDERS. """ orderCapture( - """Amount of money to capture.""" + """ + Amount of money to capture. + """ amount: PositiveDecimal! - """ID of the order to capture.""" + """ + ID of the order to capture. + """ id: ID! ): OrderCapture """ - Confirms an unconfirmed order by changing status to unfulfilled. - + Confirms an unconfirmed order by changing status to unfulfilled. + Requires one of the following permissions: MANAGE_ORDERS. """ orderConfirm( - """ID of an order to confirm.""" + """ + ID of an order to confirm. + """ id: ID! ): OrderConfirm """ - Creates new fulfillments for an order. - + Creates new fulfillments for an order. + Requires one of the following permissions: MANAGE_ORDERS. """ orderFulfill( - """Fields required to create a fulfillment.""" + """ + Fields required to create a fulfillment. + """ input: OrderFulfillInput! - """ID of the order to be fulfilled.""" + """ + ID of the order to be fulfilled. + """ order: ID ): OrderFulfill """ - Cancels existing fulfillment and optionally restocks items. - + Cancels existing fulfillment and optionally restocks items. + Requires one of the following permissions: MANAGE_ORDERS. """ orderFulfillmentCancel( - """ID of a fulfillment to cancel.""" + """ + ID of a fulfillment to cancel. + """ id: ID! - """Fields required to cancel a fulfillment.""" + """ + Fields required to cancel a fulfillment. + """ input: FulfillmentCancelInput ): FulfillmentCancel """ Approve existing fulfillment. - - Added in Saleor 3.1. - + + Added in Saleor 3.1. + Requires one of the following permissions: MANAGE_ORDERS. """ orderFulfillmentApprove( - """True if stock could be exceeded.""" + """ + True if stock could be exceeded. + """ allowStockToBeExceeded: Boolean = false - """ID of a fulfillment to approve.""" + """ + ID of a fulfillment to approve. + """ id: ID! - """True if confirmation email should be send.""" + """ + True if confirmation email should be send. + """ notifyCustomer: Boolean! ): FulfillmentApprove """ - Updates a fulfillment for an order. - + Updates a fulfillment for an order. + Requires one of the following permissions: MANAGE_ORDERS. """ orderFulfillmentUpdateTracking( - """ID of a fulfillment to update.""" + """ + ID of a fulfillment to update. + """ id: ID! - """Fields required to update a fulfillment.""" + """ + Fields required to update a fulfillment. + """ input: FulfillmentUpdateTrackingInput! ): FulfillmentUpdateTracking """ - Refund products. - + Refund products. + Requires one of the following permissions: MANAGE_ORDERS. """ orderFulfillmentRefundProducts( - """Fields required to create an refund fulfillment.""" + """ + Fields required to create an refund fulfillment. + """ input: OrderRefundProductsInput! - """ID of the order to be refunded.""" + """ + ID of the order to be refunded. + """ order: ID! ): FulfillmentRefundProducts """ - Return products. - + Return products. + Requires one of the following permissions: MANAGE_ORDERS. """ orderFulfillmentReturnProducts( - """Fields required to return products.""" + """ + Fields required to return products. + """ input: OrderReturnProductsInput! - """ID of the order to be returned.""" + """ + ID of the order to be returned. + """ order: ID! ): FulfillmentReturnProducts """ - Create order lines for an order. - + Create order lines for an order. + Requires one of the following permissions: MANAGE_ORDERS. """ orderLinesCreate( - """ID of the order to add the lines to.""" + """ + ID of the order to add the lines to. + """ id: ID! - """Fields required to add order lines.""" + """ + Fields required to add order lines. + """ input: [OrderLineCreateInput!]! ): OrderLinesCreate """ - Deletes an order line from an order. - + Deletes an order line from an order. + Requires one of the following permissions: MANAGE_ORDERS. """ orderLineDelete( - """ID of the order line to delete.""" + """ + ID of the order line to delete. + """ id: ID! ): OrderLineDelete """ - Updates an order line of an order. - + Updates an order line of an order. + Requires one of the following permissions: MANAGE_ORDERS. """ orderLineUpdate( - """ID of the order line to update.""" + """ + ID of the order line to update. + """ id: ID! - """Fields required to update an order line.""" + """ + Fields required to update an order line. + """ input: OrderLineInput! ): OrderLineUpdate """ - Adds discount to the order. - + Adds discount to the order. + Requires one of the following permissions: MANAGE_ORDERS. """ orderDiscountAdd( - """Fields required to create a discount for the order.""" + """ + Fields required to create a discount for the order. + """ input: OrderDiscountCommonInput! - """ID of an order to discount.""" + """ + ID of an order to discount. + """ orderId: ID! ): OrderDiscountAdd """ - Update discount for the order. - + Update discount for the order. + Requires one of the following permissions: MANAGE_ORDERS. """ orderDiscountUpdate( - """ID of a discount to update.""" + """ + ID of a discount to update. + """ discountId: ID! - """Fields required to update a discount for the order.""" + """ + Fields required to update a discount for the order. + """ input: OrderDiscountCommonInput! ): OrderDiscountUpdate """ - Remove discount from the order. - + Remove discount from the order. + Requires one of the following permissions: MANAGE_ORDERS. """ orderDiscountDelete( - """ID of a discount to remove.""" + """ + ID of a discount to remove. + """ discountId: ID! ): OrderDiscountDelete """ - Update discount for the order line. - + Update discount for the order line. + Requires one of the following permissions: MANAGE_ORDERS. """ orderLineDiscountUpdate( - """Fields required to update price for the order line.""" + """ + Fields required to update price for the order line. + """ input: OrderDiscountCommonInput! - """ID of a order line to update price""" + """ + ID of a order line to update price + """ orderLineId: ID! ): OrderLineDiscountUpdate """ - Remove discount applied to the order line. - + Remove discount applied to the order line. + Requires one of the following permissions: MANAGE_ORDERS. """ orderLineDiscountRemove( - """ID of a order line to remove its discount""" + """ + ID of a order line to remove its discount + """ orderLineId: ID! ): OrderLineDiscountRemove """ - Mark order as manually paid. - + Mark order as manually paid. + Requires one of the following permissions: MANAGE_ORDERS. """ orderMarkAsPaid( - """ID of the order to mark paid.""" + """ + ID of the order to mark paid. + """ id: ID! - """The external transaction reference.""" + """ + The external transaction reference. + """ transactionReference: String ): OrderMarkAsPaid """ - Refund an order. - + Refund an order. + Requires one of the following permissions: MANAGE_ORDERS. """ orderRefund( - """Amount of money to refund.""" + """ + Amount of money to refund. + """ amount: PositiveDecimal! - """ID of the order to refund.""" + """ + ID of the order to refund. + """ id: ID! ): OrderRefund """ - Updates an order. - + Updates an order. + Requires one of the following permissions: MANAGE_ORDERS. """ orderUpdate( """ - External ID of an order to update. - + External ID of an order to update. + Added in Saleor 3.10. """ externalReference: String - """ID of an order to update.""" + """ + ID of an order to update. + """ id: ID - """Fields required to update an order.""" + """ + Fields required to update an order. + """ input: OrderUpdateInput! ): OrderUpdate """ - Updates a shipping method of the order. Requires shipping method ID to update, when null is passed then currently assigned shipping method is removed. - + Updates a shipping method of the order. Requires shipping method ID to update, when null is passed then currently assigned shipping method is removed. + Requires one of the following permissions: MANAGE_ORDERS. """ orderUpdateShipping( - """ID of the order to update a shipping method.""" + """ + ID of the order to update a shipping method. + """ order: ID! - """Fields required to change shipping method of the order.""" + """ + Fields required to change shipping method of the order. + """ input: OrderUpdateShippingInput! ): OrderUpdateShipping """ - Void an order. - + Void an order. + Requires one of the following permissions: MANAGE_ORDERS. """ orderVoid( - """ID of the order to void.""" + """ + ID of the order to void. + """ id: ID! ): OrderVoid """ - Cancels orders. - + Cancels orders. + Requires one of the following permissions: MANAGE_ORDERS. """ orderBulkCancel( - """List of orders IDs to cancel.""" + """ + List of orders IDs to cancel. + """ ids: [ID!]! ): OrderBulkCancel @@ -13750,10 +17590,14 @@ type Mutation { Delete metadata of an object. To use it, you need to have access to the modified object. """ deleteMetadata( - """ID or token (for Order and Checkout) of an object to update.""" + """ + ID or token (for Order and Checkout) of an object to update. + """ id: ID! - """Metadata keys to delete.""" + """ + Metadata keys to delete. + """ keys: [String!]! ): DeleteMetadata @@ -13761,10 +17605,14 @@ type Mutation { Delete object's private metadata. To use it, you need to be an authenticated staff user or an app and have access to the modified object. """ deletePrivateMetadata( - """ID or token (for Order and Checkout) of an object to update.""" + """ + ID or token (for Order and Checkout) of an object to update. + """ id: ID! - """Metadata keys to delete.""" + """ + Metadata keys to delete. + """ keys: [String!]! ): DeletePrivateMetadata @@ -13772,10 +17620,14 @@ type Mutation { Updates metadata of an object. To use it, you need to have access to the modified object. """ updateMetadata( - """ID or token (for Order and Checkout) of an object to update.""" + """ + ID or token (for Order and Checkout) of an object to update. + """ id: ID! - """Fields required to update the object's metadata.""" + """ + Fields required to update the object's metadata. + """ input: [MetadataInput!]! ): UpdateMetadata @@ -13783,72 +17635,90 @@ type Mutation { Updates private metadata of an object. To use it, you need to be an authenticated staff user or an app and have access to the modified object. """ updatePrivateMetadata( - """ID or token (for Order and Checkout) of an object to update.""" + """ + ID or token (for Order and Checkout) of an object to update. + """ id: ID! - """Fields required to update the object's metadata.""" + """ + Fields required to update the object's metadata. + """ input: [MetadataInput!]! ): UpdatePrivateMetadata """ - Assigns storefront's navigation menus. - + Assigns storefront's navigation menus. + Requires one of the following permissions: MANAGE_MENUS, MANAGE_SETTINGS. """ assignNavigation( - """ID of the menu.""" + """ + ID of the menu. + """ menu: ID - """Type of the navigation bar to assign the menu to.""" + """ + Type of the navigation bar to assign the menu to. + """ navigationType: NavigationType! ): AssignNavigation """ - Creates a new Menu. - + Creates a new Menu. + Requires one of the following permissions: MANAGE_MENUS. """ menuCreate( - """Fields required to create a menu.""" + """ + Fields required to create a menu. + """ input: MenuCreateInput! ): MenuCreate """ - Deletes a menu. - + Deletes a menu. + Requires one of the following permissions: MANAGE_MENUS. """ menuDelete( - """ID of a menu to delete.""" + """ + ID of a menu to delete. + """ id: ID! ): MenuDelete """ - Deletes menus. - + Deletes menus. + Requires one of the following permissions: MANAGE_MENUS. """ menuBulkDelete( - """List of menu IDs to delete.""" + """ + List of menu IDs to delete. + """ ids: [ID!]! ): MenuBulkDelete """ - Updates a menu. - + Updates a menu. + Requires one of the following permissions: MANAGE_MENUS. """ menuUpdate( - """ID of a menu to update.""" + """ + ID of a menu to update. + """ id: ID! - """Fields required to update a menu.""" + """ + Fields required to update a menu. + """ input: MenuInput! ): MenuUpdate """ - Creates a new menu item. - + Creates a new menu item. + Requires one of the following permissions: MANAGE_MENUS. """ menuItemCreate( @@ -13859,32 +17729,38 @@ type Mutation { ): MenuItemCreate """ - Deletes a menu item. - + Deletes a menu item. + Requires one of the following permissions: MANAGE_MENUS. """ menuItemDelete( - """ID of a menu item to delete.""" + """ + ID of a menu item to delete. + """ id: ID! ): MenuItemDelete """ - Deletes menu items. - + Deletes menu items. + Requires one of the following permissions: MANAGE_MENUS. """ menuItemBulkDelete( - """List of menu item IDs to delete.""" + """ + List of menu item IDs to delete. + """ ids: [ID!]! ): MenuItemBulkDelete """ - Updates a menu item. - + Updates a menu item. + Requires one of the following permissions: MANAGE_MENUS. """ menuItemUpdate( - """ID of a menu item to update.""" + """ + ID of a menu item to update. + """ id: ID! """ @@ -13894,264 +17770,322 @@ type Mutation { ): MenuItemUpdate """ - Creates/updates translations for a menu item. - + Creates/updates translations for a menu item. + Requires one of the following permissions: MANAGE_TRANSLATIONS. """ menuItemTranslate( - """MenuItem ID or MenuItemTranslatableContent ID.""" + """ + MenuItem ID or MenuItemTranslatableContent ID. + """ id: ID! input: NameTranslationInput! - """Translation language code.""" + """ + Translation language code. + """ languageCode: LanguageCodeEnum! ): MenuItemTranslate """ - Moves items of menus. - + Moves items of menus. + Requires one of the following permissions: MANAGE_MENUS. """ menuItemMove( - """ID of the menu.""" + """ + ID of the menu. + """ menu: ID! - """The menu position data.""" + """ + The menu position data. + """ moves: [MenuItemMoveInput!]! ): MenuItemMove """ - Request an invoice for the order using plugin. - + Request an invoice for the order using plugin. + Requires one of the following permissions: MANAGE_ORDERS. """ invoiceRequest( - """Invoice number, if not provided it will be generated.""" + """ + Invoice number, if not provided it will be generated. + """ number: String - """ID of the order related to invoice.""" + """ + ID of the order related to invoice. + """ orderId: ID! ): InvoiceRequest """ - Requests deletion of an invoice. - + Requests deletion of an invoice. + Requires one of the following permissions: MANAGE_ORDERS. """ invoiceRequestDelete( - """ID of an invoice to request the deletion.""" + """ + ID of an invoice to request the deletion. + """ id: ID! ): InvoiceRequestDelete """ - Creates a ready to send invoice. - + Creates a ready to send invoice. + Requires one of the following permissions: MANAGE_ORDERS. """ invoiceCreate( - """Fields required when creating an invoice.""" + """ + Fields required when creating an invoice. + """ input: InvoiceCreateInput! - """ID of the order related to invoice.""" + """ + ID of the order related to invoice. + """ orderId: ID! ): InvoiceCreate """ - Deletes an invoice. - + Deletes an invoice. + Requires one of the following permissions: MANAGE_ORDERS. """ invoiceDelete( - """ID of an invoice to delete.""" + """ + ID of an invoice to delete. + """ id: ID! ): InvoiceDelete """ - Updates an invoice. - + Updates an invoice. + Requires one of the following permissions: MANAGE_ORDERS. """ invoiceUpdate( - """ID of an invoice to update.""" + """ + ID of an invoice to update. + """ id: ID! - """Fields to use when updating an invoice.""" + """ + Fields to use when updating an invoice. + """ input: UpdateInvoiceInput! ): InvoiceUpdate """ - Send an invoice notification to the customer. - + Send an invoice notification to the customer. + Requires one of the following permissions: MANAGE_ORDERS. """ invoiceSendNotification( - """ID of an invoice to be sent.""" + """ + ID of an invoice to be sent. + """ id: ID! ): InvoiceSendNotification """ - Activate a gift card. - + Activate a gift card. + Requires one of the following permissions: MANAGE_GIFT_CARD. """ giftCardActivate( - """ID of a gift card to activate.""" + """ + ID of a gift card to activate. + """ id: ID! ): GiftCardActivate """ - Creates a new gift card. - + Creates a new gift card. + Requires one of the following permissions: MANAGE_GIFT_CARD. """ giftCardCreate( - """Fields required to create a gift card.""" + """ + Fields required to create a gift card. + """ input: GiftCardCreateInput! ): GiftCardCreate """ Delete gift card. - + Added in Saleor 3.1. - - Note: this API is currently in Feature Preview and can be subject to changes at later point. - + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + Requires one of the following permissions: MANAGE_GIFT_CARD. """ giftCardDelete( - """ID of the gift card to delete.""" + """ + ID of the gift card to delete. + """ id: ID! ): GiftCardDelete """ - Deactivate a gift card. - + Deactivate a gift card. + Requires one of the following permissions: MANAGE_GIFT_CARD. """ giftCardDeactivate( - """ID of a gift card to deactivate.""" + """ + ID of a gift card to deactivate. + """ id: ID! ): GiftCardDeactivate """ - Update a gift card. - + Update a gift card. + Requires one of the following permissions: MANAGE_GIFT_CARD. """ giftCardUpdate( - """ID of a gift card to update.""" + """ + ID of a gift card to update. + """ id: ID! - """Fields required to update a gift card.""" + """ + Fields required to update a gift card. + """ input: GiftCardUpdateInput! ): GiftCardUpdate """ Resend a gift card. - + Added in Saleor 3.1. - - Note: this API is currently in Feature Preview and can be subject to changes at later point. - + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + Requires one of the following permissions: MANAGE_GIFT_CARD. """ giftCardResend( - """Fields required to resend a gift card.""" + """ + Fields required to resend a gift card. + """ input: GiftCardResendInput! ): GiftCardResend """ Adds note to the gift card. - + Added in Saleor 3.1. - - Note: this API is currently in Feature Preview and can be subject to changes at later point. - + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + Requires one of the following permissions: MANAGE_GIFT_CARD. """ giftCardAddNote( - """ID of the gift card to add a note for.""" + """ + ID of the gift card to add a note for. + """ id: ID! - """Fields required to create a note for the gift card.""" + """ + Fields required to create a note for the gift card. + """ input: GiftCardAddNoteInput! ): GiftCardAddNote """ Create gift cards. - + Added in Saleor 3.1. - - Note: this API is currently in Feature Preview and can be subject to changes at later point. - + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + Requires one of the following permissions: MANAGE_GIFT_CARD. """ giftCardBulkCreate( - """Fields required to create gift cards.""" + """ + Fields required to create gift cards. + """ input: GiftCardBulkCreateInput! ): GiftCardBulkCreate """ Delete gift cards. - + Added in Saleor 3.1. - - Note: this API is currently in Feature Preview and can be subject to changes at later point. - + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + Requires one of the following permissions: MANAGE_GIFT_CARD. """ giftCardBulkDelete( - """List of gift card IDs to delete.""" + """ + List of gift card IDs to delete. + """ ids: [ID!]! ): GiftCardBulkDelete """ Activate gift cards. - + Added in Saleor 3.1. - - Note: this API is currently in Feature Preview and can be subject to changes at later point. - + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + Requires one of the following permissions: MANAGE_GIFT_CARD. """ giftCardBulkActivate( - """List of gift card IDs to activate.""" + """ + List of gift card IDs to activate. + """ ids: [ID!]! ): GiftCardBulkActivate """ Deactivate gift cards. - + Added in Saleor 3.1. - - Note: this API is currently in Feature Preview and can be subject to changes at later point. - + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + Requires one of the following permissions: MANAGE_GIFT_CARD. """ giftCardBulkDeactivate( - """List of gift card IDs to deactivate.""" + """ + List of gift card IDs to deactivate. + """ ids: [ID!]! ): GiftCardBulkDeactivate """ - Update plugin configuration. - + Update plugin configuration. + Requires one of the following permissions: MANAGE_PLUGINS. """ pluginUpdate( - """ID of a channel for which the data should be modified.""" + """ + ID of a channel for which the data should be modified. + """ channelId: ID - """ID of plugin to update.""" + """ + ID of plugin to update. + """ id: ID! - """Fields required to update a plugin configuration.""" + """ + Fields required to update a plugin configuration. + """ input: PluginUpdateInput! ): PluginUpdate """ Trigger sending a notification with the notify plugin method. Serializes nodes provided as ids parameter and includes this data in the notification payload. - + Added in Saleor 3.1. """ externalNotificationTrigger( @@ -14160,297 +18094,367 @@ type Mutation { """ channel: String! - """Input for External Notification Trigger.""" + """ + Input for External Notification Trigger. + """ input: ExternalNotificationTriggerInput! - """The ID of notification plugin.""" + """ + The ID of notification plugin. + """ pluginId: String ): ExternalNotificationTrigger """ - Creates a new sale. - + Creates a new sale. + Requires one of the following permissions: MANAGE_DISCOUNTS. """ saleCreate( - """Fields required to create a sale.""" + """ + Fields required to create a sale. + """ input: SaleInput! ): SaleCreate """ - Deletes a sale. - + Deletes a sale. + Requires one of the following permissions: MANAGE_DISCOUNTS. """ saleDelete( - """ID of a sale to delete.""" + """ + ID of a sale to delete. + """ id: ID! ): SaleDelete """ - Deletes sales. - + Deletes sales. + Requires one of the following permissions: MANAGE_DISCOUNTS. """ saleBulkDelete( - """List of sale IDs to delete.""" + """ + List of sale IDs to delete. + """ ids: [ID!]! ): SaleBulkDelete """ - Updates a sale. - + Updates a sale. + Requires one of the following permissions: MANAGE_DISCOUNTS. """ saleUpdate( - """ID of a sale to update.""" + """ + ID of a sale to update. + """ id: ID! - """Fields required to update a sale.""" + """ + Fields required to update a sale. + """ input: SaleInput! ): SaleUpdate """ - Adds products, categories, collections to a voucher. - + Adds products, categories, collections to a voucher. + Requires one of the following permissions: MANAGE_DISCOUNTS. """ saleCataloguesAdd( - """ID of a sale.""" + """ + ID of a sale. + """ id: ID! - """Fields required to modify catalogue IDs of sale.""" + """ + Fields required to modify catalogue IDs of sale. + """ input: CatalogueInput! ): SaleAddCatalogues """ - Removes products, categories, collections from a sale. - + Removes products, categories, collections from a sale. + Requires one of the following permissions: MANAGE_DISCOUNTS. """ saleCataloguesRemove( - """ID of a sale.""" + """ + ID of a sale. + """ id: ID! - """Fields required to modify catalogue IDs of sale.""" + """ + Fields required to modify catalogue IDs of sale. + """ input: CatalogueInput! ): SaleRemoveCatalogues """ - Creates/updates translations for a sale. - + Creates/updates translations for a sale. + Requires one of the following permissions: MANAGE_TRANSLATIONS. """ saleTranslate( - """Sale ID or SaleTranslatableContent ID.""" + """ + Sale ID or SaleTranslatableContent ID. + """ id: ID! input: NameTranslationInput! - """Translation language code.""" + """ + Translation language code. + """ languageCode: LanguageCodeEnum! ): SaleTranslate """ - Manage sale's availability in channels. - + Manage sale's availability in channels. + Requires one of the following permissions: MANAGE_DISCOUNTS. """ saleChannelListingUpdate( - """ID of a sale to update.""" + """ + ID of a sale to update. + """ id: ID! - """Fields required to update sale channel listings.""" + """ + Fields required to update sale channel listings. + """ input: SaleChannelListingInput! ): SaleChannelListingUpdate """ - Creates a new voucher. - + Creates a new voucher. + Requires one of the following permissions: MANAGE_DISCOUNTS. """ voucherCreate( - """Fields required to create a voucher.""" + """ + Fields required to create a voucher. + """ input: VoucherInput! ): VoucherCreate """ - Deletes a voucher. - + Deletes a voucher. + Requires one of the following permissions: MANAGE_DISCOUNTS. """ voucherDelete( - """ID of a voucher to delete.""" + """ + ID of a voucher to delete. + """ id: ID! ): VoucherDelete """ - Deletes vouchers. - + Deletes vouchers. + Requires one of the following permissions: MANAGE_DISCOUNTS. """ voucherBulkDelete( - """List of voucher IDs to delete.""" + """ + List of voucher IDs to delete. + """ ids: [ID!]! ): VoucherBulkDelete """ - Updates a voucher. - + Updates a voucher. + Requires one of the following permissions: MANAGE_DISCOUNTS. """ voucherUpdate( - """ID of a voucher to update.""" + """ + ID of a voucher to update. + """ id: ID! - """Fields required to update a voucher.""" + """ + Fields required to update a voucher. + """ input: VoucherInput! ): VoucherUpdate """ - Adds products, categories, collections to a voucher. - + Adds products, categories, collections to a voucher. + Requires one of the following permissions: MANAGE_DISCOUNTS. """ voucherCataloguesAdd( - """ID of a voucher.""" + """ + ID of a voucher. + """ id: ID! - """Fields required to modify catalogue IDs of voucher.""" + """ + Fields required to modify catalogue IDs of voucher. + """ input: CatalogueInput! ): VoucherAddCatalogues """ - Removes products, categories, collections from a voucher. - + Removes products, categories, collections from a voucher. + Requires one of the following permissions: MANAGE_DISCOUNTS. """ voucherCataloguesRemove( - """ID of a voucher.""" + """ + ID of a voucher. + """ id: ID! - """Fields required to modify catalogue IDs of voucher.""" + """ + Fields required to modify catalogue IDs of voucher. + """ input: CatalogueInput! ): VoucherRemoveCatalogues """ - Creates/updates translations for a voucher. - + Creates/updates translations for a voucher. + Requires one of the following permissions: MANAGE_TRANSLATIONS. """ voucherTranslate( - """Voucher ID or VoucherTranslatableContent ID.""" + """ + Voucher ID or VoucherTranslatableContent ID. + """ id: ID! input: NameTranslationInput! - """Translation language code.""" + """ + Translation language code. + """ languageCode: LanguageCodeEnum! ): VoucherTranslate """ - Manage voucher's availability in channels. - + Manage voucher's availability in channels. + Requires one of the following permissions: MANAGE_DISCOUNTS. """ voucherChannelListingUpdate( - """ID of a voucher to update.""" + """ + ID of a voucher to update. + """ id: ID! - """Fields required to update voucher channel listings.""" + """ + Fields required to update voucher channel listings. + """ input: VoucherChannelListingInput! ): VoucherChannelListingUpdate """ - Export products to csv file. - + Export products to csv file. + Requires one of the following permissions: MANAGE_PRODUCTS. """ exportProducts( - """Fields required to export product data.""" + """ + Fields required to export product data. + """ input: ExportProductsInput! ): ExportProducts """ Export gift cards to csv file. - + Added in Saleor 3.1. - - Note: this API is currently in Feature Preview and can be subject to changes at later point. - + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + Requires one of the following permissions: MANAGE_GIFT_CARD. """ exportGiftCards( - """Fields required to export gift cards data.""" + """ + Fields required to export gift cards data. + """ input: ExportGiftCardsInput! ): ExportGiftCards """ - Upload a file. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec - + Upload a file. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER. """ fileUpload( - """Represents a file in a multipart request.""" + """ + Represents a file in a multipart request. + """ file: Upload! ): FileUpload - """Adds a gift card or a voucher to a checkout.""" + """ + Adds a gift card or a voucher to a checkout. + """ checkoutAddPromoCode( """ The ID of the checkout. - + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ checkoutId: ID """ The checkout's ID. - + Added in Saleor 3.4. """ id: ID - """Gift card code or voucher code.""" + """ + Gift card code or voucher code. + """ promoCode: String! """ Checkout token. - + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ token: UUID ): CheckoutAddPromoCode - """Update billing address in the existing checkout.""" + """ + Update billing address in the existing checkout. + """ checkoutBillingAddressUpdate( - """The billing address of the checkout.""" + """ + The billing address of the checkout. + """ billingAddress: AddressInput! """ - The ID of the checkout. - + The ID of the checkout. + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ checkoutId: ID """ The checkout's ID. - + Added in Saleor 3.4. """ id: ID """ Checkout token. - + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ token: UUID """ The rules for changing validation for received billing address data. - + Added in Saleor 3.5. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ validationRules: CheckoutAddressValidationRules @@ -14461,27 +18465,29 @@ type Mutation { """ checkoutComplete( """ - The ID of the checkout. - + The ID of the checkout. + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ checkoutId: ID """ The checkout's ID. - + Added in Saleor 3.4. """ id: ID """ Fields required to update the checkout metadata. - + Added in Saleor 3.8. """ metadata: [MetadataInput!] - """Client-side generated data required to finalize the payment.""" + """ + Client-side generated data required to finalize the payment. + """ paymentData: JSONString """ @@ -14490,35 +18496,39 @@ type Mutation { redirectUrl: String """ - Determines whether to store the payment source for future usage. - + Determines whether to store the payment source for future usage. + DEPRECATED: this field will be removed in Saleor 4.0. Use checkoutPaymentCreate for this action. """ storeSource: Boolean = false """ Checkout token. - + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ token: UUID ): CheckoutComplete - """Create a new checkout.""" + """ + Create a new checkout. + """ checkoutCreate( - """Fields required to create checkout.""" + """ + Fields required to create checkout. + """ input: CheckoutCreateInput! ): CheckoutCreate """ - Sets the customer as the owner of the checkout. - + Sets the customer as the owner of the checkout. + Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_USER. """ checkoutCustomerAttach( """ - The ID of the checkout. - + The ID of the checkout. + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ checkoutId: ID @@ -14530,116 +18540,131 @@ type Mutation { """ The checkout's ID. - + Added in Saleor 3.4. """ id: ID """ Checkout token. - + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ token: UUID ): CheckoutCustomerAttach """ - Removes the user assigned as the owner of the checkout. - + Removes the user assigned as the owner of the checkout. + Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_USER. """ checkoutCustomerDetach( """ - The ID of the checkout. - + The ID of the checkout. + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ checkoutId: ID """ The checkout's ID. - + Added in Saleor 3.4. """ id: ID """ Checkout token. - + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ token: UUID ): CheckoutCustomerDetach - """Updates email address in the existing checkout object.""" + """ + Updates email address in the existing checkout object. + """ checkoutEmailUpdate( """ - The ID of the checkout. - + The ID of the checkout. + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ checkoutId: ID - """email.""" + """ + email. + """ email: String! """ The checkout's ID. - + Added in Saleor 3.4. """ id: ID """ Checkout token. - + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ token: UUID ): CheckoutEmailUpdate - """Deletes a CheckoutLine.""" + """ + Deletes a CheckoutLine. + """ checkoutLineDelete( """ - The ID of the checkout. - + The ID of the checkout. + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ checkoutId: ID """ The checkout's ID. - + Added in Saleor 3.4. """ id: ID - """ID of the checkout line to delete.""" + """ + ID of the checkout line to delete. + """ lineId: ID """ Checkout token. - + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ token: UUID - ): CheckoutLineDelete @deprecated(reason: "This field will be removed in Saleor 4.0. Use `checkoutLinesDelete` instead.") + ): CheckoutLineDelete + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use `checkoutLinesDelete` instead." + ) - """Deletes checkout lines.""" + """ + Deletes checkout lines. + """ checkoutLinesDelete( """ The checkout's ID. - + Added in Saleor 3.4. """ id: ID - """A list of checkout lines.""" + """ + A list of checkout lines. + """ linesIds: [ID!]! """ Checkout token. - + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ token: UUID @@ -14650,15 +18675,15 @@ type Mutation { """ checkoutLinesAdd( """ - The ID of the checkout. - + The ID of the checkout. + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ checkoutId: ID """ The checkout's ID. - + Added in Saleor 3.4. """ id: ID @@ -14670,24 +18695,26 @@ type Mutation { """ Checkout token. - + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ token: UUID ): CheckoutLinesAdd - """Updates checkout line in the existing checkout.""" + """ + Updates checkout line in the existing checkout. + """ checkoutLinesUpdate( """ - The ID of the checkout. - + The ID of the checkout. + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ checkoutId: ID """ The checkout's ID. - + Added in Saleor 3.4. """ id: ID @@ -14699,180 +18726,207 @@ type Mutation { """ Checkout token. - + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ token: UUID ): CheckoutLinesUpdate - """Remove a gift card or a voucher from a checkout.""" + """ + Remove a gift card or a voucher from a checkout. + """ checkoutRemovePromoCode( """ - The ID of the checkout. - + The ID of the checkout. + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ checkoutId: ID """ The checkout's ID. - + Added in Saleor 3.4. """ id: ID - """Gift card code or voucher code.""" + """ + Gift card code or voucher code. + """ promoCode: String - """Gift card or voucher ID.""" + """ + Gift card or voucher ID. + """ promoCodeId: ID """ Checkout token. - + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ token: UUID ): CheckoutRemovePromoCode - """Create a new payment for given checkout.""" + """ + Create a new payment for given checkout. + """ checkoutPaymentCreate( """ - The ID of the checkout. - + The ID of the checkout. + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ checkoutId: ID """ The checkout's ID. - + Added in Saleor 3.4. """ id: ID - """Data required to create a new payment.""" + """ + Data required to create a new payment. + """ input: PaymentInput! """ Checkout token. - + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ token: UUID ): CheckoutPaymentCreate - """Update shipping address in the existing checkout.""" + """ + Update shipping address in the existing checkout. + """ checkoutShippingAddressUpdate( """ - The ID of the checkout. - + The ID of the checkout. + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ checkoutId: ID """ The checkout's ID. - + Added in Saleor 3.4. """ id: ID - """The mailing address to where the checkout will be shipped.""" + """ + The mailing address to where the checkout will be shipped. + """ shippingAddress: AddressInput! """ Checkout token. - + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ token: UUID """ The rules for changing validation for received shipping address data. - + Added in Saleor 3.5. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ validationRules: CheckoutAddressValidationRules ): CheckoutShippingAddressUpdate - """Updates the shipping method of the checkout.""" + """ + Updates the shipping method of the checkout. + """ checkoutShippingMethodUpdate( """ - The ID of the checkout. - + The ID of the checkout. + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ checkoutId: ID """ The checkout's ID. - + Added in Saleor 3.4. """ id: ID - """Shipping method.""" + """ + Shipping method. + """ shippingMethodId: ID! """ Checkout token. - + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ token: UUID - ): CheckoutShippingMethodUpdate @deprecated(reason: "This field will be removed in Saleor 4.0. Use `checkoutDeliveryMethodUpdate` instead.") + ): CheckoutShippingMethodUpdate + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use `checkoutDeliveryMethodUpdate` instead." + ) """ Updates the delivery method (shipping method or pick up point) of the checkout. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ checkoutDeliveryMethodUpdate( - """Delivery Method ID (`Warehouse` ID or `ShippingMethod` ID).""" + """ + Delivery Method ID (`Warehouse` ID or `ShippingMethod` ID). + """ deliveryMethodId: ID """ The checkout's ID. - + Added in Saleor 3.4. """ id: ID """ Checkout token. - + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ token: UUID ): CheckoutDeliveryMethodUpdate - """Update language code in the existing checkout.""" + """ + Update language code in the existing checkout. + """ checkoutLanguageCodeUpdate( """ - The ID of the checkout. - + The ID of the checkout. + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ checkoutId: ID """ The checkout's ID. - + Added in Saleor 3.4. """ id: ID - """New language code.""" + """ + New language code. + """ languageCode: LanguageCodeEnum! """ Checkout token. - + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. """ token: UUID @@ -14880,25 +18934,27 @@ type Mutation { """ Create new order from existing checkout. Requires the following permissions: AUTHENTICATED_APP and HANDLE_CHECKOUTS. - + Added in Saleor 3.2. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ orderCreateFromCheckout( - """ID of a checkout that will be converted to an order.""" + """ + ID of a checkout that will be converted to an order. + """ id: ID! """ Fields required to update the checkout metadata. - + Added in Saleor 3.8. """ metadata: [MetadataInput!] """ Fields required to update the checkout private metadata. - + Added in Saleor 3.8. """ privateMetadata: [MetadataInput!] @@ -14910,229 +18966,283 @@ type Mutation { ): OrderCreateFromCheckout """ - Creates new channel. - + Creates new channel. + Requires one of the following permissions: MANAGE_CHANNELS. """ channelCreate( - """Fields required to create channel.""" + """ + Fields required to create channel. + """ input: ChannelCreateInput! ): ChannelCreate """ - Update a channel. - + Update a channel. + Requires one of the following permissions: MANAGE_CHANNELS. """ channelUpdate( - """ID of a channel to update.""" + """ + ID of a channel to update. + """ id: ID! - """Fields required to update a channel.""" + """ + Fields required to update a channel. + """ input: ChannelUpdateInput! ): ChannelUpdate """ - Delete a channel. Orders associated with the deleted channel will be moved to the target channel. Checkouts, product availability, and pricing will be removed. - + Delete a channel. Orders associated with the deleted channel will be moved to the target channel. Checkouts, product availability, and pricing will be removed. + Requires one of the following permissions: MANAGE_CHANNELS. """ channelDelete( - """ID of a channel to delete.""" + """ + ID of a channel to delete. + """ id: ID! - """Fields required to delete a channel.""" + """ + Fields required to delete a channel. + """ input: ChannelDeleteInput ): ChannelDelete """ - Activate a channel. - + Activate a channel. + Requires one of the following permissions: MANAGE_CHANNELS. """ channelActivate( - """ID of the channel to activate.""" + """ + ID of the channel to activate. + """ id: ID! ): ChannelActivate """ - Deactivate a channel. - + Deactivate a channel. + Requires one of the following permissions: MANAGE_CHANNELS. """ channelDeactivate( - """ID of the channel to deactivate.""" + """ + ID of the channel to deactivate. + """ id: ID! ): ChannelDeactivate """ Reorder the warehouses of a channel. - + Added in Saleor 3.7. - - Note: this API is currently in Feature Preview and can be subject to changes at later point. - + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + Requires one of the following permissions: MANAGE_CHANNELS. """ channelReorderWarehouses( - """ID of a channel.""" + """ + ID of a channel. + """ channelId: ID! - """The list of reordering operations for the given channel warehouses.""" + """ + The list of reordering operations for the given channel warehouses. + """ moves: [ReorderInput!]! ): ChannelReorderWarehouses - """Creates an attribute.""" + """ + Creates an attribute. + """ attributeCreate( - """Fields required to create an attribute.""" + """ + Fields required to create an attribute. + """ input: AttributeCreateInput! ): AttributeCreate """ - Deletes an attribute. - + Deletes an attribute. + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ attributeDelete( """ - External ID of an attribute to delete. - + External ID of an attribute to delete. + Added in Saleor 3.10. """ externalReference: String - """ID of an attribute to delete.""" + """ + ID of an attribute to delete. + """ id: ID ): AttributeDelete """ - Updates attribute. - + Updates attribute. + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ attributeUpdate( """ - External ID of an attribute to update. - + External ID of an attribute to update. + Added in Saleor 3.10. """ externalReference: String - """ID of an attribute to update.""" + """ + ID of an attribute to update. + """ id: ID - """Fields required to update an attribute.""" + """ + Fields required to update an attribute. + """ input: AttributeUpdateInput! ): AttributeUpdate """ - Creates/updates translations for an attribute. - + Creates/updates translations for an attribute. + Requires one of the following permissions: MANAGE_TRANSLATIONS. """ attributeTranslate( - """Attribute ID or AttributeTranslatableContent ID.""" + """ + Attribute ID or AttributeTranslatableContent ID. + """ id: ID! input: NameTranslationInput! - """Translation language code.""" + """ + Translation language code. + """ languageCode: LanguageCodeEnum! ): AttributeTranslate """ - Deletes attributes. - + Deletes attributes. + Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ attributeBulkDelete( - """List of attribute IDs to delete.""" + """ + List of attribute IDs to delete. + """ ids: [ID!]! ): AttributeBulkDelete """ - Deletes values of attributes. - + Deletes values of attributes. + Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ attributeValueBulkDelete( - """List of attribute value IDs to delete.""" + """ + List of attribute value IDs to delete. + """ ids: [ID!]! ): AttributeValueBulkDelete """ - Creates a value for an attribute. - + Creates a value for an attribute. + Requires one of the following permissions: MANAGE_PRODUCTS. """ attributeValueCreate( - """Attribute to which value will be assigned.""" + """ + Attribute to which value will be assigned. + """ attribute: ID! - """Fields required to create an AttributeValue.""" + """ + Fields required to create an AttributeValue. + """ input: AttributeValueCreateInput! ): AttributeValueCreate """ - Deletes a value of an attribute. - + Deletes a value of an attribute. + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ attributeValueDelete( """ - External ID of a value to delete. - + External ID of a value to delete. + Added in Saleor 3.10. """ externalReference: String - """ID of a value to delete.""" + """ + ID of a value to delete. + """ id: ID ): AttributeValueDelete """ - Updates value of an attribute. - + Updates value of an attribute. + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ attributeValueUpdate( """ - External ID of an AttributeValue to update. - + External ID of an AttributeValue to update. + Added in Saleor 3.10. """ externalReference: String - """ID of an AttributeValue to update.""" + """ + ID of an AttributeValue to update. + """ id: ID - """Fields required to update an AttributeValue.""" + """ + Fields required to update an AttributeValue. + """ input: AttributeValueUpdateInput! ): AttributeValueUpdate """ - Creates/updates translations for an attribute value. - + Creates/updates translations for an attribute value. + Requires one of the following permissions: MANAGE_TRANSLATIONS. """ attributeValueTranslate( - """AttributeValue ID or AttributeValueTranslatableContent ID.""" + """ + AttributeValue ID or AttributeValueTranslatableContent ID. + """ id: ID! input: AttributeValueTranslationInput! - """Translation language code.""" + """ + Translation language code. + """ languageCode: LanguageCodeEnum! ): AttributeValueTranslate """ - Reorder the values of an attribute. - + Reorder the values of an attribute. + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ attributeReorderValues( - """ID of an attribute.""" + """ + ID of an attribute. + """ attributeId: ID! - """The list of reordering operations for given attribute values.""" + """ + The list of reordering operations for given attribute values. + """ moves: [ReorderInput!]! ): AttributeReorderValues @@ -15140,56 +19250,72 @@ type Mutation { Creates a new app. Requires the following permissions: AUTHENTICATED_STAFF_USER and MANAGE_APPS. """ appCreate( - """Fields required to create a new app.""" + """ + Fields required to create a new app. + """ input: AppInput! ): AppCreate """ - Updates an existing app. - + Updates an existing app. + Requires one of the following permissions: MANAGE_APPS. """ appUpdate( - """ID of an app to update.""" + """ + ID of an app to update. + """ id: ID! - """Fields required to update an existing app.""" + """ + Fields required to update an existing app. + """ input: AppInput! ): AppUpdate """ - Deletes an app. - + Deletes an app. + Requires one of the following permissions: MANAGE_APPS. """ appDelete( - """ID of an app to delete.""" + """ + ID of an app to delete. + """ id: ID! ): AppDelete """ - Creates a new token. - + Creates a new token. + Requires one of the following permissions: MANAGE_APPS. """ appTokenCreate( - """Fields required to create a new auth token.""" + """ + Fields required to create a new auth token. + """ input: AppTokenInput! ): AppTokenCreate """ - Deletes an authentication token assigned to app. - + Deletes an authentication token assigned to app. + Requires one of the following permissions: MANAGE_APPS. """ appTokenDelete( - """ID of an auth token to delete.""" + """ + ID of an auth token to delete. + """ id: ID! ): AppTokenDelete - """Verify provided app token.""" + """ + Verify provided app token. + """ appTokenVerify( - """App token to verify.""" + """ + App token to verify. + """ token: String! ): AppTokenVerify @@ -15197,75 +19323,93 @@ type Mutation { Install new app by using app manifest. Requires the following permissions: AUTHENTICATED_STAFF_USER and MANAGE_APPS. """ appInstall( - """Fields required to install a new app.""" + """ + Fields required to install a new app. + """ input: AppInstallInput! ): AppInstall """ - Retry failed installation of new app. - + Retry failed installation of new app. + Requires one of the following permissions: MANAGE_APPS. """ appRetryInstall( - """Determine if app will be set active or not.""" + """ + Determine if app will be set active or not. + """ activateAfterInstallation: Boolean = true - """ID of failed installation.""" + """ + ID of failed installation. + """ id: ID! ): AppRetryInstall """ - Delete failed installation. - + Delete failed installation. + Requires one of the following permissions: MANAGE_APPS. """ appDeleteFailedInstallation( - """ID of failed installation to delete.""" + """ + ID of failed installation to delete. + """ id: ID! ): AppDeleteFailedInstallation """ - Fetch and validate manifest. - + Fetch and validate manifest. + Requires one of the following permissions: MANAGE_APPS. """ appFetchManifest(manifestUrl: String!): AppFetchManifest """ - Activate the app. - + Activate the app. + Requires one of the following permissions: MANAGE_APPS. """ appActivate( - """ID of app to activate.""" + """ + ID of app to activate. + """ id: ID! ): AppActivate """ - Deactivate the app. - + Deactivate the app. + Requires one of the following permissions: MANAGE_APPS. """ appDeactivate( - """ID of app to deactivate.""" + """ + ID of app to deactivate. + """ id: ID! ): AppDeactivate - """Create JWT token.""" + """ + Create JWT token. + """ tokenCreate( """ The audience that will be included to JWT tokens with prefix `custom:`. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ audience: String - """Email of a user.""" + """ + Email of a user. + """ email: String! - """Password of a user.""" + """ + Password of a user. + """ password: String! ): CreateToken @@ -15278,76 +19422,116 @@ type Mutation { """ csrfToken: String - """Refresh token.""" + """ + Refresh token. + """ refreshToken: String ): RefreshToken - """Verify JWT token.""" + """ + Verify JWT token. + """ tokenVerify( - """JWT token to validate.""" + """ + JWT token to validate. + """ token: String! ): VerifyToken """ - Deactivate all JWT tokens of the currently authenticated user. - + Deactivate all JWT tokens of the currently authenticated user. + Requires one of the following permissions: AUTHENTICATED_USER. """ tokensDeactivateAll: DeactivateAllUserTokens - """Prepare external authentication url for user by custom plugin.""" + """ + Prepare external authentication url for user by custom plugin. + """ externalAuthenticationUrl( - """The data required by plugin to create external authentication url.""" + """ + The data required by plugin to create external authentication url. + """ input: JSONString! - """The ID of the authentication plugin.""" + """ + The ID of the authentication plugin. + """ pluginId: String! ): ExternalAuthenticationUrl - """Obtain external access tokens for user by custom plugin.""" + """ + Obtain external access tokens for user by custom plugin. + """ externalObtainAccessTokens( - """The data required by plugin to create authentication data.""" + """ + The data required by plugin to create authentication data. + """ input: JSONString! - """The ID of the authentication plugin.""" + """ + The ID of the authentication plugin. + """ pluginId: String! ): ExternalObtainAccessTokens - """Refresh user's access by custom plugin.""" + """ + Refresh user's access by custom plugin. + """ externalRefresh( - """The data required by plugin to proceed the refresh process.""" + """ + The data required by plugin to proceed the refresh process. + """ input: JSONString! - """The ID of the authentication plugin.""" + """ + The ID of the authentication plugin. + """ pluginId: String! ): ExternalRefresh - """Logout user by custom plugin.""" + """ + Logout user by custom plugin. + """ externalLogout( - """The data required by plugin to proceed the logout process.""" + """ + The data required by plugin to proceed the logout process. + """ input: JSONString! - """The ID of the authentication plugin.""" + """ + The ID of the authentication plugin. + """ pluginId: String! ): ExternalLogout - """Verify external authentication data by plugin.""" + """ + Verify external authentication data by plugin. + """ externalVerify( - """The data required by plugin to proceed the verification.""" + """ + The data required by plugin to proceed the verification. + """ input: JSONString! - """The ID of the authentication plugin.""" + """ + The ID of the authentication plugin. + """ pluginId: String! ): ExternalVerify - """Sends an email with the account password modification link.""" + """ + Sends an email with the account password modification link. + """ requestPasswordReset( """ Slug of a channel which will be used for notify user. Optional when only one channel exists. """ channel: String - """Email of the user that will be used for password recovery.""" + """ + Email of the user that will be used for password recovery. + """ email: String! """ @@ -15356,12 +19540,18 @@ type Mutation { redirectUrl: String! ): RequestPasswordReset - """Confirm user account with token sent by email during registration.""" + """ + Confirm user account with token sent by email during registration. + """ confirmAccount( - """E-mail of the user performing account confirmation.""" + """ + E-mail of the user performing account confirmation. + """ email: String! - """A one-time token required to confirm the account.""" + """ + A one-time token required to confirm the account. + """ token: String! ): ConfirmAccount @@ -15369,32 +19559,42 @@ type Mutation { Sets the user's password from the token sent by email using the RequestPasswordReset mutation. """ setPassword( - """Email of a user.""" + """ + Email of a user. + """ email: String! - """Password of a user.""" + """ + Password of a user. + """ password: String! - """A one-time token required to set the password.""" + """ + A one-time token required to set the password. + """ token: String! ): SetPassword """ - Change the password of the logged in user. - + Change the password of the logged in user. + Requires one of the following permissions: AUTHENTICATED_USER. """ passwordChange( - """New user password.""" + """ + New user password. + """ newPassword: String! - """Current user password.""" + """ + Current user password. + """ oldPassword: String! ): PasswordChange """ - Request email change of the logged in user. - + Request email change of the logged in user. + Requires one of the following permissions: AUTHENTICATED_USER. """ requestEmailChange( @@ -15403,10 +19603,14 @@ type Mutation { """ channel: String - """New user email.""" + """ + New user email. + """ newEmail: String! - """User password.""" + """ + User password. + """ password: String! """ @@ -15416,8 +19620,8 @@ type Mutation { ): RequestEmailChange """ - Confirm the email change of the logged-in user. - + Confirm the email change of the logged-in user. + Requires one of the following permissions: AUTHENTICATED_USER. """ confirmEmailChange( @@ -15426,17 +19630,21 @@ type Mutation { """ channel: String - """A one-time token required to change the email.""" + """ + A one-time token required to change the email. + """ token: String! ): ConfirmEmailChange """ - Create a new address for the customer. - + Create a new address for the customer. + Requires one of the following permissions: AUTHENTICATED_USER. """ accountAddressCreate( - """Fields required to create address.""" + """ + Fields required to create address. + """ input: AddressInput! """ @@ -15449,10 +19657,14 @@ type Mutation { Updates an address of the logged-in user. Requires one of the following permissions: MANAGE_USERS, IS_OWNER. """ accountAddressUpdate( - """ID of the address to update.""" + """ + ID of the address to update. + """ id: ID! - """Fields required to update the address.""" + """ + Fields required to update the address. + """ input: AddressInput! ): AccountAddressUpdate @@ -15460,42 +19672,54 @@ type Mutation { Delete an address of the logged-in user. Requires one of the following permissions: MANAGE_USERS, IS_OWNER. """ accountAddressDelete( - """ID of the address to delete.""" + """ + ID of the address to delete. + """ id: ID! ): AccountAddressDelete """ - Sets a default address for the authenticated user. - + Sets a default address for the authenticated user. + Requires one of the following permissions: AUTHENTICATED_USER. """ accountSetDefaultAddress( - """ID of the address to set as default.""" + """ + ID of the address to set as default. + """ id: ID! - """The type of address.""" + """ + The type of address. + """ type: AddressTypeEnum! ): AccountSetDefaultAddress - """Register a new user.""" + """ + Register a new user. + """ accountRegister( - """Fields required to create a user.""" + """ + Fields required to create a user. + """ input: AccountRegisterInput! ): AccountRegister """ - Updates the account of the logged-in user. - + Updates the account of the logged-in user. + Requires one of the following permissions: AUTHENTICATED_USER. """ accountUpdate( - """Fields required to update the account of the logged-in user.""" + """ + Fields required to update the account of the logged-in user. + """ input: AccountInput! ): AccountUpdate """ - Sends an email with the account removal link for the logged-in user. - + Sends an email with the account removal link for the logged-in user. + Requires one of the following permissions: AUTHENTICATED_USER. """ accountRequestDeletion( @@ -15511,8 +19735,8 @@ type Mutation { ): AccountRequestDeletion """ - Remove user account. - + Remove user account. + Requires one of the following permissions: AUTHENTICATED_USER. """ accountDelete( @@ -15523,228 +19747,279 @@ type Mutation { ): AccountDelete """ - Creates user address. - + Creates user address. + Requires one of the following permissions: MANAGE_USERS. """ addressCreate( - """Fields required to create address.""" + """ + Fields required to create address. + """ input: AddressInput! - """ID of a user to create address for.""" + """ + ID of a user to create address for. + """ userId: ID! ): AddressCreate """ - Updates an address. - + Updates an address. + Requires one of the following permissions: MANAGE_USERS. """ addressUpdate( - """ID of the address to update.""" + """ + ID of the address to update. + """ id: ID! - """Fields required to update the address.""" + """ + Fields required to update the address. + """ input: AddressInput! ): AddressUpdate """ - Deletes an address. - + Deletes an address. + Requires one of the following permissions: MANAGE_USERS. """ addressDelete( - """ID of the address to delete.""" + """ + ID of the address to delete. + """ id: ID! ): AddressDelete """ - Sets a default address for the given user. - + Sets a default address for the given user. + Requires one of the following permissions: MANAGE_USERS. """ addressSetDefault( - """ID of the address.""" + """ + ID of the address. + """ addressId: ID! - """The type of address.""" + """ + The type of address. + """ type: AddressTypeEnum! - """ID of the user to change the address for.""" + """ + ID of the user to change the address for. + """ userId: ID! ): AddressSetDefault """ - Creates a new customer. - + Creates a new customer. + Requires one of the following permissions: MANAGE_USERS. """ customerCreate( - """Fields required to create a customer.""" + """ + Fields required to create a customer. + """ input: UserCreateInput! ): CustomerCreate """ - Updates an existing customer. - + Updates an existing customer. + Requires one of the following permissions: MANAGE_USERS. """ customerUpdate( """ - External ID of a customer to update. - + External ID of a customer to update. + Added in Saleor 3.10. """ externalReference: String - """ID of a customer to update.""" + """ + ID of a customer to update. + """ id: ID - """Fields required to update a customer.""" + """ + Fields required to update a customer. + """ input: CustomerInput! ): CustomerUpdate """ - Deletes a customer. - + Deletes a customer. + Requires one of the following permissions: MANAGE_USERS. """ customerDelete( """ - External ID of a customer to update. - + External ID of a customer to update. + Added in Saleor 3.10. """ externalReference: String - """ID of a customer to delete.""" + """ + ID of a customer to delete. + """ id: ID ): CustomerDelete """ - Deletes customers. - + Deletes customers. + Requires one of the following permissions: MANAGE_USERS. """ customerBulkDelete( - """List of user IDs to delete.""" + """ + List of user IDs to delete. + """ ids: [ID!]! ): CustomerBulkDelete """ - Creates a new staff user. Apps are not allowed to perform this mutation. - + Creates a new staff user. Apps are not allowed to perform this mutation. + Requires one of the following permissions: MANAGE_STAFF. """ staffCreate( - """Fields required to create a staff user.""" + """ + Fields required to create a staff user. + """ input: StaffCreateInput! ): StaffCreate """ - Updates an existing staff user. Apps are not allowed to perform this mutation. - + Updates an existing staff user. Apps are not allowed to perform this mutation. + Requires one of the following permissions: MANAGE_STAFF. """ staffUpdate( - """ID of a staff user to update.""" + """ + ID of a staff user to update. + """ id: ID! - """Fields required to update a staff user.""" + """ + Fields required to update a staff user. + """ input: StaffUpdateInput! ): StaffUpdate """ - Deletes a staff user. Apps are not allowed to perform this mutation. - + Deletes a staff user. Apps are not allowed to perform this mutation. + Requires one of the following permissions: MANAGE_STAFF. """ staffDelete( - """ID of a staff user to delete.""" + """ + ID of a staff user to delete. + """ id: ID! ): StaffDelete """ - Deletes staff users. Apps are not allowed to perform this mutation. - + Deletes staff users. Apps are not allowed to perform this mutation. + Requires one of the following permissions: MANAGE_STAFF. """ staffBulkDelete( - """List of user IDs to delete.""" + """ + List of user IDs to delete. + """ ids: [ID!]! ): StaffBulkDelete """ - Create a user avatar. Only for staff members. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec - + Create a user avatar. Only for staff members. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + Requires one of the following permissions: AUTHENTICATED_STAFF_USER. """ userAvatarUpdate( - """Represents an image file in a multipart request.""" + """ + Represents an image file in a multipart request. + """ image: Upload! ): UserAvatarUpdate """ - Deletes a user avatar. Only for staff members. - + Deletes a user avatar. Only for staff members. + Requires one of the following permissions: AUTHENTICATED_STAFF_USER. """ userAvatarDelete: UserAvatarDelete """ - Activate or deactivate users. - + Activate or deactivate users. + Requires one of the following permissions: MANAGE_USERS. """ userBulkSetActive( - """List of user IDs to (de)activate).""" + """ + List of user IDs to (de)activate). + """ ids: [ID!]! - """Determine if users will be set active or not.""" + """ + Determine if users will be set active or not. + """ isActive: Boolean! ): UserBulkSetActive """ - Create new permission group. Apps are not allowed to perform this mutation. - + Create new permission group. Apps are not allowed to perform this mutation. + Requires one of the following permissions: MANAGE_STAFF. """ permissionGroupCreate( - """Input fields to create permission group.""" + """ + Input fields to create permission group. + """ input: PermissionGroupCreateInput! ): PermissionGroupCreate """ - Update permission group. Apps are not allowed to perform this mutation. - + Update permission group. Apps are not allowed to perform this mutation. + Requires one of the following permissions: MANAGE_STAFF. """ permissionGroupUpdate( - """ID of the group to update.""" + """ + ID of the group to update. + """ id: ID! - """Input fields to create permission group.""" + """ + Input fields to create permission group. + """ input: PermissionGroupUpdateInput! ): PermissionGroupUpdate """ - Delete permission group. Apps are not allowed to perform this mutation. - + Delete permission group. Apps are not allowed to perform this mutation. + Requires one of the following permissions: MANAGE_STAFF. """ permissionGroupDelete( - """ID of the group to delete.""" + """ + ID of the group to delete. + """ id: ID! ): PermissionGroupDelete } """ -Creates a new webhook subscription. +Creates a new webhook subscription. Requires one of the following permissions: MANAGE_APPS, AUTHENTICATED_APP. """ type WebhookCreate { - webhookErrors: [WebhookError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + webhookErrors: [WebhookError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [WebhookError!]! webhook: Webhook } @@ -15755,14 +20030,20 @@ type WebhookError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: WebhookErrorCode! } -"""An enumeration.""" +""" +An enumeration. +""" enum WebhookErrorCode { GRAPHQL_ERROR INVALID @@ -15773,131 +20054,160 @@ enum WebhookErrorCode { } input WebhookCreateInput { - """The name of the webhook.""" + """ + The name of the webhook. + """ name: String - """The url to receive the payload.""" + """ + The url to receive the payload. + """ targetUrl: String """ - The events that webhook wants to subscribe. - + The events that webhook wants to subscribe. + DEPRECATED: this field will be removed in Saleor 4.0. Use `asyncEvents` or `syncEvents` instead. """ events: [WebhookEventTypeEnum!] - """The asynchronous events that webhook wants to subscribe.""" + """ + The asynchronous events that webhook wants to subscribe. + """ asyncEvents: [WebhookEventTypeAsyncEnum!] - """The synchronous events that webhook wants to subscribe.""" + """ + The synchronous events that webhook wants to subscribe. + """ syncEvents: [WebhookEventTypeSyncEnum!] - """ID of the app to which webhook belongs.""" + """ + ID of the app to which webhook belongs. + """ app: ID - """Determine if webhook will be set active or not.""" + """ + Determine if webhook will be set active or not. + """ isActive: Boolean """ The secret key used to create a hash signature with each payload. - + DEPRECATED: this field will be removed in Saleor 4.0. As of Saleor 3.5, webhook payloads default to signing using a verifiable JWS. """ secretKey: String """ Subscription query used to define a webhook payload. - + Added in Saleor 3.2. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ query: String } """ -Delete a webhook. Before the deletion, the webhook is deactivated to pause any deliveries that are already scheduled. The deletion might fail if delivery is in progress. In such a case, the webhook is not deleted but remains deactivated. +Delete a webhook. Before the deletion, the webhook is deactivated to pause any deliveries that are already scheduled. The deletion might fail if delivery is in progress. In such a case, the webhook is not deleted but remains deactivated. Requires one of the following permissions: MANAGE_APPS, AUTHENTICATED_APP. """ type WebhookDelete { - webhookErrors: [WebhookError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + webhookErrors: [WebhookError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [WebhookError!]! webhook: Webhook } """ -Updates a webhook subscription. +Updates a webhook subscription. Requires one of the following permissions: MANAGE_APPS. """ type WebhookUpdate { - webhookErrors: [WebhookError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + webhookErrors: [WebhookError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [WebhookError!]! webhook: Webhook } input WebhookUpdateInput { - """The new name of the webhook.""" + """ + The new name of the webhook. + """ name: String - """The url to receive the payload.""" + """ + The url to receive the payload. + """ targetUrl: String """ - The events that webhook wants to subscribe. - + The events that webhook wants to subscribe. + DEPRECATED: this field will be removed in Saleor 4.0. Use `asyncEvents` or `syncEvents` instead. """ events: [WebhookEventTypeEnum!] - """The asynchronous events that webhook wants to subscribe.""" + """ + The asynchronous events that webhook wants to subscribe. + """ asyncEvents: [WebhookEventTypeAsyncEnum!] - """The synchronous events that webhook wants to subscribe.""" + """ + The synchronous events that webhook wants to subscribe. + """ syncEvents: [WebhookEventTypeSyncEnum!] - """ID of the app to which webhook belongs.""" + """ + ID of the app to which webhook belongs. + """ app: ID - """Determine if webhook will be set active or not.""" + """ + Determine if webhook will be set active or not. + """ isActive: Boolean """ Use to create a hash signature with each payload. - + DEPRECATED: this field will be removed in Saleor 4.0. As of Saleor 3.5, webhook payloads default to signing using a verifiable JWS. """ secretKey: String """ Subscription query used to define a webhook payload. - + Added in Saleor 3.2. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ query: String } """ -Retries event delivery. +Retries event delivery. Requires one of the following permissions: MANAGE_APPS. """ type EventDeliveryRetry { - """Event delivery.""" + """ + Event delivery. + """ delivery: EventDelivery errors: [WebhookError!]! } """ -Creates new warehouse. +Creates new warehouse. Requires one of the following permissions: MANAGE_PRODUCTS. """ type WarehouseCreate { - warehouseErrors: [WarehouseError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + warehouseErrors: [WarehouseError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [WarehouseError!]! warehouse: Warehouse } @@ -15908,17 +20218,25 @@ type WarehouseError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: WarehouseErrorCode! - """List of shipping zones IDs which causes the error.""" + """ + List of shipping zones IDs which causes the error. + """ shippingZones: [ID!] } -"""An enumeration.""" +""" +An enumeration. +""" enum WarehouseErrorCode { ALREADY_EXISTS GRAPHQL_ERROR @@ -15929,112 +20247,132 @@ enum WarehouseErrorCode { } input WarehouseCreateInput { - """Warehouse slug.""" + """ + Warehouse slug. + """ slug: String - """The email address of the warehouse.""" + """ + The email address of the warehouse. + """ email: String """ External ID of the warehouse. - + Added in Saleor 3.10. """ externalReference: String - """Warehouse name.""" + """ + Warehouse name. + """ name: String! - """Address of the warehouse.""" + """ + Address of the warehouse. + """ address: AddressInput! """ Shipping zones supported by the warehouse. - + DEPRECATED: this field will be removed in Saleor 4.0. Providing the zone ids will raise a ValidationError. """ shippingZones: [ID!] } """ -Updates given warehouse. +Updates given warehouse. Requires one of the following permissions: MANAGE_PRODUCTS. """ type WarehouseUpdate { - warehouseErrors: [WarehouseError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + warehouseErrors: [WarehouseError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [WarehouseError!]! warehouse: Warehouse } input WarehouseUpdateInput { - """Warehouse slug.""" + """ + Warehouse slug. + """ slug: String - """The email address of the warehouse.""" + """ + The email address of the warehouse. + """ email: String """ External ID of the warehouse. - + Added in Saleor 3.10. """ externalReference: String - """Warehouse name.""" + """ + Warehouse name. + """ name: String - """Address of the warehouse.""" + """ + Address of the warehouse. + """ address: AddressInput """ Click and collect options: local, all or disabled. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ clickAndCollectOption: WarehouseClickAndCollectOptionEnum """ Visibility of warehouse stocks. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ isPrivate: Boolean } """ -Deletes selected warehouse. +Deletes selected warehouse. Requires one of the following permissions: MANAGE_PRODUCTS. """ type WarehouseDelete { - warehouseErrors: [WarehouseError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + warehouseErrors: [WarehouseError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [WarehouseError!]! warehouse: Warehouse } """ -Add shipping zone to given warehouse. +Add shipping zone to given warehouse. Requires one of the following permissions: MANAGE_PRODUCTS. """ type WarehouseShippingZoneAssign { - warehouseErrors: [WarehouseError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + warehouseErrors: [WarehouseError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [WarehouseError!]! warehouse: Warehouse } """ -Remove shipping zone from given warehouse. +Remove shipping zone from given warehouse. Requires one of the following permissions: MANAGE_PRODUCTS. """ type WarehouseShippingZoneUnassign { - warehouseErrors: [WarehouseError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + warehouseErrors: [WarehouseError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [WarehouseError!]! warehouse: Warehouse } @@ -16044,7 +20382,7 @@ Create a tax class. Added in Saleor 3.9. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_TAXES. """ @@ -16059,17 +20397,25 @@ type TaxClassCreateError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: TaxClassCreateErrorCode! - """List of country codes for which the configuration is invalid.""" + """ + List of country codes for which the configuration is invalid. + """ countryCodes: [String!]! } -"""An enumeration.""" +""" +An enumeration. +""" enum TaxClassCreateErrorCode { GRAPHQL_ERROR INVALID @@ -16077,15 +20423,21 @@ enum TaxClassCreateErrorCode { } input TaxClassCreateInput { - """Name of the tax class.""" + """ + Name of the tax class. + """ name: String! - """List of country-specific tax rates to create for this tax class.""" + """ + List of country-specific tax rates to create for this tax class. + """ createCountryRates: [CountryRateInput!] } input CountryRateInput { - """Country in which this rate applies.""" + """ + Country in which this rate applies. + """ countryCode: CountryCode! """ @@ -16099,7 +20451,7 @@ Delete a tax class. After deleting the tax class any products, product types or Added in Saleor 3.9. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_TAXES. """ @@ -16114,14 +20466,20 @@ type TaxClassDeleteError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: TaxClassDeleteErrorCode! } -"""An enumeration.""" +""" +An enumeration. +""" enum TaxClassDeleteErrorCode { GRAPHQL_ERROR INVALID @@ -16133,7 +20491,7 @@ Update a tax class. Added in Saleor 3.9. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_TAXES. """ @@ -16148,17 +20506,25 @@ type TaxClassUpdateError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: TaxClassUpdateErrorCode! - """List of country codes for which the configuration is invalid.""" + """ + List of country codes for which the configuration is invalid. + """ countryCodes: [String!]! } -"""An enumeration.""" +""" +An enumeration. +""" enum TaxClassUpdateErrorCode { DUPLICATED_INPUT_ITEM GRAPHQL_ERROR @@ -16167,7 +20533,9 @@ enum TaxClassUpdateErrorCode { } input TaxClassUpdateInput { - """Name of the tax class.""" + """ + Name of the tax class. + """ name: String """ @@ -16182,7 +20550,9 @@ input TaxClassUpdateInput { } input CountryRateUpdateInput { - """Country in which this rate applies.""" + """ + Country in which this rate applies. + """ countryCode: CountryCode! """ @@ -16196,7 +20566,7 @@ Update tax configuration for a channel. Added in Saleor 3.9. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_TAXES. """ @@ -16211,17 +20581,25 @@ type TaxConfigurationUpdateError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: TaxConfigurationUpdateErrorCode! - """List of country codes for which the configuration is invalid.""" + """ + List of country codes for which the configuration is invalid. + """ countryCodes: [String!]! } -"""An enumeration.""" +""" +An enumeration. +""" enum TaxConfigurationUpdateErrorCode { DUPLICATED_INPUT_ITEM GRAPHQL_ERROR @@ -16230,7 +20608,9 @@ enum TaxConfigurationUpdateErrorCode { } input TaxConfigurationUpdateInput { - """Determines whether taxes are charged in the given channel.""" + """ + Determines whether taxes are charged in the given channel. + """ chargeTaxes: Boolean """ @@ -16243,7 +20623,9 @@ input TaxConfigurationUpdateInput { """ displayGrossPrices: Boolean - """Determines whether prices are entered with the tax included.""" + """ + Determines whether prices are entered with the tax included. + """ pricesEnteredWithTax: Boolean """ @@ -16251,15 +20633,21 @@ input TaxConfigurationUpdateInput { """ updateCountriesConfiguration: [TaxConfigurationPerCountryInput!] - """List of country codes for which to remove the tax configuration.""" + """ + List of country codes for which to remove the tax configuration. + """ removeCountriesConfiguration: [CountryCode!] } input TaxConfigurationPerCountryInput { - """Country in which this configuration applies.""" + """ + Country in which this configuration applies. + """ countryCode: CountryCode! - """Determines whether taxes are charged in this country.""" + """ + Determines whether taxes are charged in this country. + """ chargeTaxes: Boolean! """ @@ -16278,12 +20666,14 @@ Update tax class rates for a specific country. Added in Saleor 3.9. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_TAXES. """ type TaxCountryConfigurationUpdate { - """Updated tax class rates grouped by a country.""" + """ + Updated tax class rates grouped by a country. + """ taxCountryConfiguration: TaxCountryConfiguration errors: [TaxCountryConfigurationUpdateError!]! } @@ -16294,17 +20684,25 @@ type TaxCountryConfigurationUpdateError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: TaxCountryConfigurationUpdateErrorCode! - """List of tax class IDs for which the update failed.""" + """ + List of tax class IDs for which the update failed. + """ taxClassIds: [String!]! } -"""An enumeration.""" +""" +An enumeration. +""" enum TaxCountryConfigurationUpdateErrorCode { GRAPHQL_ERROR INVALID @@ -16314,10 +20712,14 @@ enum TaxCountryConfigurationUpdateErrorCode { } input TaxClassRateInput { - """ID of a tax class for which to update the tax rate""" + """ + ID of a tax class for which to update the tax rate + """ taxClassId: ID - """Tax rate value.""" + """ + Tax rate value. + """ rate: Float } @@ -16326,12 +20728,14 @@ Remove all tax class rates for a specific country. Added in Saleor 3.9. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_TAXES. """ type TaxCountryConfigurationDelete { - """Updated tax class rates grouped by a country.""" + """ + Updated tax class rates grouped by a country. + """ taxCountryConfiguration: TaxCountryConfiguration errors: [TaxCountryConfigurationDeleteError!]! } @@ -16342,14 +20746,20 @@ type TaxCountryConfigurationDeleteError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: TaxCountryConfigurationDeleteErrorCode! } -"""An enumeration.""" +""" +An enumeration. +""" enum TaxCountryConfigurationDeleteErrorCode { GRAPHQL_ERROR INVALID @@ -16361,7 +20771,7 @@ Exempt checkout or order from charging the taxes. When tax exemption is enabled, Added in Saleor 3.8. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_TAXES. """ @@ -16378,14 +20788,20 @@ type TaxExemptionManageError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: TaxExemptionManageErrorCode! } -"""An enumeration.""" +""" +An enumeration. +""" enum TaxExemptionManageErrorCode { GRAPHQL_ERROR INVALID @@ -16394,12 +20810,13 @@ enum TaxExemptionManageErrorCode { } """ -Creates a new staff notification recipient. +Creates a new staff notification recipient. Requires one of the following permissions: MANAGE_SETTINGS. """ type StaffNotificationRecipientCreate { - shopErrors: [ShopError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + shopErrors: [ShopError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ShopError!]! staffNotificationRecipient: StaffNotificationRecipient } @@ -16410,14 +20827,20 @@ type ShopError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: ShopErrorCode! } -"""An enumeration.""" +""" +An enumeration. +""" enum ShopErrorCode { ALREADY_EXISTS CANNOT_FETCH_TAX_RATES @@ -16429,181 +20852,225 @@ enum ShopErrorCode { } input StaffNotificationRecipientInput { - """The ID of the user subscribed to email notifications..""" + """ + The ID of the user subscribed to email notifications.. + """ user: ID - """Email address of a user subscribed to email notifications.""" + """ + Email address of a user subscribed to email notifications. + """ email: String - """Determines if a notification active.""" + """ + Determines if a notification active. + """ active: Boolean } """ -Updates a staff notification recipient. +Updates a staff notification recipient. Requires one of the following permissions: MANAGE_SETTINGS. """ type StaffNotificationRecipientUpdate { - shopErrors: [ShopError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + shopErrors: [ShopError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ShopError!]! staffNotificationRecipient: StaffNotificationRecipient } """ -Delete staff notification recipient. +Delete staff notification recipient. Requires one of the following permissions: MANAGE_SETTINGS. """ type StaffNotificationRecipientDelete { - shopErrors: [ShopError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + shopErrors: [ShopError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ShopError!]! staffNotificationRecipient: StaffNotificationRecipient } """ -Updates site domain of the shop. +Updates site domain of the shop. Requires one of the following permissions: MANAGE_SETTINGS. """ type ShopDomainUpdate { - """Updated shop.""" + """ + Updated shop. + """ shop: Shop - shopErrors: [ShopError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + shopErrors: [ShopError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ShopError!]! } input SiteDomainInput { - """Domain name for shop.""" + """ + Domain name for shop. + """ domain: String - """Shop site name.""" + """ + Shop site name. + """ name: String } """ -Updates shop settings. +Updates shop settings. Requires one of the following permissions: MANAGE_SETTINGS. """ type ShopSettingsUpdate { - """Updated shop.""" + """ + Updated shop. + """ shop: Shop - shopErrors: [ShopError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + shopErrors: [ShopError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ShopError!]! } input ShopSettingsInput { - """Header text.""" + """ + Header text. + """ headerText: String - """SEO description.""" + """ + SEO description. + """ description: String - """Enable inventory tracking.""" + """ + Enable inventory tracking. + """ trackInventoryByDefault: Boolean - """Default weight unit.""" + """ + Default weight unit. + """ defaultWeightUnit: WeightUnitsEnum - """Enable automatic fulfillment for all digital products.""" + """ + Enable automatic fulfillment for all digital products. + """ automaticFulfillmentDigitalProducts: Boolean """ Enable automatic approval of all new fulfillments. - + Added in Saleor 3.1. """ fulfillmentAutoApprove: Boolean """ Enable ability to approve fulfillments which are unpaid. - + Added in Saleor 3.1. """ fulfillmentAllowUnpaid: Boolean - """Default number of max downloads per digital content URL.""" + """ + Default number of max downloads per digital content URL. + """ defaultDigitalMaxDownloads: Int - """Default number of days which digital content URL will be valid.""" + """ + Default number of days which digital content URL will be valid. + """ defaultDigitalUrlValidDays: Int - """Default email sender's name.""" + """ + Default email sender's name. + """ defaultMailSenderName: String - """Default email sender's address.""" + """ + Default email sender's address. + """ defaultMailSenderAddress: String - """URL of a view where customers can set their password.""" + """ + URL of a view where customers can set their password. + """ customerSetPasswordUrl: String """ Default number of minutes stock will be reserved for anonymous checkout. Enter 0 or null to disable. - + Added in Saleor 3.1. """ reserveStockDurationAnonymousUser: Int """ Default number of minutes stock will be reserved for authenticated checkout. Enter 0 or null to disable. - + Added in Saleor 3.1. """ reserveStockDurationAuthenticatedUser: Int """ Default number of maximum line quantity in single checkout. Minimum possible value is 1, default value is 50. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ limitQuantityPerCheckout: Int """ - Include taxes in prices. - + Include taxes in prices. + DEPRECATED: this field will be removed in Saleor 4.0. Use `taxConfigurationUpdate` mutation to configure this setting per channel or country. """ includeTaxesInPrices: Boolean """ - Display prices with tax in store. - + Display prices with tax in store. + DEPRECATED: this field will be removed in Saleor 4.0. Use `taxConfigurationUpdate` mutation to configure this setting per channel or country. """ displayGrossPrices: Boolean """ - Charge taxes on shipping. - + Charge taxes on shipping. + DEPRECATED: this field will be removed in Saleor 4.0. To enable taxes for a shipping method, assign a tax class to the shipping method with `shippingPriceCreate` or `shippingPriceUpdate` mutations. """ chargeTaxesOnShipping: Boolean } """ -Fetch tax rates. +Fetch tax rates. Requires one of the following permissions: MANAGE_SETTINGS. """ type ShopFetchTaxRates { - """Updated shop.""" + """ + Updated shop. + """ shop: Shop - shopErrors: [ShopError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + shopErrors: [ShopError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ShopError!]! } """ -Creates/updates translations for shop settings. +Creates/updates translations for shop settings. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ type ShopSettingsTranslate { - """Updated shop settings.""" + """ + Updated shop settings. + """ shop: Shop - translationErrors: [TranslationError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [TranslationError!]! } @@ -16613,14 +21080,20 @@ type TranslationError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: TranslationErrorCode! } -"""An enumeration.""" +""" +An enumeration. +""" enum TranslationErrorCode { GRAPHQL_ERROR INVALID @@ -16634,26 +21107,32 @@ input ShopSettingsTranslationInput { } """ -Update the shop's address. If the `null` value is passed, the currently selected address will be deleted. +Update the shop's address. If the `null` value is passed, the currently selected address will be deleted. Requires one of the following permissions: MANAGE_SETTINGS. """ type ShopAddressUpdate { - """Updated shop.""" + """ + Updated shop. + """ shop: Shop - shopErrors: [ShopError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + shopErrors: [ShopError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ShopError!]! } """ -Update shop order settings. +Update shop order settings. Requires one of the following permissions: MANAGE_ORDERS. """ type OrderSettingsUpdate { - """Order settings.""" + """ + Order settings. + """ orderSettings: OrderSettings - orderSettingsErrors: [OrderSettingsError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderSettingsErrors: [OrderSettingsError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderSettingsError!]! } @@ -16663,14 +21142,20 @@ type OrderSettingsError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: OrderSettingsErrorCode! } -"""An enumeration.""" +""" +An enumeration. +""" enum OrderSettingsErrorCode { INVALID } @@ -16688,12 +21173,14 @@ input OrderSettingsUpdateInput { } """ -Update gift card settings. +Update gift card settings. Requires one of the following permissions: MANAGE_GIFT_CARD. """ type GiftCardSettingsUpdate { - """Gift card settings.""" + """ + Gift card settings. + """ giftCardSettings: GiftCardSettings errors: [GiftCardSettingsError!]! } @@ -16704,14 +21191,20 @@ type GiftCardSettingsError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: GiftCardSettingsErrorCode! } -"""An enumeration.""" +""" +An enumeration. +""" enum GiftCardSettingsErrorCode { INVALID REQUIRED @@ -16719,30 +21212,41 @@ enum GiftCardSettingsErrorCode { } input GiftCardSettingsUpdateInput { - """Defines gift card default expiry settings.""" + """ + Defines gift card default expiry settings. + """ expiryType: GiftCardSettingsExpiryTypeEnum - """Defines gift card expiry period.""" + """ + Defines gift card expiry period. + """ expiryPeriod: TimePeriodInputType } input TimePeriodInputType { - """The length of the period.""" + """ + The length of the period. + """ amount: Int! - """The type of the period.""" + """ + The type of the period. + """ type: TimePeriodTypeEnum! } """ -Manage shipping method's availability in channels. +Manage shipping method's availability in channels. Requires one of the following permissions: MANAGE_SHIPPING. """ type ShippingMethodChannelListingUpdate { - """An updated shipping method instance.""" + """ + An updated shipping method instance. + """ shippingMethod: ShippingMethodType - shippingErrors: [ShippingError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ShippingError!]! } @@ -16752,20 +21256,30 @@ type ShippingError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: ShippingErrorCode! - """List of warehouse IDs which causes the error.""" + """ + List of warehouse IDs which causes the error. + """ warehouses: [ID!] - """List of channels IDs which causes the error.""" + """ + List of channels IDs which causes the error. + """ channels: [ID!] } -"""An enumeration.""" +""" +An enumeration. +""" enum ShippingErrorCode { ALREADY_EXISTS GRAPHQL_ERROR @@ -16778,72 +21292,109 @@ enum ShippingErrorCode { } input ShippingMethodChannelListingInput { - """List of channels to which the shipping method should be assigned.""" + """ + List of channels to which the shipping method should be assigned. + """ addChannels: [ShippingMethodChannelListingAddInput!] - """List of channels from which the shipping method should be unassigned.""" + """ + List of channels from which the shipping method should be unassigned. + """ removeChannels: [ID!] } input ShippingMethodChannelListingAddInput { - """ID of a channel.""" + """ + ID of a channel. + """ channelId: ID! - """Shipping price of the shipping method in this channel.""" + """ + Shipping price of the shipping method in this channel. + """ price: PositiveDecimal - """Minimum order price to use this shipping method.""" + """ + Minimum order price to use this shipping method. + """ minimumOrderPrice: PositiveDecimal - """Maximum order price to use this shipping method.""" + """ + Maximum order price to use this shipping method. + """ maximumOrderPrice: PositiveDecimal } """ -Creates a new shipping price. +Creates a new shipping price. Requires one of the following permissions: MANAGE_SHIPPING. """ type ShippingPriceCreate { - """A shipping zone to which the shipping method belongs.""" + """ + A shipping zone to which the shipping method belongs. + """ shippingZone: ShippingZone shippingMethod: ShippingMethodType - shippingErrors: [ShippingError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ShippingError!]! } input ShippingPriceInput { - """Name of the shipping method.""" + """ + Name of the shipping method. + """ name: String - """Shipping method description.""" + """ + Shipping method description. + """ description: JSONString - """Minimum order weight to use this shipping method.""" + """ + Minimum order weight to use this shipping method. + """ minimumOrderWeight: WeightScalar - """Maximum order weight to use this shipping method.""" + """ + Maximum order weight to use this shipping method. + """ maximumOrderWeight: WeightScalar - """Maximum number of days for delivery.""" + """ + Maximum number of days for delivery. + """ maximumDeliveryDays: Int - """Minimal number of days for delivery.""" + """ + Minimal number of days for delivery. + """ minimumDeliveryDays: Int - """Shipping type: price or weight based.""" + """ + Shipping type: price or weight based. + """ type: ShippingMethodTypeEnum - """Shipping zone this method belongs to.""" + """ + Shipping zone this method belongs to. + """ shippingZone: ID - """Postal code rules to add.""" + """ + Postal code rules to add. + """ addPostalCodeRules: [ShippingPostalCodeRulesCreateInputRange!] - """Postal code rules to delete.""" + """ + Postal code rules to delete. + """ deletePostalCodeRules: [ID!] - """Inclusion type for currently assigned postal code rules.""" + """ + Inclusion type for currently assigned postal code rules. + """ inclusionType: PostalCodeRuleInclusionTypeEnum """ @@ -16855,60 +21406,76 @@ input ShippingPriceInput { scalar WeightScalar input ShippingPostalCodeRulesCreateInputRange { - """Start range of the postal code.""" + """ + Start range of the postal code. + """ start: String! - """End range of the postal code.""" + """ + End range of the postal code. + """ end: String } """ -Deletes a shipping price. +Deletes a shipping price. Requires one of the following permissions: MANAGE_SHIPPING. """ type ShippingPriceDelete { - """A shipping method to delete.""" + """ + A shipping method to delete. + """ shippingMethod: ShippingMethodType - """A shipping zone to which the shipping method belongs.""" + """ + A shipping zone to which the shipping method belongs. + """ shippingZone: ShippingZone - shippingErrors: [ShippingError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ShippingError!]! } """ -Deletes shipping prices. +Deletes shipping prices. Requires one of the following permissions: MANAGE_SHIPPING. """ type ShippingPriceBulkDelete { - """Returns how many objects were affected.""" + """ + Returns how many objects were affected. + """ count: Int! - shippingErrors: [ShippingError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ShippingError!]! } """ -Updates a new shipping price. +Updates a new shipping price. Requires one of the following permissions: MANAGE_SHIPPING. """ type ShippingPriceUpdate { - """A shipping zone to which the shipping method belongs.""" + """ + A shipping zone to which the shipping method belongs. + """ shippingZone: ShippingZone shippingMethod: ShippingMethodType - shippingErrors: [ShippingError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ShippingError!]! } """ -Creates/updates translations for a shipping method. +Creates/updates translations for a shipping method. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ type ShippingPriceTranslate { - translationErrors: [TranslationError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [TranslationError!]! shippingMethod: ShippingMethodType } @@ -16918,60 +21485,75 @@ input ShippingPriceTranslationInput { """ Translated shipping method description. - + Rich text format. For reference see https://editorjs.io/ """ description: JSONString } """ -Exclude products from shipping price. +Exclude products from shipping price. Requires one of the following permissions: MANAGE_SHIPPING. """ type ShippingPriceExcludeProducts { - """A shipping method with new list of excluded products.""" + """ + A shipping method with new list of excluded products. + """ shippingMethod: ShippingMethodType - shippingErrors: [ShippingError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ShippingError!]! } input ShippingPriceExcludeProductsInput { - """List of products which will be excluded.""" + """ + List of products which will be excluded. + """ products: [ID!]! } """ -Remove product from excluded list for shipping price. +Remove product from excluded list for shipping price. Requires one of the following permissions: MANAGE_SHIPPING. """ type ShippingPriceRemoveProductFromExclude { - """A shipping method with new list of excluded products.""" + """ + A shipping method with new list of excluded products. + """ shippingMethod: ShippingMethodType - shippingErrors: [ShippingError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ShippingError!]! } """ -Creates a new shipping zone. +Creates a new shipping zone. Requires one of the following permissions: MANAGE_SHIPPING. """ type ShippingZoneCreate { - shippingErrors: [ShippingError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ShippingError!]! shippingZone: ShippingZone } input ShippingZoneCreateInput { - """Shipping zone's name. Visible only to the staff.""" + """ + Shipping zone's name. Visible only to the staff. + """ name: String - """Description of the shipping zone.""" + """ + Description of the shipping zone. + """ description: String - """List of countries in this shipping zone.""" + """ + List of countries in this shipping zone. + """ countries: [String!] """ @@ -16979,55 +21561,70 @@ input ShippingZoneCreateInput { """ default: Boolean - """List of warehouses to assign to a shipping zone""" + """ + List of warehouses to assign to a shipping zone + """ addWarehouses: [ID!] - """List of channels to assign to the shipping zone.""" + """ + List of channels to assign to the shipping zone. + """ addChannels: [ID!] } """ -Deletes a shipping zone. +Deletes a shipping zone. Requires one of the following permissions: MANAGE_SHIPPING. """ type ShippingZoneDelete { - shippingErrors: [ShippingError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ShippingError!]! shippingZone: ShippingZone } """ -Deletes shipping zones. +Deletes shipping zones. Requires one of the following permissions: MANAGE_SHIPPING. """ type ShippingZoneBulkDelete { - """Returns how many objects were affected.""" + """ + Returns how many objects were affected. + """ count: Int! - shippingErrors: [ShippingError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ShippingError!]! } """ -Updates a new shipping zone. +Updates a new shipping zone. Requires one of the following permissions: MANAGE_SHIPPING. """ type ShippingZoneUpdate { - shippingErrors: [ShippingError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ShippingError!]! shippingZone: ShippingZone } input ShippingZoneUpdateInput { - """Shipping zone's name. Visible only to the staff.""" + """ + Shipping zone's name. Visible only to the staff. + """ name: String - """Description of the shipping zone.""" + """ + Description of the shipping zone. + """ description: String - """List of countries in this shipping zone.""" + """ + List of countries in this shipping zone. + """ countries: [String!] """ @@ -17035,28 +21632,39 @@ input ShippingZoneUpdateInput { """ default: Boolean - """List of warehouses to assign to a shipping zone""" + """ + List of warehouses to assign to a shipping zone + """ addWarehouses: [ID!] - """List of channels to assign to the shipping zone.""" + """ + List of channels to assign to the shipping zone. + """ addChannels: [ID!] - """List of warehouses to unassign from a shipping zone""" + """ + List of warehouses to unassign from a shipping zone + """ removeWarehouses: [ID!] - """List of channels to unassign from the shipping zone.""" + """ + List of channels to unassign from the shipping zone. + """ removeChannels: [ID!] } """ -Assign attributes to a given product type. +Assign attributes to a given product type. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ type ProductAttributeAssign { - """The updated product type.""" + """ + The updated product type. + """ productType: ProductType - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! } @@ -17066,20 +21674,30 @@ type ProductError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: ProductErrorCode! - """List of attributes IDs which causes the error.""" + """ + List of attributes IDs which causes the error. + """ attributes: [ID!] - """List of attribute values IDs which causes the error.""" + """ + List of attribute values IDs which causes the error. + """ values: [ID!] } -"""An enumeration.""" +""" +An enumeration. +""" enum ProductErrorCode { ALREADY_EXISTS ATTRIBUTE_ALREADY_ASSIGNED @@ -17103,15 +21721,19 @@ enum ProductErrorCode { } input ProductAttributeAssignInput { - """The ID of the attribute to assign.""" + """ + The ID of the attribute to assign. + """ id: ID! - """The attribute type to be assigned as.""" + """ + The attribute type to be assigned as. + """ type: ProductAttributeType! """ Whether attribute is allowed in variant selection. Allowed types are: ['dropdown', 'boolean', 'swatch', 'numeric']. - + Added in Saleor 3.1. """ variantSelection: Boolean @@ -17125,48 +21747,57 @@ enum ProductAttributeType { """ Update attributes assigned to product variant for given product type. -Added in Saleor 3.1. +Added in Saleor 3.1. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ type ProductAttributeAssignmentUpdate { - """The updated product type.""" + """ + The updated product type. + """ productType: ProductType - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! } input ProductAttributeAssignmentUpdateInput { - """The ID of the attribute to assign.""" + """ + The ID of the attribute to assign. + """ id: ID! """ Whether attribute is allowed in variant selection. Allowed types are: ['dropdown', 'boolean', 'swatch', 'numeric']. - + Added in Saleor 3.1. """ variantSelection: Boolean! } """ -Un-assign attributes from a given product type. +Un-assign attributes from a given product type. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ type ProductAttributeUnassign { - """The updated product type.""" + """ + The updated product type. + """ productType: ProductType - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! } """ -Creates a new category. +Creates a new category. Requires one of the following permissions: MANAGE_PRODUCTS. """ type CategoryCreate { - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! category: Category } @@ -17174,46 +21805,60 @@ type CategoryCreate { input CategoryInput { """ Category description. - + Rich text format. For reference see https://editorjs.io/ """ description: JSONString - """Category name.""" + """ + Category name. + """ name: String - """Category slug.""" + """ + Category slug. + """ slug: String - """Search engine optimization fields.""" + """ + Search engine optimization fields. + """ seo: SeoInput - """Background image file.""" + """ + Background image file. + """ backgroundImage: Upload - """Alt text for a product media.""" + """ + Alt text for a product media. + """ backgroundImageAlt: String """ Fields required to update the category metadata. - + Added in Saleor 3.8. """ metadata: [MetadataInput!] """ Fields required to update the category private metadata. - + Added in Saleor 3.8. """ privateMetadata: [MetadataInput!] } input SeoInput { - """SEO title.""" + """ + SEO title. + """ title: String - """SEO description.""" + """ + SEO description. + """ description: String } @@ -17223,54 +21868,64 @@ Variables of this type must be set to null in mutations. They will be replaced w scalar Upload input MetadataInput { - """Key of a metadata item.""" + """ + Key of a metadata item. + """ key: String! - """Value of a metadata item.""" + """ + Value of a metadata item. + """ value: String! } """ -Deletes a category. +Deletes a category. Requires one of the following permissions: MANAGE_PRODUCTS. """ type CategoryDelete { - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! category: Category } """ -Deletes categories. +Deletes categories. Requires one of the following permissions: MANAGE_PRODUCTS. """ type CategoryBulkDelete { - """Returns how many objects were affected.""" + """ + Returns how many objects were affected. + """ count: Int! - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! } """ -Updates a category. +Updates a category. Requires one of the following permissions: MANAGE_PRODUCTS. """ type CategoryUpdate { - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! category: Category } """ -Creates/updates translations for a category. +Creates/updates translations for a category. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ type CategoryTranslate { - translationErrors: [TranslationError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [TranslationError!]! category: Category } @@ -17282,21 +21937,24 @@ input TranslationInput { """ Translated description. - + Rich text format. For reference see https://editorjs.io/ """ description: JSONString } """ -Adds products to a collection. +Adds products to a collection. Requires one of the following permissions: MANAGE_PRODUCTS. """ type CollectionAddProducts { - """Collection to which products will be added.""" + """ + Collection to which products will be added. + """ collection: Collection - collectionErrors: [CollectionError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + collectionErrors: [CollectionError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [CollectionError!]! } @@ -17306,17 +21964,25 @@ type CollectionError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """List of products IDs which causes the error.""" + """ + List of products IDs which causes the error. + """ products: [ID!] - """The error code.""" + """ + The error code. + """ code: CollectionErrorCode! } -"""An enumeration.""" +""" +An enumeration. +""" enum CollectionErrorCode { DUPLICATED_INPUT_ITEM GRAPHQL_ERROR @@ -17328,92 +21994,113 @@ enum CollectionErrorCode { } """ -Creates a new collection. +Creates a new collection. Requires one of the following permissions: MANAGE_PRODUCTS. """ type CollectionCreate { - collectionErrors: [CollectionError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + collectionErrors: [CollectionError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [CollectionError!]! collection: Collection } input CollectionCreateInput { - """Informs whether a collection is published.""" + """ + Informs whether a collection is published. + """ isPublished: Boolean - """Name of the collection.""" + """ + Name of the collection. + """ name: String - """Slug of the collection.""" + """ + Slug of the collection. + """ slug: String """ Description of the collection. - + Rich text format. For reference see https://editorjs.io/ """ description: JSONString - """Background image file.""" + """ + Background image file. + """ backgroundImage: Upload - """Alt text for an image.""" + """ + Alt text for an image. + """ backgroundImageAlt: String - """Search engine optimization fields.""" + """ + Search engine optimization fields. + """ seo: SeoInput """ - Publication date. ISO 8601 standard. - + Publication date. ISO 8601 standard. + DEPRECATED: this field will be removed in Saleor 4.0. """ publicationDate: Date """ Fields required to update the collection metadata. - + Added in Saleor 3.8. """ metadata: [MetadataInput!] """ Fields required to update the collection private metadata. - + Added in Saleor 3.8. """ privateMetadata: [MetadataInput!] - """List of products to be added to the collection.""" + """ + List of products to be added to the collection. + """ products: [ID!] } """ -Deletes a collection. +Deletes a collection. Requires one of the following permissions: MANAGE_PRODUCTS. """ type CollectionDelete { - collectionErrors: [CollectionError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + collectionErrors: [CollectionError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [CollectionError!]! collection: Collection } """ -Reorder the products of a collection. +Reorder the products of a collection. Requires one of the following permissions: MANAGE_PRODUCTS. """ type CollectionReorderProducts { - """Collection from which products are reordered.""" + """ + Collection from which products are reordered. + """ collection: Collection - collectionErrors: [CollectionError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + collectionErrors: [CollectionError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [CollectionError!]! } input MoveProductInput { - """The ID of the product to move.""" + """ + The ID of the product to move. + """ productId: ID! """ @@ -17423,108 +22110,131 @@ input MoveProductInput { } """ -Deletes collections. +Deletes collections. Requires one of the following permissions: MANAGE_PRODUCTS. """ type CollectionBulkDelete { - """Returns how many objects were affected.""" + """ + Returns how many objects were affected. + """ count: Int! - collectionErrors: [CollectionError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + collectionErrors: [CollectionError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [CollectionError!]! } """ -Remove products from a collection. +Remove products from a collection. Requires one of the following permissions: MANAGE_PRODUCTS. """ type CollectionRemoveProducts { - """Collection from which products will be removed.""" + """ + Collection from which products will be removed. + """ collection: Collection - collectionErrors: [CollectionError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + collectionErrors: [CollectionError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [CollectionError!]! } """ -Updates a collection. +Updates a collection. Requires one of the following permissions: MANAGE_PRODUCTS. """ type CollectionUpdate { - collectionErrors: [CollectionError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + collectionErrors: [CollectionError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [CollectionError!]! collection: Collection } input CollectionInput { - """Informs whether a collection is published.""" + """ + Informs whether a collection is published. + """ isPublished: Boolean - """Name of the collection.""" + """ + Name of the collection. + """ name: String - """Slug of the collection.""" + """ + Slug of the collection. + """ slug: String """ Description of the collection. - + Rich text format. For reference see https://editorjs.io/ """ description: JSONString - """Background image file.""" + """ + Background image file. + """ backgroundImage: Upload - """Alt text for an image.""" + """ + Alt text for an image. + """ backgroundImageAlt: String - """Search engine optimization fields.""" + """ + Search engine optimization fields. + """ seo: SeoInput """ - Publication date. ISO 8601 standard. - + Publication date. ISO 8601 standard. + DEPRECATED: this field will be removed in Saleor 4.0. """ publicationDate: Date """ Fields required to update the collection metadata. - + Added in Saleor 3.8. """ metadata: [MetadataInput!] """ Fields required to update the collection private metadata. - + Added in Saleor 3.8. """ privateMetadata: [MetadataInput!] } """ -Creates/updates translations for a collection. +Creates/updates translations for a collection. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ type CollectionTranslate { - translationErrors: [TranslationError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [TranslationError!]! collection: Collection } """ -Manage collection's availability in channels. +Manage collection's availability in channels. Requires one of the following permissions: MANAGE_PRODUCTS. """ type CollectionChannelListingUpdate { - """An updated collection instance.""" + """ + An updated collection instance. + """ collection: Collection - collectionChannelListingErrors: [CollectionChannelListingError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + collectionChannelListingErrors: [CollectionChannelListingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [CollectionChannelListingError!]! } @@ -17534,91 +22244,120 @@ type CollectionChannelListingError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: ProductErrorCode! - """List of attributes IDs which causes the error.""" + """ + List of attributes IDs which causes the error. + """ attributes: [ID!] - """List of attribute values IDs which causes the error.""" + """ + List of attribute values IDs which causes the error. + """ values: [ID!] - """List of channels IDs which causes the error.""" + """ + List of channels IDs which causes the error. + """ channels: [ID!] } input CollectionChannelListingUpdateInput { - """List of channels to which the collection should be assigned.""" + """ + List of channels to which the collection should be assigned. + """ addChannels: [PublishableChannelListingInput!] - """List of channels from which the collection should be unassigned.""" + """ + List of channels from which the collection should be unassigned. + """ removeChannels: [ID!] } input PublishableChannelListingInput { - """ID of a channel.""" + """ + ID of a channel. + """ channelId: ID! - """Determines if object is visible to customers.""" + """ + Determines if object is visible to customers. + """ isPublished: Boolean """ - Publication date. ISO 8601 standard. - + Publication date. ISO 8601 standard. + DEPRECATED: this field will be removed in Saleor 4.0. Use `publishedAt` field instead. """ publicationDate: Date """ Publication date time. ISO 8601 standard. - + Added in Saleor 3.3. """ publishedAt: DateTime } """ -Creates a new product. +Creates a new product. Requires one of the following permissions: MANAGE_PRODUCTS. """ type ProductCreate { - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! product: Product } input ProductCreateInput { - """List of attributes.""" + """ + List of attributes. + """ attributes: [AttributeValueInput!] - """ID of the product's category.""" + """ + ID of the product's category. + """ category: ID """ - Determine if taxes are being charged for the product. - + Determine if taxes are being charged for the product. + DEPRECATED: this field will be removed in Saleor 4.0. Use `Channel.taxConfiguration` to configure whether tax collection is enabled. """ chargeTaxes: Boolean - """List of IDs of collections that the product belongs to.""" + """ + List of IDs of collections that the product belongs to. + """ collections: [ID!] """ Product description. - + Rich text format. For reference see https://editorjs.io/ """ description: JSONString - """Product name.""" + """ + Product name. + """ name: String - """Product slug.""" + """ + Product slug. + """ slug: String """ @@ -17627,48 +22366,58 @@ input ProductCreateInput { taxClass: ID """ - Tax rate for enabled tax gateway. - + Tax rate for enabled tax gateway. + DEPRECATED: this field will be removed in Saleor 4.0. Use tax classes to control the tax calculation for a product. """ taxCode: String - """Search engine optimization fields.""" + """ + Search engine optimization fields. + """ seo: SeoInput - """Weight of the Product.""" + """ + Weight of the Product. + """ weight: WeightScalar - """Defines the product rating value.""" + """ + Defines the product rating value. + """ rating: Float """ Fields required to update the product metadata. - + Added in Saleor 3.8. """ metadata: [MetadataInput!] """ Fields required to update the product private metadata. - + Added in Saleor 3.8. """ privateMetadata: [MetadataInput!] """ External ID of this product. - + Added in Saleor 3.10. """ externalReference: String - """ID of the type that product belongs to.""" + """ + ID of the type that product belongs to. + """ productType: ID! } input AttributeValueInput { - """ID of the selected attribute.""" + """ + ID of the selected attribute. + """ id: ID """ @@ -17678,64 +22427,82 @@ input AttributeValueInput { """ Attribute value ID. - + Added in Saleor 3.9. """ dropdown: AttributeValueSelectableTypeInput """ Attribute value ID. - + Added in Saleor 3.9. """ swatch: AttributeValueSelectableTypeInput """ List of attribute value IDs. - + Added in Saleor 3.9. """ multiselect: [AttributeValueSelectableTypeInput!] """ Numeric value of an attribute. - + Added in Saleor 3.9. """ numeric: String - """URL of the file attribute. Every time, a new value is created.""" + """ + URL of the file attribute. Every time, a new value is created. + """ file: String - """File content type.""" + """ + File content type. + """ contentType: String - """List of entity IDs that will be used as references.""" + """ + List of entity IDs that will be used as references. + """ references: [ID!] - """Text content in JSON format.""" + """ + Text content in JSON format. + """ richText: JSONString - """Plain text content.""" + """ + Plain text content. + """ plainText: String - """Represents the boolean value of the attribute value.""" + """ + Represents the boolean value of the attribute value. + """ boolean: Boolean - """Represents the date value of the attribute value.""" + """ + Represents the date value of the attribute value. + """ date: Date - """Represents the date/time value of the attribute value.""" + """ + Represents the date/time value of the attribute value. + """ dateTime: DateTime } """ -Represents attribute value. If no ID provided, value will be resolved. +Represents attribute value. If no ID provided, value will be resolved. Added in Saleor 3.9. """ input AttributeValueSelectableTypeInput { - """ID of an attribute value.""" + """ + ID of an attribute value. + """ id: ID """ @@ -17745,67 +22512,82 @@ input AttributeValueSelectableTypeInput { } """ -Deletes a product. +Deletes a product. Requires one of the following permissions: MANAGE_PRODUCTS. """ type ProductDelete { - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! product: Product } """ -Deletes products. +Deletes products. Requires one of the following permissions: MANAGE_PRODUCTS. """ type ProductBulkDelete { - """Returns how many objects were affected.""" + """ + Returns how many objects were affected. + """ count: Int! - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! } """ -Updates an existing product. +Updates an existing product. Requires one of the following permissions: MANAGE_PRODUCTS. """ type ProductUpdate { - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! product: Product } input ProductInput { - """List of attributes.""" + """ + List of attributes. + """ attributes: [AttributeValueInput!] - """ID of the product's category.""" + """ + ID of the product's category. + """ category: ID """ - Determine if taxes are being charged for the product. - + Determine if taxes are being charged for the product. + DEPRECATED: this field will be removed in Saleor 4.0. Use `Channel.taxConfiguration` to configure whether tax collection is enabled. """ chargeTaxes: Boolean - """List of IDs of collections that the product belongs to.""" + """ + List of IDs of collections that the product belongs to. + """ collections: [ID!] """ Product description. - + Rich text format. For reference see https://editorjs.io/ """ description: JSONString - """Product name.""" + """ + Product name. + """ name: String - """Product slug.""" + """ + Product slug. + """ slug: String """ @@ -17814,63 +22596,73 @@ input ProductInput { taxClass: ID """ - Tax rate for enabled tax gateway. - + Tax rate for enabled tax gateway. + DEPRECATED: this field will be removed in Saleor 4.0. Use tax classes to control the tax calculation for a product. """ taxCode: String - """Search engine optimization fields.""" + """ + Search engine optimization fields. + """ seo: SeoInput - """Weight of the Product.""" + """ + Weight of the Product. + """ weight: WeightScalar - """Defines the product rating value.""" + """ + Defines the product rating value. + """ rating: Float """ Fields required to update the product metadata. - + Added in Saleor 3.8. """ metadata: [MetadataInput!] """ Fields required to update the product private metadata. - + Added in Saleor 3.8. """ privateMetadata: [MetadataInput!] """ External ID of this product. - + Added in Saleor 3.10. """ externalReference: String } """ -Creates/updates translations for a product. +Creates/updates translations for a product. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ type ProductTranslate { - translationErrors: [TranslationError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [TranslationError!]! product: Product } """ -Manage product's availability in channels. +Manage product's availability in channels. Requires one of the following permissions: MANAGE_PRODUCTS. """ type ProductChannelListingUpdate { - """An updated product instance.""" + """ + An updated product instance. + """ product: Product - productChannelListingErrors: [ProductChannelListingError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productChannelListingErrors: [ProductChannelListingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductChannelListingError!]! } @@ -17880,50 +22672,70 @@ type ProductChannelListingError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: ProductErrorCode! - """List of attributes IDs which causes the error.""" + """ + List of attributes IDs which causes the error. + """ attributes: [ID!] - """List of attribute values IDs which causes the error.""" + """ + List of attribute values IDs which causes the error. + """ values: [ID!] - """List of channels IDs which causes the error.""" + """ + List of channels IDs which causes the error. + """ channels: [ID!] - """List of variants IDs which causes the error.""" + """ + List of variants IDs which causes the error. + """ variants: [ID!] } input ProductChannelListingUpdateInput { - """List of channels to which the product should be assigned or updated.""" + """ + List of channels to which the product should be assigned or updated. + """ updateChannels: [ProductChannelListingAddInput!] - """List of channels from which the product should be unassigned.""" + """ + List of channels from which the product should be unassigned. + """ removeChannels: [ID!] } input ProductChannelListingAddInput { - """ID of a channel.""" + """ + ID of a channel. + """ channelId: ID! - """Determines if object is visible to customers.""" + """ + Determines if object is visible to customers. + """ isPublished: Boolean """ - Publication date. ISO 8601 standard. - + Publication date. ISO 8601 standard. + DEPRECATED: this field will be removed in Saleor 4.0. Use `publishedAt` field instead. """ publicationDate: Date """ Publication date time. ISO 8601 standard. - + Added in Saleor 3.3. """ publishedAt: DateTime @@ -17933,69 +22745,87 @@ input ProductChannelListingAddInput { """ visibleInListings: Boolean - """Determine if product should be available for purchase.""" + """ + Determine if product should be available for purchase. + """ isAvailableForPurchase: Boolean """ - A start date from which a product will be available for purchase. When not set and isAvailable is set to True, the current day is assumed. - + A start date from which a product will be available for purchase. When not set and isAvailable is set to True, the current day is assumed. + DEPRECATED: this field will be removed in Saleor 4.0. Use `availableForPurchaseAt` field instead. """ availableForPurchaseDate: Date """ A start date time from which a product will be available for purchase. When not set and `isAvailable` is set to True, the current day is assumed. - + Added in Saleor 3.3. """ availableForPurchaseAt: DateTime - """List of variants to which the channel should be assigned.""" + """ + List of variants to which the channel should be assigned. + """ addVariants: [ID!] - """List of variants from which the channel should be unassigned.""" + """ + List of variants from which the channel should be unassigned. + """ removeVariants: [ID!] } """ -Create a media object (image or video URL) associated with product. For image, this mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec +Create a media object (image or video URL) associated with product. For image, this mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec Requires one of the following permissions: MANAGE_PRODUCTS. """ type ProductMediaCreate { product: Product media: ProductMedia - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! } input ProductMediaCreateInput { - """Alt text for a product media.""" + """ + Alt text for a product media. + """ alt: String - """Represents an image file in a multipart request.""" + """ + Represents an image file in a multipart request. + """ image: Upload - """ID of an product.""" + """ + ID of an product. + """ product: ID! - """Represents an URL to an external media.""" + """ + Represents an URL to an external media. + """ mediaUrl: String } """ -Reorder the variants of a product. Mutation updates updated_at on product and triggers PRODUCT_UPDATED webhook. +Reorder the variants of a product. Mutation updates updated_at on product and triggers PRODUCT_UPDATED webhook. Requires one of the following permissions: MANAGE_PRODUCTS. """ type ProductVariantReorder { product: Product - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! } input ReorderInput { - """The ID of the item to move.""" + """ + The ID of the item to move. + """ id: ID! """ @@ -18005,77 +22835,92 @@ input ReorderInput { } """ -Deletes a product media. +Deletes a product media. Requires one of the following permissions: MANAGE_PRODUCTS. """ type ProductMediaDelete { product: Product media: ProductMedia - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! } """ -Deletes product media. +Deletes product media. Requires one of the following permissions: MANAGE_PRODUCTS. """ type ProductMediaBulkDelete { - """Returns how many objects were affected.""" + """ + Returns how many objects were affected. + """ count: Int! - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! } """ -Changes ordering of the product media. +Changes ordering of the product media. Requires one of the following permissions: MANAGE_PRODUCTS. """ type ProductMediaReorder { product: Product media: [ProductMedia!] - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! } """ -Updates a product media. +Updates a product media. Requires one of the following permissions: MANAGE_PRODUCTS. """ type ProductMediaUpdate { product: Product media: ProductMedia - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! } input ProductMediaUpdateInput { - """Alt text for a product media.""" + """ + Alt text for a product media. + """ alt: String } """ -Creates a new product type. +Creates a new product type. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ type ProductTypeCreate { - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! productType: ProductType } input ProductTypeInput { - """Name of the product type.""" + """ + Name of the product type. + """ name: String - """Product type slug.""" + """ + Product type slug. + """ slug: String - """The product type kind.""" + """ + The product type kind. + """ kind: ProductTypeKindEnum """ @@ -18083,7 +22928,9 @@ input ProductTypeInput { """ hasVariants: Boolean - """List of attributes shared among all product variants.""" + """ + List of attributes shared among all product variants. + """ productAttributes: [ID!] """ @@ -18091,18 +22938,24 @@ input ProductTypeInput { """ variantAttributes: [ID!] - """Determines if shipping is required for products of this variant.""" + """ + Determines if shipping is required for products of this variant. + """ isShippingRequired: Boolean - """Determines if products are digital.""" + """ + Determines if products are digital. + """ isDigital: Boolean - """Weight of the ProductType items.""" + """ + Weight of the ProductType items. + """ weight: WeightScalar """ - Tax rate for enabled tax gateway. - + Tax rate for enabled tax gateway. + DEPRECATED: this field will be removed in Saleor 4.0.. Use tax classes to control the tax calculation for a product type. """ taxCode: String @@ -18114,77 +22967,91 @@ input ProductTypeInput { } """ -Deletes a product type. +Deletes a product type. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ type ProductTypeDelete { - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! productType: ProductType } """ -Deletes product types. +Deletes product types. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ type ProductTypeBulkDelete { - """Returns how many objects were affected.""" + """ + Returns how many objects were affected. + """ count: Int! - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! } """ -Updates an existing product type. +Updates an existing product type. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ type ProductTypeUpdate { - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! productType: ProductType } """ -Reorder the attributes of a product type. +Reorder the attributes of a product type. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ type ProductTypeReorderAttributes { - """Product type from which attributes are reordered.""" + """ + Product type from which attributes are reordered. + """ productType: ProductType - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! } """ -Reorder product attribute values. +Reorder product attribute values. Requires one of the following permissions: MANAGE_PRODUCTS. """ type ProductReorderAttributeValues { - """Product from which attribute values are reordered.""" + """ + Product from which attribute values are reordered. + """ product: Product - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! } """ -Create new digital content. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec +Create new digital content. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec Requires one of the following permissions: MANAGE_PRODUCTS. """ type DigitalContentCreate { variant: ProductVariant content: DigitalContent - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! } input DigitalContentUploadInput { - """Use default digital content settings for this product.""" + """ + Use default digital content settings for this product. + """ useDefaultSettings: Boolean! """ @@ -18197,52 +23064,60 @@ input DigitalContentUploadInput { """ urlValidDays: Int - """Overwrite default automatic_fulfillment setting for variant.""" + """ + Overwrite default automatic_fulfillment setting for variant. + """ automaticFulfillment: Boolean """ Fields required to update the digital content metadata. - + Added in Saleor 3.8. """ metadata: [MetadataInput!] """ Fields required to update the digital content private metadata. - + Added in Saleor 3.8. """ privateMetadata: [MetadataInput!] - """Represents an file in a multipart request.""" + """ + Represents an file in a multipart request. + """ contentFile: Upload! } """ -Remove digital content assigned to given variant. +Remove digital content assigned to given variant. Requires one of the following permissions: MANAGE_PRODUCTS. """ type DigitalContentDelete { variant: ProductVariant - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! } """ -Update digital content. +Update digital content. Requires one of the following permissions: MANAGE_PRODUCTS. """ type DigitalContentUpdate { variant: ProductVariant content: DigitalContent - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! } input DigitalContentInput { - """Use default digital content settings for this product.""" + """ + Use default digital content settings for this product. + """ useDefaultSettings: Boolean! """ @@ -18255,59 +23130,71 @@ input DigitalContentInput { """ urlValidDays: Int - """Overwrite default automatic_fulfillment setting for variant.""" + """ + Overwrite default automatic_fulfillment setting for variant. + """ automaticFulfillment: Boolean """ Fields required to update the digital content metadata. - + Added in Saleor 3.8. """ metadata: [MetadataInput!] """ Fields required to update the digital content private metadata. - + Added in Saleor 3.8. """ privateMetadata: [MetadataInput!] } """ -Generate new URL to digital content. +Generate new URL to digital content. Requires one of the following permissions: MANAGE_PRODUCTS. """ type DigitalContentUrlCreate { - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! digitalContentUrl: DigitalContentUrl } input DigitalContentUrlCreateInput { - """Digital content ID which URL will belong to.""" + """ + Digital content ID which URL will belong to. + """ content: ID! } """ -Creates a new variant for a product. +Creates a new variant for a product. Requires one of the following permissions: MANAGE_PRODUCTS. """ type ProductVariantCreate { - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! productVariant: ProductVariant } input ProductVariantCreateInput { - """List of attributes specific to this variant.""" + """ + List of attributes specific to this variant. + """ attributes: [AttributeValueInput!]! - """Stock keeping unit.""" + """ + Stock keeping unit. + """ sku: String - """Variant name.""" + """ + Variant name. + """ name: String """ @@ -18315,94 +23202,114 @@ input ProductVariantCreateInput { """ trackInventory: Boolean - """Weight of the Product Variant.""" + """ + Weight of the Product Variant. + """ weight: WeightScalar """ Determines if variant is in preorder. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ preorder: PreorderSettingsInput """ Determines maximum quantity of `ProductVariant`,that can be bought in a single checkout. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ quantityLimitPerCustomer: Int """ Fields required to update the product variant metadata. - + Added in Saleor 3.8. """ metadata: [MetadataInput!] """ Fields required to update the product variant private metadata. - + Added in Saleor 3.8. """ privateMetadata: [MetadataInput!] """ External ID of this product variant. - + Added in Saleor 3.10. """ externalReference: String - """Product ID of which type is the variant.""" + """ + Product ID of which type is the variant. + """ product: ID! - """Stocks of a product available for sale.""" + """ + Stocks of a product available for sale. + """ stocks: [StockInput!] } input PreorderSettingsInput { - """The global threshold for preorder variant.""" + """ + The global threshold for preorder variant. + """ globalThreshold: Int - """The end date for preorder.""" + """ + The end date for preorder. + """ endDate: DateTime } input StockInput { - """Warehouse in which stock is located.""" + """ + Warehouse in which stock is located. + """ warehouse: ID! - """Quantity of items available for sell.""" + """ + Quantity of items available for sell. + """ quantity: Int! } """ -Deletes a product variant. +Deletes a product variant. Requires one of the following permissions: MANAGE_PRODUCTS. """ type ProductVariantDelete { - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! productVariant: ProductVariant } """ -Creates product variants for a given product. +Creates product variants for a given product. Requires one of the following permissions: MANAGE_PRODUCTS. """ type ProductVariantBulkCreate { - """Returns how many objects were created.""" + """ + Returns how many objects were created. + """ count: Int! - """List of the created variants.""" + """ + List of the created variants. + """ productVariants: [ProductVariant!]! - bulkProductErrors: [BulkProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + bulkProductErrors: [BulkProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [BulkProductError!]! } @@ -18412,36 +23319,56 @@ type BulkProductError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: ProductErrorCode! - """List of attributes IDs which causes the error.""" + """ + List of attributes IDs which causes the error. + """ attributes: [ID!] - """List of attribute values IDs which causes the error.""" + """ + List of attribute values IDs which causes the error. + """ values: [ID!] - """Index of an input list item that caused the error.""" + """ + Index of an input list item that caused the error. + """ index: Int - """List of warehouse IDs which causes the error.""" + """ + List of warehouse IDs which causes the error. + """ warehouses: [ID!] - """List of channel IDs which causes the error.""" + """ + List of channel IDs which causes the error. + """ channels: [ID!] } input ProductVariantBulkCreateInput { - """List of attributes specific to this variant.""" + """ + List of attributes specific to this variant. + """ attributes: [BulkAttributeValueInput!]! - """Stock keeping unit.""" + """ + Stock keeping unit. + """ sku: String - """Variant name.""" + """ + Variant name. + """ name: String """ @@ -18449,57 +23376,65 @@ input ProductVariantBulkCreateInput { """ trackInventory: Boolean - """Weight of the Product Variant.""" + """ + Weight of the Product Variant. + """ weight: WeightScalar """ Determines if variant is in preorder. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ preorder: PreorderSettingsInput """ Determines maximum quantity of `ProductVariant`,that can be bought in a single checkout. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ quantityLimitPerCustomer: Int """ Fields required to update the product variant metadata. - + Added in Saleor 3.8. """ metadata: [MetadataInput!] """ Fields required to update the product variant private metadata. - + Added in Saleor 3.8. """ privateMetadata: [MetadataInput!] """ External ID of this product variant. - + Added in Saleor 3.10. """ externalReference: String - """Stocks of a product available for sale.""" + """ + Stocks of a product available for sale. + """ stocks: [StockInput!] - """List of prices assigned to channels.""" + """ + List of prices assigned to channels. + """ channelListings: [ProductVariantChannelListingAddInput!] } input BulkAttributeValueInput { - """ID of the selected attribute.""" + """ + ID of the selected attribute. + """ id: ID """ @@ -18514,46 +23449,58 @@ input BulkAttributeValueInput { } input ProductVariantChannelListingAddInput { - """ID of a channel.""" + """ + ID of a channel. + """ channelId: ID! - """Price of the particular variant in channel.""" + """ + Price of the particular variant in channel. + """ price: PositiveDecimal! - """Cost price of the variant in channel.""" + """ + Cost price of the variant in channel. + """ costPrice: PositiveDecimal """ The threshold for preorder variant in channel. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ preorderThreshold: Int } """ -Deletes product variants. +Deletes product variants. Requires one of the following permissions: MANAGE_PRODUCTS. """ type ProductVariantBulkDelete { - """Returns how many objects were affected.""" + """ + Returns how many objects were affected. + """ count: Int! - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! } """ -Creates stocks for product variant. +Creates stocks for product variant. Requires one of the following permissions: MANAGE_PRODUCTS. """ type ProductVariantStocksCreate { - """Updated product variant.""" + """ + Updated product variant. + """ productVariant: ProductVariant - bulkStockErrors: [BulkStockError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + bulkStockErrors: [BulkStockError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [BulkStockError!]! } @@ -18563,31 +23510,44 @@ type BulkStockError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: ProductErrorCode! - """List of attributes IDs which causes the error.""" + """ + List of attributes IDs which causes the error. + """ attributes: [ID!] - """List of attribute values IDs which causes the error.""" + """ + List of attribute values IDs which causes the error. + """ values: [ID!] - """Index of an input list item that caused the error.""" + """ + Index of an input list item that caused the error. + """ index: Int } """ -Delete stocks from product variant. +Delete stocks from product variant. Requires one of the following permissions: MANAGE_PRODUCTS. """ type ProductVariantStocksDelete { - """Updated product variant.""" + """ + Updated product variant. + """ productVariant: ProductVariant - stockErrors: [StockError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + stockErrors: [StockError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [StockError!]! } @@ -18597,14 +23557,20 @@ type StockError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: StockErrorCode! } -"""An enumeration.""" +""" +An enumeration. +""" enum StockErrorCode { ALREADY_EXISTS GRAPHQL_ERROR @@ -18615,36 +23581,46 @@ enum StockErrorCode { } """ -Update stocks for product variant. +Update stocks for product variant. Requires one of the following permissions: MANAGE_PRODUCTS. """ type ProductVariantStocksUpdate { - """Updated product variant.""" + """ + Updated product variant. + """ productVariant: ProductVariant - bulkStockErrors: [BulkStockError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + bulkStockErrors: [BulkStockError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [BulkStockError!]! } """ -Updates an existing variant for product. +Updates an existing variant for product. Requires one of the following permissions: MANAGE_PRODUCTS. """ type ProductVariantUpdate { - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! productVariant: ProductVariant } input ProductVariantInput { - """List of attributes specific to this variant.""" + """ + List of attributes specific to this variant. + """ attributes: [AttributeValueInput!] - """Stock keeping unit.""" + """ + Stock keeping unit. + """ sku: String - """Variant name.""" + """ + Variant name. + """ name: String """ @@ -18652,67 +23628,71 @@ input ProductVariantInput { """ trackInventory: Boolean - """Weight of the Product Variant.""" + """ + Weight of the Product Variant. + """ weight: WeightScalar """ Determines if variant is in preorder. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ preorder: PreorderSettingsInput """ Determines maximum quantity of `ProductVariant`,that can be bought in a single checkout. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ quantityLimitPerCustomer: Int """ Fields required to update the product variant metadata. - + Added in Saleor 3.8. """ metadata: [MetadataInput!] """ Fields required to update the product variant private metadata. - + Added in Saleor 3.8. """ privateMetadata: [MetadataInput!] """ External ID of this product variant. - + Added in Saleor 3.10. """ externalReference: String } """ -Set default variant for a product. Mutation triggers PRODUCT_UPDATED webhook. +Set default variant for a product. Mutation triggers PRODUCT_UPDATED webhook. Requires one of the following permissions: MANAGE_PRODUCTS. """ type ProductVariantSetDefault { product: Product - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! } """ -Creates/updates translations for a product variant. +Creates/updates translations for a product variant. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ type ProductVariantTranslate { - translationErrors: [TranslationError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [TranslationError!]! productVariant: ProductVariant } @@ -18722,26 +23702,32 @@ input NameTranslationInput { } """ -Manage product variant prices in channels. +Manage product variant prices in channels. Requires one of the following permissions: MANAGE_PRODUCTS. """ type ProductVariantChannelListingUpdate { - """An updated product variant instance.""" + """ + An updated product variant instance. + """ variant: ProductVariant - productChannelListingErrors: [ProductChannelListingError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productChannelListingErrors: [ProductChannelListingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductChannelListingError!]! } """ -Reorder product variant attribute values. +Reorder product variant attribute values. Requires one of the following permissions: MANAGE_PRODUCTS. """ type ProductVariantReorderAttributeValues { - """Product variant from which attribute values are reordered.""" + """ + Product variant from which attribute values are reordered. + """ productVariant: ProductVariant - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! } @@ -18750,49 +23736,56 @@ Deactivates product variant preorder. It changes all preorder allocation into re Added in Saleor 3.1. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_PRODUCTS. """ type ProductVariantPreorderDeactivate { - """Product variant with ended preorder.""" + """ + Product variant with ended preorder. + """ productVariant: ProductVariant errors: [ProductError!]! } """ -Assign an media to a product variant. +Assign an media to a product variant. Requires one of the following permissions: MANAGE_PRODUCTS. """ type VariantMediaAssign { productVariant: ProductVariant media: ProductMedia - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! } """ -Unassign an media from a product variant. +Unassign an media from a product variant. Requires one of the following permissions: MANAGE_PRODUCTS. """ type VariantMediaUnassign { productVariant: ProductVariant media: ProductMedia - productErrors: [ProductError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ProductError!]! } """ -Captures the authorized payment amount. +Captures the authorized payment amount. Requires one of the following permissions: MANAGE_ORDERS. """ type PaymentCapture { - """Updated payment.""" + """ + Updated payment. + """ payment: Payment - paymentErrors: [PaymentError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + paymentErrors: [PaymentError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [PaymentError!]! } @@ -18802,17 +23795,25 @@ type PaymentError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: PaymentErrorCode! - """List of variant IDs which causes the error.""" + """ + List of variant IDs which causes the error. + """ variants: [ID!] } -"""An enumeration.""" +""" +An enumeration. +""" enum PaymentErrorCode { BILLING_ADDRESS_NOT_SET GRAPHQL_ERROR @@ -18834,33 +23835,42 @@ enum PaymentErrorCode { } """ -Refunds the captured payment amount. +Refunds the captured payment amount. Requires one of the following permissions: MANAGE_ORDERS. """ type PaymentRefund { - """Updated payment.""" + """ + Updated payment. + """ payment: Payment - paymentErrors: [PaymentError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + paymentErrors: [PaymentError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [PaymentError!]! } """ -Voids the authorized payment. +Voids the authorized payment. Requires one of the following permissions: MANAGE_ORDERS. """ type PaymentVoid { - """Updated payment.""" + """ + Updated payment. + """ payment: Payment - paymentErrors: [PaymentError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + paymentErrors: [PaymentError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [PaymentError!]! } -"""Initializes payment process when it is required by gateway.""" +""" +Initializes payment process when it is required by gateway. +""" type PaymentInitialize { initializedPayment: PaymentInitialized - paymentErrors: [PaymentError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + paymentErrors: [PaymentError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [PaymentError!]! } @@ -18868,35 +23878,54 @@ type PaymentInitialize { Server-side data generated by a payment gateway. Optional step when the payment provider requires an additional action to initialize payment session. """ type PaymentInitialized { - """ID of a payment gateway.""" + """ + ID of a payment gateway. + """ gateway: String! - """Payment gateway name.""" + """ + Payment gateway name. + """ name: String! - """Initialized data by gateway.""" + """ + Initialized data by gateway. + """ data: JSONString } -"""Check payment balance.""" +""" +Check payment balance. +""" type PaymentCheckBalance { - """Response from the gateway.""" + """ + Response from the gateway. + """ data: JSONString - paymentErrors: [PaymentError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + paymentErrors: [PaymentError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [PaymentError!]! } input PaymentCheckBalanceInput { - """An ID of a payment gateway to check.""" + """ + An ID of a payment gateway to check. + """ gatewayId: String! - """Payment method name.""" + """ + Payment method name. + """ method: String! - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String! - """Information about card.""" + """ + Information about card. + """ card: CardInput! } @@ -18906,18 +23935,26 @@ input CardInput { """ code: String! - """Card security code.""" + """ + Card security code. + """ cvc: String - """Information about currency and amount.""" + """ + Information about currency and amount. + """ money: MoneyInput! } input MoneyInput { - """Currency code.""" + """ + Currency code. + """ currency: String! - """Amount of money.""" + """ + Amount of money. + """ amount: PositiveDecimal! } @@ -18939,14 +23976,20 @@ type TransactionCreateError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: TransactionCreateErrorCode! } -"""An enumeration.""" +""" +An enumeration. +""" enum TransactionCreateErrorCode { INVALID GRAPHQL_ERROR @@ -18956,45 +23999,71 @@ enum TransactionCreateErrorCode { } input TransactionCreateInput { - """Status of the transaction.""" + """ + Status of the transaction. + """ status: String! - """Payment type used for this transaction.""" + """ + Payment type used for this transaction. + """ type: String! - """Reference of the transaction.""" + """ + Reference of the transaction. + """ reference: String - """List of all possible actions for the transaction""" + """ + List of all possible actions for the transaction + """ availableActions: [TransactionActionEnum!] - """Amount authorized by this transaction.""" + """ + Amount authorized by this transaction. + """ amountAuthorized: MoneyInput - """Amount charged by this transaction.""" + """ + Amount charged by this transaction. + """ amountCharged: MoneyInput - """Amount refunded by this transaction.""" + """ + Amount refunded by this transaction. + """ amountRefunded: MoneyInput - """Amount voided by this transaction.""" + """ + Amount voided by this transaction. + """ amountVoided: MoneyInput - """Payment public metadata.""" + """ + Payment public metadata. + """ metadata: [MetadataInput!] - """Payment private metadata.""" + """ + Payment private metadata. + """ privateMetadata: [MetadataInput!] } input TransactionEventInput { - """Current status of the payment transaction.""" + """ + Current status of the payment transaction. + """ status: TransactionStatus! - """Reference of the transaction.""" + """ + Reference of the transaction. + """ reference: String - """Name of the transaction.""" + """ + Name of the transaction. + """ name: String } @@ -19016,14 +24085,20 @@ type TransactionUpdateError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: TransactionUpdateErrorCode! } -"""An enumeration.""" +""" +An enumeration. +""" enum TransactionUpdateErrorCode { INVALID GRAPHQL_ERROR @@ -19033,34 +24108,54 @@ enum TransactionUpdateErrorCode { } input TransactionUpdateInput { - """Status of the transaction.""" + """ + Status of the transaction. + """ status: String - """Payment type used for this transaction.""" + """ + Payment type used for this transaction. + """ type: String - """Reference of the transaction.""" + """ + Reference of the transaction. + """ reference: String - """List of all possible actions for the transaction""" + """ + List of all possible actions for the transaction + """ availableActions: [TransactionActionEnum!] - """Amount authorized by this transaction.""" + """ + Amount authorized by this transaction. + """ amountAuthorized: MoneyInput - """Amount charged by this transaction.""" + """ + Amount charged by this transaction. + """ amountCharged: MoneyInput - """Amount refunded by this transaction.""" + """ + Amount refunded by this transaction. + """ amountRefunded: MoneyInput - """Amount voided by this transaction.""" + """ + Amount voided by this transaction. + """ amountVoided: MoneyInput - """Payment public metadata.""" + """ + Payment public metadata. + """ metadata: [MetadataInput!] - """Payment private metadata.""" + """ + Payment private metadata. + """ privateMetadata: [MetadataInput!] } @@ -19069,7 +24164,7 @@ Request an action for payment transaction. Added in Saleor 3.4. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: HANDLE_PAYMENTS, MANAGE_ORDERS. """ @@ -19084,14 +24179,20 @@ type TransactionRequestActionError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: TransactionRequestActionErrorCode! } -"""An enumeration.""" +""" +An enumeration. +""" enum TransactionRequestActionErrorCode { INVALID GRAPHQL_ERROR @@ -19100,12 +24201,13 @@ enum TransactionRequestActionErrorCode { } """ -Creates a new page. +Creates a new page. Requires one of the following permissions: MANAGE_PAGES. """ type PageCreate { - pageErrors: [PageError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [PageError!]! page: Page } @@ -19116,20 +24218,30 @@ type PageError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: PageErrorCode! - """List of attributes IDs which causes the error.""" + """ + List of attributes IDs which causes the error. + """ attributes: [ID!] - """List of attribute values IDs which causes the error.""" + """ + List of attribute values IDs which causes the error. + """ values: [ID!] } -"""An enumeration.""" +""" +An enumeration. +""" enum PageErrorCode { GRAPHQL_ERROR INVALID @@ -19141,137 +24253,168 @@ enum PageErrorCode { } input PageCreateInput { - """Page internal name.""" + """ + Page internal name. + """ slug: String - """Page title.""" + """ + Page title. + """ title: String """ Page content. - + Rich text format. For reference see https://editorjs.io/ """ content: JSONString - """List of attributes.""" + """ + List of attributes. + """ attributes: [AttributeValueInput!] - """Determines if page is visible in the storefront.""" + """ + Determines if page is visible in the storefront. + """ isPublished: Boolean """ - Publication date. ISO 8601 standard. - + Publication date. ISO 8601 standard. + DEPRECATED: this field will be removed in Saleor 4.0. Use `publishedAt` field instead. """ publicationDate: String """ Publication date time. ISO 8601 standard. - + Added in Saleor 3.3. """ publishedAt: DateTime - """Search engine optimization fields.""" + """ + Search engine optimization fields. + """ seo: SeoInput - """ID of the page type that page belongs to.""" + """ + ID of the page type that page belongs to. + """ pageType: ID! } """ -Deletes a page. +Deletes a page. Requires one of the following permissions: MANAGE_PAGES. """ type PageDelete { - pageErrors: [PageError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [PageError!]! page: Page } """ -Deletes pages. +Deletes pages. Requires one of the following permissions: MANAGE_PAGES. """ type PageBulkDelete { - """Returns how many objects were affected.""" + """ + Returns how many objects were affected. + """ count: Int! - pageErrors: [PageError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [PageError!]! } """ -Publish pages. +Publish pages. Requires one of the following permissions: MANAGE_PAGES. """ type PageBulkPublish { - """Returns how many objects were affected.""" + """ + Returns how many objects were affected. + """ count: Int! - pageErrors: [PageError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [PageError!]! } """ -Updates an existing page. +Updates an existing page. Requires one of the following permissions: MANAGE_PAGES. """ type PageUpdate { - pageErrors: [PageError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [PageError!]! page: Page } input PageInput { - """Page internal name.""" + """ + Page internal name. + """ slug: String - """Page title.""" + """ + Page title. + """ title: String """ Page content. - + Rich text format. For reference see https://editorjs.io/ """ content: JSONString - """List of attributes.""" + """ + List of attributes. + """ attributes: [AttributeValueInput!] - """Determines if page is visible in the storefront.""" + """ + Determines if page is visible in the storefront. + """ isPublished: Boolean """ - Publication date. ISO 8601 standard. - + Publication date. ISO 8601 standard. + DEPRECATED: this field will be removed in Saleor 4.0. Use `publishedAt` field instead. """ publicationDate: String """ Publication date time. ISO 8601 standard. - + Added in Saleor 3.3. """ publishedAt: DateTime - """Search engine optimization fields.""" + """ + Search engine optimization fields. + """ seo: SeoInput } """ -Creates/updates translations for a page. +Creates/updates translations for a page. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ type PageTranslate { - translationErrors: [TranslationError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [TranslationError!]! page: PageTranslatableContent } @@ -19283,179 +24426,233 @@ input PageTranslationInput { """ Translated page content. - + Rich text format. For reference see https://editorjs.io/ """ content: JSONString } """ -Create a new page type. +Create a new page type. Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ type PageTypeCreate { - pageErrors: [PageError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [PageError!]! pageType: PageType } input PageTypeCreateInput { - """Name of the page type.""" + """ + Name of the page type. + """ name: String - """Page type slug.""" + """ + Page type slug. + """ slug: String - """List of attribute IDs to be assigned to the page type.""" + """ + List of attribute IDs to be assigned to the page type. + """ addAttributes: [ID!] } """ -Update page type. +Update page type. Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ type PageTypeUpdate { - pageErrors: [PageError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [PageError!]! pageType: PageType } input PageTypeUpdateInput { - """Name of the page type.""" + """ + Name of the page type. + """ name: String - """Page type slug.""" + """ + Page type slug. + """ slug: String - """List of attribute IDs to be assigned to the page type.""" + """ + List of attribute IDs to be assigned to the page type. + """ addAttributes: [ID!] - """List of attribute IDs to be assigned to the page type.""" + """ + List of attribute IDs to be assigned to the page type. + """ removeAttributes: [ID!] } """ -Delete a page type. +Delete a page type. Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ type PageTypeDelete { - pageErrors: [PageError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [PageError!]! pageType: PageType } """ -Delete page types. +Delete page types. Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ type PageTypeBulkDelete { - """Returns how many objects were affected.""" + """ + Returns how many objects were affected. + """ count: Int! - pageErrors: [PageError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [PageError!]! } """ -Assign attributes to a given page type. +Assign attributes to a given page type. Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ type PageAttributeAssign { - """The updated page type.""" + """ + The updated page type. + """ pageType: PageType - pageErrors: [PageError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [PageError!]! } """ -Unassign attributes from a given page type. +Unassign attributes from a given page type. Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ type PageAttributeUnassign { - """The updated page type.""" + """ + The updated page type. + """ pageType: PageType - pageErrors: [PageError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [PageError!]! } """ -Reorder the attributes of a page type. +Reorder the attributes of a page type. Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ type PageTypeReorderAttributes { - """Page type from which attributes are reordered.""" + """ + Page type from which attributes are reordered. + """ pageType: PageType - pageErrors: [PageError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [PageError!]! } """ -Reorder page attribute values. +Reorder page attribute values. Requires one of the following permissions: MANAGE_PAGES. """ type PageReorderAttributeValues { - """Page from which attribute values are reordered.""" + """ + Page from which attribute values are reordered. + """ page: Page - pageErrors: [PageError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [PageError!]! } """ -Completes creating an order. +Completes creating an order. Requires one of the following permissions: MANAGE_ORDERS. """ type DraftOrderComplete { - """Completed order.""" + """ + Completed order. + """ order: Order - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! } """ -Creates a new draft order. +Creates a new draft order. Requires one of the following permissions: MANAGE_ORDERS. """ type DraftOrderCreate { - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! order: Order } input DraftOrderCreateInput { - """Billing address of the customer.""" + """ + Billing address of the customer. + """ billingAddress: AddressInput - """Customer associated with the draft order.""" + """ + Customer associated with the draft order. + """ user: ID - """Email address of the customer.""" + """ + Email address of the customer. + """ userEmail: String - """Discount amount for the order.""" + """ + Discount amount for the order. + """ discount: PositiveDecimal - """Shipping address of the customer.""" + """ + Shipping address of the customer. + """ shippingAddress: AddressInput - """ID of a selected shipping method.""" + """ + ID of a selected shipping method. + """ shippingMethod: ID - """ID of the voucher associated with the order.""" + """ + ID of the voucher associated with the order. + """ voucher: ID - """A note from a customer. Visible by customers in the order summary.""" + """ + A note from a customer. Visible by customers in the order summary. + """ customerNote: String - """ID of the channel associated with the order.""" + """ + ID of the channel associated with the order. + """ channelId: ID """ @@ -19465,104 +24662,136 @@ input DraftOrderCreateInput { """ External ID of this order. - + Added in Saleor 3.10. """ externalReference: String - """Variant line input consisting of variant ID and quantity of products.""" + """ + Variant line input consisting of variant ID and quantity of products. + """ lines: [OrderLineCreateInput!] } input OrderLineCreateInput { - """Number of variant items ordered.""" + """ + Number of variant items ordered. + """ quantity: Int! - """Product variant ID.""" + """ + Product variant ID. + """ variantId: ID! """ - Flag that allow force splitting the same variant into multiple lines by skipping the matching logic. - + Flag that allow force splitting the same variant into multiple lines by skipping the matching logic. + Added in Saleor 3.6. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ forceNewLine: Boolean = false } """ -Deletes a draft order. +Deletes a draft order. Requires one of the following permissions: MANAGE_ORDERS. """ type DraftOrderDelete { - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! order: Order } """ -Deletes draft orders. +Deletes draft orders. Requires one of the following permissions: MANAGE_ORDERS. """ type DraftOrderBulkDelete { - """Returns how many objects were affected.""" + """ + Returns how many objects were affected. + """ count: Int! - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! } """ -Deletes order lines. +Deletes order lines. Requires one of the following permissions: MANAGE_ORDERS. """ type DraftOrderLinesBulkDelete { - """Returns how many objects were affected.""" + """ + Returns how many objects were affected. + """ count: Int! - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! } """ -Updates a draft order. +Updates a draft order. Requires one of the following permissions: MANAGE_ORDERS. """ type DraftOrderUpdate { - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! order: Order } input DraftOrderInput { - """Billing address of the customer.""" + """ + Billing address of the customer. + """ billingAddress: AddressInput - """Customer associated with the draft order.""" + """ + Customer associated with the draft order. + """ user: ID - """Email address of the customer.""" + """ + Email address of the customer. + """ userEmail: String - """Discount amount for the order.""" + """ + Discount amount for the order. + """ discount: PositiveDecimal - """Shipping address of the customer.""" + """ + Shipping address of the customer. + """ shippingAddress: AddressInput - """ID of a selected shipping method.""" + """ + ID of a selected shipping method. + """ shippingMethod: ID - """ID of the voucher associated with the order.""" + """ + ID of the voucher associated with the order. + """ voucher: ID - """A note from a customer. Visible by customers in the order summary.""" + """ + A note from a customer. Visible by customers in the order summary. + """ customerNote: String - """ID of the channel associated with the order.""" + """ + ID of the channel associated with the order. + """ channelId: ID """ @@ -19572,128 +24801,166 @@ input DraftOrderInput { """ External ID of this order. - + Added in Saleor 3.10. """ externalReference: String } """ -Adds note to the order. +Adds note to the order. Requires one of the following permissions: MANAGE_ORDERS. """ type OrderAddNote { - """Order with the note added.""" + """ + Order with the note added. + """ order: Order - """Order note created.""" + """ + Order note created. + """ event: OrderEvent - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! } input OrderAddNoteInput { - """Note message.""" + """ + Note message. + """ message: String! } """ -Cancel an order. +Cancel an order. Requires one of the following permissions: MANAGE_ORDERS. """ type OrderCancel { - """Canceled order.""" + """ + Canceled order. + """ order: Order - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! } """ -Capture an order. +Capture an order. Requires one of the following permissions: MANAGE_ORDERS. """ type OrderCapture { - """Captured order.""" + """ + Captured order. + """ order: Order - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! } """ -Confirms an unconfirmed order by changing status to unfulfilled. +Confirms an unconfirmed order by changing status to unfulfilled. Requires one of the following permissions: MANAGE_ORDERS. """ type OrderConfirm { order: Order - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! } """ -Creates new fulfillments for an order. +Creates new fulfillments for an order. Requires one of the following permissions: MANAGE_ORDERS. """ type OrderFulfill { - """List of created fulfillments.""" + """ + List of created fulfillments. + """ fulfillments: [Fulfillment!] - """Fulfilled order.""" + """ + Fulfilled order. + """ order: Order - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! } input OrderFulfillInput { - """List of items informing how to fulfill the order.""" + """ + List of items informing how to fulfill the order. + """ lines: [OrderFulfillLineInput!]! - """If true, send an email notification to the customer.""" + """ + If true, send an email notification to the customer. + """ notifyCustomer: Boolean - """If true, then allow proceed fulfillment when stock is exceeded.""" + """ + If true, then allow proceed fulfillment when stock is exceeded. + """ allowStockToBeExceeded: Boolean = false """ Fulfillment tracking number. - + Added in Saleor 3.6. """ trackingNumber: String } input OrderFulfillLineInput { - """The ID of the order line.""" + """ + The ID of the order line. + """ orderLineId: ID - """List of stock items to create.""" + """ + List of stock items to create. + """ stocks: [OrderFulfillStockInput!]! } input OrderFulfillStockInput { - """The number of line items to be fulfilled from given warehouse.""" + """ + The number of line items to be fulfilled from given warehouse. + """ quantity: Int! - """ID of the warehouse from which the item will be fulfilled.""" + """ + ID of the warehouse from which the item will be fulfilled. + """ warehouse: ID! } """ -Cancels existing fulfillment and optionally restocks items. +Cancels existing fulfillment and optionally restocks items. Requires one of the following permissions: MANAGE_ORDERS. """ type FulfillmentCancel { - """A canceled fulfillment.""" + """ + A canceled fulfillment. + """ fulfillment: Fulfillment - """Order which fulfillment was cancelled.""" + """ + Order which fulfillment was cancelled. + """ order: Order - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! } @@ -19707,66 +24974,91 @@ input FulfillmentCancelInput { """ Approve existing fulfillment. -Added in Saleor 3.1. +Added in Saleor 3.1. Requires one of the following permissions: MANAGE_ORDERS. """ type FulfillmentApprove { - """An approved fulfillment.""" + """ + An approved fulfillment. + """ fulfillment: Fulfillment - """Order which fulfillment was approved.""" + """ + Order which fulfillment was approved. + """ order: Order - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! } """ -Updates a fulfillment for an order. +Updates a fulfillment for an order. Requires one of the following permissions: MANAGE_ORDERS. """ type FulfillmentUpdateTracking { - """A fulfillment with updated tracking.""" + """ + A fulfillment with updated tracking. + """ fulfillment: Fulfillment - """Order for which fulfillment was updated.""" + """ + Order for which fulfillment was updated. + """ order: Order - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! } input FulfillmentUpdateTrackingInput { - """Fulfillment tracking number.""" + """ + Fulfillment tracking number. + """ trackingNumber: String - """If true, send an email notification to the customer.""" + """ + If true, send an email notification to the customer. + """ notifyCustomer: Boolean = false } """ -Refund products. +Refund products. Requires one of the following permissions: MANAGE_ORDERS. """ type FulfillmentRefundProducts { - """A refunded fulfillment.""" + """ + A refunded fulfillment. + """ fulfillment: Fulfillment - """Order which fulfillment was refunded.""" + """ + Order which fulfillment was refunded. + """ order: Order - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! } input OrderRefundProductsInput { - """List of unfulfilled lines to refund.""" + """ + List of unfulfilled lines to refund. + """ orderLines: [OrderRefundLineInput!] - """List of fulfilled lines to refund.""" + """ + List of fulfilled lines to refund. + """ fulfillmentLines: [OrderRefundFulfillmentLineInput!] - """The total amount of refund when the value is provided manually.""" + """ + The total amount of refund when the value is provided manually. + """ amountToRefund: PositiveDecimal """ @@ -19776,50 +25068,73 @@ input OrderRefundProductsInput { } input OrderRefundLineInput { - """The ID of the order line to refund.""" + """ + The ID of the order line to refund. + """ orderLineId: ID! - """The number of items to be refunded.""" + """ + The number of items to be refunded. + """ quantity: Int! } input OrderRefundFulfillmentLineInput { - """The ID of the fulfillment line to refund.""" + """ + The ID of the fulfillment line to refund. + """ fulfillmentLineId: ID! - """The number of items to be refunded.""" + """ + The number of items to be refunded. + """ quantity: Int! } """ -Return products. +Return products. Requires one of the following permissions: MANAGE_ORDERS. """ type FulfillmentReturnProducts { - """A return fulfillment.""" + """ + A return fulfillment. + """ returnFulfillment: Fulfillment - """A replace fulfillment.""" + """ + A replace fulfillment. + """ replaceFulfillment: Fulfillment - """Order which fulfillment was returned.""" + """ + Order which fulfillment was returned. + """ order: Order - """A draft order which was created for products with replace flag.""" + """ + A draft order which was created for products with replace flag. + """ replaceOrder: Order - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! } input OrderReturnProductsInput { - """List of unfulfilled lines to return.""" + """ + List of unfulfilled lines to return. + """ orderLines: [OrderReturnLineInput!] - """List of fulfilled lines to return.""" + """ + List of fulfilled lines to return. + """ fulfillmentLines: [OrderReturnFulfillmentLineInput!] - """The total amount of refund when the value is provided manually.""" + """ + The total amount of refund when the value is provided manually. + """ amountToRefund: PositiveDecimal """ @@ -19827,219 +25142,289 @@ input OrderReturnProductsInput { """ includeShippingCosts: Boolean = false - """If true, Saleor will call refund action for all lines.""" + """ + If true, Saleor will call refund action for all lines. + """ refund: Boolean = false } input OrderReturnLineInput { - """The ID of the order line to return.""" + """ + The ID of the order line to return. + """ orderLineId: ID! - """The number of items to be returned.""" + """ + The number of items to be returned. + """ quantity: Int! - """Determines, if the line should be added to replace order.""" + """ + Determines, if the line should be added to replace order. + """ replace: Boolean = false } input OrderReturnFulfillmentLineInput { - """The ID of the fulfillment line to return.""" + """ + The ID of the fulfillment line to return. + """ fulfillmentLineId: ID! - """The number of items to be returned.""" + """ + The number of items to be returned. + """ quantity: Int! - """Determines, if the line should be added to replace order.""" + """ + Determines, if the line should be added to replace order. + """ replace: Boolean = false } """ -Create order lines for an order. +Create order lines for an order. Requires one of the following permissions: MANAGE_ORDERS. """ type OrderLinesCreate { - """Related order.""" + """ + Related order. + """ order: Order - """List of added order lines.""" + """ + List of added order lines. + """ orderLines: [OrderLine!] - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! } """ -Deletes an order line from an order. +Deletes an order line from an order. Requires one of the following permissions: MANAGE_ORDERS. """ type OrderLineDelete { - """A related order.""" + """ + A related order. + """ order: Order - """An order line that was deleted.""" + """ + An order line that was deleted. + """ orderLine: OrderLine - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! } """ -Updates an order line of an order. +Updates an order line of an order. Requires one of the following permissions: MANAGE_ORDERS. """ type OrderLineUpdate { - """Related order.""" + """ + Related order. + """ order: Order - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! orderLine: OrderLine } input OrderLineInput { - """Number of variant items ordered.""" + """ + Number of variant items ordered. + """ quantity: Int! } """ -Adds discount to the order. +Adds discount to the order. Requires one of the following permissions: MANAGE_ORDERS. """ type OrderDiscountAdd { - """Order which has been discounted.""" + """ + Order which has been discounted. + """ order: Order - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! } input OrderDiscountCommonInput { - """Type of the discount: fixed or percent""" + """ + Type of the discount: fixed or percent + """ valueType: DiscountValueTypeEnum! - """Value of the discount. Can store fixed value or percent value""" + """ + Value of the discount. Can store fixed value or percent value + """ value: PositiveDecimal! - """Explanation for the applied discount.""" + """ + Explanation for the applied discount. + """ reason: String } """ -Update discount for the order. +Update discount for the order. Requires one of the following permissions: MANAGE_ORDERS. """ type OrderDiscountUpdate { - """Order which has been discounted.""" + """ + Order which has been discounted. + """ order: Order - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! } """ -Remove discount from the order. +Remove discount from the order. Requires one of the following permissions: MANAGE_ORDERS. """ type OrderDiscountDelete { - """Order which has removed discount.""" + """ + Order which has removed discount. + """ order: Order - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! } """ -Update discount for the order line. +Update discount for the order line. Requires one of the following permissions: MANAGE_ORDERS. """ type OrderLineDiscountUpdate { - """Order line which has been discounted.""" + """ + Order line which has been discounted. + """ orderLine: OrderLine - """Order which is related to the discounted line.""" + """ + Order which is related to the discounted line. + """ order: Order - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! } """ -Remove discount applied to the order line. +Remove discount applied to the order line. Requires one of the following permissions: MANAGE_ORDERS. """ type OrderLineDiscountRemove { - """Order line which has removed discount.""" + """ + Order line which has removed discount. + """ orderLine: OrderLine - """Order which is related to line which has removed discount.""" + """ + Order which is related to line which has removed discount. + """ order: Order - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! } """ -Mark order as manually paid. +Mark order as manually paid. Requires one of the following permissions: MANAGE_ORDERS. """ type OrderMarkAsPaid { - """Order marked as paid.""" + """ + Order marked as paid. + """ order: Order - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! } """ -Refund an order. +Refund an order. Requires one of the following permissions: MANAGE_ORDERS. """ type OrderRefund { - """A refunded order.""" + """ + A refunded order. + """ order: Order - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! } """ -Updates an order. +Updates an order. Requires one of the following permissions: MANAGE_ORDERS. """ type OrderUpdate { - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! order: Order } input OrderUpdateInput { - """Billing address of the customer.""" + """ + Billing address of the customer. + """ billingAddress: AddressInput - """Email address of the customer.""" + """ + Email address of the customer. + """ userEmail: String - """Shipping address of the customer.""" + """ + Shipping address of the customer. + """ shippingAddress: AddressInput """ External ID of this order. - + Added in Saleor 3.10. """ externalReference: String } """ -Updates a shipping method of the order. Requires shipping method ID to update, when null is passed then currently assigned shipping method is removed. +Updates a shipping method of the order. Requires shipping method ID to update, when null is passed then currently assigned shipping method is removed. Requires one of the following permissions: MANAGE_ORDERS. """ type OrderUpdateShipping { - """Order with updated shipping method.""" + """ + Order with updated shipping method. + """ order: Order - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! } @@ -20051,26 +25436,32 @@ input OrderUpdateShippingInput { } """ -Void an order. +Void an order. Requires one of the following permissions: MANAGE_ORDERS. """ type OrderVoid { - """A voided order.""" + """ + A voided order. + """ order: Order - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! } """ -Cancels orders. +Cancels orders. Requires one of the following permissions: MANAGE_ORDERS. """ type OrderBulkCancel { - """Returns how many objects were affected.""" + """ + Returns how many objects were affected. + """ count: Int! - orderErrors: [OrderError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [OrderError!]! } @@ -20078,7 +25469,8 @@ type OrderBulkCancel { Delete metadata of an object. To use it, you need to have access to the modified object. """ type DeleteMetadata { - metadataErrors: [MetadataError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + metadataErrors: [MetadataError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [MetadataError!]! item: ObjectWithMetadata } @@ -20089,14 +25481,20 @@ type MetadataError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: MetadataErrorCode! } -"""An enumeration.""" +""" +An enumeration. +""" enum MetadataErrorCode { GRAPHQL_ERROR INVALID @@ -20109,7 +25507,8 @@ enum MetadataErrorCode { Delete object's private metadata. To use it, you need to be an authenticated staff user or an app and have access to the modified object. """ type DeletePrivateMetadata { - metadataErrors: [MetadataError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + metadataErrors: [MetadataError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [MetadataError!]! item: ObjectWithMetadata } @@ -20118,7 +25517,8 @@ type DeletePrivateMetadata { Updates metadata of an object. To use it, you need to have access to the modified object. """ type UpdateMetadata { - metadataErrors: [MetadataError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + metadataErrors: [MetadataError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [MetadataError!]! item: ObjectWithMetadata } @@ -20127,20 +25527,24 @@ type UpdateMetadata { Updates private metadata of an object. To use it, you need to be an authenticated staff user or an app and have access to the modified object. """ type UpdatePrivateMetadata { - metadataErrors: [MetadataError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + metadataErrors: [MetadataError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [MetadataError!]! item: ObjectWithMetadata } """ -Assigns storefront's navigation menus. +Assigns storefront's navigation menus. Requires one of the following permissions: MANAGE_MENUS, MANAGE_SETTINGS. """ type AssignNavigation { - """Assigned navigation menu.""" + """ + Assigned navigation menu. + """ menu: Menu - menuErrors: [MenuError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [MenuError!]! } @@ -20150,14 +25554,20 @@ type MenuError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: MenuErrorCode! } -"""An enumeration.""" +""" +An enumeration. +""" enum MenuErrorCode { CANNOT_ASSIGN_NODE GRAPHQL_ERROR @@ -20171,190 +25581,248 @@ enum MenuErrorCode { } enum NavigationType { - """Main storefront navigation.""" + """ + Main storefront navigation. + """ MAIN - """Secondary storefront navigation.""" + """ + Secondary storefront navigation. + """ SECONDARY } """ -Creates a new Menu. +Creates a new Menu. Requires one of the following permissions: MANAGE_MENUS. """ type MenuCreate { - menuErrors: [MenuError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [MenuError!]! menu: Menu } input MenuCreateInput { - """Name of the menu.""" + """ + Name of the menu. + """ name: String! - """Slug of the menu. Will be generated if not provided.""" + """ + Slug of the menu. Will be generated if not provided. + """ slug: String - """List of menu items.""" + """ + List of menu items. + """ items: [MenuItemInput!] } input MenuItemInput { - """Name of the menu item.""" + """ + Name of the menu item. + """ name: String - """URL of the pointed item.""" + """ + URL of the pointed item. + """ url: String - """Category to which item points.""" + """ + Category to which item points. + """ category: ID - """Collection to which item points.""" + """ + Collection to which item points. + """ collection: ID - """Page to which item points.""" + """ + Page to which item points. + """ page: ID } """ -Deletes a menu. +Deletes a menu. Requires one of the following permissions: MANAGE_MENUS. """ type MenuDelete { - menuErrors: [MenuError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [MenuError!]! menu: Menu } """ -Deletes menus. +Deletes menus. Requires one of the following permissions: MANAGE_MENUS. """ type MenuBulkDelete { - """Returns how many objects were affected.""" + """ + Returns how many objects were affected. + """ count: Int! - menuErrors: [MenuError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [MenuError!]! } """ -Updates a menu. +Updates a menu. Requires one of the following permissions: MANAGE_MENUS. """ type MenuUpdate { - menuErrors: [MenuError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [MenuError!]! menu: Menu } input MenuInput { - """Name of the menu.""" + """ + Name of the menu. + """ name: String - """Slug of the menu.""" + """ + Slug of the menu. + """ slug: String } """ -Creates a new menu item. +Creates a new menu item. Requires one of the following permissions: MANAGE_MENUS. """ type MenuItemCreate { - menuErrors: [MenuError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [MenuError!]! menuItem: MenuItem } input MenuItemCreateInput { - """Name of the menu item.""" + """ + Name of the menu item. + """ name: String! - """URL of the pointed item.""" + """ + URL of the pointed item. + """ url: String - """Category to which item points.""" + """ + Category to which item points. + """ category: ID - """Collection to which item points.""" + """ + Collection to which item points. + """ collection: ID - """Page to which item points.""" + """ + Page to which item points. + """ page: ID - """Menu to which item belongs.""" + """ + Menu to which item belongs. + """ menu: ID! - """ID of the parent menu. If empty, menu will be top level menu.""" + """ + ID of the parent menu. If empty, menu will be top level menu. + """ parent: ID } """ -Deletes a menu item. +Deletes a menu item. Requires one of the following permissions: MANAGE_MENUS. """ type MenuItemDelete { - menuErrors: [MenuError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [MenuError!]! menuItem: MenuItem } """ -Deletes menu items. +Deletes menu items. Requires one of the following permissions: MANAGE_MENUS. """ type MenuItemBulkDelete { - """Returns how many objects were affected.""" + """ + Returns how many objects were affected. + """ count: Int! - menuErrors: [MenuError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [MenuError!]! } """ -Updates a menu item. +Updates a menu item. Requires one of the following permissions: MANAGE_MENUS. """ type MenuItemUpdate { - menuErrors: [MenuError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [MenuError!]! menuItem: MenuItem } """ -Creates/updates translations for a menu item. +Creates/updates translations for a menu item. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ type MenuItemTranslate { - translationErrors: [TranslationError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [TranslationError!]! menuItem: MenuItem } """ -Moves items of menus. +Moves items of menus. Requires one of the following permissions: MANAGE_MENUS. """ type MenuItemMove { - """Assigned menu to move within.""" + """ + Assigned menu to move within. + """ menu: Menu - menuErrors: [MenuError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [MenuError!]! } input MenuItemMoveInput { - """The menu item ID to move.""" + """ + The menu item ID to move. + """ itemId: ID! - """ID of the parent menu. If empty, menu will be top level menu.""" + """ + ID of the parent menu. If empty, menu will be top level menu. + """ parentId: ID """ @@ -20364,14 +25832,17 @@ input MenuItemMoveInput { } """ -Request an invoice for the order using plugin. +Request an invoice for the order using plugin. Requires one of the following permissions: MANAGE_ORDERS. """ type InvoiceRequest { - """Order related to an invoice.""" + """ + Order related to an invoice. + """ order: Order - invoiceErrors: [InvoiceError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + invoiceErrors: [InvoiceError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [InvoiceError!]! invoice: Invoice } @@ -20382,14 +25853,20 @@ type InvoiceError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: InvoiceErrorCode! } -"""An enumeration.""" +""" +An enumeration. +""" enum InvoiceErrorCode { REQUIRED NOT_READY @@ -20402,85 +25879,101 @@ enum InvoiceErrorCode { } """ -Requests deletion of an invoice. +Requests deletion of an invoice. Requires one of the following permissions: MANAGE_ORDERS. """ type InvoiceRequestDelete { - invoiceErrors: [InvoiceError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + invoiceErrors: [InvoiceError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [InvoiceError!]! invoice: Invoice } """ -Creates a ready to send invoice. +Creates a ready to send invoice. Requires one of the following permissions: MANAGE_ORDERS. """ type InvoiceCreate { - invoiceErrors: [InvoiceError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + invoiceErrors: [InvoiceError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [InvoiceError!]! invoice: Invoice } input InvoiceCreateInput { - """Invoice number.""" + """ + Invoice number. + """ number: String! - """URL of an invoice to download.""" + """ + URL of an invoice to download. + """ url: String! } """ -Deletes an invoice. +Deletes an invoice. Requires one of the following permissions: MANAGE_ORDERS. """ type InvoiceDelete { - invoiceErrors: [InvoiceError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + invoiceErrors: [InvoiceError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [InvoiceError!]! invoice: Invoice } """ -Updates an invoice. +Updates an invoice. Requires one of the following permissions: MANAGE_ORDERS. """ type InvoiceUpdate { - invoiceErrors: [InvoiceError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + invoiceErrors: [InvoiceError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [InvoiceError!]! invoice: Invoice } input UpdateInvoiceInput { - """Invoice number""" + """ + Invoice number + """ number: String - """URL of an invoice to download.""" + """ + URL of an invoice to download. + """ url: String } """ -Send an invoice notification to the customer. +Send an invoice notification to the customer. Requires one of the following permissions: MANAGE_ORDERS. """ type InvoiceSendNotification { - invoiceErrors: [InvoiceError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + invoiceErrors: [InvoiceError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [InvoiceError!]! invoice: Invoice } """ -Activate a gift card. +Activate a gift card. Requires one of the following permissions: MANAGE_GIFT_CARD. """ type GiftCardActivate { - """Activated gift card.""" + """ + Activated gift card. + """ giftCard: GiftCard - giftCardErrors: [GiftCardError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + giftCardErrors: [GiftCardError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [GiftCardError!]! } @@ -20490,17 +25983,25 @@ type GiftCardError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: GiftCardErrorCode! - """List of tag values that cause the error.""" + """ + List of tag values that cause the error. + """ tags: [String!] } -"""An enumeration.""" +""" +An enumeration. +""" enum GiftCardErrorCode { ALREADY_EXISTS GRAPHQL_ERROR @@ -20513,12 +26014,13 @@ enum GiftCardErrorCode { } """ -Creates a new gift card. +Creates a new gift card. Requires one of the following permissions: MANAGE_GIFT_CARD. """ type GiftCardCreate { - giftCardErrors: [GiftCardError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + giftCardErrors: [GiftCardError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [GiftCardError!]! giftCard: GiftCard } @@ -20526,82 +26028,90 @@ type GiftCardCreate { input GiftCardCreateInput { """ The gift card tags to add. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ addTags: [String!] """ The gift card expiry date. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ expiryDate: Date """ - Start date of the gift card in ISO 8601 format. - + Start date of the gift card in ISO 8601 format. + DEPRECATED: this field will be removed in Saleor 4.0. """ startDate: Date """ - End date of the gift card in ISO 8601 format. - + End date of the gift card in ISO 8601 format. + DEPRECATED: this field will be removed in Saleor 4.0. Use `expiryDate` from `expirySettings` instead. """ endDate: Date - """Balance of the gift card.""" + """ + Balance of the gift card. + """ balance: PriceInput! - """Email of the customer to whom gift card will be sent.""" + """ + Email of the customer to whom gift card will be sent. + """ userEmail: String """ Slug of a channel from which the email should be sent. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ channel: String """ Determine if gift card is active. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ isActive: Boolean! """ - Code to use the gift card. - + Code to use the gift card. + DEPRECATED: this field will be removed in Saleor 4.0. The code is now auto generated. """ code: String """ The gift card note from the staff member. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ note: String } input PriceInput { - """Currency code.""" + """ + Currency code. + """ currency: String! - """Amount of money.""" + """ + Amount of money. + """ amount: PositiveDecimal! } @@ -20610,35 +26120,40 @@ Delete gift card. Added in Saleor 3.1. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_GIFT_CARD. """ type GiftCardDelete { - giftCardErrors: [GiftCardError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + giftCardErrors: [GiftCardError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [GiftCardError!]! giftCard: GiftCard } """ -Deactivate a gift card. +Deactivate a gift card. Requires one of the following permissions: MANAGE_GIFT_CARD. """ type GiftCardDeactivate { - """Deactivated gift card.""" + """ + Deactivated gift card. + """ giftCard: GiftCard - giftCardErrors: [GiftCardError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + giftCardErrors: [GiftCardError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [GiftCardError!]! } """ -Update a gift card. +Update a gift card. Requires one of the following permissions: MANAGE_GIFT_CARD. """ type GiftCardUpdate { - giftCardErrors: [GiftCardError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + giftCardErrors: [GiftCardError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [GiftCardError!]! giftCard: GiftCard } @@ -20646,50 +26161,50 @@ type GiftCardUpdate { input GiftCardUpdateInput { """ The gift card tags to add. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ addTags: [String!] """ The gift card expiry date. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ expiryDate: Date """ - Start date of the gift card in ISO 8601 format. - + Start date of the gift card in ISO 8601 format. + DEPRECATED: this field will be removed in Saleor 4.0. """ startDate: Date """ - End date of the gift card in ISO 8601 format. - + End date of the gift card in ISO 8601 format. + DEPRECATED: this field will be removed in Saleor 4.0. Use `expiryDate` from `expirySettings` instead. """ endDate: Date """ The gift card tags to remove. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ removeTags: [String!] """ The gift card balance amount. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ balanceAmount: PositiveDecimal @@ -20700,24 +26215,32 @@ Resend a gift card. Added in Saleor 3.1. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_GIFT_CARD. """ type GiftCardResend { - """Gift card which has been sent.""" + """ + Gift card which has been sent. + """ giftCard: GiftCard errors: [GiftCardError!]! } input GiftCardResendInput { - """ID of a gift card to resend.""" + """ + ID of a gift card to resend. + """ id: ID! - """Email to which gift card should be send.""" + """ + Email to which gift card should be send. + """ email: String - """Slug of a channel from which the email should be sent.""" + """ + Slug of a channel from which the email should be sent. + """ channel: String! } @@ -20726,21 +26249,27 @@ Adds note to the gift card. Added in Saleor 3.1. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_GIFT_CARD. """ type GiftCardAddNote { - """Gift card with the note added.""" + """ + Gift card with the note added. + """ giftCard: GiftCard - """Gift card note created.""" + """ + Gift card note created. + """ event: GiftCardEvent errors: [GiftCardError!]! } input GiftCardAddNoteInput { - """Note message.""" + """ + Note message. + """ message: String! } @@ -20749,33 +26278,47 @@ Create gift cards. Added in Saleor 3.1. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_GIFT_CARD. """ type GiftCardBulkCreate { - """Returns how many objects were created.""" + """ + Returns how many objects were created. + """ count: Int! - """List of created gift cards.""" + """ + List of created gift cards. + """ giftCards: [GiftCard!]! errors: [GiftCardError!]! } input GiftCardBulkCreateInput { - """The number of cards to issue.""" + """ + The number of cards to issue. + """ count: Int! - """Balance of the gift card.""" + """ + Balance of the gift card. + """ balance: PriceInput! - """The gift card tags.""" + """ + The gift card tags. + """ tags: [String!] - """The gift card expiry date.""" + """ + The gift card expiry date. + """ expiryDate: Date - """Determine if gift card is active.""" + """ + Determine if gift card is active. + """ isActive: Boolean! } @@ -20784,12 +26327,14 @@ Delete gift cards. Added in Saleor 3.1. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_GIFT_CARD. """ type GiftCardBulkDelete { - """Returns how many objects were affected.""" + """ + Returns how many objects were affected. + """ count: Int! errors: [GiftCardError!]! } @@ -20799,12 +26344,14 @@ Activate gift cards. Added in Saleor 3.1. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_GIFT_CARD. """ type GiftCardBulkActivate { - """Returns how many objects were affected.""" + """ + Returns how many objects were affected. + """ count: Int! errors: [GiftCardError!]! } @@ -20814,24 +26361,27 @@ Deactivate gift cards. Added in Saleor 3.1. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_GIFT_CARD. """ type GiftCardBulkDeactivate { - """Returns how many objects were affected.""" + """ + Returns how many objects were affected. + """ count: Int! errors: [GiftCardError!]! } """ -Update plugin configuration. +Update plugin configuration. Requires one of the following permissions: MANAGE_PLUGINS. """ type PluginUpdate { plugin: Plugin - pluginsErrors: [PluginError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + pluginsErrors: [PluginError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [PluginError!]! } @@ -20841,14 +26391,20 @@ type PluginError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: PluginErrorCode! } -"""An enumeration.""" +""" +An enumeration. +""" enum PluginErrorCode { GRAPHQL_ERROR INVALID @@ -20859,18 +26415,26 @@ enum PluginErrorCode { } input PluginUpdateInput { - """Indicates whether the plugin should be enabled.""" + """ + Indicates whether the plugin should be enabled. + """ active: Boolean - """Configuration of the plugin.""" + """ + Configuration of the plugin. + """ configuration: [ConfigurationItemInput!] } input ConfigurationItemInput { - """Name of the field to update.""" + """ + Name of the field to update. + """ name: String! - """Value of the given field to update.""" + """ + Value of the given field to update. + """ value: String } @@ -20889,14 +26453,20 @@ type ExternalNotificationError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: ExternalNotificationErrorCodes! } -"""An enumeration.""" +""" +An enumeration. +""" enum ExternalNotificationErrorCodes { REQUIRED INVALID_MODEL_TYPE @@ -20922,12 +26492,13 @@ input ExternalNotificationTriggerInput { } """ -Creates a new sale. +Creates a new sale. Requires one of the following permissions: MANAGE_DISCOUNTS. """ type SaleCreate { - discountErrors: [DiscountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [DiscountError!]! sale: Sale } @@ -20938,20 +26509,30 @@ type DiscountError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """List of products IDs which causes the error.""" + """ + List of products IDs which causes the error. + """ products: [ID!] - """The error code.""" + """ + The error code. + """ code: DiscountErrorCode! - """List of channels IDs which causes the error.""" + """ + List of channels IDs which causes the error. + """ channels: [ID!] } -"""An enumeration.""" +""" +An enumeration. +""" enum DiscountErrorCode { ALREADY_EXISTS GRAPHQL_ERROR @@ -20964,314 +26545,415 @@ enum DiscountErrorCode { } input SaleInput { - """Voucher name.""" + """ + Voucher name. + """ name: String - """Fixed or percentage.""" + """ + Fixed or percentage. + """ type: DiscountValueTypeEnum - """Value of the voucher.""" + """ + Value of the voucher. + """ value: PositiveDecimal - """Products related to the discount.""" + """ + Products related to the discount. + """ products: [ID!] variants: [ID!] - """Categories related to the discount.""" + """ + Categories related to the discount. + """ categories: [ID!] - """Collections related to the discount.""" + """ + Collections related to the discount. + """ collections: [ID!] - """Start date of the voucher in ISO 8601 format.""" + """ + Start date of the voucher in ISO 8601 format. + """ startDate: DateTime - """End date of the voucher in ISO 8601 format.""" + """ + End date of the voucher in ISO 8601 format. + """ endDate: DateTime } """ -Deletes a sale. +Deletes a sale. Requires one of the following permissions: MANAGE_DISCOUNTS. """ type SaleDelete { - discountErrors: [DiscountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [DiscountError!]! sale: Sale } """ -Deletes sales. +Deletes sales. Requires one of the following permissions: MANAGE_DISCOUNTS. """ type SaleBulkDelete { - """Returns how many objects were affected.""" + """ + Returns how many objects were affected. + """ count: Int! - discountErrors: [DiscountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [DiscountError!]! } """ -Updates a sale. +Updates a sale. Requires one of the following permissions: MANAGE_DISCOUNTS. """ type SaleUpdate { - discountErrors: [DiscountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [DiscountError!]! sale: Sale } """ -Adds products, categories, collections to a voucher. +Adds products, categories, collections to a voucher. Requires one of the following permissions: MANAGE_DISCOUNTS. """ type SaleAddCatalogues { - """Sale of which catalogue IDs will be modified.""" + """ + Sale of which catalogue IDs will be modified. + """ sale: Sale - discountErrors: [DiscountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [DiscountError!]! } input CatalogueInput { - """Products related to the discount.""" + """ + Products related to the discount. + """ products: [ID!] - """Categories related to the discount.""" + """ + Categories related to the discount. + """ categories: [ID!] - """Collections related to the discount.""" + """ + Collections related to the discount. + """ collections: [ID!] """ Product variant related to the discount. - + Added in Saleor 3.1. """ variants: [ID!] } """ -Removes products, categories, collections from a sale. +Removes products, categories, collections from a sale. Requires one of the following permissions: MANAGE_DISCOUNTS. """ type SaleRemoveCatalogues { - """Sale of which catalogue IDs will be modified.""" + """ + Sale of which catalogue IDs will be modified. + """ sale: Sale - discountErrors: [DiscountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [DiscountError!]! } """ -Creates/updates translations for a sale. +Creates/updates translations for a sale. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ type SaleTranslate { - translationErrors: [TranslationError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [TranslationError!]! sale: Sale } """ -Manage sale's availability in channels. +Manage sale's availability in channels. Requires one of the following permissions: MANAGE_DISCOUNTS. """ type SaleChannelListingUpdate { - """An updated sale instance.""" + """ + An updated sale instance. + """ sale: Sale - discountErrors: [DiscountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [DiscountError!]! } input SaleChannelListingInput { - """List of channels to which the sale should be assigned.""" + """ + List of channels to which the sale should be assigned. + """ addChannels: [SaleChannelListingAddInput!] - """List of channels from which the sale should be unassigned.""" + """ + List of channels from which the sale should be unassigned. + """ removeChannels: [ID!] } input SaleChannelListingAddInput { - """ID of a channel.""" + """ + ID of a channel. + """ channelId: ID! - """The value of the discount.""" + """ + The value of the discount. + """ discountValue: PositiveDecimal! } """ -Creates a new voucher. +Creates a new voucher. Requires one of the following permissions: MANAGE_DISCOUNTS. """ type VoucherCreate { - discountErrors: [DiscountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [DiscountError!]! voucher: Voucher } input VoucherInput { - """Voucher type: PRODUCT, CATEGORY SHIPPING or ENTIRE_ORDER.""" + """ + Voucher type: PRODUCT, CATEGORY SHIPPING or ENTIRE_ORDER. + """ type: VoucherTypeEnum - """Voucher name.""" + """ + Voucher name. + """ name: String - """Code to use the voucher.""" + """ + Code to use the voucher. + """ code: String - """Start date of the voucher in ISO 8601 format.""" + """ + Start date of the voucher in ISO 8601 format. + """ startDate: DateTime - """End date of the voucher in ISO 8601 format.""" + """ + End date of the voucher in ISO 8601 format. + """ endDate: DateTime - """Choices: fixed or percentage.""" + """ + Choices: fixed or percentage. + """ discountValueType: DiscountValueTypeEnum - """Products discounted by the voucher.""" + """ + Products discounted by the voucher. + """ products: [ID!] """ Variants discounted by the voucher. - + Added in Saleor 3.1. """ variants: [ID!] - """Collections discounted by the voucher.""" + """ + Collections discounted by the voucher. + """ collections: [ID!] - """Categories discounted by the voucher.""" + """ + Categories discounted by the voucher. + """ categories: [ID!] - """Minimal quantity of checkout items required to apply the voucher.""" + """ + Minimal quantity of checkout items required to apply the voucher. + """ minCheckoutItemsQuantity: Int - """Country codes that can be used with the shipping voucher.""" + """ + Country codes that can be used with the shipping voucher. + """ countries: [String!] - """Voucher should be applied to the cheapest item or entire order.""" + """ + Voucher should be applied to the cheapest item or entire order. + """ applyOncePerOrder: Boolean - """Voucher should be applied once per customer.""" + """ + Voucher should be applied once per customer. + """ applyOncePerCustomer: Boolean - """Voucher can be used only by staff user.""" + """ + Voucher can be used only by staff user. + """ onlyForStaff: Boolean - """Limit number of times this voucher can be used in total.""" + """ + Limit number of times this voucher can be used in total. + """ usageLimit: Int } """ -Deletes a voucher. +Deletes a voucher. Requires one of the following permissions: MANAGE_DISCOUNTS. """ type VoucherDelete { - discountErrors: [DiscountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [DiscountError!]! voucher: Voucher } """ -Deletes vouchers. +Deletes vouchers. Requires one of the following permissions: MANAGE_DISCOUNTS. """ type VoucherBulkDelete { - """Returns how many objects were affected.""" + """ + Returns how many objects were affected. + """ count: Int! - discountErrors: [DiscountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [DiscountError!]! } """ -Updates a voucher. +Updates a voucher. Requires one of the following permissions: MANAGE_DISCOUNTS. """ type VoucherUpdate { - discountErrors: [DiscountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [DiscountError!]! voucher: Voucher } """ -Adds products, categories, collections to a voucher. +Adds products, categories, collections to a voucher. Requires one of the following permissions: MANAGE_DISCOUNTS. """ type VoucherAddCatalogues { - """Voucher of which catalogue IDs will be modified.""" + """ + Voucher of which catalogue IDs will be modified. + """ voucher: Voucher - discountErrors: [DiscountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [DiscountError!]! } """ -Removes products, categories, collections from a voucher. +Removes products, categories, collections from a voucher. Requires one of the following permissions: MANAGE_DISCOUNTS. """ type VoucherRemoveCatalogues { - """Voucher of which catalogue IDs will be modified.""" + """ + Voucher of which catalogue IDs will be modified. + """ voucher: Voucher - discountErrors: [DiscountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [DiscountError!]! } """ -Creates/updates translations for a voucher. +Creates/updates translations for a voucher. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ type VoucherTranslate { - translationErrors: [TranslationError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [TranslationError!]! voucher: Voucher } """ -Manage voucher's availability in channels. +Manage voucher's availability in channels. Requires one of the following permissions: MANAGE_DISCOUNTS. """ type VoucherChannelListingUpdate { - """An updated voucher instance.""" + """ + An updated voucher instance. + """ voucher: Voucher - discountErrors: [DiscountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [DiscountError!]! } input VoucherChannelListingInput { - """List of channels to which the voucher should be assigned.""" + """ + List of channels to which the voucher should be assigned. + """ addChannels: [VoucherChannelListingAddInput!] - """List of channels from which the voucher should be unassigned.""" + """ + List of channels from which the voucher should be unassigned. + """ removeChannels: [ID!] } input VoucherChannelListingAddInput { - """ID of a channel.""" + """ + ID of a channel. + """ channelId: ID! - """Value of the voucher.""" + """ + Value of the voucher. + """ discountValue: PositiveDecimal - """Min purchase amount required to apply the voucher.""" + """ + Min purchase amount required to apply the voucher. + """ minAmountSpent: PositiveDecimal } """ -Export products to csv file. +Export products to csv file. Requires one of the following permissions: MANAGE_PRODUCTS. """ @@ -21280,7 +26962,8 @@ type ExportProducts { The newly created export file job which is responsible for export data. """ exportFile: ExportFile - exportErrors: [ExportError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + exportErrors: [ExportError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ExportError!]! } @@ -21290,14 +26973,20 @@ type ExportError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: ExportErrorCode! } -"""An enumeration.""" +""" +An enumeration. +""" enum ExportErrorCode { GRAPHQL_ERROR INVALID @@ -21306,44 +26995,68 @@ enum ExportErrorCode { } input ExportProductsInput { - """Determine which products should be exported.""" + """ + Determine which products should be exported. + """ scope: ExportScope! - """Filtering options for products.""" + """ + Filtering options for products. + """ filter: ProductFilterInput - """List of products IDs to export.""" + """ + List of products IDs to export. + """ ids: [ID!] - """Input with info about fields which should be exported.""" + """ + Input with info about fields which should be exported. + """ exportInfo: ExportInfoInput - """Type of exported file.""" + """ + Type of exported file. + """ fileType: FileTypesEnum! } enum ExportScope { - """Export all products.""" + """ + Export all products. + """ ALL - """Export products with given ids.""" + """ + Export products with given ids. + """ IDS - """Export the filtered products.""" + """ + Export the filtered products. + """ FILTER } input ExportInfoInput { - """List of attribute ids witch should be exported.""" + """ + List of attribute ids witch should be exported. + """ attributes: [ID!] - """List of warehouse ids witch should be exported.""" + """ + List of warehouse ids witch should be exported. + """ warehouses: [ID!] - """List of channels ids which should be exported.""" + """ + List of channels ids which should be exported. + """ channels: [ID!] - """List of product fields witch should be exported.""" + """ + List of product fields witch should be exported. + """ fields: [ProductFieldEnum!] } @@ -21362,7 +27075,9 @@ enum ProductFieldEnum { VARIANT_MEDIA } -"""An enumeration.""" +""" +An enumeration. +""" enum FileTypesEnum { CSV XLSX @@ -21373,7 +27088,7 @@ Export gift cards to csv file. Added in Saleor 3.1. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_GIFT_CARD. """ @@ -21386,27 +27101,36 @@ type ExportGiftCards { } input ExportGiftCardsInput { - """Determine which gift cards should be exported.""" + """ + Determine which gift cards should be exported. + """ scope: ExportScope! - """Filtering options for gift cards.""" + """ + Filtering options for gift cards. + """ filter: GiftCardFilterInput - """List of gift cards IDs to export.""" + """ + List of gift cards IDs to export. + """ ids: [ID!] - """Type of exported file.""" + """ + Type of exported file. + """ fileType: FileTypesEnum! } """ -Upload a file. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec +Upload a file. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER. """ type FileUpload { uploadedFile: File - uploadErrors: [UploadError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + uploadErrors: [UploadError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [UploadError!]! } @@ -21416,23 +27140,34 @@ type UploadError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: UploadErrorCode! } -"""An enumeration.""" +""" +An enumeration. +""" enum UploadErrorCode { GRAPHQL_ERROR } -"""Adds a gift card or a voucher to a checkout.""" +""" +Adds a gift card or a voucher to a checkout. +""" type CheckoutAddPromoCode { - """The checkout with the added gift card or voucher.""" + """ + The checkout with the added gift card or voucher. + """ checkout: Checkout - checkoutErrors: [CheckoutError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [CheckoutError!]! } @@ -21442,23 +27177,35 @@ type CheckoutError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: CheckoutErrorCode! - """List of varint IDs which causes the error.""" + """ + List of varint IDs which causes the error. + """ variants: [ID!] - """List of line Ids which cause the error.""" + """ + List of line Ids which cause the error. + """ lines: [ID!] - """A type of address that causes the error.""" + """ + A type of address that causes the error. + """ addressType: AddressTypeEnum } -"""An enumeration.""" +""" +An enumeration. +""" enum CheckoutErrorCode { BILLING_ADDRESS_NOT_SET CHECKOUT_NOT_FULLY_PAID @@ -21490,11 +27237,16 @@ enum CheckoutErrorCode { INACTIVE_PAYMENT } -"""Update billing address in the existing checkout.""" +""" +Update billing address in the existing checkout. +""" type CheckoutBillingAddressUpdate { - """An updated checkout.""" + """ + An updated checkout. + """ checkout: Checkout - checkoutErrors: [CheckoutError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [CheckoutError!]! } @@ -21519,7 +27271,9 @@ input CheckoutAddressValidationRules { Completes the checkout. As a result a new order is created and a payment charge is made. This action requires a successful payment before it can be performed. In case additional confirmation step as 3D secure is required confirmationNeeded flag will be set to True and no order created until payment is confirmed with second call of this mutation. """ type CheckoutComplete { - """Placed order.""" + """ + Placed order. + """ order: Order """ @@ -21527,25 +27281,34 @@ type CheckoutComplete { """ confirmationNeeded: Boolean! - """Confirmation data used to process additional authorization steps.""" + """ + Confirmation data used to process additional authorization steps. + """ confirmationData: JSONString - checkoutErrors: [CheckoutError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [CheckoutError!]! } -"""Create a new checkout.""" +""" +Create a new checkout. +""" type CheckoutCreate { """ Whether the checkout was created or the current active one was returned. Refer to checkoutLinesAdd and checkoutLinesUpdate to merge a cart with an active checkout. """ - created: Boolean @deprecated(reason: "This field will be removed in Saleor 4.0. Always returns `true`.") - checkoutErrors: [CheckoutError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + created: Boolean + @deprecated(reason: "This field will be removed in Saleor 4.0. Always returns `true`.") + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [CheckoutError!]! checkout: Checkout } input CheckoutCreateInput { - """Slug of a channel in which to create a checkout.""" + """ + Slug of a channel in which to create a checkout. + """ channel: String """ @@ -21553,7 +27316,9 @@ input CheckoutCreateInput { """ lines: [CheckoutLineInput!]! - """The customer's email address.""" + """ + The customer's email address. + """ email: String """ @@ -21561,50 +27326,58 @@ input CheckoutCreateInput { """ shippingAddress: AddressInput - """Billing address of the customer.""" + """ + Billing address of the customer. + """ billingAddress: AddressInput - """Checkout language code.""" + """ + Checkout language code. + """ languageCode: LanguageCodeEnum """ The checkout validation rules that can be changed. - + Added in Saleor 3.5. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ validationRules: CheckoutValidationRules } input CheckoutLineInput { - """The number of items purchased.""" + """ + The number of items purchased. + """ quantity: Int! - """ID of the product variant.""" + """ + ID of the product variant. + """ variantId: ID! """ Custom price of the item. Can be set only by apps with `HANDLE_CHECKOUTS` permission. When the line with the same variant will be provided multiple times, the last price will be used. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ price: PositiveDecimal """ - Flag that allow force splitting the same variant into multiple lines by skipping the matching logic. - + Flag that allow force splitting the same variant into multiple lines by skipping the matching logic. + Added in Saleor 3.6. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ forceNewLine: Boolean = false """ Fields required to update the object's metadata. - + Added in Saleor 3.8. """ metadata: [MetadataInput!] @@ -21623,48 +27396,68 @@ input CheckoutValidationRules { } """ -Sets the customer as the owner of the checkout. +Sets the customer as the owner of the checkout. Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_USER. """ type CheckoutCustomerAttach { - """An updated checkout.""" + """ + An updated checkout. + """ checkout: Checkout - checkoutErrors: [CheckoutError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [CheckoutError!]! } """ -Removes the user assigned as the owner of the checkout. +Removes the user assigned as the owner of the checkout. Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_USER. """ type CheckoutCustomerDetach { - """An updated checkout.""" + """ + An updated checkout. + """ checkout: Checkout - checkoutErrors: [CheckoutError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [CheckoutError!]! } -"""Updates email address in the existing checkout object.""" +""" +Updates email address in the existing checkout object. +""" type CheckoutEmailUpdate { - """An updated checkout.""" + """ + An updated checkout. + """ checkout: Checkout - checkoutErrors: [CheckoutError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [CheckoutError!]! } -"""Deletes a CheckoutLine.""" +""" +Deletes a CheckoutLine. +""" type CheckoutLineDelete { - """An updated checkout.""" + """ + An updated checkout. + """ checkout: Checkout - checkoutErrors: [CheckoutError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [CheckoutError!]! } -"""Deletes checkout lines.""" +""" +Deletes checkout lines. +""" type CheckoutLinesDelete { - """An updated checkout.""" + """ + An updated checkout. + """ checkout: Checkout errors: [CheckoutError!]! } @@ -21673,24 +27466,32 @@ type CheckoutLinesDelete { Adds a checkout line to the existing checkout.If line was already in checkout, its quantity will be increased. """ type CheckoutLinesAdd { - """An updated checkout.""" + """ + An updated checkout. + """ checkout: Checkout - checkoutErrors: [CheckoutError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [CheckoutError!]! } -"""Updates checkout line in the existing checkout.""" +""" +Updates checkout line in the existing checkout. +""" type CheckoutLinesUpdate { - """An updated checkout.""" + """ + An updated checkout. + """ checkout: Checkout - checkoutErrors: [CheckoutError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [CheckoutError!]! } input CheckoutLineUpdateInput { """ - ID of the product variant. - + ID of the product variant. + DEPRECATED: this field will be removed in Saleor 4.0. Use `lineId` instead. """ variantId: ID @@ -21702,42 +27503,56 @@ input CheckoutLineUpdateInput { """ Custom price of the item. Can be set only by apps with `HANDLE_CHECKOUTS` permission. When the line with the same variant will be provided multiple times, the last price will be used. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ price: PositiveDecimal """ ID of the line. - + Added in Saleor 3.6. """ lineId: ID } -"""Remove a gift card or a voucher from a checkout.""" +""" +Remove a gift card or a voucher from a checkout. +""" type CheckoutRemovePromoCode { - """The checkout with the removed gift card or voucher.""" + """ + The checkout with the removed gift card or voucher. + """ checkout: Checkout - checkoutErrors: [CheckoutError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [CheckoutError!]! } -"""Create a new payment for given checkout.""" +""" +Create a new payment for given checkout. +""" type CheckoutPaymentCreate { - """Related checkout object.""" + """ + Related checkout object. + """ checkout: Checkout - """A newly created payment.""" + """ + A newly created payment. + """ payment: Payment - paymentErrors: [PaymentError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + paymentErrors: [PaymentError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [PaymentError!]! } input PaymentInput { - """A gateway to use with that payment.""" + """ + A gateway to use with that payment. + """ gateway: String! """ @@ -21757,20 +27572,22 @@ input PaymentInput { """ Payment store type. - + Added in Saleor 3.1. """ storePaymentMethod: StorePaymentMethodEnum = NONE """ User public metadata. - + Added in Saleor 3.1. """ metadata: [MetadataInput!] } -"""Enum representing the type of a payment storage in a gateway.""" +""" +Enum representing the type of a payment storage in a gateway. +""" enum StorePaymentMethodEnum { """ On session storage type. The payment is stored only to be reused when the customer is present in the checkout flow. @@ -21782,23 +27599,35 @@ enum StorePaymentMethodEnum { """ OFF_SESSION - """Storage is disabled. The payment is not stored.""" + """ + Storage is disabled. The payment is not stored. + """ NONE } -"""Update shipping address in the existing checkout.""" +""" +Update shipping address in the existing checkout. +""" type CheckoutShippingAddressUpdate { - """An updated checkout.""" + """ + An updated checkout. + """ checkout: Checkout - checkoutErrors: [CheckoutError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [CheckoutError!]! } -"""Updates the shipping method of the checkout.""" +""" +Updates the shipping method of the checkout. +""" type CheckoutShippingMethodUpdate { - """An updated checkout.""" + """ + An updated checkout. + """ checkout: Checkout - checkoutErrors: [CheckoutError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [CheckoutError!]! } @@ -21810,16 +27639,23 @@ Added in Saleor 3.1. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type CheckoutDeliveryMethodUpdate { - """An updated checkout.""" + """ + An updated checkout. + """ checkout: Checkout errors: [CheckoutError!]! } -"""Update language code in the existing checkout.""" +""" +Update language code in the existing checkout. +""" type CheckoutLanguageCodeUpdate { - """An updated checkout.""" + """ + An updated checkout. + """ checkout: Checkout - checkoutErrors: [CheckoutError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [CheckoutError!]! } @@ -21831,7 +27667,9 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type OrderCreateFromCheckout { - """Placed order.""" + """ + Placed order. + """ order: Order errors: [OrderCreateFromCheckoutError!]! } @@ -21842,20 +27680,30 @@ type OrderCreateFromCheckoutError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: OrderCreateFromCheckoutErrorCode! - """List of variant IDs which causes the error.""" + """ + List of variant IDs which causes the error. + """ variants: [ID!] - """List of line Ids which cause the error.""" + """ + List of line Ids which cause the error. + """ lines: [ID!] } -"""An enumeration.""" +""" +An enumeration. +""" enum OrderCreateFromCheckoutErrorCode { GRAPHQL_ERROR CHECKOUT_NOT_FOUND @@ -21874,12 +27722,13 @@ enum OrderCreateFromCheckoutErrorCode { } """ -Creates new channel. +Creates new channel. Requires one of the following permissions: MANAGE_CHANNELS. """ type ChannelCreate { - channelErrors: [ChannelError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + channelErrors: [ChannelError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ChannelError!]! channel: Channel } @@ -21890,20 +27739,30 @@ type ChannelError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: ChannelErrorCode! - """List of shipping zone IDs which causes the error.""" + """ + List of shipping zone IDs which causes the error. + """ shippingZones: [ID!] - """List of warehouses IDs which causes the error.""" + """ + List of warehouses IDs which causes the error. + """ warehouses: [ID!] } -"""An enumeration.""" +""" +An enumeration. +""" enum ChannelErrorCode { ALREADY_EXISTS GRAPHQL_ERROR @@ -21917,44 +27776,54 @@ enum ChannelErrorCode { } input ChannelCreateInput { - """isActive flag.""" + """ + isActive flag. + """ isActive: Boolean """ The channel stock settings. - + Added in Saleor 3.7. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ stockSettings: StockSettingsInput - """List of shipping zones to assign to the channel.""" + """ + List of shipping zones to assign to the channel. + """ addShippingZones: [ID!] """ List of warehouses to assign to the channel. - + Added in Saleor 3.5. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ addWarehouses: [ID!] - """Name of the channel.""" + """ + Name of the channel. + """ name: String! - """Slug of the channel.""" + """ + Slug of the channel. + """ slug: String! - """Currency of the channel.""" + """ + Currency of the channel. + """ currencyCode: String! """ Default country for the channel. Default country can be used in checkout to determine the stock quantities or calculate taxes when the country was not explicitly provided. - + Added in Saleor 3.1. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ defaultCountry: CountryCode! @@ -21968,104 +27837,124 @@ input StockSettingsInput { } """ -Update a channel. +Update a channel. Requires one of the following permissions: MANAGE_CHANNELS. """ type ChannelUpdate { - channelErrors: [ChannelError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + channelErrors: [ChannelError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ChannelError!]! channel: Channel } input ChannelUpdateInput { - """isActive flag.""" + """ + isActive flag. + """ isActive: Boolean """ The channel stock settings. - + Added in Saleor 3.7. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ stockSettings: StockSettingsInput - """List of shipping zones to assign to the channel.""" + """ + List of shipping zones to assign to the channel. + """ addShippingZones: [ID!] """ List of warehouses to assign to the channel. - + Added in Saleor 3.5. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ addWarehouses: [ID!] - """Name of the channel.""" + """ + Name of the channel. + """ name: String - """Slug of the channel.""" + """ + Slug of the channel. + """ slug: String """ Default country for the channel. Default country can be used in checkout to determine the stock quantities or calculate taxes when the country was not explicitly provided. - + Added in Saleor 3.1. """ defaultCountry: CountryCode - """List of shipping zones to unassign from the channel.""" + """ + List of shipping zones to unassign from the channel. + """ removeShippingZones: [ID!] """ List of warehouses to unassign from the channel. - + Added in Saleor 3.5. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ removeWarehouses: [ID!] } """ -Delete a channel. Orders associated with the deleted channel will be moved to the target channel. Checkouts, product availability, and pricing will be removed. +Delete a channel. Orders associated with the deleted channel will be moved to the target channel. Checkouts, product availability, and pricing will be removed. Requires one of the following permissions: MANAGE_CHANNELS. """ type ChannelDelete { - channelErrors: [ChannelError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + channelErrors: [ChannelError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ChannelError!]! channel: Channel } input ChannelDeleteInput { - """ID of channel to migrate orders from origin channel.""" + """ + ID of channel to migrate orders from origin channel. + """ channelId: ID! } """ -Activate a channel. +Activate a channel. Requires one of the following permissions: MANAGE_CHANNELS. """ type ChannelActivate { - """Activated channel.""" + """ + Activated channel. + """ channel: Channel - channelErrors: [ChannelError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + channelErrors: [ChannelError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ChannelError!]! } """ -Deactivate a channel. +Deactivate a channel. Requires one of the following permissions: MANAGE_CHANNELS. """ type ChannelDeactivate { - """Deactivated channel.""" + """ + Deactivated channel. + """ channel: Channel - channelErrors: [ChannelError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + channelErrors: [ChannelError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [ChannelError!]! } @@ -22074,20 +27963,25 @@ Reorder the warehouses of a channel. Added in Saleor 3.7. -Note: this API is currently in Feature Preview and can be subject to changes at later point. +Note: this API is currently in Feature Preview and can be subject to changes at later point. Requires one of the following permissions: MANAGE_CHANNELS. """ type ChannelReorderWarehouses { - """Channel within the warehouses are reordered.""" + """ + Channel within the warehouses are reordered. + """ channel: Channel errors: [ChannelError!]! } -"""Creates an attribute.""" +""" +Creates an attribute. +""" type AttributeCreate { attribute: Attribute - attributeErrors: [AttributeError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + attributeErrors: [AttributeError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AttributeError!]! } @@ -22097,14 +27991,20 @@ type AttributeError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: AttributeErrorCode! } -"""An enumeration.""" +""" +An enumeration. +""" enum AttributeErrorCode { ALREADY_EXISTS GRAPHQL_ERROR @@ -22115,40 +28015,64 @@ enum AttributeErrorCode { } input AttributeCreateInput { - """The input type to use for entering attribute values in the dashboard.""" + """ + The input type to use for entering attribute values in the dashboard. + """ inputType: AttributeInputTypeEnum - """The entity type which can be used as a reference.""" + """ + The entity type which can be used as a reference. + """ entityType: AttributeEntityTypeEnum - """Name of an attribute displayed in the interface.""" + """ + Name of an attribute displayed in the interface. + """ name: String! - """Internal representation of an attribute name.""" + """ + Internal representation of an attribute name. + """ slug: String - """The attribute type.""" + """ + The attribute type. + """ type: AttributeTypeEnum! - """The unit of attribute values.""" + """ + The unit of attribute values. + """ unit: MeasurementUnitsEnum - """List of attribute's values.""" + """ + List of attribute's values. + """ values: [AttributeValueCreateInput!] - """Whether the attribute requires values to be passed or not.""" + """ + Whether the attribute requires values to be passed or not. + """ valueRequired: Boolean - """Whether the attribute is for variants only.""" + """ + Whether the attribute is for variants only. + """ isVariantOnly: Boolean - """Whether the attribute should be visible or not in storefront.""" + """ + Whether the attribute should be visible or not in storefront. + """ visibleInStorefront: Boolean - """Whether the attribute can be filtered in storefront.""" + """ + Whether the attribute can be filtered in storefront. + """ filterableInStorefront: Boolean - """Whether the attribute can be filtered in dashboard.""" + """ + Whether the attribute can be filtered in dashboard. + """ filterableInDashboard: Boolean """ @@ -22156,12 +28080,14 @@ input AttributeCreateInput { """ storefrontSearchPosition: Int - """Whether the attribute can be displayed in the admin product list.""" + """ + Whether the attribute can be displayed in the admin product list. + """ availableInGrid: Boolean """ External ID of this attribute. - + Added in Saleor 3.10. """ externalReference: String @@ -22175,88 +28101,116 @@ input AttributeValueCreateInput { """ Represents the text of the attribute value, includes formatting. - + Rich text format. For reference see https://editorjs.io/ - + DEPRECATED: this field will be removed in Saleor 4.0.The rich text attribute hasn't got predefined value, so can be specified only from instance that supports the given attribute. """ richText: JSONString """ Represents the text of the attribute value, plain text without formating. - + DEPRECATED: this field will be removed in Saleor 4.0.The plain text attribute hasn't got predefined value, so can be specified only from instance that supports the given attribute. """ plainText: String - """URL of the file attribute. Every time, a new value is created.""" + """ + URL of the file attribute. Every time, a new value is created. + """ fileUrl: String - """File content type.""" + """ + File content type. + """ contentType: String """ External ID of this attribute value. - + Added in Saleor 3.10. """ externalReference: String - """Name of a value displayed in the interface.""" + """ + Name of a value displayed in the interface. + """ name: String! } """ -Deletes an attribute. +Deletes an attribute. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ type AttributeDelete { - attributeErrors: [AttributeError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + attributeErrors: [AttributeError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AttributeError!]! attribute: Attribute } """ -Updates attribute. +Updates attribute. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ type AttributeUpdate { attribute: Attribute - attributeErrors: [AttributeError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + attributeErrors: [AttributeError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AttributeError!]! } input AttributeUpdateInput { - """Name of an attribute displayed in the interface.""" + """ + Name of an attribute displayed in the interface. + """ name: String - """Internal representation of an attribute name.""" + """ + Internal representation of an attribute name. + """ slug: String - """The unit of attribute values.""" + """ + The unit of attribute values. + """ unit: MeasurementUnitsEnum - """IDs of values to be removed from this attribute.""" + """ + IDs of values to be removed from this attribute. + """ removeValues: [ID!] - """New values to be created for this attribute.""" + """ + New values to be created for this attribute. + """ addValues: [AttributeValueUpdateInput!] - """Whether the attribute requires values to be passed or not.""" + """ + Whether the attribute requires values to be passed or not. + """ valueRequired: Boolean - """Whether the attribute is for variants only.""" + """ + Whether the attribute is for variants only. + """ isVariantOnly: Boolean - """Whether the attribute should be visible or not in storefront.""" + """ + Whether the attribute should be visible or not in storefront. + """ visibleInStorefront: Boolean - """Whether the attribute can be filtered in storefront.""" + """ + Whether the attribute can be filtered in storefront. + """ filterableInStorefront: Boolean - """Whether the attribute can be filtered in dashboard.""" + """ + Whether the attribute can be filtered in dashboard. + """ filterableInDashboard: Boolean """ @@ -22264,12 +28218,14 @@ input AttributeUpdateInput { """ storefrontSearchPosition: Int - """Whether the attribute can be displayed in the admin product list.""" + """ + Whether the attribute can be displayed in the admin product list. + """ availableInGrid: Boolean """ External ID of this product. - + Added in Saleor 3.10. """ externalReference: String @@ -22283,118 +28239,141 @@ input AttributeValueUpdateInput { """ Represents the text of the attribute value, includes formatting. - + Rich text format. For reference see https://editorjs.io/ - + DEPRECATED: this field will be removed in Saleor 4.0.The rich text attribute hasn't got predefined value, so can be specified only from instance that supports the given attribute. """ richText: JSONString """ Represents the text of the attribute value, plain text without formating. - + DEPRECATED: this field will be removed in Saleor 4.0.The plain text attribute hasn't got predefined value, so can be specified only from instance that supports the given attribute. """ plainText: String - """URL of the file attribute. Every time, a new value is created.""" + """ + URL of the file attribute. Every time, a new value is created. + """ fileUrl: String - """File content type.""" + """ + File content type. + """ contentType: String """ External ID of this attribute value. - + Added in Saleor 3.10. """ externalReference: String - """Name of a value displayed in the interface.""" + """ + Name of a value displayed in the interface. + """ name: String } """ -Creates/updates translations for an attribute. +Creates/updates translations for an attribute. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ type AttributeTranslate { - translationErrors: [TranslationError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [TranslationError!]! attribute: Attribute } """ -Deletes attributes. +Deletes attributes. Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ type AttributeBulkDelete { - """Returns how many objects were affected.""" + """ + Returns how many objects were affected. + """ count: Int! - attributeErrors: [AttributeError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + attributeErrors: [AttributeError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AttributeError!]! } """ -Deletes values of attributes. +Deletes values of attributes. Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. """ type AttributeValueBulkDelete { - """Returns how many objects were affected.""" + """ + Returns how many objects were affected. + """ count: Int! - attributeErrors: [AttributeError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + attributeErrors: [AttributeError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AttributeError!]! } """ -Creates a value for an attribute. +Creates a value for an attribute. Requires one of the following permissions: MANAGE_PRODUCTS. """ type AttributeValueCreate { - """The updated attribute.""" + """ + The updated attribute. + """ attribute: Attribute - attributeErrors: [AttributeError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + attributeErrors: [AttributeError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AttributeError!]! attributeValue: AttributeValue } """ -Deletes a value of an attribute. +Deletes a value of an attribute. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ type AttributeValueDelete { - """The updated attribute.""" + """ + The updated attribute. + """ attribute: Attribute - attributeErrors: [AttributeError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + attributeErrors: [AttributeError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AttributeError!]! attributeValue: AttributeValue } """ -Updates value of an attribute. +Updates value of an attribute. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ type AttributeValueUpdate { - """The updated attribute.""" + """ + The updated attribute. + """ attribute: Attribute - attributeErrors: [AttributeError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + attributeErrors: [AttributeError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AttributeError!]! attributeValue: AttributeValue } """ -Creates/updates translations for an attribute value. +Creates/updates translations for an attribute value. Requires one of the following permissions: MANAGE_TRANSLATIONS. """ type AttributeValueTranslate { - translationErrors: [TranslationError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [TranslationError!]! attributeValue: AttributeValue } @@ -22404,24 +28383,29 @@ input AttributeValueTranslationInput { """ Translated text. - + Rich text format. For reference see https://editorjs.io/ """ richText: JSONString - """Translated text.""" + """ + Translated text. + """ plainText: String } """ -Reorder the values of an attribute. +Reorder the values of an attribute. Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. """ type AttributeReorderValues { - """Attribute from which values are reordered.""" + """ + Attribute from which values are reordered. + """ attribute: Attribute - attributeErrors: [AttributeError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + attributeErrors: [AttributeError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AttributeError!]! } @@ -22429,9 +28413,12 @@ type AttributeReorderValues { Creates a new app. Requires the following permissions: AUTHENTICATED_STAFF_USER and MANAGE_APPS. """ type AppCreate { - """The newly created authentication token.""" + """ + The newly created authentication token. + """ authToken: String - appErrors: [AppError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AppError!]! app: App } @@ -22442,17 +28429,25 @@ type AppError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: AppErrorCode! - """List of permissions which causes the error.""" + """ + List of permissions which causes the error. + """ permissions: [PermissionEnum!] } -"""An enumeration.""" +""" +An enumeration. +""" enum AppErrorCode { FORBIDDEN GRAPHQL_ERROR @@ -22470,72 +28465,91 @@ enum AppErrorCode { } input AppInput { - """Name of the app.""" + """ + Name of the app. + """ name: String - """List of permission code names to assign to this app.""" + """ + List of permission code names to assign to this app. + """ permissions: [PermissionEnum!] } """ -Updates an existing app. +Updates an existing app. Requires one of the following permissions: MANAGE_APPS. """ type AppUpdate { - appErrors: [AppError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AppError!]! app: App } """ -Deletes an app. +Deletes an app. Requires one of the following permissions: MANAGE_APPS. """ type AppDelete { - appErrors: [AppError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AppError!]! app: App } """ -Creates a new token. +Creates a new token. Requires one of the following permissions: MANAGE_APPS. """ type AppTokenCreate { - """The newly created authentication token.""" + """ + The newly created authentication token. + """ authToken: String - appErrors: [AppError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AppError!]! appToken: AppToken } input AppTokenInput { - """Name of the token.""" + """ + Name of the token. + """ name: String - """ID of app.""" + """ + ID of app. + """ app: ID! } """ -Deletes an authentication token assigned to app. +Deletes an authentication token assigned to app. Requires one of the following permissions: MANAGE_APPS. """ type AppTokenDelete { - appErrors: [AppError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AppError!]! appToken: AppToken } -"""Verify provided app token.""" +""" +Verify provided app token. +""" type AppTokenVerify { - """Determine if token is valid or not.""" + """ + Determine if token is valid or not. + """ valid: Boolean! - appErrors: [AppError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AppError!]! } @@ -22543,59 +28557,73 @@ type AppTokenVerify { Install new app by using app manifest. Requires the following permissions: AUTHENTICATED_STAFF_USER and MANAGE_APPS. """ type AppInstall { - appErrors: [AppError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AppError!]! appInstallation: AppInstallation } input AppInstallInput { - """Name of the app to install.""" + """ + Name of the app to install. + """ appName: String - """Url to app's manifest in JSON format.""" + """ + Url to app's manifest in JSON format. + """ manifestUrl: String - """Determine if app will be set active or not.""" + """ + Determine if app will be set active or not. + """ activateAfterInstallation: Boolean = true - """List of permission code names to assign to this app.""" + """ + List of permission code names to assign to this app. + """ permissions: [PermissionEnum!] } """ -Retry failed installation of new app. +Retry failed installation of new app. Requires one of the following permissions: MANAGE_APPS. """ type AppRetryInstall { - appErrors: [AppError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AppError!]! appInstallation: AppInstallation } """ -Delete failed installation. +Delete failed installation. Requires one of the following permissions: MANAGE_APPS. """ type AppDeleteFailedInstallation { - appErrors: [AppError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AppError!]! appInstallation: AppInstallation } """ -Fetch and validate manifest. +Fetch and validate manifest. Requires one of the following permissions: MANAGE_APPS. """ type AppFetchManifest { manifest: Manifest - appErrors: [AppError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AppError!]! } -"""The manifest definition.""" +""" +The manifest definition. +""" type Manifest { identifier: String! version: String! @@ -22604,12 +28632,18 @@ type Manifest { permissions: [Permission!] appUrl: String - """URL to iframe with the configuration for the app.""" - configurationUrl: String @deprecated(reason: "This field will be removed in Saleor 4.0. Use `appUrl` instead.") + """ + URL to iframe with the configuration for the app. + """ + configurationUrl: String + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `appUrl` instead.") tokenTargetUrl: String - """Description of the data privacy defined for this app.""" - dataPrivacy: String @deprecated(reason: "This field will be removed in Saleor 4.0. Use `dataPrivacyUrl` instead.") + """ + Description of the data privacy defined for this app. + """ + dataPrivacy: String + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `dataPrivacyUrl` instead.") dataPrivacyUrl: String homepageUrl: String supportUrl: String @@ -22617,93 +28651,126 @@ type Manifest { """ List of the app's webhooks. - + Added in Saleor 3.5. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ webhooks: [AppManifestWebhook!]! """ The audience that will be included in all JWT tokens for the app. - + Added in Saleor 3.8. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ audience: String } type AppManifestExtension { - """List of the app extension's permissions.""" + """ + List of the app extension's permissions. + """ permissions: [Permission!]! - """Label of the extension to show in the dashboard.""" + """ + Label of the extension to show in the dashboard. + """ label: String! - """URL of a view where extension's iframe is placed.""" + """ + URL of a view where extension's iframe is placed. + """ url: String! - """Place where given extension will be mounted.""" + """ + Place where given extension will be mounted. + """ mount: AppExtensionMountEnum! - """Type of way how app extension will be opened.""" + """ + Type of way how app extension will be opened. + """ target: AppExtensionTargetEnum! } type AppManifestWebhook { - """The name of the webhook.""" + """ + The name of the webhook. + """ name: String! - """The asynchronous events that webhook wants to subscribe.""" + """ + The asynchronous events that webhook wants to subscribe. + """ asyncEvents: [WebhookEventTypeAsyncEnum!] - """The synchronous events that webhook wants to subscribe.""" + """ + The synchronous events that webhook wants to subscribe. + """ syncEvents: [WebhookEventTypeSyncEnum!] - """Subscription query of a webhook""" + """ + Subscription query of a webhook + """ query: String! - """The url to receive the payload.""" + """ + The url to receive the payload. + """ targetUrl: String! } """ -Activate the app. +Activate the app. Requires one of the following permissions: MANAGE_APPS. """ type AppActivate { - appErrors: [AppError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AppError!]! app: App } """ -Deactivate the app. +Deactivate the app. Requires one of the following permissions: MANAGE_APPS. """ type AppDeactivate { - appErrors: [AppError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AppError!]! app: App } -"""Create JWT token.""" +""" +Create JWT token. +""" type CreateToken { - """JWT token, required to authenticate.""" + """ + JWT token, required to authenticate. + """ token: String - """JWT refresh token, required to re-generate access token.""" + """ + JWT refresh token, required to re-generate access token. + """ refreshToken: String - """CSRF token required to re-generate access token.""" + """ + CSRF token required to re-generate access token. + """ csrfToken: String - """A user instance.""" + """ + A user instance. + """ user: User - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! } @@ -22713,17 +28780,25 @@ type AccountError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: AccountErrorCode! - """A type of address that causes the error.""" + """ + A type of address that causes the error. + """ addressType: AddressTypeEnum } -"""An enumeration.""" +""" +An enumeration. +""" enum AccountErrorCode { ACTIVATE_OWN_ACCOUNT ACTIVATE_SUPERUSER_ACCOUNT @@ -22764,26 +28839,40 @@ enum AccountErrorCode { Refresh JWT token. Mutation tries to take refreshToken from the input.If it fails it will try to take refreshToken from the http-only cookie -refreshToken. csrfToken is required when refreshToken is provided as a cookie. """ type RefreshToken { - """JWT token, required to authenticate.""" + """ + JWT token, required to authenticate. + """ token: String - """A user instance.""" + """ + A user instance. + """ user: User - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! } -"""Verify JWT token.""" +""" +Verify JWT token. +""" type VerifyToken { - """User assigned to token.""" + """ + User assigned to token. + """ user: User - """Determine if token is valid or not.""" + """ + Determine if token is valid or not. + """ isValid: Boolean! - """JWT payload.""" + """ + JWT payload. + """ payload: GenericScalar - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! } @@ -22795,90 +28884,140 @@ String, Boolean, Int, Float, List or Object. scalar GenericScalar """ -Deactivate all JWT tokens of the currently authenticated user. +Deactivate all JWT tokens of the currently authenticated user. Requires one of the following permissions: AUTHENTICATED_USER. """ type DeactivateAllUserTokens { - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! } -"""Prepare external authentication url for user by custom plugin.""" +""" +Prepare external authentication url for user by custom plugin. +""" type ExternalAuthenticationUrl { - """The data returned by authentication plugin.""" + """ + The data returned by authentication plugin. + """ authenticationData: JSONString - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! } -"""Obtain external access tokens for user by custom plugin.""" +""" +Obtain external access tokens for user by custom plugin. +""" type ExternalObtainAccessTokens { - """The token, required to authenticate.""" + """ + The token, required to authenticate. + """ token: String - """The refresh token, required to re-generate external access token.""" + """ + The refresh token, required to re-generate external access token. + """ refreshToken: String - """CSRF token required to re-generate external access token.""" + """ + CSRF token required to re-generate external access token. + """ csrfToken: String - """A user instance.""" + """ + A user instance. + """ user: User - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! } -"""Refresh user's access by custom plugin.""" +""" +Refresh user's access by custom plugin. +""" type ExternalRefresh { - """The token, required to authenticate.""" + """ + The token, required to authenticate. + """ token: String - """The refresh token, required to re-generate external access token.""" + """ + The refresh token, required to re-generate external access token. + """ refreshToken: String - """CSRF token required to re-generate external access token.""" + """ + CSRF token required to re-generate external access token. + """ csrfToken: String - """A user instance.""" + """ + A user instance. + """ user: User - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! } -"""Logout user by custom plugin.""" +""" +Logout user by custom plugin. +""" type ExternalLogout { - """The data returned by authentication plugin.""" + """ + The data returned by authentication plugin. + """ logoutData: JSONString - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! } -"""Verify external authentication data by plugin.""" +""" +Verify external authentication data by plugin. +""" type ExternalVerify { - """User assigned to data.""" + """ + User assigned to data. + """ user: User - """Determine if authentication data is valid or not.""" + """ + Determine if authentication data is valid or not. + """ isValid: Boolean! - """External data.""" + """ + External data. + """ verifyData: JSONString - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! } -"""Sends an email with the account password modification link.""" +""" +Sends an email with the account password modification link. +""" type RequestPasswordReset { - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! } -"""Confirm user account with token sent by email during registration.""" +""" +Confirm user account with token sent by email during registration. +""" type ConfirmAccount { - """An activated user account.""" + """ + An activated user account. + """ user: User - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! } @@ -22886,66 +29025,87 @@ type ConfirmAccount { Sets the user's password from the token sent by email using the RequestPasswordReset mutation. """ type SetPassword { - """JWT token, required to authenticate.""" + """ + JWT token, required to authenticate. + """ token: String - """JWT refresh token, required to re-generate access token.""" + """ + JWT refresh token, required to re-generate access token. + """ refreshToken: String - """CSRF token required to re-generate access token.""" + """ + CSRF token required to re-generate access token. + """ csrfToken: String - """A user instance.""" + """ + A user instance. + """ user: User - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! } """ -Change the password of the logged in user. +Change the password of the logged in user. Requires one of the following permissions: AUTHENTICATED_USER. """ type PasswordChange { - """A user instance with a new password.""" + """ + A user instance with a new password. + """ user: User - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! } """ -Request email change of the logged in user. +Request email change of the logged in user. Requires one of the following permissions: AUTHENTICATED_USER. """ type RequestEmailChange { - """A user instance.""" + """ + A user instance. + """ user: User - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! } """ -Confirm the email change of the logged-in user. +Confirm the email change of the logged-in user. Requires one of the following permissions: AUTHENTICATED_USER. """ type ConfirmEmailChange { - """A user instance with a new email.""" + """ + A user instance with a new email. + """ user: User - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! } """ -Create a new address for the customer. +Create a new address for the customer. Requires one of the following permissions: AUTHENTICATED_USER. """ type AccountAddressCreate { - """A user instance for which the address was created.""" + """ + A user instance for which the address was created. + """ user: User - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! address: Address } @@ -22954,9 +29114,12 @@ type AccountAddressCreate { Updates an address of the logged-in user. Requires one of the following permissions: MANAGE_USERS, IS_OWNER. """ type AccountAddressUpdate { - """A user object for which the address was edited.""" + """ + A user object for which the address was edited. + """ user: User - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! address: Address } @@ -22965,54 +29128,79 @@ type AccountAddressUpdate { Delete an address of the logged-in user. Requires one of the following permissions: MANAGE_USERS, IS_OWNER. """ type AccountAddressDelete { - """A user instance for which the address was deleted.""" + """ + A user instance for which the address was deleted. + """ user: User - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! address: Address } """ -Sets a default address for the authenticated user. +Sets a default address for the authenticated user. Requires one of the following permissions: AUTHENTICATED_USER. """ type AccountSetDefaultAddress { - """An updated user instance.""" + """ + An updated user instance. + """ user: User - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! } -"""Register a new user.""" +""" +Register a new user. +""" type AccountRegister { - """Informs whether users need to confirm their email address.""" + """ + Informs whether users need to confirm their email address. + """ requiresConfirmation: Boolean - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! user: User } input AccountRegisterInput { - """Given name.""" + """ + Given name. + """ firstName: String - """Family name.""" + """ + Family name. + """ lastName: String - """User language code.""" + """ + User language code. + """ languageCode: LanguageCodeEnum - """The email address of the user.""" + """ + The email address of the user. + """ email: String! - """Password.""" + """ + Password. + """ password: String! - """Base of frontend URL that will be needed to create confirmation URL.""" + """ + Base of frontend URL that will be needed to create confirmation URL. + """ redirectUrl: String - """User public metadata.""" + """ + User public metadata. + """ metadata: [MetadataInput!] """ @@ -23022,144 +29210,186 @@ input AccountRegisterInput { } """ -Updates the account of the logged-in user. +Updates the account of the logged-in user. Requires one of the following permissions: AUTHENTICATED_USER. """ type AccountUpdate { - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! user: User } input AccountInput { - """Given name.""" + """ + Given name. + """ firstName: String - """Family name.""" + """ + Family name. + """ lastName: String - """User language code.""" + """ + User language code. + """ languageCode: LanguageCodeEnum - """Billing address of the customer.""" + """ + Billing address of the customer. + """ defaultBillingAddress: AddressInput - """Shipping address of the customer.""" + """ + Shipping address of the customer. + """ defaultShippingAddress: AddressInput } """ -Sends an email with the account removal link for the logged-in user. +Sends an email with the account removal link for the logged-in user. Requires one of the following permissions: AUTHENTICATED_USER. """ type AccountRequestDeletion { - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! } """ -Remove user account. +Remove user account. Requires one of the following permissions: AUTHENTICATED_USER. """ type AccountDelete { - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! user: User } """ -Creates user address. +Creates user address. Requires one of the following permissions: MANAGE_USERS. """ type AddressCreate { - """A user instance for which the address was created.""" + """ + A user instance for which the address was created. + """ user: User - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! address: Address } """ -Updates an address. +Updates an address. Requires one of the following permissions: MANAGE_USERS. """ type AddressUpdate { - """A user object for which the address was edited.""" + """ + A user object for which the address was edited. + """ user: User - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! address: Address } """ -Deletes an address. +Deletes an address. Requires one of the following permissions: MANAGE_USERS. """ type AddressDelete { - """A user instance for which the address was deleted.""" + """ + A user instance for which the address was deleted. + """ user: User - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! address: Address } """ -Sets a default address for the given user. +Sets a default address for the given user. Requires one of the following permissions: MANAGE_USERS. """ type AddressSetDefault { - """An updated user instance.""" + """ + An updated user instance. + """ user: User - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! } """ -Creates a new customer. +Creates a new customer. Requires one of the following permissions: MANAGE_USERS. """ type CustomerCreate { - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! user: User } input UserCreateInput { - """Billing address of the customer.""" + """ + Billing address of the customer. + """ defaultBillingAddress: AddressInput - """Shipping address of the customer.""" + """ + Shipping address of the customer. + """ defaultShippingAddress: AddressInput - """Given name.""" + """ + Given name. + """ firstName: String - """Family name.""" + """ + Family name. + """ lastName: String - """The unique email address of the user.""" + """ + The unique email address of the user. + """ email: String - """User account is active.""" + """ + User account is active. + """ isActive: Boolean - """A note about the user.""" + """ + A note about the user. + """ note: String - """User language code.""" + """ + User language code. + """ languageCode: LanguageCodeEnum """ External ID of the customer. - + Added in Saleor 3.10. """ externalReference: String @@ -23176,79 +29406,101 @@ input UserCreateInput { } """ -Updates an existing customer. +Updates an existing customer. Requires one of the following permissions: MANAGE_USERS. """ type CustomerUpdate { - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! user: User } input CustomerInput { - """Billing address of the customer.""" + """ + Billing address of the customer. + """ defaultBillingAddress: AddressInput - """Shipping address of the customer.""" + """ + Shipping address of the customer. + """ defaultShippingAddress: AddressInput - """Given name.""" + """ + Given name. + """ firstName: String - """Family name.""" + """ + Family name. + """ lastName: String - """The unique email address of the user.""" + """ + The unique email address of the user. + """ email: String - """User account is active.""" + """ + User account is active. + """ isActive: Boolean - """A note about the user.""" + """ + A note about the user. + """ note: String - """User language code.""" + """ + User language code. + """ languageCode: LanguageCodeEnum """ External ID of the customer. - + Added in Saleor 3.10. """ externalReference: String } """ -Deletes a customer. +Deletes a customer. Requires one of the following permissions: MANAGE_USERS. """ type CustomerDelete { - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! user: User } """ -Deletes customers. +Deletes customers. Requires one of the following permissions: MANAGE_USERS. """ type CustomerBulkDelete { - """Returns how many objects were affected.""" + """ + Returns how many objects were affected. + """ count: Int! - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! } """ -Creates a new staff user. Apps are not allowed to perform this mutation. +Creates a new staff user. Apps are not allowed to perform this mutation. Requires one of the following permissions: MANAGE_STAFF. """ type StaffCreate { - staffErrors: [StaffError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + staffErrors: [StaffError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [StaffError!]! user: User } @@ -23259,42 +29511,66 @@ type StaffError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: AccountErrorCode! - """A type of address that causes the error.""" + """ + A type of address that causes the error. + """ addressType: AddressTypeEnum - """List of permissions which causes the error.""" + """ + List of permissions which causes the error. + """ permissions: [PermissionEnum!] - """List of permission group IDs which cause the error.""" + """ + List of permission group IDs which cause the error. + """ groups: [ID!] - """List of user IDs which causes the error.""" + """ + List of user IDs which causes the error. + """ users: [ID!] } input StaffCreateInput { - """Given name.""" + """ + Given name. + """ firstName: String - """Family name.""" + """ + Family name. + """ lastName: String - """The unique email address of the user.""" + """ + The unique email address of the user. + """ email: String - """User account is active.""" + """ + User account is active. + """ isActive: Boolean - """A note about the user.""" + """ + A note about the user. + """ note: String - """List of permission group IDs to which user should be assigned.""" + """ + List of permission group IDs to which user should be assigned. + """ addGroups: [ID!] """ @@ -23304,105 +29580,134 @@ input StaffCreateInput { } """ -Updates an existing staff user. Apps are not allowed to perform this mutation. +Updates an existing staff user. Apps are not allowed to perform this mutation. Requires one of the following permissions: MANAGE_STAFF. """ type StaffUpdate { - staffErrors: [StaffError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + staffErrors: [StaffError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [StaffError!]! user: User } input StaffUpdateInput { - """Given name.""" + """ + Given name. + """ firstName: String - """Family name.""" + """ + Family name. + """ lastName: String - """The unique email address of the user.""" + """ + The unique email address of the user. + """ email: String - """User account is active.""" + """ + User account is active. + """ isActive: Boolean - """A note about the user.""" + """ + A note about the user. + """ note: String - """List of permission group IDs to which user should be assigned.""" + """ + List of permission group IDs to which user should be assigned. + """ addGroups: [ID!] - """List of permission group IDs from which user should be unassigned.""" + """ + List of permission group IDs from which user should be unassigned. + """ removeGroups: [ID!] } """ -Deletes a staff user. Apps are not allowed to perform this mutation. +Deletes a staff user. Apps are not allowed to perform this mutation. Requires one of the following permissions: MANAGE_STAFF. """ type StaffDelete { - staffErrors: [StaffError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + staffErrors: [StaffError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [StaffError!]! user: User } """ -Deletes staff users. Apps are not allowed to perform this mutation. +Deletes staff users. Apps are not allowed to perform this mutation. Requires one of the following permissions: MANAGE_STAFF. """ type StaffBulkDelete { - """Returns how many objects were affected.""" + """ + Returns how many objects were affected. + """ count: Int! - staffErrors: [StaffError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + staffErrors: [StaffError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [StaffError!]! } """ -Create a user avatar. Only for staff members. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec +Create a user avatar. Only for staff members. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec Requires one of the following permissions: AUTHENTICATED_STAFF_USER. """ type UserAvatarUpdate { - """An updated user instance.""" + """ + An updated user instance. + """ user: User - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! } """ -Deletes a user avatar. Only for staff members. +Deletes a user avatar. Only for staff members. Requires one of the following permissions: AUTHENTICATED_STAFF_USER. """ type UserAvatarDelete { - """An updated user instance.""" + """ + An updated user instance. + """ user: User - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! } """ -Activate or deactivate users. +Activate or deactivate users. Requires one of the following permissions: MANAGE_USERS. """ type UserBulkSetActive { - """Returns how many objects were affected.""" + """ + Returns how many objects were affected. + """ count: Int! - accountErrors: [AccountError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [AccountError!]! } """ -Create new permission group. Apps are not allowed to perform this mutation. +Create new permission group. Apps are not allowed to perform this mutation. Requires one of the following permissions: MANAGE_STAFF. """ type PermissionGroupCreate { - permissionGroupErrors: [PermissionGroupError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + permissionGroupErrors: [PermissionGroupError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [PermissionGroupError!]! group: Group } @@ -23413,20 +29718,30 @@ type PermissionGroupError { """ field: String - """The error message.""" + """ + The error message. + """ message: String - """The error code.""" + """ + The error code. + """ code: PermissionGroupErrorCode! - """List of permissions which causes the error.""" + """ + List of permissions which causes the error. + """ permissions: [PermissionEnum!] - """List of user IDs which causes the error.""" + """ + List of user IDs which causes the error. + """ users: [ID!] } -"""An enumeration.""" +""" +An enumeration. +""" enum PermissionGroupErrorCode { ASSIGN_NON_STAFF_MEMBER DUPLICATED_INPUT_ITEM @@ -23439,51 +29754,69 @@ enum PermissionGroupErrorCode { } input PermissionGroupCreateInput { - """List of permission code names to assign to this group.""" + """ + List of permission code names to assign to this group. + """ addPermissions: [PermissionEnum!] - """List of users to assign to this group.""" + """ + List of users to assign to this group. + """ addUsers: [ID!] - """Group name.""" + """ + Group name. + """ name: String! } """ -Update permission group. Apps are not allowed to perform this mutation. +Update permission group. Apps are not allowed to perform this mutation. Requires one of the following permissions: MANAGE_STAFF. """ type PermissionGroupUpdate { - permissionGroupErrors: [PermissionGroupError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + permissionGroupErrors: [PermissionGroupError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [PermissionGroupError!]! group: Group } input PermissionGroupUpdateInput { - """List of permission code names to assign to this group.""" + """ + List of permission code names to assign to this group. + """ addPermissions: [PermissionEnum!] - """List of users to assign to this group.""" + """ + List of users to assign to this group. + """ addUsers: [ID!] - """Group name.""" + """ + Group name. + """ name: String - """List of permission code names to unassign from this group.""" + """ + List of permission code names to unassign from this group. + """ removePermissions: [PermissionEnum!] - """List of users to unassign from this group.""" + """ + List of users to unassign from this group. + """ removeUsers: [ID!] } """ -Delete permission group. Apps are not allowed to perform this mutation. +Delete permission group. Apps are not allowed to perform this mutation. Requires one of the following permissions: MANAGE_STAFF. """ type PermissionGroupDelete { - permissionGroupErrors: [PermissionGroupError!]! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + permissionGroupErrors: [PermissionGroupError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") errors: [PermissionGroupError!]! group: Group } @@ -23491,31 +29824,41 @@ type PermissionGroupDelete { type Subscription { """ Look up subscription event. - + Added in Saleor 3.2. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ event: Event } interface Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App } union IssuingPrincipal = App | User -"""An enumeration.""" +""" +An enumeration. +""" enum DistanceUnitsEnum { CM M @@ -23525,7 +29868,9 @@ enum DistanceUnitsEnum { INCH } -"""An enumeration.""" +""" +An enumeration. +""" enum AreaUnitsEnum { SQ_CM SQ_M @@ -23535,7 +29880,9 @@ enum AreaUnitsEnum { SQ_INCH } -"""An enumeration.""" +""" +An enumeration. +""" enum VolumeUnitsEnum { CUBIC_MILLIMETER CUBIC_CENTIMETER @@ -23560,19 +29907,29 @@ Added in Saleor 3.5. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type AddressCreated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The address the event relates to.""" + """ + The address the event relates to. + """ address: Address } @@ -23584,19 +29941,29 @@ Added in Saleor 3.5. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type AddressUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The address the event relates to.""" + """ + The address the event relates to. + """ address: Address } @@ -23608,19 +29975,29 @@ Added in Saleor 3.5. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type AddressDeleted implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The address the event relates to.""" + """ + The address the event relates to. + """ address: Address } @@ -23632,19 +30009,29 @@ Added in Saleor 3.4. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type AppInstalled implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The application the event relates to.""" + """ + The application the event relates to. + """ app: App } @@ -23656,19 +30043,29 @@ Added in Saleor 3.4. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type AppUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The application the event relates to.""" + """ + The application the event relates to. + """ app: App } @@ -23680,19 +30077,29 @@ Added in Saleor 3.4. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type AppDeleted implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The application the event relates to.""" + """ + The application the event relates to. + """ app: App } @@ -23704,19 +30111,29 @@ Added in Saleor 3.4. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type AppStatusChanged implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The application the event relates to.""" + """ + The application the event relates to. + """ app: App } @@ -23728,19 +30145,29 @@ Added in Saleor 3.5. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type AttributeCreated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The attribute the event relates to.""" + """ + The attribute the event relates to. + """ attribute: Attribute } @@ -23752,19 +30179,29 @@ Added in Saleor 3.5. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type AttributeUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The attribute the event relates to.""" + """ + The attribute the event relates to. + """ attribute: Attribute } @@ -23776,19 +30213,29 @@ Added in Saleor 3.5. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type AttributeDeleted implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The attribute the event relates to.""" + """ + The attribute the event relates to. + """ attribute: Attribute } @@ -23800,19 +30247,29 @@ Added in Saleor 3.5. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type AttributeValueCreated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The attribute value the event relates to.""" + """ + The attribute value the event relates to. + """ attributeValue: AttributeValue } @@ -23824,19 +30281,29 @@ Added in Saleor 3.5. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type AttributeValueUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The attribute value the event relates to.""" + """ + The attribute value the event relates to. + """ attributeValue: AttributeValue } @@ -23848,19 +30315,29 @@ Added in Saleor 3.5. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type AttributeValueDeleted implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The attribute value the event relates to.""" + """ + The attribute value the event relates to. + """ attributeValue: AttributeValue } @@ -23872,19 +30349,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type CategoryCreated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The category the event relates to.""" + """ + The category the event relates to. + """ category: Category } @@ -23896,19 +30383,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type CategoryUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The category the event relates to.""" + """ + The category the event relates to. + """ category: Category } @@ -23920,19 +30417,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type CategoryDeleted implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The category the event relates to.""" + """ + The category the event relates to. + """ category: Category } @@ -23944,19 +30451,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type ChannelCreated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The channel the event relates to.""" + """ + The channel the event relates to. + """ channel: Channel } @@ -23968,19 +30485,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type ChannelUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The channel the event relates to.""" + """ + The channel the event relates to. + """ channel: Channel } @@ -23992,19 +30519,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type ChannelDeleted implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The channel the event relates to.""" + """ + The channel the event relates to. + """ channel: Channel } @@ -24016,19 +30553,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type ChannelStatusChanged implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The channel the event relates to.""" + """ + The channel the event relates to. + """ channel: Channel } @@ -24040,19 +30587,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type GiftCardCreated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The gift card the event relates to.""" + """ + The gift card the event relates to. + """ giftCard: GiftCard } @@ -24064,19 +30621,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type GiftCardUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The gift card the event relates to.""" + """ + The gift card the event relates to. + """ giftCard: GiftCard } @@ -24088,19 +30655,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type GiftCardDeleted implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The gift card the event relates to.""" + """ + The gift card the event relates to. + """ giftCard: GiftCard } @@ -24112,19 +30689,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type GiftCardStatusChanged implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The gift card the event relates to.""" + """ + The gift card the event relates to. + """ giftCard: GiftCard } @@ -24136,19 +30723,29 @@ Added in Saleor 3.8. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type GiftCardMetadataUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The gift card the event relates to.""" + """ + The gift card the event relates to. + """ giftCard: GiftCard } @@ -24160,21 +30757,33 @@ Added in Saleor 3.4. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type MenuCreated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The menu the event relates to.""" + """ + The menu the event relates to. + """ menu( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): Menu } @@ -24187,21 +30796,33 @@ Added in Saleor 3.4. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type MenuUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The menu the event relates to.""" + """ + The menu the event relates to. + """ menu( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): Menu } @@ -24214,21 +30835,33 @@ Added in Saleor 3.4. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type MenuDeleted implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The menu the event relates to.""" + """ + The menu the event relates to. + """ menu( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): Menu } @@ -24241,21 +30874,33 @@ Added in Saleor 3.4. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type MenuItemCreated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The menu item the event relates to.""" + """ + The menu item the event relates to. + """ menuItem( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): MenuItem } @@ -24268,21 +30913,33 @@ Added in Saleor 3.4. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type MenuItemUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The menu item the event relates to.""" + """ + The menu item the event relates to. + """ menuItem( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): MenuItem } @@ -24295,21 +30952,33 @@ Added in Saleor 3.4. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type MenuItemDeleted implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The menu item the event relates to.""" + """ + The menu item the event relates to. + """ menuItem( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): MenuItem } @@ -24322,19 +30991,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type OrderCreated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The order the event relates to.""" + """ + The order the event relates to. + """ order: Order } @@ -24346,19 +31025,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type OrderUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The order the event relates to.""" + """ + The order the event relates to. + """ order: Order } @@ -24370,19 +31059,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type OrderConfirmed implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The order the event relates to.""" + """ + The order the event relates to. + """ order: Order } @@ -24394,19 +31093,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type OrderFullyPaid implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The order the event relates to.""" + """ + The order the event relates to. + """ order: Order } @@ -24418,19 +31127,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type OrderFulfilled implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The order the event relates to.""" + """ + The order the event relates to. + """ order: Order } @@ -24442,19 +31161,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type OrderCancelled implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The order the event relates to.""" + """ + The order the event relates to. + """ order: Order } @@ -24466,19 +31195,29 @@ Added in Saleor 3.8. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type OrderMetadataUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The order the event relates to.""" + """ + The order the event relates to. + """ order: Order } @@ -24490,19 +31229,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type DraftOrderCreated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The order the event relates to.""" + """ + The order the event relates to. + """ order: Order } @@ -24514,19 +31263,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type DraftOrderUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The order the event relates to.""" + """ + The order the event relates to. + """ order: Order } @@ -24538,19 +31297,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type DraftOrderDeleted implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The order the event relates to.""" + """ + The order the event relates to. + """ order: Order } @@ -24562,25 +31331,39 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type ProductCreated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The product the event relates to.""" + """ + The product the event relates to. + """ product( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): Product - """The category of the product.""" + """ + The category of the product. + """ category: Category } @@ -24592,25 +31375,39 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type ProductUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The product the event relates to.""" + """ + The product the event relates to. + """ product( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): Product - """The category of the product.""" + """ + The category of the product. + """ category: Category } @@ -24622,25 +31419,39 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type ProductDeleted implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The product the event relates to.""" + """ + The product the event relates to. + """ product( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): Product - """The category of the product.""" + """ + The category of the product. + """ category: Category } @@ -24652,25 +31463,39 @@ Added in Saleor 3.8. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type ProductMetadataUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The product the event relates to.""" + """ + The product the event relates to. + """ product( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): Product - """The category of the product.""" + """ + The category of the product. + """ category: Category } @@ -24682,21 +31507,33 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type ProductVariantCreated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The product variant the event relates to.""" + """ + The product variant the event relates to. + """ productVariant( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): ProductVariant } @@ -24709,21 +31546,33 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type ProductVariantUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The product variant the event relates to.""" + """ + The product variant the event relates to. + """ productVariant( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): ProductVariant } @@ -24736,25 +31585,39 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type ProductVariantOutOfStock implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The product variant the event relates to.""" + """ + The product variant the event relates to. + """ productVariant( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): ProductVariant - """Look up a warehouse.""" + """ + Look up a warehouse. + """ warehouse: Warehouse } @@ -24766,25 +31629,39 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type ProductVariantBackInStock implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The product variant the event relates to.""" + """ + The product variant the event relates to. + """ productVariant( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): ProductVariant - """Look up a warehouse.""" + """ + Look up a warehouse. + """ warehouse: Warehouse } @@ -24796,21 +31673,33 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type ProductVariantDeleted implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The product variant the event relates to.""" + """ + The product variant the event relates to. + """ productVariant( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): ProductVariant } @@ -24823,21 +31712,33 @@ Added in Saleor 3.8. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type ProductVariantMetadataUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The product variant the event relates to.""" + """ + The product variant the event relates to. + """ productVariant( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): ProductVariant } @@ -24850,21 +31751,33 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type SaleCreated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The sale the event relates to.""" + """ + The sale the event relates to. + """ sale( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): Sale } @@ -24877,21 +31790,33 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type SaleUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The sale the event relates to.""" + """ + The sale the event relates to. + """ sale( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): Sale } @@ -24904,21 +31829,33 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type SaleDeleted implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The sale the event relates to.""" + """ + The sale the event relates to. + """ sale( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): Sale } @@ -24931,27 +31868,37 @@ Added in Saleor 3.5. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type SaleToggle implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App """ The sale the event relates to. - + Added in Saleor 3.5. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ sale( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): Sale } @@ -24964,24 +31911,34 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type InvoiceRequested implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The invoice the event relates to.""" + """ + The invoice the event relates to. + """ invoice: Invoice """ Order related to the invoice. - + Added in Saleor 3.10. """ order: Order! @@ -24995,24 +31952,34 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type InvoiceDeleted implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The invoice the event relates to.""" + """ + The invoice the event relates to. + """ invoice: Invoice """ Order related to the invoice. - + Added in Saleor 3.10. """ order: Order @@ -25026,24 +31993,34 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type InvoiceSent implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The invoice the event relates to.""" + """ + The invoice the event relates to. + """ invoice: Invoice """ Order related to the invoice. - + Added in Saleor 3.10. """ order: Order @@ -25057,22 +32034,34 @@ Added in Saleor 3.4. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type FulfillmentCreated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The fulfillment the event relates to.""" + """ + The fulfillment the event relates to. + """ fulfillment: Fulfillment - """The order the fulfillment belongs to.""" + """ + The order the fulfillment belongs to. + """ order: Order } @@ -25084,22 +32073,34 @@ Added in Saleor 3.4. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type FulfillmentCanceled implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The fulfillment the event relates to.""" + """ + The fulfillment the event relates to. + """ fulfillment: Fulfillment - """The order the fulfillment belongs to.""" + """ + The order the fulfillment belongs to. + """ order: Order } @@ -25111,22 +32112,34 @@ Added in Saleor 3.7. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type FulfillmentApproved implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The fulfillment the event relates to.""" + """ + The fulfillment the event relates to. + """ fulfillment: Fulfillment - """The order the fulfillment belongs to.""" + """ + The order the fulfillment belongs to. + """ order: Order } @@ -25138,22 +32151,34 @@ Added in Saleor 3.8. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type FulfillmentMetadataUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The fulfillment the event relates to.""" + """ + The fulfillment the event relates to. + """ fulfillment: Fulfillment - """The order the fulfillment belongs to.""" + """ + The order the fulfillment belongs to. + """ order: Order } @@ -25165,19 +32190,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type CustomerCreated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The user the event relates to.""" + """ + The user the event relates to. + """ user: User } @@ -25189,19 +32224,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type CustomerUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The user the event relates to.""" + """ + The user the event relates to. + """ user: User } @@ -25213,19 +32258,29 @@ Added in Saleor 3.8. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type CustomerMetadataUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The user the event relates to.""" + """ + The user the event relates to. + """ user: User } @@ -25237,21 +32292,33 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type CollectionCreated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The collection the event relates to.""" + """ + The collection the event relates to. + """ collection( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): Collection } @@ -25264,21 +32331,33 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type CollectionUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The collection the event relates to.""" + """ + The collection the event relates to. + """ collection( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): Collection } @@ -25291,21 +32370,33 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type CollectionDeleted implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The collection the event relates to.""" + """ + The collection the event relates to. + """ collection( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): Collection } @@ -25318,21 +32409,33 @@ Added in Saleor 3.8. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type CollectionMetadataUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The collection the event relates to.""" + """ + The collection the event relates to. + """ collection( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): Collection } @@ -25345,19 +32448,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type CheckoutCreated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The checkout the event relates to.""" + """ + The checkout the event relates to. + """ checkout: Checkout } @@ -25369,19 +32482,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type CheckoutUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The checkout the event relates to.""" + """ + The checkout the event relates to. + """ checkout: Checkout } @@ -25393,19 +32516,29 @@ Added in Saleor 3.8. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type CheckoutMetadataUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The checkout the event relates to.""" + """ + The checkout the event relates to. + """ checkout: Checkout } @@ -25417,19 +32550,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type PageCreated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The page the event relates to.""" + """ + The page the event relates to. + """ page: Page } @@ -25441,19 +32584,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type PageUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The page the event relates to.""" + """ + The page the event relates to. + """ page: Page } @@ -25465,19 +32618,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type PageDeleted implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The page the event relates to.""" + """ + The page the event relates to. + """ page: Page } @@ -25489,19 +32652,29 @@ Added in Saleor 3.5. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type PageTypeCreated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The page type the event relates to.""" + """ + The page type the event relates to. + """ pageType: PageType } @@ -25513,19 +32686,29 @@ Added in Saleor 3.5. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type PageTypeUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The page type the event relates to.""" + """ + The page type the event relates to. + """ pageType: PageType } @@ -25537,19 +32720,29 @@ Added in Saleor 3.5. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type PageTypeDeleted implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The page type the event relates to.""" + """ + The page type the event relates to. + """ pageType: PageType } @@ -25561,19 +32754,29 @@ Added in Saleor 3.6. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type PermissionGroupCreated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The permission group the event relates to.""" + """ + The permission group the event relates to. + """ permissionGroup: Group } @@ -25585,19 +32788,29 @@ Added in Saleor 3.6. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type PermissionGroupUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The permission group the event relates to.""" + """ + The permission group the event relates to. + """ permissionGroup: Group } @@ -25609,19 +32822,29 @@ Added in Saleor 3.6. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type PermissionGroupDeleted implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The permission group the event relates to.""" + """ + The permission group the event relates to. + """ permissionGroup: Group } @@ -25633,27 +32856,43 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type ShippingPriceCreated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The shipping method the event relates to.""" + """ + The shipping method the event relates to. + """ shippingMethod( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): ShippingMethodType - """The shipping zone the shipping method belongs to.""" + """ + The shipping zone the shipping method belongs to. + """ shippingZone( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): ShippingZone } @@ -25666,27 +32905,43 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type ShippingPriceUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The shipping method the event relates to.""" + """ + The shipping method the event relates to. + """ shippingMethod( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): ShippingMethodType - """The shipping zone the shipping method belongs to.""" + """ + The shipping zone the shipping method belongs to. + """ shippingZone( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): ShippingZone } @@ -25699,27 +32954,43 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type ShippingPriceDeleted implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The shipping method the event relates to.""" + """ + The shipping method the event relates to. + """ shippingMethod( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): ShippingMethodType - """The shipping zone the shipping method belongs to.""" + """ + The shipping zone the shipping method belongs to. + """ shippingZone( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): ShippingZone } @@ -25732,21 +33003,33 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type ShippingZoneCreated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The shipping zone the event relates to.""" + """ + The shipping zone the event relates to. + """ shippingZone( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): ShippingZone } @@ -25759,21 +33042,33 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type ShippingZoneUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The shipping zone the event relates to.""" + """ + The shipping zone the event relates to. + """ shippingZone( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): ShippingZone } @@ -25786,21 +33081,33 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type ShippingZoneDeleted implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The shipping zone the event relates to.""" + """ + The shipping zone the event relates to. + """ shippingZone( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): ShippingZone } @@ -25813,21 +33120,33 @@ Added in Saleor 3.8. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type ShippingZoneMetadataUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The shipping zone the event relates to.""" + """ + The shipping zone the event relates to. + """ shippingZone( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): ShippingZone } @@ -25840,19 +33159,29 @@ Added in Saleor 3.5. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type StaffCreated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The user the event relates to.""" + """ + The user the event relates to. + """ user: User } @@ -25864,19 +33193,29 @@ Added in Saleor 3.5. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type StaffUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The user the event relates to.""" + """ + The user the event relates to. + """ user: User } @@ -25888,19 +33227,29 @@ Added in Saleor 3.5. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type StaffDeleted implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The user the event relates to.""" + """ + The user the event relates to. + """ user: User } @@ -25912,42 +33261,54 @@ Added in Saleor 3.4. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type TransactionActionRequest implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App """ Look up a transaction. - + Added in Saleor 3.4. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ transaction: TransactionItem """ Requested action data. - + Added in Saleor 3.4. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ action: TransactionAction! } type TransactionAction { - """Determines the action type.""" + """ + Determines the action type. + """ actionType: TransactionActionEnum! - """Transaction request amount. Null when action type is VOID.""" + """ + Transaction request amount. Null when action type is VOID. + """ amount: PositiveDecimal } @@ -25959,21 +33320,29 @@ Added in Saleor 3.8. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type TransactionItemMetadataUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App """ Look up a transaction. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ transaction: TransactionItem @@ -25987,23 +33356,44 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type TranslationCreated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The translation the event relates to.""" + """ + The translation the event relates to. + """ translation: TranslationTypes } -union TranslationTypes = ProductTranslation | CollectionTranslation | CategoryTranslation | AttributeTranslation | AttributeValueTranslation | ProductVariantTranslation | PageTranslation | ShippingMethodTranslation | SaleTranslation | VoucherTranslation | MenuItemTranslation +union TranslationTypes = + ProductTranslation + | CollectionTranslation + | CategoryTranslation + | AttributeTranslation + | AttributeValueTranslation + | ProductVariantTranslation + | PageTranslation + | ShippingMethodTranslation + | SaleTranslation + | VoucherTranslation + | MenuItemTranslation """ Event sent when translation is updated. @@ -26013,19 +33403,29 @@ Added in Saleor 3.2. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type TranslationUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The translation the event relates to.""" + """ + The translation the event relates to. + """ translation: TranslationTypes } @@ -26037,21 +33437,33 @@ Added in Saleor 3.4. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type VoucherCreated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The voucher the event relates to.""" + """ + The voucher the event relates to. + """ voucher( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): Voucher } @@ -26064,21 +33476,33 @@ Added in Saleor 3.4. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type VoucherUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The voucher the event relates to.""" + """ + The voucher the event relates to. + """ voucher( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): Voucher } @@ -26091,21 +33515,33 @@ Added in Saleor 3.4. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type VoucherDeleted implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The voucher the event relates to.""" + """ + The voucher the event relates to. + """ voucher( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): Voucher } @@ -26118,21 +33554,33 @@ Added in Saleor 3.8. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type VoucherMetadataUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The voucher the event relates to.""" + """ + The voucher the event relates to. + """ voucher( - """Slug of a channel for which the data should be returned.""" + """ + Slug of a channel for which the data should be returned. + """ channel: String ): Voucher } @@ -26145,19 +33593,29 @@ Added in Saleor 3.4. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type WarehouseCreated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The warehouse the event relates to.""" + """ + The warehouse the event relates to. + """ warehouse: Warehouse } @@ -26169,19 +33627,29 @@ Added in Saleor 3.4. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type WarehouseUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The warehouse the event relates to.""" + """ + The warehouse the event relates to. + """ warehouse: Warehouse } @@ -26193,19 +33661,29 @@ Added in Saleor 3.4. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type WarehouseDeleted implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The warehouse the event relates to.""" + """ + The warehouse the event relates to. + """ warehouse: Warehouse } @@ -26217,19 +33695,29 @@ Added in Saleor 3.8. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type WarehouseMetadataUpdated implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The warehouse the event relates to.""" + """ + The warehouse the event relates to. + """ warehouse: Warehouse } @@ -26241,19 +33729,29 @@ Added in Saleor 3.6. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type PaymentAuthorize implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """Look up a payment.""" + """ + Look up a payment. + """ payment: Payment } @@ -26265,19 +33763,29 @@ Added in Saleor 3.6. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type PaymentCaptureEvent implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """Look up a payment.""" + """ + Look up a payment. + """ payment: Payment } @@ -26289,19 +33797,29 @@ Added in Saleor 3.6. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type PaymentRefundEvent implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """Look up a payment.""" + """ + Look up a payment. + """ payment: Payment } @@ -26313,19 +33831,29 @@ Added in Saleor 3.6. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type PaymentVoidEvent implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """Look up a payment.""" + """ + Look up a payment. + """ payment: Payment } @@ -26337,19 +33865,29 @@ Added in Saleor 3.6. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type PaymentConfirmEvent implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """Look up a payment.""" + """ + Look up a payment. + """ payment: Payment } @@ -26361,19 +33899,29 @@ Added in Saleor 3.6. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type PaymentProcessEvent implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """Look up a payment.""" + """ + Look up a payment. + """ payment: Payment } @@ -26385,19 +33933,29 @@ Added in Saleor 3.6. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type PaymentListGateways implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The checkout the event relates to.""" + """ + The checkout the event relates to. + """ checkout: Checkout } @@ -26409,26 +33967,36 @@ Added in Saleor 3.6. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type OrderFilterShippingMethods implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The order the event relates to.""" + """ + The order the event relates to. + """ order: Order """ Shipping methods that can be used with this checkout. - + Added in Saleor 3.6. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ shippingMethods: [ShippingMethod!] @@ -26442,26 +34010,36 @@ Added in Saleor 3.6. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type CheckoutFilterShippingMethods implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The checkout the event relates to.""" + """ + The checkout the event relates to. + """ checkout: Checkout """ Shipping methods that can be used with this checkout. - + Added in Saleor 3.6. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ shippingMethods: [ShippingMethod!] @@ -26475,26 +34053,36 @@ Added in Saleor 3.6. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type ShippingListMethodsForCheckout implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App - """The checkout the event relates to.""" + """ + The checkout the event relates to. + """ checkout: Checkout """ Shipping methods that can be used with this checkout. - + Added in Saleor 3.6. - + Note: this API is currently in Feature Preview and can be subject to changes at later point. """ shippingMethods: [ShippingMethod!] @@ -26508,89 +34096,152 @@ Added in Saleor 3.7. Note: this API is currently in Feature Preview and can be subject to changes at later point. """ type CalculateTaxes implements Event { - """Time of the event.""" + """ + Time of the event. + """ issuedAt: DateTime - """Saleor version that triggered the event.""" + """ + Saleor version that triggered the event. + """ version: String - """The user or application that triggered the event.""" + """ + The user or application that triggered the event. + """ issuingPrincipal: IssuingPrincipal - """The application receiving the webhook.""" + """ + The application receiving the webhook. + """ recipient: App taxBase: TaxableObject! } -"""Taxable object.""" +""" +Taxable object. +""" type TaxableObject { - """The source object related to this tax object.""" + """ + The source object related to this tax object. + """ sourceObject: TaxSourceObject! - """Determines if prices contain entered tax..""" + """ + Determines if prices contain entered tax.. + """ pricesEnteredWithTax: Boolean! - """The currency of the object.""" + """ + The currency of the object. + """ currency: String! - """The price of shipping method.""" + """ + The price of shipping method. + """ shippingPrice: Money! - """The address data.""" + """ + The address data. + """ address: Address - """List of discounts.""" + """ + List of discounts. + """ discounts: [TaxableObjectDiscount!]! - """List of lines assigned to the object.""" + """ + List of lines assigned to the object. + """ lines: [TaxableObjectLine!]! channel: Channel! } -"""Taxable object discount.""" +""" +Taxable object discount. +""" type TaxableObjectDiscount { - """The name of the discount.""" + """ + The name of the discount. + """ name: String - """The amount of the discount.""" + """ + The amount of the discount. + """ amount: Money! } type TaxableObjectLine { - """The source line related to this tax line.""" + """ + The source line related to this tax line. + """ sourceLine: TaxSourceLine! - """Number of items.""" + """ + Number of items. + """ quantity: Int! - """Determines if taxes are being charged for the product.""" + """ + Determines if taxes are being charged for the product. + """ chargeTaxes: Boolean! - """The product name.""" + """ + The product name. + """ productName: String! - """The variant name.""" + """ + The variant name. + """ variantName: String! - """The product sku.""" + """ + The product sku. + """ productSku: String - """Price of the single item in the order line.""" + """ + Price of the single item in the order line. + """ unitPrice: Money! - """Price of the order line.""" + """ + Price of the order line. + """ totalPrice: Money! } union TaxSourceLine = CheckoutLine | OrderLine -"""_Any value scalar as defined by Federation spec.""" +""" +_Any value scalar as defined by Federation spec. +""" scalar _Any -"""_Entity union as defined by Federation spec.""" -union _Entity = App | Address | User | Group | ProductVariant | Product | ProductType | ProductMedia | Category | Collection | PageType +""" +_Entity union as defined by Federation spec. +""" +union _Entity = + App + | Address + | User + | Group + | ProductVariant + | Product + | ProductType + | ProductMedia + | Category + | Collection + | PageType -"""_Service manifest as defined by Federation spec.""" +""" +_Service manifest as defined by Federation spec. +""" type _Service { sdl: String } diff --git a/apps/search/.eslintrc b/apps/search/.eslintrc index 0784400..5470783 100644 --- a/apps/search/.eslintrc +++ b/apps/search/.eslintrc @@ -1,3 +1,4 @@ { + "root": true, "extends": ["saleor"] } diff --git a/apps/slack/.env.example b/apps/slack/.env.example new file mode 100644 index 0000000..fd1a7cc --- /dev/null +++ b/apps/slack/.env.example @@ -0,0 +1,2 @@ +# Encryption key used by the EncryptedSettingsManager. Required by the production builds +SECRET_KEY= diff --git a/apps/slack/.eslintrc b/apps/slack/.eslintrc new file mode 100644 index 0000000..5470783 --- /dev/null +++ b/apps/slack/.eslintrc @@ -0,0 +1,4 @@ +{ + "root": true, + "extends": ["saleor"] +} diff --git a/apps/slack/.graphqlrc.yml b/apps/slack/.graphqlrc.yml new file mode 100644 index 0000000..ee7c7af --- /dev/null +++ b/apps/slack/.graphqlrc.yml @@ -0,0 +1,20 @@ +schema: graphql/schema.graphql +documents: [graphql/**/*.graphql, src/**/*.ts, src/**/*.tsx] +extensions: + codegen: + overwrite: true + generates: + generated/graphql.ts: + config: + dedupeFragments: true + plugins: + - typescript + - typescript-operations + - urql-introspection + - typescript-urql: + documentVariablePrefix: "Untyped" + fragmentVariablePrefix: "Untyped" + - typed-document-node + generated/schema.graphql: + plugins: + - schema-ast diff --git a/apps/slack/README.md b/apps/slack/README.md new file mode 100644 index 0000000..1f56119 --- /dev/null +++ b/apps/slack/README.md @@ -0,0 +1,92 @@ +# Saleor App Slack + +Saleor application to send Slack messages based on `order_created` events. + +![](docs/images/readme.jpg) + +### What's included? + +- Connection between Saleor and Slack using webhook +- Example `order_created` webhook that triggers Slack bot to send message + +### The stack + +Slack app is based on App Template - you can check it [here](https://github.com/saleor/saleor-app-template) + +## How to use this project + +### Select your APL + +If you want to develop single tenant application - use already configured `FileAPL` for local development. + +If you need to support multiple tenants application or you want to deploy your application - use `UpstashAPL`. Follow [How to configure Upstash](docs/upstash.md) for more info. + +To read more about storing auth data, read the [APL documentation](https://github.com/saleor/saleor-app-sdk/blob/main/docs/apl.md) + +### Saleor CLI for the win 🚀 + +[Saleor CLI](https://github.com/saleor/saleor-cli) is designed to save you from the repetitive chores around Saleor development, including creating Apps. It will take the burden of spawning new apps locally, connecting them with Saleor environments, and establishing a tunnel for local development in seconds. + +[Full Saleor CLI reference](https://docs.saleor.io/docs/3.x/developer/cli) + +If you don't have (free developer) Saleor Cloud account create one with the following command: + +``` +saleor register +``` + +Now you're ready to run this application in development mode: + +``` +pnpm run dev +``` + +Having your app running, the final thing you want to establish is a tunnel with your Saleor environment. Go to your app's directory first and run: + +``` +saleor app tunnel +``` + +Your local application should be available now to the outside world (Saleor instance) for accepting all the events via webhooks. + +A quick note: the next time you come back to your project, it is enough to launch your app in a standard way (and then launch your tunnel as described earlier): + +``` +pnpm dev +``` + +### Local development without CLI + +Add URL of your Saleor instance to the `.env` file: + +``` +NEXT_PUBLIC_SALEOR_HOST_URL=https://your-saleor-instance.com +``` + +Install dependencies `pnpm install` + +Start local server `pnpm run dev` + +Follow the guide [how install your app](https://docs.saleor.io/docs/3.x/developer/extending/apps/installing-apps#installation-using-graphql-api) and use tunneling tools like [localtunnel](https://github.com/localtunnel/localtunnel) or [ngrok](https://ngrok.com/) in order to expose your local server. + +If you use [saleor-dashboard](https://github.com/saleor/saleor-dashboard) and your local server is exposed, you can install your app by following this link: + +``` +[YOUR_SALEOR_DASHBOARD_URL]/apps/install?manifestUrl=[YOUR_APPS_MANIFEST_URL] +``` + +### Connecting your application to Slack + +Read how to connect the app with the Slack [here](./docs/setup-slack-app.md) + +### Generated schema and typings + +Commands `build` and `dev` would generate schema and typed functions using Saleor's GraphQL endpoint. Commit `generated` folder to your repo as they are necessary for queries and keeping track of the schema changes. + +[Learn more](https://www.graphql-code-generator.com/) about GraphQL code generation. + +### Learn more about Saleor Apps + +[Apps guide](https://docs.saleor.io/docs/3.x/developer/extending/apps/key-concepts) + +[Configuring apps in dashboard](https://docs.saleor.io/docs/3.x/dashboard/apps) diff --git a/apps/slack/docs/images/dashboard-config.jpg b/apps/slack/docs/images/dashboard-config.jpg new file mode 100644 index 0000000000000000000000000000000000000000..daa574b82b5ca47e81ebfebc0afdad9c8b15931d GIT binary patch literal 162913 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 literal 0 HcmV?d00001 diff --git a/apps/slack/docs/images/readme.jpg b/apps/slack/docs/images/readme.jpg new file mode 100644 index 0000000000000000000000000000000000000000..59ac100ed73a9b21ee1bfb2f8a0a22d2d63ba2a8 GIT binary patch literal 171765 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�!OwNEriRZtM= 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 literal 0 HcmV?d00001 diff --git a/apps/slack/docs/images/slack-webhook-copy.jpg b/apps/slack/docs/images/slack-webhook-copy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f69bdf9128417ef5dddb6da0272804553177aba1 GIT binary patch literal 172965 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%0Dp= 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 Y;c_fkjs?rH;H$&}3=g20ii`B$0fVbyv;Y7A literal 0 HcmV?d00001 diff --git a/apps/slack/docs/images/slack-workspace-button.jpg b/apps/slack/docs/images/slack-workspace-button.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1d0fd9b379928cf15704305ca8cf1bb3f5afcfce GIT binary patch literal 122604 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 literal 0 HcmV?d00001 diff --git a/apps/slack/docs/images/slack-workspace.jpg b/apps/slack/docs/images/slack-workspace.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1e145117b89421c09adbe773e1e2a7b92aae48bc GIT binary patch literal 120493 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

T#ec- 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 F{XZY`RQ3P> literal 0 HcmV?d00001 diff --git a/apps/slack/docs/images/upstash.jpg b/apps/slack/docs/images/upstash.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2d1d8ecc1d619d8bae6bd2b13a558c3cd845c0de GIT binary patch literal 122621 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 +UPSTASH_TOKEN= +``` diff --git a/apps/slack/env.d.ts b/apps/slack/env.d.ts new file mode 100644 index 0000000..9ecaf06 --- /dev/null +++ b/apps/slack/env.d.ts @@ -0,0 +1,5 @@ +namespace NodeJS { + interface ProcessEnv { + APL: "file" | "vercel" | "upstash" | "saleor-cloud"; + } +} diff --git a/apps/slack/generated/graphql.ts b/apps/slack/generated/graphql.ts new file mode 100644 index 0000000..683330a --- /dev/null +++ b/apps/slack/generated/graphql.ts @@ -0,0 +1,72884 @@ +import gql from "graphql-tag"; +import * as Urql from "urql"; +import { TypedDocumentNode as DocumentNode } from "@graphql-typed-document-node/core"; +export type Maybe = T | null; +export type InputMaybe = Maybe; +export type Exact = { [K in keyof T]: T[K] }; +export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; +export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; +export type Omit = Pick>; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: string; + String: string; + Boolean: boolean; + Int: number; + Float: number; + /** + * The `Date` scalar type represents a Date + * value as specified by + * [iso8601](https://en.wikipedia.org/wiki/ISO_8601). + */ + Date: any; + /** + * The `DateTime` scalar type represents a DateTime + * value as specified by + * [iso8601](https://en.wikipedia.org/wiki/ISO_8601). + */ + DateTime: any; + /** + * The `GenericScalar` scalar type represents a generic + * GraphQL scalar value that could be: + * String, Boolean, Int, Float, List or Object. + */ + GenericScalar: any; + JSONString: any; + /** + * Metadata is a map of key-value pairs, both keys and values are `String`. + * + * Example: + * ``` + * { + * "key1": "value1", + * "key2": "value2" + * } + * ``` + */ + Metadata: any; + /** + * Positive Decimal scalar implementation. + * + * Should be used in places where value must be positive. + */ + PositiveDecimal: any; + UUID: any; + /** Variables of this type must be set to null in mutations. They will be replaced with a filename from a following multipart part containing a binary file. See: https://github.com/jaydenseric/graphql-multipart-request-spec. */ + Upload: any; + WeightScalar: any; + /** _Any value scalar as defined by Federation spec. */ + _Any: any; +}; + +/** + * Create a new address for the customer. + * + * Requires one of the following permissions: AUTHENTICATED_USER. + */ +export type AccountAddressCreate = { + __typename?: "AccountAddressCreate"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + address?: Maybe

; + errors: Array; + /** A user instance for which the address was created. */ + user?: Maybe; +}; + +/** Delete an address of the logged-in user. Requires one of the following permissions: MANAGE_USERS, IS_OWNER. */ +export type AccountAddressDelete = { + __typename?: "AccountAddressDelete"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + address?: Maybe
; + errors: Array; + /** A user instance for which the address was deleted. */ + user?: Maybe; +}; + +/** Updates an address of the logged-in user. Requires one of the following permissions: MANAGE_USERS, IS_OWNER. */ +export type AccountAddressUpdate = { + __typename?: "AccountAddressUpdate"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + address?: Maybe
; + errors: Array; + /** A user object for which the address was edited. */ + user?: Maybe; +}; + +/** + * Remove user account. + * + * Requires one of the following permissions: AUTHENTICATED_USER. + */ +export type AccountDelete = { + __typename?: "AccountDelete"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + errors: Array; + user?: Maybe; +}; + +export type AccountError = { + __typename?: "AccountError"; + /** A type of address that causes the error. */ + addressType?: Maybe; + /** The error code. */ + code: AccountErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; +}; + +/** An enumeration. */ +export enum AccountErrorCode { + AccountNotConfirmed = "ACCOUNT_NOT_CONFIRMED", + ActivateOwnAccount = "ACTIVATE_OWN_ACCOUNT", + ActivateSuperuserAccount = "ACTIVATE_SUPERUSER_ACCOUNT", + ChannelInactive = "CHANNEL_INACTIVE", + DeactivateOwnAccount = "DEACTIVATE_OWN_ACCOUNT", + DeactivateSuperuserAccount = "DEACTIVATE_SUPERUSER_ACCOUNT", + DeleteNonStaffUser = "DELETE_NON_STAFF_USER", + DeleteOwnAccount = "DELETE_OWN_ACCOUNT", + DeleteStaffAccount = "DELETE_STAFF_ACCOUNT", + DeleteSuperuserAccount = "DELETE_SUPERUSER_ACCOUNT", + DuplicatedInputItem = "DUPLICATED_INPUT_ITEM", + GraphqlError = "GRAPHQL_ERROR", + Inactive = "INACTIVE", + Invalid = "INVALID", + InvalidCredentials = "INVALID_CREDENTIALS", + InvalidPassword = "INVALID_PASSWORD", + JwtDecodeError = "JWT_DECODE_ERROR", + JwtInvalidCsrfToken = "JWT_INVALID_CSRF_TOKEN", + JwtInvalidToken = "JWT_INVALID_TOKEN", + JwtMissingToken = "JWT_MISSING_TOKEN", + JwtSignatureExpired = "JWT_SIGNATURE_EXPIRED", + LeftNotManageablePermission = "LEFT_NOT_MANAGEABLE_PERMISSION", + MissingChannelSlug = "MISSING_CHANNEL_SLUG", + NotFound = "NOT_FOUND", + OutOfScopeGroup = "OUT_OF_SCOPE_GROUP", + OutOfScopePermission = "OUT_OF_SCOPE_PERMISSION", + OutOfScopeUser = "OUT_OF_SCOPE_USER", + PasswordEntirelyNumeric = "PASSWORD_ENTIRELY_NUMERIC", + PasswordTooCommon = "PASSWORD_TOO_COMMON", + PasswordTooShort = "PASSWORD_TOO_SHORT", + PasswordTooSimilar = "PASSWORD_TOO_SIMILAR", + Required = "REQUIRED", + Unique = "UNIQUE", +} + +export type AccountInput = { + /** Billing address of the customer. */ + defaultBillingAddress?: InputMaybe; + /** Shipping address of the customer. */ + defaultShippingAddress?: InputMaybe; + /** Given name. */ + firstName?: InputMaybe; + /** User language code. */ + languageCode?: InputMaybe; + /** Family name. */ + lastName?: InputMaybe; +}; + +/** Register a new user. */ +export type AccountRegister = { + __typename?: "AccountRegister"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + errors: Array; + /** Informs whether users need to confirm their email address. */ + requiresConfirmation?: Maybe; + user?: Maybe; +}; + +export type AccountRegisterInput = { + /** Slug of a channel which will be used to notify users. Optional when only one channel exists. */ + channel?: InputMaybe; + /** The email address of the user. */ + email: Scalars["String"]; + /** Given name. */ + firstName?: InputMaybe; + /** User language code. */ + languageCode?: InputMaybe; + /** Family name. */ + lastName?: InputMaybe; + /** User public metadata. */ + metadata?: InputMaybe>; + /** Password. */ + password: Scalars["String"]; + /** Base of frontend URL that will be needed to create confirmation URL. */ + redirectUrl?: InputMaybe; +}; + +/** + * Sends an email with the account removal link for the logged-in user. + * + * Requires one of the following permissions: AUTHENTICATED_USER. + */ +export type AccountRequestDeletion = { + __typename?: "AccountRequestDeletion"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + errors: Array; +}; + +/** + * Sets a default address for the authenticated user. + * + * Requires one of the following permissions: AUTHENTICATED_USER. + */ +export type AccountSetDefaultAddress = { + __typename?: "AccountSetDefaultAddress"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + errors: Array; + /** An updated user instance. */ + user?: Maybe; +}; + +/** + * Updates the account of the logged-in user. + * + * Requires one of the following permissions: AUTHENTICATED_USER. + */ +export type AccountUpdate = { + __typename?: "AccountUpdate"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + errors: Array; + user?: Maybe; +}; + +/** Represents user address data. */ +export type Address = Node & { + __typename?: "Address"; + city: Scalars["String"]; + cityArea: Scalars["String"]; + companyName: Scalars["String"]; + /** Shop's default country. */ + country: CountryDisplay; + countryArea: Scalars["String"]; + firstName: Scalars["String"]; + id: Scalars["ID"]; + /** Address is user's default billing address. */ + isDefaultBillingAddress?: Maybe; + /** Address is user's default shipping address. */ + isDefaultShippingAddress?: Maybe; + lastName: Scalars["String"]; + phone?: Maybe; + postalCode: Scalars["String"]; + streetAddress1: Scalars["String"]; + streetAddress2: Scalars["String"]; +}; + +/** + * Creates user address. + * + * Requires one of the following permissions: MANAGE_USERS. + */ +export type AddressCreate = { + __typename?: "AddressCreate"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + address?: Maybe
; + errors: Array; + /** A user instance for which the address was created. */ + user?: Maybe; +}; + +/** + * Deletes an address. + * + * Requires one of the following permissions: MANAGE_USERS. + */ +export type AddressDelete = { + __typename?: "AddressDelete"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + address?: Maybe
; + errors: Array; + /** A user instance for which the address was deleted. */ + user?: Maybe; +}; + +export type AddressInput = { + /** City. */ + city?: InputMaybe; + /** District. */ + cityArea?: InputMaybe; + /** Company or organization. */ + companyName?: InputMaybe; + /** Country. */ + country?: InputMaybe; + /** State or province. */ + countryArea?: InputMaybe; + /** Given name. */ + firstName?: InputMaybe; + /** Family name. */ + lastName?: InputMaybe; + /** Phone number. */ + phone?: InputMaybe; + /** Postal code. */ + postalCode?: InputMaybe; + /** Address. */ + streetAddress1?: InputMaybe; + /** Address. */ + streetAddress2?: InputMaybe; +}; + +/** + * Sets a default address for the given user. + * + * Requires one of the following permissions: MANAGE_USERS. + */ +export type AddressSetDefault = { + __typename?: "AddressSetDefault"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + errors: Array; + /** An updated user instance. */ + user?: Maybe; +}; + +/** An enumeration. */ +export enum AddressTypeEnum { + Billing = "BILLING", + Shipping = "SHIPPING", +} + +/** + * Updates an address. + * + * Requires one of the following permissions: MANAGE_USERS. + */ +export type AddressUpdate = { + __typename?: "AddressUpdate"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + address?: Maybe
; + errors: Array; + /** A user object for which the address was edited. */ + user?: Maybe; +}; + +export type AddressValidationData = { + __typename?: "AddressValidationData"; + addressFormat: Scalars["String"]; + addressLatinFormat: Scalars["String"]; + allowedFields: Array; + cityAreaChoices: Array; + cityAreaType: Scalars["String"]; + cityChoices: Array; + cityType: Scalars["String"]; + countryAreaChoices: Array; + countryAreaType: Scalars["String"]; + countryCode: Scalars["String"]; + countryName: Scalars["String"]; + postalCodeExamples: Array; + postalCodeMatchers: Array; + postalCodePrefix: Scalars["String"]; + postalCodeType: Scalars["String"]; + requiredFields: Array; + upperFields: Array; +}; + +/** Represents allocation. */ +export type Allocation = Node & { + __typename?: "Allocation"; + id: Scalars["ID"]; + /** + * Quantity allocated for orders. + * + * Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. + */ + quantity: Scalars["Int"]; + /** + * The warehouse were items were allocated. + * + * Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. + */ + warehouse: Warehouse; +}; + +/** Represents app data. */ +export type App = Node & + ObjectWithMetadata & { + __typename?: "App"; + /** Description of this app. */ + aboutApp?: Maybe; + /** JWT token used to authenticate by thridparty app. */ + accessToken?: Maybe; + /** Url to iframe with the app. */ + appUrl?: Maybe; + /** Url to iframe with the configuration for the app. */ + configurationUrl?: Maybe; + /** The date and time when the app was created. */ + created?: Maybe; + /** Description of the data privacy defined for this app. */ + dataPrivacy?: Maybe; + /** Url to details about the privacy policy on the app owner page. */ + dataPrivacyUrl?: Maybe; + /** + * App's dashboard extensions. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + extensions: Array; + /** Homepage of the app. */ + homepageUrl?: Maybe; + id: Scalars["ID"]; + /** Determine if app will be set active or not. */ + isActive?: Maybe; + /** List of public metadata items. Can be accessed without permissions. */ + metadata: Array; + /** + * A single key from public metadata. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafield?: Maybe; + /** + * Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafields?: Maybe; + /** Name of the app. */ + name?: Maybe; + /** List of the app's permissions. */ + permissions?: Maybe>; + /** List of private metadata items. Requires staff permissions to access. */ + privateMetadata: Array; + /** + * A single key from private metadata. Requires staff permissions to access. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafield?: Maybe; + /** + * Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafields?: Maybe; + /** Support page for the app. */ + supportUrl?: Maybe; + /** + * Last 4 characters of the tokens. + * + * Requires one of the following permissions: MANAGE_APPS, OWNER. + */ + tokens?: Maybe>; + /** Type of the app. */ + type?: Maybe; + /** Version number of the app. */ + version?: Maybe; + /** + * List of webhooks assigned to this app. + * + * Requires one of the following permissions: MANAGE_APPS, OWNER. + */ + webhooks?: Maybe>; + }; + +/** Represents app data. */ +export type AppMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents app data. */ +export type AppMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Represents app data. */ +export type AppPrivateMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents app data. */ +export type AppPrivateMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** + * Activate the app. + * + * Requires one of the following permissions: MANAGE_APPS. + */ +export type AppActivate = { + __typename?: "AppActivate"; + app?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + appErrors: Array; + errors: Array; +}; + +export type AppCountableConnection = { + __typename?: "AppCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type AppCountableEdge = { + __typename?: "AppCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: App; +}; + +/** Creates a new app. Requires the following permissions: AUTHENTICATED_STAFF_USER and MANAGE_APPS. */ +export type AppCreate = { + __typename?: "AppCreate"; + app?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + appErrors: Array; + /** The newly created authentication token. */ + authToken?: Maybe; + errors: Array; +}; + +/** + * Deactivate the app. + * + * Requires one of the following permissions: MANAGE_APPS. + */ +export type AppDeactivate = { + __typename?: "AppDeactivate"; + app?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + appErrors: Array; + errors: Array; +}; + +/** + * Deletes an app. + * + * Requires one of the following permissions: MANAGE_APPS. + */ +export type AppDelete = { + __typename?: "AppDelete"; + app?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + appErrors: Array; + errors: Array; +}; + +/** + * Delete failed installation. + * + * Requires one of the following permissions: MANAGE_APPS. + */ +export type AppDeleteFailedInstallation = { + __typename?: "AppDeleteFailedInstallation"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + appErrors: Array; + appInstallation?: Maybe; + errors: Array; +}; + +export type AppDeleted = Event & { + __typename?: "AppDeleted"; + /** + * The application the event relates to. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + app?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type AppError = { + __typename?: "AppError"; + /** The error code. */ + code: AppErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; + /** List of permissions which causes the error. */ + permissions?: Maybe>; +}; + +/** An enumeration. */ +export enum AppErrorCode { + Forbidden = "FORBIDDEN", + GraphqlError = "GRAPHQL_ERROR", + Invalid = "INVALID", + InvalidManifestFormat = "INVALID_MANIFEST_FORMAT", + InvalidPermission = "INVALID_PERMISSION", + InvalidStatus = "INVALID_STATUS", + InvalidUrlFormat = "INVALID_URL_FORMAT", + ManifestUrlCantConnect = "MANIFEST_URL_CANT_CONNECT", + NotFound = "NOT_FOUND", + OutOfScopeApp = "OUT_OF_SCOPE_APP", + OutOfScopePermission = "OUT_OF_SCOPE_PERMISSION", + Required = "REQUIRED", + Unique = "UNIQUE", +} + +/** Represents app data. */ +export type AppExtension = Node & { + __typename?: "AppExtension"; + /** JWT token used to authenticate by thridparty app extension. */ + accessToken?: Maybe; + app: App; + id: Scalars["ID"]; + /** Label of the extension to show in the dashboard. */ + label: Scalars["String"]; + /** Place where given extension will be mounted. */ + mount: AppExtensionMountEnum; + /** List of the app extension's permissions. */ + permissions: Array; + /** Type of way how app extension will be opened. */ + target: AppExtensionTargetEnum; + /** URL of a view where extension's iframe is placed. */ + url: Scalars["String"]; +}; + +export type AppExtensionCountableConnection = { + __typename?: "AppExtensionCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type AppExtensionCountableEdge = { + __typename?: "AppExtensionCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: AppExtension; +}; + +export type AppExtensionFilterInput = { + mount?: InputMaybe>; + target?: InputMaybe; +}; + +/** All places where app extension can be mounted. */ +export enum AppExtensionMountEnum { + NavigationCatalog = "NAVIGATION_CATALOG", + NavigationCustomers = "NAVIGATION_CUSTOMERS", + NavigationDiscounts = "NAVIGATION_DISCOUNTS", + NavigationOrders = "NAVIGATION_ORDERS", + NavigationPages = "NAVIGATION_PAGES", + NavigationTranslations = "NAVIGATION_TRANSLATIONS", + OrderDetailsMoreActions = "ORDER_DETAILS_MORE_ACTIONS", + OrderOverviewCreate = "ORDER_OVERVIEW_CREATE", + OrderOverviewMoreActions = "ORDER_OVERVIEW_MORE_ACTIONS", + ProductDetailsMoreActions = "PRODUCT_DETAILS_MORE_ACTIONS", + ProductOverviewCreate = "PRODUCT_OVERVIEW_CREATE", + ProductOverviewMoreActions = "PRODUCT_OVERVIEW_MORE_ACTIONS", +} + +/** + * All available ways of opening an app extension. + * + * POPUP - app's extension will be mounted as a popup window + * APP_PAGE - redirect to app's page + */ +export enum AppExtensionTargetEnum { + AppPage = "APP_PAGE", + Popup = "POPUP", +} + +/** + * Fetch and validate manifest. + * + * Requires one of the following permissions: MANAGE_APPS. + */ +export type AppFetchManifest = { + __typename?: "AppFetchManifest"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + appErrors: Array; + errors: Array; + manifest?: Maybe; +}; + +export type AppFilterInput = { + isActive?: InputMaybe; + search?: InputMaybe; + type?: InputMaybe; +}; + +export type AppInput = { + /** Name of the app. */ + name?: InputMaybe; + /** List of permission code names to assign to this app. */ + permissions?: InputMaybe>; +}; + +/** Install new app by using app manifest. Requires the following permissions: AUTHENTICATED_STAFF_USER and MANAGE_APPS. */ +export type AppInstall = { + __typename?: "AppInstall"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + appErrors: Array; + appInstallation?: Maybe; + errors: Array; +}; + +export type AppInstallInput = { + /** Determine if app will be set active or not. */ + activateAfterInstallation?: InputMaybe; + /** Name of the app to install. */ + appName?: InputMaybe; + /** Url to app's manifest in JSON format. */ + manifestUrl?: InputMaybe; + /** List of permission code names to assign to this app. */ + permissions?: InputMaybe>; +}; + +/** Represents ongoing installation of app. */ +export type AppInstallation = Job & + Node & { + __typename?: "AppInstallation"; + appName: Scalars["String"]; + /** Created date time of job in ISO 8601 format. */ + createdAt: Scalars["DateTime"]; + id: Scalars["ID"]; + manifestUrl: Scalars["String"]; + /** Job message. */ + message?: Maybe; + /** Job status. */ + status: JobStatusEnum; + /** Date time of job last update in ISO 8601 format. */ + updatedAt: Scalars["DateTime"]; + }; + +export type AppInstalled = Event & { + __typename?: "AppInstalled"; + /** + * The application the event relates to. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + app?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type AppManifestExtension = { + __typename?: "AppManifestExtension"; + /** Label of the extension to show in the dashboard. */ + label: Scalars["String"]; + /** Place where given extension will be mounted. */ + mount: AppExtensionMountEnum; + /** List of the app extension's permissions. */ + permissions: Array; + /** Type of way how app extension will be opened. */ + target: AppExtensionTargetEnum; + /** URL of a view where extension's iframe is placed. */ + url: Scalars["String"]; +}; + +/** + * Retry failed installation of new app. + * + * Requires one of the following permissions: MANAGE_APPS. + */ +export type AppRetryInstall = { + __typename?: "AppRetryInstall"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + appErrors: Array; + appInstallation?: Maybe; + errors: Array; +}; + +export enum AppSortField { + /** Sort apps by creation date. */ + CreationDate = "CREATION_DATE", + /** Sort apps by name. */ + Name = "NAME", +} + +export type AppSortingInput = { + /** Specifies the direction in which to sort products. */ + direction: OrderDirection; + /** Sort apps by the selected field. */ + field: AppSortField; +}; + +export type AppStatusChanged = Event & { + __typename?: "AppStatusChanged"; + /** + * The application the event relates to. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + app?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +/** Represents token data. */ +export type AppToken = Node & { + __typename?: "AppToken"; + /** Last 4 characters of the token. */ + authToken?: Maybe; + id: Scalars["ID"]; + /** Name of the authenticated token. */ + name?: Maybe; +}; + +/** + * Creates a new token. + * + * Requires one of the following permissions: MANAGE_APPS. + */ +export type AppTokenCreate = { + __typename?: "AppTokenCreate"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + appErrors: Array; + appToken?: Maybe; + /** The newly created authentication token. */ + authToken?: Maybe; + errors: Array; +}; + +/** + * Deletes an authentication token assigned to app. + * + * Requires one of the following permissions: MANAGE_APPS. + */ +export type AppTokenDelete = { + __typename?: "AppTokenDelete"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + appErrors: Array; + appToken?: Maybe; + errors: Array; +}; + +export type AppTokenInput = { + /** ID of app. */ + app: Scalars["ID"]; + /** Name of the token. */ + name?: InputMaybe; +}; + +/** Verify provided app token. */ +export type AppTokenVerify = { + __typename?: "AppTokenVerify"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + appErrors: Array; + errors: Array; + /** Determine if token is valid or not. */ + valid: Scalars["Boolean"]; +}; + +/** Enum determining type of your App. */ +export enum AppTypeEnum { + /** Local Saleor App. The app is fully manageable from dashboard. You can change assigned permissions, add webhooks, or authentication token */ + Local = "LOCAL", + /** Third party external App. Installation is fully automated. Saleor uses a defined App manifest to gather all required information. */ + Thirdparty = "THIRDPARTY", +} + +/** + * Updates an existing app. + * + * Requires one of the following permissions: MANAGE_APPS. + */ +export type AppUpdate = { + __typename?: "AppUpdate"; + app?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + appErrors: Array; + errors: Array; +}; + +export type AppUpdated = Event & { + __typename?: "AppUpdated"; + /** + * The application the event relates to. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + app?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +/** An enumeration. */ +export enum AreaUnitsEnum { + SqCm = "SQ_CM", + SqFt = "SQ_FT", + SqInch = "SQ_INCH", + SqKm = "SQ_KM", + SqM = "SQ_M", + SqYd = "SQ_YD", +} + +/** + * Assigns storefront's navigation menus. + * + * Requires one of the following permissions: MANAGE_MENUS, MANAGE_SETTINGS. + */ +export type AssignNavigation = { + __typename?: "AssignNavigation"; + errors: Array; + /** Assigned navigation menu. */ + menu?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + menuErrors: Array; +}; + +/** + * Represents assigned attribute to variant with variant selection attached. + * + * Added in Saleor 3.1. + */ +export type AssignedVariantAttribute = { + __typename?: "AssignedVariantAttribute"; + /** Attribute assigned to variant. */ + attribute: Attribute; + /** Determines, whether assigned attribute is allowed for variant selection. Supported variant types for variant selection are: ['dropdown', 'boolean', 'swatch', 'numeric'] */ + variantSelection: Scalars["Boolean"]; +}; + +/** Custom attribute of a product. Attributes can be assigned to products and variants at the product type level. */ +export type Attribute = Node & + ObjectWithMetadata & { + __typename?: "Attribute"; + /** Whether the attribute can be displayed in the admin product list. Requires one of the following permissions: MANAGE_PAGES, MANAGE_PAGE_TYPES_AND_ATTRIBUTES, MANAGE_PRODUCTS, MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. */ + availableInGrid: Scalars["Boolean"]; + /** List of attribute's values. */ + choices?: Maybe; + /** The entity type which can be used as a reference. */ + entityType?: Maybe; + /** Whether the attribute can be filtered in dashboard. Requires one of the following permissions: MANAGE_PAGES, MANAGE_PAGE_TYPES_AND_ATTRIBUTES, MANAGE_PRODUCTS, MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. */ + filterableInDashboard: Scalars["Boolean"]; + /** Whether the attribute can be filtered in storefront. Requires one of the following permissions: MANAGE_PAGES, MANAGE_PAGE_TYPES_AND_ATTRIBUTES, MANAGE_PRODUCTS, MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. */ + filterableInStorefront: Scalars["Boolean"]; + id: Scalars["ID"]; + /** The input type to use for entering attribute values in the dashboard. */ + inputType?: Maybe; + /** List of public metadata items. Can be accessed without permissions. */ + metadata: Array; + /** + * A single key from public metadata. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafield?: Maybe; + /** + * Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafields?: Maybe; + /** Name of an attribute displayed in the interface. */ + name?: Maybe; + /** List of private metadata items. Requires staff permissions to access. */ + privateMetadata: Array; + /** + * A single key from private metadata. Requires staff permissions to access. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafield?: Maybe; + /** + * Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafields?: Maybe; + productTypes: ProductTypeCountableConnection; + productVariantTypes: ProductTypeCountableConnection; + /** Internal representation of an attribute name. */ + slug?: Maybe; + /** The position of the attribute in the storefront navigation (0 by default). Requires one of the following permissions: MANAGE_PAGES, MANAGE_PAGE_TYPES_AND_ATTRIBUTES, MANAGE_PRODUCTS, MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. */ + storefrontSearchPosition: Scalars["Int"]; + /** Returns translated attribute fields for the given language code. */ + translation?: Maybe; + /** The attribute type. */ + type?: Maybe; + /** The unit of attribute values. */ + unit?: Maybe; + /** Whether the attribute requires values to be passed or not. Requires one of the following permissions: MANAGE_PAGES, MANAGE_PAGE_TYPES_AND_ATTRIBUTES, MANAGE_PRODUCTS, MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. */ + valueRequired: Scalars["Boolean"]; + /** Whether the attribute should be visible or not in storefront. Requires one of the following permissions: MANAGE_PAGES, MANAGE_PAGE_TYPES_AND_ATTRIBUTES, MANAGE_PRODUCTS, MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. */ + visibleInStorefront: Scalars["Boolean"]; + /** Flag indicating that attribute has predefined choices. */ + withChoices: Scalars["Boolean"]; + }; + +/** Custom attribute of a product. Attributes can be assigned to products and variants at the product type level. */ +export type AttributeChoicesArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + sortBy?: InputMaybe; +}; + +/** Custom attribute of a product. Attributes can be assigned to products and variants at the product type level. */ +export type AttributeMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Custom attribute of a product. Attributes can be assigned to products and variants at the product type level. */ +export type AttributeMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Custom attribute of a product. Attributes can be assigned to products and variants at the product type level. */ +export type AttributePrivateMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Custom attribute of a product. Attributes can be assigned to products and variants at the product type level. */ +export type AttributePrivateMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Custom attribute of a product. Attributes can be assigned to products and variants at the product type level. */ +export type AttributeProductTypesArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +/** Custom attribute of a product. Attributes can be assigned to products and variants at the product type level. */ +export type AttributeProductVariantTypesArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +/** Custom attribute of a product. Attributes can be assigned to products and variants at the product type level. */ +export type AttributeTranslationArgs = { + languageCode: LanguageCodeEnum; +}; + +/** + * Deletes attributes. + * + * Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + */ +export type AttributeBulkDelete = { + __typename?: "AttributeBulkDelete"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + attributeErrors: Array; + /** Returns how many objects were affected. */ + count: Scalars["Int"]; + errors: Array; +}; + +export enum AttributeChoicesSortField { + /** Sort attribute choice by name. */ + Name = "NAME", + /** Sort attribute choice by slug. */ + Slug = "SLUG", +} + +export type AttributeChoicesSortingInput = { + /** Specifies the direction in which to sort products. */ + direction: OrderDirection; + /** Sort attribute choices by the selected field. */ + field: AttributeChoicesSortField; +}; + +export type AttributeCountableConnection = { + __typename?: "AttributeCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type AttributeCountableEdge = { + __typename?: "AttributeCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: Attribute; +}; + +/** Creates an attribute. */ +export type AttributeCreate = { + __typename?: "AttributeCreate"; + attribute?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + attributeErrors: Array; + errors: Array; +}; + +export type AttributeCreateInput = { + /** Whether the attribute can be displayed in the admin product list. */ + availableInGrid?: InputMaybe; + /** The entity type which can be used as a reference. */ + entityType?: InputMaybe; + /** Whether the attribute can be filtered in dashboard. */ + filterableInDashboard?: InputMaybe; + /** Whether the attribute can be filtered in storefront. */ + filterableInStorefront?: InputMaybe; + /** The input type to use for entering attribute values in the dashboard. */ + inputType?: InputMaybe; + /** Whether the attribute is for variants only. */ + isVariantOnly?: InputMaybe; + /** Name of an attribute displayed in the interface. */ + name: Scalars["String"]; + /** Internal representation of an attribute name. */ + slug?: InputMaybe; + /** The position of the attribute in the storefront navigation (0 by default). */ + storefrontSearchPosition?: InputMaybe; + /** The attribute type. */ + type: AttributeTypeEnum; + /** The unit of attribute values. */ + unit?: InputMaybe; + /** Whether the attribute requires values to be passed or not. */ + valueRequired?: InputMaybe; + /** List of attribute's values. */ + values?: InputMaybe>; + /** Whether the attribute should be visible or not in storefront. */ + visibleInStorefront?: InputMaybe; +}; + +/** + * Deletes an attribute. + * + * Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + */ +export type AttributeDelete = { + __typename?: "AttributeDelete"; + attribute?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + attributeErrors: Array; + errors: Array; +}; + +/** An enumeration. */ +export enum AttributeEntityTypeEnum { + Page = "PAGE", + Product = "PRODUCT", +} + +export type AttributeError = { + __typename?: "AttributeError"; + /** The error code. */ + code: AttributeErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; +}; + +/** An enumeration. */ +export enum AttributeErrorCode { + AlreadyExists = "ALREADY_EXISTS", + GraphqlError = "GRAPHQL_ERROR", + Invalid = "INVALID", + NotFound = "NOT_FOUND", + Required = "REQUIRED", + Unique = "UNIQUE", +} + +export type AttributeFilterInput = { + availableInGrid?: InputMaybe; + /** + * Specifies the channel by which the data should be filtered. + * + * DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. + */ + channel?: InputMaybe; + filterableInDashboard?: InputMaybe; + filterableInStorefront?: InputMaybe; + ids?: InputMaybe>; + inCategory?: InputMaybe; + inCollection?: InputMaybe; + isVariantOnly?: InputMaybe; + metadata?: InputMaybe>; + search?: InputMaybe; + type?: InputMaybe; + valueRequired?: InputMaybe; + visibleInStorefront?: InputMaybe; +}; + +export type AttributeInput = { + /** The boolean value of the attribute. */ + boolean?: InputMaybe; + /** The date range that the returned values should be in. In case of date/time attributes, the UTC midnight of the given date is used. */ + date?: InputMaybe; + /** The date/time range that the returned values should be in. */ + dateTime?: InputMaybe; + /** Internal representation of an attribute name. */ + slug: Scalars["String"]; + /** Internal representation of a value (unique per attribute). */ + values?: InputMaybe>; + /** The range that the returned values should be in. */ + valuesRange?: InputMaybe; +}; + +/** An enumeration. */ +export enum AttributeInputTypeEnum { + Boolean = "BOOLEAN", + Date = "DATE", + DateTime = "DATE_TIME", + Dropdown = "DROPDOWN", + File = "FILE", + Multiselect = "MULTISELECT", + Numeric = "NUMERIC", + Reference = "REFERENCE", + RichText = "RICH_TEXT", + Swatch = "SWATCH", +} + +/** + * Reorder the values of an attribute. + * + * Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + */ +export type AttributeReorderValues = { + __typename?: "AttributeReorderValues"; + /** Attribute from which values are reordered. */ + attribute?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + attributeErrors: Array; + errors: Array; +}; + +export enum AttributeSortField { + /** Sort attributes based on whether they can be displayed or not in a product grid. */ + AvailableInGrid = "AVAILABLE_IN_GRID", + /** Sort attributes by the filterable in dashboard flag */ + FilterableInDashboard = "FILTERABLE_IN_DASHBOARD", + /** Sort attributes by the filterable in storefront flag */ + FilterableInStorefront = "FILTERABLE_IN_STOREFRONT", + /** Sort attributes by the variant only flag */ + IsVariantOnly = "IS_VARIANT_ONLY", + /** Sort attributes by name */ + Name = "NAME", + /** Sort attributes by slug */ + Slug = "SLUG", + /** Sort attributes by their position in storefront */ + StorefrontSearchPosition = "STOREFRONT_SEARCH_POSITION", + /** Sort attributes by the value required flag */ + ValueRequired = "VALUE_REQUIRED", + /** Sort attributes by visibility in the storefront */ + VisibleInStorefront = "VISIBLE_IN_STOREFRONT", +} + +export type AttributeSortingInput = { + /** Specifies the direction in which to sort products. */ + direction: OrderDirection; + /** Sort attributes by the selected field. */ + field: AttributeSortField; +}; + +export type AttributeTranslatableContent = Node & { + __typename?: "AttributeTranslatableContent"; + /** + * Custom attribute of a product. + * @deprecated This field will be removed in Saleor 4.0. Get model fields from the root level queries. + */ + attribute?: Maybe; + id: Scalars["ID"]; + name: Scalars["String"]; + /** Returns translated attribute fields for the given language code. */ + translation?: Maybe; +}; + +export type AttributeTranslatableContentTranslationArgs = { + languageCode: LanguageCodeEnum; +}; + +/** + * Creates/updates translations for an attribute. + * + * Requires one of the following permissions: MANAGE_TRANSLATIONS. + */ +export type AttributeTranslate = { + __typename?: "AttributeTranslate"; + attribute?: Maybe; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + translationErrors: Array; +}; + +export type AttributeTranslation = Node & { + __typename?: "AttributeTranslation"; + id: Scalars["ID"]; + /** Translation language. */ + language: LanguageDisplay; + name: Scalars["String"]; +}; + +/** An enumeration. */ +export enum AttributeTypeEnum { + PageType = "PAGE_TYPE", + ProductType = "PRODUCT_TYPE", +} + +/** + * Updates attribute. + * + * Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + */ +export type AttributeUpdate = { + __typename?: "AttributeUpdate"; + attribute?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + attributeErrors: Array; + errors: Array; +}; + +export type AttributeUpdateInput = { + /** New values to be created for this attribute. */ + addValues?: InputMaybe>; + /** Whether the attribute can be displayed in the admin product list. */ + availableInGrid?: InputMaybe; + /** Whether the attribute can be filtered in dashboard. */ + filterableInDashboard?: InputMaybe; + /** Whether the attribute can be filtered in storefront. */ + filterableInStorefront?: InputMaybe; + /** Whether the attribute is for variants only. */ + isVariantOnly?: InputMaybe; + /** Name of an attribute displayed in the interface. */ + name?: InputMaybe; + /** IDs of values to be removed from this attribute. */ + removeValues?: InputMaybe>; + /** Internal representation of an attribute name. */ + slug?: InputMaybe; + /** The position of the attribute in the storefront navigation (0 by default). */ + storefrontSearchPosition?: InputMaybe; + /** The unit of attribute values. */ + unit?: InputMaybe; + /** Whether the attribute requires values to be passed or not. */ + valueRequired?: InputMaybe; + /** Whether the attribute should be visible or not in storefront. */ + visibleInStorefront?: InputMaybe; +}; + +/** Represents a value of an attribute. */ +export type AttributeValue = Node & { + __typename?: "AttributeValue"; + /** Represents the boolean value of the attribute value. */ + boolean?: Maybe; + /** Represents the date value of the attribute value. */ + date?: Maybe; + /** Represents the date/time value of the attribute value. */ + dateTime?: Maybe; + /** Represents file URL and content type (if attribute value is a file). */ + file?: Maybe; + id: Scalars["ID"]; + /** The input type to use for entering attribute values in the dashboard. */ + inputType?: Maybe; + /** Name of a value displayed in the interface. */ + name?: Maybe; + /** The ID of the attribute reference. */ + reference?: Maybe; + /** + * Represents the text of the attribute value, includes formatting. + * + * Rich text format. For reference see https://editorjs.io/ + */ + richText?: Maybe; + /** Internal representation of a value (unique per attribute). */ + slug?: Maybe; + /** Returns translated attribute value fields for the given language code. */ + translation?: Maybe; + /** Represent value of the attribute value (e.g. color values for swatch attributes). */ + value?: Maybe; +}; + +/** Represents a value of an attribute. */ +export type AttributeValueTranslationArgs = { + languageCode: LanguageCodeEnum; +}; + +/** + * Deletes values of attributes. + * + * Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + */ +export type AttributeValueBulkDelete = { + __typename?: "AttributeValueBulkDelete"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + attributeErrors: Array; + /** Returns how many objects were affected. */ + count: Scalars["Int"]; + errors: Array; +}; + +export type AttributeValueCountableConnection = { + __typename?: "AttributeValueCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type AttributeValueCountableEdge = { + __typename?: "AttributeValueCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: AttributeValue; +}; + +/** + * Creates a value for an attribute. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type AttributeValueCreate = { + __typename?: "AttributeValueCreate"; + /** The updated attribute. */ + attribute?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + attributeErrors: Array; + attributeValue?: Maybe; + errors: Array; +}; + +export type AttributeValueCreateInput = { + /** File content type. */ + contentType?: InputMaybe; + /** URL of the file attribute. Every time, a new value is created. */ + fileUrl?: InputMaybe; + /** Name of a value displayed in the interface. */ + name: Scalars["String"]; + /** + * Represents the text of the attribute value, includes formatting. + * + * Rich text format. For reference see https://editorjs.io/ + */ + richText?: InputMaybe; + /** Represent value of the attribute value (e.g. color values for swatch attributes). */ + value?: InputMaybe; +}; + +/** + * Deletes a value of an attribute. + * + * Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + */ +export type AttributeValueDelete = { + __typename?: "AttributeValueDelete"; + /** The updated attribute. */ + attribute?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + attributeErrors: Array; + attributeValue?: Maybe; + errors: Array; +}; + +export type AttributeValueFilterInput = { + ids?: InputMaybe>; + search?: InputMaybe; +}; + +export type AttributeValueInput = { + /** Represents the boolean value of the attribute value. */ + boolean?: InputMaybe; + /** File content type. */ + contentType?: InputMaybe; + /** Represents the date value of the attribute value. */ + date?: InputMaybe; + /** Represents the date/time value of the attribute value. */ + dateTime?: InputMaybe; + /** URL of the file attribute. Every time, a new value is created. */ + file?: InputMaybe; + /** ID of the selected attribute. */ + id?: InputMaybe; + /** List of entity IDs that will be used as references. */ + references?: InputMaybe>; + /** Text content in JSON format. */ + richText?: InputMaybe; + /** The value or slug of an attribute to resolve. If the passed value is non-existent, it will be created. */ + values?: InputMaybe>; +}; + +export type AttributeValueTranslatableContent = Node & { + __typename?: "AttributeValueTranslatableContent"; + /** + * Represents a value of an attribute. + * @deprecated This field will be removed in Saleor 4.0. Get model fields from the root level queries. + */ + attributeValue?: Maybe; + id: Scalars["ID"]; + name: Scalars["String"]; + /** + * Attribute value. + * + * Rich text format. For reference see https://editorjs.io/ + */ + richText?: Maybe; + /** Returns translated attribute value fields for the given language code. */ + translation?: Maybe; +}; + +export type AttributeValueTranslatableContentTranslationArgs = { + languageCode: LanguageCodeEnum; +}; + +/** + * Creates/updates translations for an attribute value. + * + * Requires one of the following permissions: MANAGE_TRANSLATIONS. + */ +export type AttributeValueTranslate = { + __typename?: "AttributeValueTranslate"; + attributeValue?: Maybe; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + translationErrors: Array; +}; + +export type AttributeValueTranslation = Node & { + __typename?: "AttributeValueTranslation"; + id: Scalars["ID"]; + /** Translation language. */ + language: LanguageDisplay; + name: Scalars["String"]; + /** + * Attribute value. + * + * Rich text format. For reference see https://editorjs.io/ + */ + richText?: Maybe; +}; + +export type AttributeValueTranslationInput = { + name?: InputMaybe; + /** + * Translated text. + * + * Rich text format. For reference see https://editorjs.io/ + */ + richText?: InputMaybe; +}; + +/** + * Updates value of an attribute. + * + * Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + */ +export type AttributeValueUpdate = { + __typename?: "AttributeValueUpdate"; + /** The updated attribute. */ + attribute?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + attributeErrors: Array; + attributeValue?: Maybe; + errors: Array; +}; + +export type AttributeValueUpdateInput = { + /** File content type. */ + contentType?: InputMaybe; + /** URL of the file attribute. Every time, a new value is created. */ + fileUrl?: InputMaybe; + /** Name of a value displayed in the interface. */ + name?: InputMaybe; + /** + * Represents the text of the attribute value, includes formatting. + * + * Rich text format. For reference see https://editorjs.io/ + */ + richText?: InputMaybe; + /** Represent value of the attribute value (e.g. color values for swatch attributes). */ + value?: InputMaybe; +}; + +export type BulkAttributeValueInput = { + /** The boolean value of an attribute to resolve. If the passed value is non-existent, it will be created. */ + boolean?: InputMaybe; + /** ID of the selected attribute. */ + id?: InputMaybe; + /** The value or slug of an attribute to resolve. If the passed value is non-existent, it will be created. */ + values?: InputMaybe>; +}; + +export type BulkProductError = { + __typename?: "BulkProductError"; + /** List of attributes IDs which causes the error. */ + attributes?: Maybe>; + /** List of channel IDs which causes the error. */ + channels?: Maybe>; + /** The error code. */ + code: ProductErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** Index of an input list item that caused the error. */ + index?: Maybe; + /** The error message. */ + message?: Maybe; + /** List of attribute values IDs which causes the error. */ + values?: Maybe>; + /** List of warehouse IDs which causes the error. */ + warehouses?: Maybe>; +}; + +export type BulkStockError = { + __typename?: "BulkStockError"; + /** List of attributes IDs which causes the error. */ + attributes?: Maybe>; + /** The error code. */ + code: ProductErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** Index of an input list item that caused the error. */ + index?: Maybe; + /** The error message. */ + message?: Maybe; + /** List of attribute values IDs which causes the error. */ + values?: Maybe>; +}; + +export type CardInput = { + /** Payment method nonce, a token returned by the appropriate provider's SDK. */ + code: Scalars["String"]; + /** Card security code. */ + cvc?: InputMaybe; + /** Information about currency and amount. */ + money: MoneyInput; +}; + +export type CatalogueInput = { + /** Categories related to the discount. */ + categories?: InputMaybe>; + /** Collections related to the discount. */ + collections?: InputMaybe>; + /** Products related to the discount. */ + products?: InputMaybe>; + /** + * Product variant related to the discount. + * + * Added in Saleor 3.1. + */ + variants?: InputMaybe>; +}; + +/** Represents a single category of products. Categories allow to organize products in a tree-hierarchies which can be used for navigation in the storefront. */ +export type Category = Node & + ObjectWithMetadata & { + __typename?: "Category"; + /** List of ancestors of the category. */ + ancestors?: Maybe; + backgroundImage?: Maybe; + /** List of children of the category. */ + children?: Maybe; + /** + * Description of the category. + * + * Rich text format. For reference see https://editorjs.io/ + */ + description?: Maybe; + /** + * Description of the category. + * + * Rich text format. For reference see https://editorjs.io/ + * @deprecated This field will be removed in Saleor 4.0. Use the `description` field instead. + */ + descriptionJson?: Maybe; + id: Scalars["ID"]; + level: Scalars["Int"]; + /** List of public metadata items. Can be accessed without permissions. */ + metadata: Array; + /** + * A single key from public metadata. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafield?: Maybe; + /** + * Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafields?: Maybe; + name: Scalars["String"]; + parent?: Maybe; + /** List of private metadata items. Requires staff permissions to access. */ + privateMetadata: Array; + /** + * A single key from private metadata. Requires staff permissions to access. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafield?: Maybe; + /** + * Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafields?: Maybe; + /** List of products in the category. Requires the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. */ + products?: Maybe; + seoDescription?: Maybe; + seoTitle?: Maybe; + slug: Scalars["String"]; + /** Returns translated category fields for the given language code. */ + translation?: Maybe; + }; + +/** Represents a single category of products. Categories allow to organize products in a tree-hierarchies which can be used for navigation in the storefront. */ +export type CategoryAncestorsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +/** Represents a single category of products. Categories allow to organize products in a tree-hierarchies which can be used for navigation in the storefront. */ +export type CategoryBackgroundImageArgs = { + size?: InputMaybe; +}; + +/** Represents a single category of products. Categories allow to organize products in a tree-hierarchies which can be used for navigation in the storefront. */ +export type CategoryChildrenArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +/** Represents a single category of products. Categories allow to organize products in a tree-hierarchies which can be used for navigation in the storefront. */ +export type CategoryMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents a single category of products. Categories allow to organize products in a tree-hierarchies which can be used for navigation in the storefront. */ +export type CategoryMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Represents a single category of products. Categories allow to organize products in a tree-hierarchies which can be used for navigation in the storefront. */ +export type CategoryPrivateMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents a single category of products. Categories allow to organize products in a tree-hierarchies which can be used for navigation in the storefront. */ +export type CategoryPrivateMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Represents a single category of products. Categories allow to organize products in a tree-hierarchies which can be used for navigation in the storefront. */ +export type CategoryProductsArgs = { + after?: InputMaybe; + before?: InputMaybe; + channel?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +/** Represents a single category of products. Categories allow to organize products in a tree-hierarchies which can be used for navigation in the storefront. */ +export type CategoryTranslationArgs = { + languageCode: LanguageCodeEnum; +}; + +/** + * Deletes categories. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type CategoryBulkDelete = { + __typename?: "CategoryBulkDelete"; + /** Returns how many objects were affected. */ + count: Scalars["Int"]; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; +}; + +export type CategoryCountableConnection = { + __typename?: "CategoryCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type CategoryCountableEdge = { + __typename?: "CategoryCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: Category; +}; + +/** + * Creates a new category. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type CategoryCreate = { + __typename?: "CategoryCreate"; + category?: Maybe; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; +}; + +export type CategoryCreated = Event & { + __typename?: "CategoryCreated"; + /** + * The category the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + category?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +/** + * Deletes a category. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type CategoryDelete = { + __typename?: "CategoryDelete"; + category?: Maybe; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; +}; + +export type CategoryDeleted = Event & { + __typename?: "CategoryDeleted"; + /** + * The category the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + category?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type CategoryFilterInput = { + ids?: InputMaybe>; + metadata?: InputMaybe>; + search?: InputMaybe; +}; + +export type CategoryInput = { + /** Background image file. */ + backgroundImage?: InputMaybe; + /** Alt text for a product media. */ + backgroundImageAlt?: InputMaybe; + /** + * Category description. + * + * Rich text format. For reference see https://editorjs.io/ + */ + description?: InputMaybe; + /** Category name. */ + name?: InputMaybe; + /** Search engine optimization fields. */ + seo?: InputMaybe; + /** Category slug. */ + slug?: InputMaybe; +}; + +export enum CategorySortField { + /** Sort categories by name. */ + Name = "NAME", + /** Sort categories by product count. */ + ProductCount = "PRODUCT_COUNT", + /** Sort categories by subcategory count. */ + SubcategoryCount = "SUBCATEGORY_COUNT", +} + +export type CategorySortingInput = { + /** + * Specifies the channel in which to sort the data. + * + * DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. + */ + channel?: InputMaybe; + /** Specifies the direction in which to sort products. */ + direction: OrderDirection; + /** Sort categories by the selected field. */ + field: CategorySortField; +}; + +export type CategoryTranslatableContent = Node & { + __typename?: "CategoryTranslatableContent"; + /** + * Represents a single category of products. + * @deprecated This field will be removed in Saleor 4.0. Get model fields from the root level queries. + */ + category?: Maybe; + /** + * Description of the category. + * + * Rich text format. For reference see https://editorjs.io/ + */ + description?: Maybe; + /** + * Description of the category. + * + * Rich text format. For reference see https://editorjs.io/ + * @deprecated This field will be removed in Saleor 4.0. Use the `description` field instead. + */ + descriptionJson?: Maybe; + id: Scalars["ID"]; + name: Scalars["String"]; + seoDescription?: Maybe; + seoTitle?: Maybe; + /** Returns translated category fields for the given language code. */ + translation?: Maybe; +}; + +export type CategoryTranslatableContentTranslationArgs = { + languageCode: LanguageCodeEnum; +}; + +/** + * Creates/updates translations for a category. + * + * Requires one of the following permissions: MANAGE_TRANSLATIONS. + */ +export type CategoryTranslate = { + __typename?: "CategoryTranslate"; + category?: Maybe; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + translationErrors: Array; +}; + +export type CategoryTranslation = Node & { + __typename?: "CategoryTranslation"; + /** + * Translated description of the category. + * + * Rich text format. For reference see https://editorjs.io/ + */ + description?: Maybe; + /** + * Translated description of the category. + * + * Rich text format. For reference see https://editorjs.io/ + * @deprecated This field will be removed in Saleor 4.0. Use the `description` field instead. + */ + descriptionJson?: Maybe; + id: Scalars["ID"]; + /** Translation language. */ + language: LanguageDisplay; + name?: Maybe; + seoDescription?: Maybe; + seoTitle?: Maybe; +}; + +/** + * Updates a category. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type CategoryUpdate = { + __typename?: "CategoryUpdate"; + category?: Maybe; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; +}; + +export type CategoryUpdated = Event & { + __typename?: "CategoryUpdated"; + /** + * The category the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + category?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +/** Represents channel. */ +export type Channel = Node & { + __typename?: "Channel"; + currencyCode: Scalars["String"]; + /** + * Default country for the channel. Default country can be used in checkout to determine the stock quantities or calculate taxes when the country was not explicitly provided. + * + * Added in Saleor 3.1. + */ + defaultCountry: CountryDisplay; + /** + * Whether a channel has associated orders. + * + * Requires one of the following permissions: MANAGE_CHANNELS. + */ + hasOrders: Scalars["Boolean"]; + id: Scalars["ID"]; + isActive: Scalars["Boolean"]; + name: Scalars["String"]; + slug: Scalars["String"]; +}; + +/** + * Activate a channel. + * + * Requires one of the following permissions: MANAGE_CHANNELS. + */ +export type ChannelActivate = { + __typename?: "ChannelActivate"; + /** Activated channel. */ + channel?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + channelErrors: Array; + errors: Array; +}; + +/** + * Creates new channel. + * + * Requires one of the following permissions: MANAGE_CHANNELS. + */ +export type ChannelCreate = { + __typename?: "ChannelCreate"; + channel?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + channelErrors: Array; + errors: Array; +}; + +export type ChannelCreateInput = { + /** List of shipping zones to assign to the channel. */ + addShippingZones?: InputMaybe>; + /** Currency of the channel. */ + currencyCode: Scalars["String"]; + /** + * Default country for the channel. Default country can be used in checkout to determine the stock quantities or calculate taxes when the country was not explicitly provided. + * + * Added in Saleor 3.1. + */ + defaultCountry: CountryCode; + /** isActive flag. */ + isActive?: InputMaybe; + /** Name of the channel. */ + name: Scalars["String"]; + /** Slug of the channel. */ + slug: Scalars["String"]; +}; + +export type ChannelCreated = Event & { + __typename?: "ChannelCreated"; + /** + * The channel the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + channel?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +/** + * Deactivate a channel. + * + * Requires one of the following permissions: MANAGE_CHANNELS. + */ +export type ChannelDeactivate = { + __typename?: "ChannelDeactivate"; + /** Deactivated channel. */ + channel?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + channelErrors: Array; + errors: Array; +}; + +/** + * Delete a channel. Orders associated with the deleted channel will be moved to the target channel. Checkouts, product availability, and pricing will be removed. + * + * Requires one of the following permissions: MANAGE_CHANNELS. + */ +export type ChannelDelete = { + __typename?: "ChannelDelete"; + channel?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + channelErrors: Array; + errors: Array; +}; + +export type ChannelDeleteInput = { + /** ID of channel to migrate orders from origin channel. */ + channelId: Scalars["ID"]; +}; + +export type ChannelDeleted = Event & { + __typename?: "ChannelDeleted"; + /** + * The channel the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + channel?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type ChannelError = { + __typename?: "ChannelError"; + /** The error code. */ + code: ChannelErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; + /** List of shipping zone IDs which causes the error. */ + shippingZones?: Maybe>; +}; + +/** An enumeration. */ +export enum ChannelErrorCode { + AlreadyExists = "ALREADY_EXISTS", + ChannelsCurrencyMustBeTheSame = "CHANNELS_CURRENCY_MUST_BE_THE_SAME", + ChannelWithOrders = "CHANNEL_WITH_ORDERS", + DuplicatedInputItem = "DUPLICATED_INPUT_ITEM", + GraphqlError = "GRAPHQL_ERROR", + Invalid = "INVALID", + NotFound = "NOT_FOUND", + Required = "REQUIRED", + Unique = "UNIQUE", +} + +export type ChannelStatusChanged = Event & { + __typename?: "ChannelStatusChanged"; + /** + * The channel the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + channel?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +/** + * Update a channel. + * + * Requires one of the following permissions: MANAGE_CHANNELS. + */ +export type ChannelUpdate = { + __typename?: "ChannelUpdate"; + channel?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + channelErrors: Array; + errors: Array; +}; + +export type ChannelUpdateInput = { + /** List of shipping zones to assign to the channel. */ + addShippingZones?: InputMaybe>; + /** + * Default country for the channel. Default country can be used in checkout to determine the stock quantities or calculate taxes when the country was not explicitly provided. + * + * Added in Saleor 3.1. + */ + defaultCountry?: InputMaybe; + /** isActive flag. */ + isActive?: InputMaybe; + /** Name of the channel. */ + name?: InputMaybe; + /** List of shipping zones to unassign from the channel. */ + removeShippingZones?: InputMaybe>; + /** Slug of the channel. */ + slug?: InputMaybe; +}; + +export type ChannelUpdated = Event & { + __typename?: "ChannelUpdated"; + /** + * The channel the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + channel?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +/** Checkout object. */ +export type Checkout = Node & + ObjectWithMetadata & { + __typename?: "Checkout"; + /** + * Collection points that can be used for this order. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + availableCollectionPoints: Array; + /** List of available payment gateways. */ + availablePaymentGateways: Array; + /** + * Shipping methods that can be used with this checkout. + * @deprecated This field will be removed in Saleor 4.0. Use `shippingMethods` instead. + */ + availableShippingMethods: Array; + billingAddress?: Maybe
; + channel: Channel; + created: Scalars["DateTime"]; + /** + * The delivery method selected for this checkout. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + deliveryMethod?: Maybe; + discount?: Maybe; + discountName?: Maybe; + /** Email of a customer. */ + email?: Maybe; + /** List of gift cards associated with this checkout. */ + giftCards: Array; + id: Scalars["ID"]; + /** Returns True, if checkout requires shipping. */ + isShippingRequired: Scalars["Boolean"]; + /** Checkout language code. */ + languageCode: LanguageCodeEnum; + lastChange: Scalars["DateTime"]; + /** A list of checkout lines, each containing information about an item in the checkout. */ + lines: Array; + /** List of public metadata items. Can be accessed without permissions. */ + metadata: Array; + /** + * A single key from public metadata. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafield?: Maybe; + /** + * Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafields?: Maybe; + note: Scalars["String"]; + /** List of private metadata items. Requires staff permissions to access. */ + privateMetadata: Array; + /** + * A single key from private metadata. Requires staff permissions to access. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafield?: Maybe; + /** + * Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafields?: Maybe; + /** The number of items purchased. */ + quantity: Scalars["Int"]; + shippingAddress?: Maybe
; + /** + * The shipping method related with checkout. + * @deprecated This field will be removed in Saleor 4.0. Use `deliveryMethod` instead. + */ + shippingMethod?: Maybe; + /** Shipping methods that can be used with this checkout. */ + shippingMethods: Array; + /** The price of the shipping, with all the taxes included. */ + shippingPrice: TaxedMoney; + /** + * Date when oldest stock reservation for this checkout expires or null if no stock is reserved. + * + * Added in Saleor 3.1. + */ + stockReservationExpires?: Maybe; + /** The price of the checkout before shipping, with taxes included. */ + subtotalPrice: TaxedMoney; + /** The checkout's token. */ + token: Scalars["UUID"]; + /** The sum of the the checkout line prices, with all the taxes,shipping costs, and discounts included. */ + totalPrice: TaxedMoney; + /** + * List of transactions for the checkout. Requires one of the following permissions: MANAGE_CHECKOUTS, HANDLE_PAYMENTS. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + transactions?: Maybe>; + translatedDiscountName?: Maybe; + user?: Maybe; + voucherCode?: Maybe; + }; + +/** Checkout object. */ +export type CheckoutMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Checkout object. */ +export type CheckoutMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Checkout object. */ +export type CheckoutPrivateMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Checkout object. */ +export type CheckoutPrivateMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Adds a gift card or a voucher to a checkout. */ +export type CheckoutAddPromoCode = { + __typename?: "CheckoutAddPromoCode"; + /** The checkout with the added gift card or voucher. */ + checkout?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + checkoutErrors: Array; + errors: Array; +}; + +/** Update billing address in the existing checkout. */ +export type CheckoutBillingAddressUpdate = { + __typename?: "CheckoutBillingAddressUpdate"; + /** An updated checkout. */ + checkout?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + checkoutErrors: Array; + errors: Array; +}; + +/** Completes the checkout. As a result a new order is created and a payment charge is made. This action requires a successful payment before it can be performed. In case additional confirmation step as 3D secure is required confirmationNeeded flag will be set to True and no order created until payment is confirmed with second call of this mutation. */ +export type CheckoutComplete = { + __typename?: "CheckoutComplete"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + checkoutErrors: Array; + /** Confirmation data used to process additional authorization steps. */ + confirmationData?: Maybe; + /** Set to true if payment needs to be confirmed before checkout is complete. */ + confirmationNeeded: Scalars["Boolean"]; + errors: Array; + /** Placed order. */ + order?: Maybe; +}; + +export type CheckoutCountableConnection = { + __typename?: "CheckoutCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type CheckoutCountableEdge = { + __typename?: "CheckoutCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: Checkout; +}; + +/** Create a new checkout. */ +export type CheckoutCreate = { + __typename?: "CheckoutCreate"; + checkout?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + checkoutErrors: Array; + /** + * Whether the checkout was created or the current active one was returned. Refer to checkoutLinesAdd and checkoutLinesUpdate to merge a cart with an active checkout. + * @deprecated This field will be removed in Saleor 4.0. Always returns `true`. + */ + created?: Maybe; + errors: Array; +}; + +export type CheckoutCreateInput = { + /** Billing address of the customer. */ + billingAddress?: InputMaybe; + /** Slug of a channel in which to create a checkout. */ + channel?: InputMaybe; + /** The customer's email address. */ + email?: InputMaybe; + /** Checkout language code. */ + languageCode?: InputMaybe; + /** A list of checkout lines, each containing information about an item in the checkout. */ + lines: Array; + /** The mailing address to where the checkout will be shipped. Note: the address will be ignored if the checkout doesn't contain shippable items. */ + shippingAddress?: InputMaybe; +}; + +export type CheckoutCreated = Event & { + __typename?: "CheckoutCreated"; + /** + * The checkout the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + checkout?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +/** + * Sets the customer as the owner of the checkout. + * + * Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_USER. + */ +export type CheckoutCustomerAttach = { + __typename?: "CheckoutCustomerAttach"; + /** An updated checkout. */ + checkout?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + checkoutErrors: Array; + errors: Array; +}; + +/** + * Removes the user assigned as the owner of the checkout. + * + * Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_USER. + */ +export type CheckoutCustomerDetach = { + __typename?: "CheckoutCustomerDetach"; + /** An updated checkout. */ + checkout?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + checkoutErrors: Array; + errors: Array; +}; + +/** + * Updates the delivery method (shipping method or pick up point) of the checkout. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ +export type CheckoutDeliveryMethodUpdate = { + __typename?: "CheckoutDeliveryMethodUpdate"; + /** An updated checkout. */ + checkout?: Maybe; + errors: Array; +}; + +/** Updates email address in the existing checkout object. */ +export type CheckoutEmailUpdate = { + __typename?: "CheckoutEmailUpdate"; + /** An updated checkout. */ + checkout?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + checkoutErrors: Array; + errors: Array; +}; + +export type CheckoutError = { + __typename?: "CheckoutError"; + /** A type of address that causes the error. */ + addressType?: Maybe; + /** The error code. */ + code: CheckoutErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** List of line Ids which cause the error. */ + lines?: Maybe>; + /** The error message. */ + message?: Maybe; + /** List of varint IDs which causes the error. */ + variants?: Maybe>; +}; + +/** An enumeration. */ +export enum CheckoutErrorCode { + BillingAddressNotSet = "BILLING_ADDRESS_NOT_SET", + ChannelInactive = "CHANNEL_INACTIVE", + CheckoutNotFullyPaid = "CHECKOUT_NOT_FULLY_PAID", + DeliveryMethodNotApplicable = "DELIVERY_METHOD_NOT_APPLICABLE", + EmailNotSet = "EMAIL_NOT_SET", + GiftCardNotApplicable = "GIFT_CARD_NOT_APPLICABLE", + GraphqlError = "GRAPHQL_ERROR", + InsufficientStock = "INSUFFICIENT_STOCK", + Invalid = "INVALID", + InvalidShippingMethod = "INVALID_SHIPPING_METHOD", + MissingChannelSlug = "MISSING_CHANNEL_SLUG", + NotFound = "NOT_FOUND", + NoLines = "NO_LINES", + PaymentError = "PAYMENT_ERROR", + ProductNotPublished = "PRODUCT_NOT_PUBLISHED", + ProductUnavailableForPurchase = "PRODUCT_UNAVAILABLE_FOR_PURCHASE", + QuantityGreaterThanLimit = "QUANTITY_GREATER_THAN_LIMIT", + Required = "REQUIRED", + ShippingAddressNotSet = "SHIPPING_ADDRESS_NOT_SET", + ShippingMethodNotApplicable = "SHIPPING_METHOD_NOT_APPLICABLE", + ShippingMethodNotSet = "SHIPPING_METHOD_NOT_SET", + ShippingNotRequired = "SHIPPING_NOT_REQUIRED", + TaxError = "TAX_ERROR", + UnavailableVariantInChannel = "UNAVAILABLE_VARIANT_IN_CHANNEL", + Unique = "UNIQUE", + VoucherNotApplicable = "VOUCHER_NOT_APPLICABLE", + ZeroQuantity = "ZERO_QUANTITY", +} + +export type CheckoutFilterInput = { + channels?: InputMaybe>; + created?: InputMaybe; + customer?: InputMaybe; + metadata?: InputMaybe>; + search?: InputMaybe; +}; + +/** Update language code in the existing checkout. */ +export type CheckoutLanguageCodeUpdate = { + __typename?: "CheckoutLanguageCodeUpdate"; + /** An updated checkout. */ + checkout?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + checkoutErrors: Array; + errors: Array; +}; + +/** Represents an item in the checkout. */ +export type CheckoutLine = Node & { + __typename?: "CheckoutLine"; + id: Scalars["ID"]; + quantity: Scalars["Int"]; + /** Indicates whether the item need to be delivered. */ + requiresShipping: Scalars["Boolean"]; + /** The sum of the checkout line price, taxes and discounts. */ + totalPrice: TaxedMoney; + /** The sum of the checkout line price, without discounts. */ + undiscountedTotalPrice: Money; + /** The unit price of the checkout line, without discounts. */ + undiscountedUnitPrice: Money; + /** The unit price of the checkout line, with taxes and discounts. */ + unitPrice: TaxedMoney; + variant: ProductVariant; +}; + +export type CheckoutLineCountableConnection = { + __typename?: "CheckoutLineCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type CheckoutLineCountableEdge = { + __typename?: "CheckoutLineCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: CheckoutLine; +}; + +/** Deletes a CheckoutLine. */ +export type CheckoutLineDelete = { + __typename?: "CheckoutLineDelete"; + /** An updated checkout. */ + checkout?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + checkoutErrors: Array; + errors: Array; +}; + +export type CheckoutLineInput = { + /** + * Custom price of the item. Can be set only by apps with `HANDLE_CHECKOUTS` permission. When the line with the same variant will be provided multiple times, the last price will be used. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + price?: InputMaybe; + /** The number of items purchased. */ + quantity: Scalars["Int"]; + /** ID of the product variant. */ + variantId: Scalars["ID"]; +}; + +export type CheckoutLineUpdateInput = { + /** + * Custom price of the item. Can be set only by apps with `HANDLE_CHECKOUTS` permission. When the line with the same variant will be provided multiple times, the last price will be used. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + price?: InputMaybe; + /** The number of items purchased. Optional for apps, required for any other users. */ + quantity?: InputMaybe; + /** ID of the product variant. */ + variantId: Scalars["ID"]; +}; + +/** Adds a checkout line to the existing checkout.If line was already in checkout, its quantity will be increased. */ +export type CheckoutLinesAdd = { + __typename?: "CheckoutLinesAdd"; + /** An updated checkout. */ + checkout?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + checkoutErrors: Array; + errors: Array; +}; + +/** Deletes checkout lines. */ +export type CheckoutLinesDelete = { + __typename?: "CheckoutLinesDelete"; + /** An updated checkout. */ + checkout?: Maybe; + errors: Array; +}; + +/** Updates checkout line in the existing checkout. */ +export type CheckoutLinesUpdate = { + __typename?: "CheckoutLinesUpdate"; + /** An updated checkout. */ + checkout?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + checkoutErrors: Array; + errors: Array; +}; + +/** Create a new payment for given checkout. */ +export type CheckoutPaymentCreate = { + __typename?: "CheckoutPaymentCreate"; + /** Related checkout object. */ + checkout?: Maybe; + errors: Array; + /** A newly created payment. */ + payment?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + paymentErrors: Array; +}; + +/** Remove a gift card or a voucher from a checkout. */ +export type CheckoutRemovePromoCode = { + __typename?: "CheckoutRemovePromoCode"; + /** The checkout with the removed gift card or voucher. */ + checkout?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + checkoutErrors: Array; + errors: Array; +}; + +/** Update shipping address in the existing checkout. */ +export type CheckoutShippingAddressUpdate = { + __typename?: "CheckoutShippingAddressUpdate"; + /** An updated checkout. */ + checkout?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + checkoutErrors: Array; + errors: Array; +}; + +/** Updates the shipping method of the checkout. */ +export type CheckoutShippingMethodUpdate = { + __typename?: "CheckoutShippingMethodUpdate"; + /** An updated checkout. */ + checkout?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + checkoutErrors: Array; + errors: Array; +}; + +export enum CheckoutSortField { + /** Sort checkouts by creation date. */ + CreationDate = "CREATION_DATE", + /** Sort checkouts by customer. */ + Customer = "CUSTOMER", + /** Sort checkouts by payment. */ + Payment = "PAYMENT", +} + +export type CheckoutSortingInput = { + /** Specifies the direction in which to sort products. */ + direction: OrderDirection; + /** Sort checkouts by the selected field. */ + field: CheckoutSortField; +}; + +export type CheckoutUpdated = Event & { + __typename?: "CheckoutUpdated"; + /** + * The checkout the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + checkout?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type ChoiceValue = { + __typename?: "ChoiceValue"; + raw?: Maybe; + verbose?: Maybe; +}; + +/** Represents a collection of products. */ +export type Collection = Node & + ObjectWithMetadata & { + __typename?: "Collection"; + backgroundImage?: Maybe; + /** Channel given to retrieve this collection. Also used by federation gateway to resolve this object in a federated query. */ + channel?: Maybe; + /** + * List of channels in which the collection is available. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + channelListings?: Maybe>; + /** + * Description of the collection. + * + * Rich text format. For reference see https://editorjs.io/ + */ + description?: Maybe; + /** + * Description of the collection. + * + * Rich text format. For reference see https://editorjs.io/ + * @deprecated This field will be removed in Saleor 4.0. Use the `description` field instead. + */ + descriptionJson?: Maybe; + id: Scalars["ID"]; + /** List of public metadata items. Can be accessed without permissions. */ + metadata: Array; + /** + * A single key from public metadata. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafield?: Maybe; + /** + * Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafields?: Maybe; + name: Scalars["String"]; + /** List of private metadata items. Requires staff permissions to access. */ + privateMetadata: Array; + /** + * A single key from private metadata. Requires staff permissions to access. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafield?: Maybe; + /** + * Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafields?: Maybe; + /** List of products in this collection. */ + products?: Maybe; + seoDescription?: Maybe; + seoTitle?: Maybe; + slug: Scalars["String"]; + /** Returns translated collection fields for the given language code. */ + translation?: Maybe; + }; + +/** Represents a collection of products. */ +export type CollectionBackgroundImageArgs = { + size?: InputMaybe; +}; + +/** Represents a collection of products. */ +export type CollectionMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents a collection of products. */ +export type CollectionMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Represents a collection of products. */ +export type CollectionPrivateMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents a collection of products. */ +export type CollectionPrivateMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Represents a collection of products. */ +export type CollectionProductsArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + sortBy?: InputMaybe; +}; + +/** Represents a collection of products. */ +export type CollectionTranslationArgs = { + languageCode: LanguageCodeEnum; +}; + +/** + * Adds products to a collection. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type CollectionAddProducts = { + __typename?: "CollectionAddProducts"; + /** Collection to which products will be added. */ + collection?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + collectionErrors: Array; + errors: Array; +}; + +/** + * Deletes collections. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type CollectionBulkDelete = { + __typename?: "CollectionBulkDelete"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + collectionErrors: Array; + /** Returns how many objects were affected. */ + count: Scalars["Int"]; + errors: Array; +}; + +/** Represents collection channel listing. */ +export type CollectionChannelListing = Node & { + __typename?: "CollectionChannelListing"; + channel: Channel; + id: Scalars["ID"]; + isPublished: Scalars["Boolean"]; + /** @deprecated This field will be removed in Saleor 4.0. Use the `publishedAt` field to fetch the publication date. */ + publicationDate?: Maybe; + /** + * The collection publication date. + * + * Added in Saleor 3.3. + */ + publishedAt?: Maybe; +}; + +export type CollectionChannelListingError = { + __typename?: "CollectionChannelListingError"; + /** List of attributes IDs which causes the error. */ + attributes?: Maybe>; + /** List of channels IDs which causes the error. */ + channels?: Maybe>; + /** The error code. */ + code: ProductErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; + /** List of attribute values IDs which causes the error. */ + values?: Maybe>; +}; + +/** + * Manage collection's availability in channels. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type CollectionChannelListingUpdate = { + __typename?: "CollectionChannelListingUpdate"; + /** An updated collection instance. */ + collection?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + collectionChannelListingErrors: Array; + errors: Array; +}; + +export type CollectionChannelListingUpdateInput = { + /** List of channels to which the collection should be assigned. */ + addChannels?: InputMaybe>; + /** List of channels from which the collection should be unassigned. */ + removeChannels?: InputMaybe>; +}; + +export type CollectionCountableConnection = { + __typename?: "CollectionCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type CollectionCountableEdge = { + __typename?: "CollectionCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: Collection; +}; + +/** + * Creates a new collection. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type CollectionCreate = { + __typename?: "CollectionCreate"; + collection?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + collectionErrors: Array; + errors: Array; +}; + +export type CollectionCreateInput = { + /** Background image file. */ + backgroundImage?: InputMaybe; + /** Alt text for an image. */ + backgroundImageAlt?: InputMaybe; + /** + * Description of the collection. + * + * Rich text format. For reference see https://editorjs.io/ + */ + description?: InputMaybe; + /** Informs whether a collection is published. */ + isPublished?: InputMaybe; + /** Name of the collection. */ + name?: InputMaybe; + /** List of products to be added to the collection. */ + products?: InputMaybe>; + /** + * Publication date. ISO 8601 standard. + * + * DEPRECATED: this field will be removed in Saleor 4.0. + */ + publicationDate?: InputMaybe; + /** Search engine optimization fields. */ + seo?: InputMaybe; + /** Slug of the collection. */ + slug?: InputMaybe; +}; + +export type CollectionCreated = Event & { + __typename?: "CollectionCreated"; + /** + * The collection the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + collection?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type CollectionCreatedCollectionArgs = { + channel?: InputMaybe; +}; + +/** + * Deletes a collection. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type CollectionDelete = { + __typename?: "CollectionDelete"; + collection?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + collectionErrors: Array; + errors: Array; +}; + +export type CollectionDeleted = Event & { + __typename?: "CollectionDeleted"; + /** + * The collection the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + collection?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type CollectionDeletedCollectionArgs = { + channel?: InputMaybe; +}; + +export type CollectionError = { + __typename?: "CollectionError"; + /** The error code. */ + code: CollectionErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; + /** List of products IDs which causes the error. */ + products?: Maybe>; +}; + +/** An enumeration. */ +export enum CollectionErrorCode { + CannotManageProductWithoutVariant = "CANNOT_MANAGE_PRODUCT_WITHOUT_VARIANT", + DuplicatedInputItem = "DUPLICATED_INPUT_ITEM", + GraphqlError = "GRAPHQL_ERROR", + Invalid = "INVALID", + NotFound = "NOT_FOUND", + Required = "REQUIRED", + Unique = "UNIQUE", +} + +export type CollectionFilterInput = { + /** + * Specifies the channel by which the data should be filtered. + * + * DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. + */ + channel?: InputMaybe; + ids?: InputMaybe>; + metadata?: InputMaybe>; + published?: InputMaybe; + search?: InputMaybe; +}; + +export type CollectionInput = { + /** Background image file. */ + backgroundImage?: InputMaybe; + /** Alt text for an image. */ + backgroundImageAlt?: InputMaybe; + /** + * Description of the collection. + * + * Rich text format. For reference see https://editorjs.io/ + */ + description?: InputMaybe; + /** Informs whether a collection is published. */ + isPublished?: InputMaybe; + /** Name of the collection. */ + name?: InputMaybe; + /** + * Publication date. ISO 8601 standard. + * + * DEPRECATED: this field will be removed in Saleor 4.0. + */ + publicationDate?: InputMaybe; + /** Search engine optimization fields. */ + seo?: InputMaybe; + /** Slug of the collection. */ + slug?: InputMaybe; +}; + +export enum CollectionPublished { + Hidden = "HIDDEN", + Published = "PUBLISHED", +} + +/** + * Remove products from a collection. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type CollectionRemoveProducts = { + __typename?: "CollectionRemoveProducts"; + /** Collection from which products will be removed. */ + collection?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + collectionErrors: Array; + errors: Array; +}; + +/** + * Reorder the products of a collection. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type CollectionReorderProducts = { + __typename?: "CollectionReorderProducts"; + /** Collection from which products are reordered. */ + collection?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + collectionErrors: Array; + errors: Array; +}; + +export enum CollectionSortField { + /** + * Sort collections by availability. + * + * This option requires a channel filter to work as the values can vary between channels. + */ + Availability = "AVAILABILITY", + /** Sort collections by name. */ + Name = "NAME", + /** Sort collections by product count. */ + ProductCount = "PRODUCT_COUNT", + /** + * Sort collections by publication date. + * + * This option requires a channel filter to work as the values can vary between channels. + */ + PublicationDate = "PUBLICATION_DATE", + /** + * Sort collections by publication date. + * + * This option requires a channel filter to work as the values can vary between channels. + */ + PublishedAt = "PUBLISHED_AT", +} + +export type CollectionSortingInput = { + /** + * Specifies the channel in which to sort the data. + * + * DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. + */ + channel?: InputMaybe; + /** Specifies the direction in which to sort products. */ + direction: OrderDirection; + /** Sort collections by the selected field. */ + field: CollectionSortField; +}; + +export type CollectionTranslatableContent = Node & { + __typename?: "CollectionTranslatableContent"; + /** + * Represents a collection of products. + * @deprecated This field will be removed in Saleor 4.0. Get model fields from the root level queries. + */ + collection?: Maybe; + /** + * Description of the collection. + * + * Rich text format. For reference see https://editorjs.io/ + */ + description?: Maybe; + /** + * Description of the collection. + * + * Rich text format. For reference see https://editorjs.io/ + * @deprecated This field will be removed in Saleor 4.0. Use the `description` field instead. + */ + descriptionJson?: Maybe; + id: Scalars["ID"]; + name: Scalars["String"]; + seoDescription?: Maybe; + seoTitle?: Maybe; + /** Returns translated collection fields for the given language code. */ + translation?: Maybe; +}; + +export type CollectionTranslatableContentTranslationArgs = { + languageCode: LanguageCodeEnum; +}; + +/** + * Creates/updates translations for a collection. + * + * Requires one of the following permissions: MANAGE_TRANSLATIONS. + */ +export type CollectionTranslate = { + __typename?: "CollectionTranslate"; + collection?: Maybe; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + translationErrors: Array; +}; + +export type CollectionTranslation = Node & { + __typename?: "CollectionTranslation"; + /** + * Translated description of the collection. + * + * Rich text format. For reference see https://editorjs.io/ + */ + description?: Maybe; + /** + * Translated description of the collection. + * + * Rich text format. For reference see https://editorjs.io/ + * @deprecated This field will be removed in Saleor 4.0. Use the `description` field instead. + */ + descriptionJson?: Maybe; + id: Scalars["ID"]; + /** Translation language. */ + language: LanguageDisplay; + name?: Maybe; + seoDescription?: Maybe; + seoTitle?: Maybe; +}; + +/** + * Updates a collection. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type CollectionUpdate = { + __typename?: "CollectionUpdate"; + collection?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + collectionErrors: Array; + errors: Array; +}; + +export type CollectionUpdated = Event & { + __typename?: "CollectionUpdated"; + /** + * The collection the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + collection?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type CollectionUpdatedCollectionArgs = { + channel?: InputMaybe; +}; + +/** Stores information about a single configuration field. */ +export type ConfigurationItem = { + __typename?: "ConfigurationItem"; + /** Help text for the field. */ + helpText?: Maybe; + /** Label for the field. */ + label?: Maybe; + /** Name of the field. */ + name: Scalars["String"]; + /** Type of the field. */ + type?: Maybe; + /** Current value of the field. */ + value?: Maybe; +}; + +export type ConfigurationItemInput = { + /** Name of the field to update. */ + name: Scalars["String"]; + /** Value of the given field to update. */ + value?: InputMaybe; +}; + +/** An enumeration. */ +export enum ConfigurationTypeFieldEnum { + Boolean = "BOOLEAN", + Multiline = "MULTILINE", + Output = "OUTPUT", + Password = "PASSWORD", + Secret = "SECRET", + Secretmultiline = "SECRETMULTILINE", + String = "STRING", +} + +/** Confirm user account with token sent by email during registration. */ +export type ConfirmAccount = { + __typename?: "ConfirmAccount"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + errors: Array; + /** An activated user account. */ + user?: Maybe; +}; + +/** + * Confirm the email change of the logged-in user. + * + * Requires one of the following permissions: AUTHENTICATED_USER. + */ +export type ConfirmEmailChange = { + __typename?: "ConfirmEmailChange"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + errors: Array; + /** A user instance with a new email. */ + user?: Maybe; +}; + +/** An enumeration. */ +export enum CountryCode { + Ad = "AD", + Ae = "AE", + Af = "AF", + Ag = "AG", + Ai = "AI", + Al = "AL", + Am = "AM", + Ao = "AO", + Aq = "AQ", + Ar = "AR", + As = "AS", + At = "AT", + Au = "AU", + Aw = "AW", + Ax = "AX", + Az = "AZ", + Ba = "BA", + Bb = "BB", + Bd = "BD", + Be = "BE", + Bf = "BF", + Bg = "BG", + Bh = "BH", + Bi = "BI", + Bj = "BJ", + Bl = "BL", + Bm = "BM", + Bn = "BN", + Bo = "BO", + Bq = "BQ", + Br = "BR", + Bs = "BS", + Bt = "BT", + Bv = "BV", + Bw = "BW", + By = "BY", + Bz = "BZ", + Ca = "CA", + Cc = "CC", + Cd = "CD", + Cf = "CF", + Cg = "CG", + Ch = "CH", + Ci = "CI", + Ck = "CK", + Cl = "CL", + Cm = "CM", + Cn = "CN", + Co = "CO", + Cr = "CR", + Cu = "CU", + Cv = "CV", + Cw = "CW", + Cx = "CX", + Cy = "CY", + Cz = "CZ", + De = "DE", + Dj = "DJ", + Dk = "DK", + Dm = "DM", + Do = "DO", + Dz = "DZ", + Ec = "EC", + Ee = "EE", + Eg = "EG", + Eh = "EH", + Er = "ER", + Es = "ES", + Et = "ET", + Eu = "EU", + Fi = "FI", + Fj = "FJ", + Fk = "FK", + Fm = "FM", + Fo = "FO", + Fr = "FR", + Ga = "GA", + Gb = "GB", + Gd = "GD", + Ge = "GE", + Gf = "GF", + Gg = "GG", + Gh = "GH", + Gi = "GI", + Gl = "GL", + Gm = "GM", + Gn = "GN", + Gp = "GP", + Gq = "GQ", + Gr = "GR", + Gs = "GS", + Gt = "GT", + Gu = "GU", + Gw = "GW", + Gy = "GY", + Hk = "HK", + Hm = "HM", + Hn = "HN", + Hr = "HR", + Ht = "HT", + Hu = "HU", + Id = "ID", + Ie = "IE", + Il = "IL", + Im = "IM", + In = "IN", + Io = "IO", + Iq = "IQ", + Ir = "IR", + Is = "IS", + It = "IT", + Je = "JE", + Jm = "JM", + Jo = "JO", + Jp = "JP", + Ke = "KE", + Kg = "KG", + Kh = "KH", + Ki = "KI", + Km = "KM", + Kn = "KN", + Kp = "KP", + Kr = "KR", + Kw = "KW", + Ky = "KY", + Kz = "KZ", + La = "LA", + Lb = "LB", + Lc = "LC", + Li = "LI", + Lk = "LK", + Lr = "LR", + Ls = "LS", + Lt = "LT", + Lu = "LU", + Lv = "LV", + Ly = "LY", + Ma = "MA", + Mc = "MC", + Md = "MD", + Me = "ME", + Mf = "MF", + Mg = "MG", + Mh = "MH", + Mk = "MK", + Ml = "ML", + Mm = "MM", + Mn = "MN", + Mo = "MO", + Mp = "MP", + Mq = "MQ", + Mr = "MR", + Ms = "MS", + Mt = "MT", + Mu = "MU", + Mv = "MV", + Mw = "MW", + Mx = "MX", + My = "MY", + Mz = "MZ", + Na = "NA", + Nc = "NC", + Ne = "NE", + Nf = "NF", + Ng = "NG", + Ni = "NI", + Nl = "NL", + No = "NO", + Np = "NP", + Nr = "NR", + Nu = "NU", + Nz = "NZ", + Om = "OM", + Pa = "PA", + Pe = "PE", + Pf = "PF", + Pg = "PG", + Ph = "PH", + Pk = "PK", + Pl = "PL", + Pm = "PM", + Pn = "PN", + Pr = "PR", + Ps = "PS", + Pt = "PT", + Pw = "PW", + Py = "PY", + Qa = "QA", + Re = "RE", + Ro = "RO", + Rs = "RS", + Ru = "RU", + Rw = "RW", + Sa = "SA", + Sb = "SB", + Sc = "SC", + Sd = "SD", + Se = "SE", + Sg = "SG", + Sh = "SH", + Si = "SI", + Sj = "SJ", + Sk = "SK", + Sl = "SL", + Sm = "SM", + Sn = "SN", + So = "SO", + Sr = "SR", + Ss = "SS", + St = "ST", + Sv = "SV", + Sx = "SX", + Sy = "SY", + Sz = "SZ", + Tc = "TC", + Td = "TD", + Tf = "TF", + Tg = "TG", + Th = "TH", + Tj = "TJ", + Tk = "TK", + Tl = "TL", + Tm = "TM", + Tn = "TN", + To = "TO", + Tr = "TR", + Tt = "TT", + Tv = "TV", + Tw = "TW", + Tz = "TZ", + Ua = "UA", + Ug = "UG", + Um = "UM", + Us = "US", + Uy = "UY", + Uz = "UZ", + Va = "VA", + Vc = "VC", + Ve = "VE", + Vg = "VG", + Vi = "VI", + Vn = "VN", + Vu = "VU", + Wf = "WF", + Ws = "WS", + Ye = "YE", + Yt = "YT", + Za = "ZA", + Zm = "ZM", + Zw = "ZW", +} + +export type CountryDisplay = { + __typename?: "CountryDisplay"; + /** Country code. */ + code: Scalars["String"]; + /** Country name. */ + country: Scalars["String"]; + /** Country tax. */ + vat?: Maybe; +}; + +export type CountryFilterInput = { + /** Boolean for filtering countries by having shipping zone assigned.If 'true', return countries with shipping zone assigned.If 'false', return countries without any shipping zone assigned.If the argument is not provided (null), return all countries. */ + attachedToShippingZones?: InputMaybe; +}; + +/** Create JWT token. */ +export type CreateToken = { + __typename?: "CreateToken"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + /** CSRF token required to re-generate access token. */ + csrfToken?: Maybe; + errors: Array; + /** JWT refresh token, required to re-generate access token. */ + refreshToken?: Maybe; + /** JWT token, required to authenticate. */ + token?: Maybe; + /** A user instance. */ + user?: Maybe; +}; + +export type CreditCard = { + __typename?: "CreditCard"; + /** Card brand. */ + brand: Scalars["String"]; + /** Two-digit number representing the card’s expiration month. */ + expMonth?: Maybe; + /** Four-digit number representing the card’s expiration year. */ + expYear?: Maybe; + /** First 4 digits of the card number. */ + firstDigits?: Maybe; + /** Last 4 digits of the card number. */ + lastDigits: Scalars["String"]; +}; + +/** + * Deletes customers. + * + * Requires one of the following permissions: MANAGE_USERS. + */ +export type CustomerBulkDelete = { + __typename?: "CustomerBulkDelete"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + /** Returns how many objects were affected. */ + count: Scalars["Int"]; + errors: Array; +}; + +/** + * Creates a new customer. + * + * Requires one of the following permissions: MANAGE_USERS. + */ +export type CustomerCreate = { + __typename?: "CustomerCreate"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + errors: Array; + user?: Maybe; +}; + +export type CustomerCreated = Event & { + __typename?: "CustomerCreated"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** + * The user the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + user?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +/** + * Deletes a customer. + * + * Requires one of the following permissions: MANAGE_USERS. + */ +export type CustomerDelete = { + __typename?: "CustomerDelete"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + errors: Array; + user?: Maybe; +}; + +/** History log of the customer. */ +export type CustomerEvent = Node & { + __typename?: "CustomerEvent"; + /** App that performed the action. */ + app?: Maybe; + /** Number of objects concerned by the event. */ + count?: Maybe; + /** Date when event happened at in ISO 8601 format. */ + date?: Maybe; + id: Scalars["ID"]; + /** Content of the event. */ + message?: Maybe; + /** The concerned order. */ + order?: Maybe; + /** The concerned order line. */ + orderLine?: Maybe; + /** Customer event type. */ + type?: Maybe; + /** User who performed the action. */ + user?: Maybe; +}; + +/** An enumeration. */ +export enum CustomerEventsEnum { + AccountCreated = "ACCOUNT_CREATED", + CustomerDeleted = "CUSTOMER_DELETED", + DigitalLinkDownloaded = "DIGITAL_LINK_DOWNLOADED", + EmailAssigned = "EMAIL_ASSIGNED", + EmailChanged = "EMAIL_CHANGED", + EmailChangedRequest = "EMAIL_CHANGED_REQUEST", + NameAssigned = "NAME_ASSIGNED", + NoteAdded = "NOTE_ADDED", + NoteAddedToOrder = "NOTE_ADDED_TO_ORDER", + PasswordChanged = "PASSWORD_CHANGED", + PasswordReset = "PASSWORD_RESET", + PasswordResetLinkSent = "PASSWORD_RESET_LINK_SENT", + PlacedOrder = "PLACED_ORDER", +} + +export type CustomerFilterInput = { + dateJoined?: InputMaybe; + metadata?: InputMaybe>; + numberOfOrders?: InputMaybe; + placedOrders?: InputMaybe; + search?: InputMaybe; + updatedAt?: InputMaybe; +}; + +export type CustomerInput = { + /** Billing address of the customer. */ + defaultBillingAddress?: InputMaybe; + /** Shipping address of the customer. */ + defaultShippingAddress?: InputMaybe; + /** The unique email address of the user. */ + email?: InputMaybe; + /** Given name. */ + firstName?: InputMaybe; + /** User account is active. */ + isActive?: InputMaybe; + /** User language code. */ + languageCode?: InputMaybe; + /** Family name. */ + lastName?: InputMaybe; + /** A note about the user. */ + note?: InputMaybe; +}; + +/** + * Updates an existing customer. + * + * Requires one of the following permissions: MANAGE_USERS. + */ +export type CustomerUpdate = { + __typename?: "CustomerUpdate"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + errors: Array; + user?: Maybe; +}; + +export type CustomerUpdated = Event & { + __typename?: "CustomerUpdated"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** + * The user the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + user?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type DateRangeInput = { + /** Start date. */ + gte?: InputMaybe; + /** End date. */ + lte?: InputMaybe; +}; + +export type DateTimeRangeInput = { + /** Start date. */ + gte?: InputMaybe; + /** End date. */ + lte?: InputMaybe; +}; + +/** + * Deactivate all JWT tokens of the currently authenticated user. + * + * Requires one of the following permissions: AUTHENTICATED_USER. + */ +export type DeactivateAllUserTokens = { + __typename?: "DeactivateAllUserTokens"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + errors: Array; +}; + +/** Delete metadata of an object. To use it, you need to have access to the modified object. */ +export type DeleteMetadata = { + __typename?: "DeleteMetadata"; + errors: Array; + item?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + metadataErrors: Array; +}; + +/** Delete object's private metadata. To use it, you need to be an authenticated staff user or an app and have access to the modified object. */ +export type DeletePrivateMetadata = { + __typename?: "DeletePrivateMetadata"; + errors: Array; + item?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + metadataErrors: Array; +}; + +/** + * Represents a delivery method chosen for the checkout. `Warehouse` type is used when checkout is marked as "click and collect" and `ShippingMethod` otherwise. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ +export type DeliveryMethod = ShippingMethod | Warehouse; + +export type DigitalContent = Node & + ObjectWithMetadata & { + __typename?: "DigitalContent"; + automaticFulfillment: Scalars["Boolean"]; + contentFile: Scalars["String"]; + id: Scalars["ID"]; + maxDownloads?: Maybe; + /** List of public metadata items. Can be accessed without permissions. */ + metadata: Array; + /** + * A single key from public metadata. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafield?: Maybe; + /** + * Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafields?: Maybe; + /** List of private metadata items. Requires staff permissions to access. */ + privateMetadata: Array; + /** + * A single key from private metadata. Requires staff permissions to access. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafield?: Maybe; + /** + * Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafields?: Maybe; + /** Product variant assigned to digital content. */ + productVariant: ProductVariant; + urlValidDays?: Maybe; + /** List of URLs for the digital variant. */ + urls?: Maybe>; + useDefaultSettings: Scalars["Boolean"]; + }; + +export type DigitalContentMetafieldArgs = { + key: Scalars["String"]; +}; + +export type DigitalContentMetafieldsArgs = { + keys?: InputMaybe>; +}; + +export type DigitalContentPrivateMetafieldArgs = { + key: Scalars["String"]; +}; + +export type DigitalContentPrivateMetafieldsArgs = { + keys?: InputMaybe>; +}; + +export type DigitalContentCountableConnection = { + __typename?: "DigitalContentCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type DigitalContentCountableEdge = { + __typename?: "DigitalContentCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: DigitalContent; +}; + +/** + * Create new digital content. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type DigitalContentCreate = { + __typename?: "DigitalContentCreate"; + content?: Maybe; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; + variant?: Maybe; +}; + +/** + * Remove digital content assigned to given variant. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type DigitalContentDelete = { + __typename?: "DigitalContentDelete"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; + variant?: Maybe; +}; + +export type DigitalContentInput = { + /** Overwrite default automatic_fulfillment setting for variant. */ + automaticFulfillment?: InputMaybe; + /** Determines how many times a download link can be accessed by a customer. */ + maxDownloads?: InputMaybe; + /** Determines for how many days a download link is active since it was generated. */ + urlValidDays?: InputMaybe; + /** Use default digital content settings for this product. */ + useDefaultSettings: Scalars["Boolean"]; +}; + +/** + * Update digital content. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type DigitalContentUpdate = { + __typename?: "DigitalContentUpdate"; + content?: Maybe; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; + variant?: Maybe; +}; + +export type DigitalContentUploadInput = { + /** Overwrite default automatic_fulfillment setting for variant. */ + automaticFulfillment?: InputMaybe; + /** Represents an file in a multipart request. */ + contentFile: Scalars["Upload"]; + /** Determines how many times a download link can be accessed by a customer. */ + maxDownloads?: InputMaybe; + /** Determines for how many days a download link is active since it was generated. */ + urlValidDays?: InputMaybe; + /** Use default digital content settings for this product. */ + useDefaultSettings: Scalars["Boolean"]; +}; + +export type DigitalContentUrl = Node & { + __typename?: "DigitalContentUrl"; + content: DigitalContent; + created: Scalars["DateTime"]; + downloadNum: Scalars["Int"]; + id: Scalars["ID"]; + /** UUID of digital content. */ + token: Scalars["UUID"]; + /** URL for digital content. */ + url?: Maybe; +}; + +/** + * Generate new URL to digital content. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type DigitalContentUrlCreate = { + __typename?: "DigitalContentUrlCreate"; + digitalContentUrl?: Maybe; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; +}; + +export type DigitalContentUrlCreateInput = { + /** Digital content ID which URL will belong to. */ + content: Scalars["ID"]; +}; + +export type DiscountError = { + __typename?: "DiscountError"; + /** List of channels IDs which causes the error. */ + channels?: Maybe>; + /** The error code. */ + code: DiscountErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; + /** List of products IDs which causes the error. */ + products?: Maybe>; +}; + +/** An enumeration. */ +export enum DiscountErrorCode { + AlreadyExists = "ALREADY_EXISTS", + CannotManageProductWithoutVariant = "CANNOT_MANAGE_PRODUCT_WITHOUT_VARIANT", + DuplicatedInputItem = "DUPLICATED_INPUT_ITEM", + GraphqlError = "GRAPHQL_ERROR", + Invalid = "INVALID", + NotFound = "NOT_FOUND", + Required = "REQUIRED", + Unique = "UNIQUE", +} + +export enum DiscountStatusEnum { + Active = "ACTIVE", + Expired = "EXPIRED", + Scheduled = "SCHEDULED", +} + +export enum DiscountValueTypeEnum { + Fixed = "FIXED", + Percentage = "PERCENTAGE", +} + +/** An enumeration. */ +export enum DistanceUnitsEnum { + Cm = "CM", + Ft = "FT", + Inch = "INCH", + Km = "KM", + M = "M", + Yd = "YD", +} + +/** Represents shop's domain. */ +export type Domain = { + __typename?: "Domain"; + /** The host name of the domain. */ + host: Scalars["String"]; + /** Inform if SSL is enabled. */ + sslEnabled: Scalars["Boolean"]; + /** Shop's absolute URL. */ + url: Scalars["String"]; +}; + +/** + * Deletes draft orders. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type DraftOrderBulkDelete = { + __typename?: "DraftOrderBulkDelete"; + /** Returns how many objects were affected. */ + count: Scalars["Int"]; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; +}; + +/** + * Completes creating an order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type DraftOrderComplete = { + __typename?: "DraftOrderComplete"; + errors: Array; + /** Completed order. */ + order?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; +}; + +/** + * Creates a new draft order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type DraftOrderCreate = { + __typename?: "DraftOrderCreate"; + errors: Array; + order?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; +}; + +export type DraftOrderCreateInput = { + /** Billing address of the customer. */ + billingAddress?: InputMaybe; + /** ID of the channel associated with the order. */ + channelId?: InputMaybe; + /** A note from a customer. Visible by customers in the order summary. */ + customerNote?: InputMaybe; + /** Discount amount for the order. */ + discount?: InputMaybe; + /** Variant line input consisting of variant ID and quantity of products. */ + lines?: InputMaybe>; + /** URL of a view where users should be redirected to see the order details. URL in RFC 1808 format. */ + redirectUrl?: InputMaybe; + /** Shipping address of the customer. */ + shippingAddress?: InputMaybe; + /** ID of a selected shipping method. */ + shippingMethod?: InputMaybe; + /** Customer associated with the draft order. */ + user?: InputMaybe; + /** Email address of the customer. */ + userEmail?: InputMaybe; + /** ID of the voucher associated with the order. */ + voucher?: InputMaybe; +}; + +export type DraftOrderCreated = Event & { + __typename?: "DraftOrderCreated"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The order the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + order?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +/** + * Deletes a draft order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type DraftOrderDelete = { + __typename?: "DraftOrderDelete"; + errors: Array; + order?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; +}; + +export type DraftOrderDeleted = Event & { + __typename?: "DraftOrderDeleted"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The order the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + order?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type DraftOrderInput = { + /** Billing address of the customer. */ + billingAddress?: InputMaybe; + /** ID of the channel associated with the order. */ + channelId?: InputMaybe; + /** A note from a customer. Visible by customers in the order summary. */ + customerNote?: InputMaybe; + /** Discount amount for the order. */ + discount?: InputMaybe; + /** URL of a view where users should be redirected to see the order details. URL in RFC 1808 format. */ + redirectUrl?: InputMaybe; + /** Shipping address of the customer. */ + shippingAddress?: InputMaybe; + /** ID of a selected shipping method. */ + shippingMethod?: InputMaybe; + /** Customer associated with the draft order. */ + user?: InputMaybe; + /** Email address of the customer. */ + userEmail?: InputMaybe; + /** ID of the voucher associated with the order. */ + voucher?: InputMaybe; +}; + +/** + * Deletes order lines. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type DraftOrderLinesBulkDelete = { + __typename?: "DraftOrderLinesBulkDelete"; + /** Returns how many objects were affected. */ + count: Scalars["Int"]; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; +}; + +/** + * Updates a draft order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type DraftOrderUpdate = { + __typename?: "DraftOrderUpdate"; + errors: Array; + order?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; +}; + +export type DraftOrderUpdated = Event & { + __typename?: "DraftOrderUpdated"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The order the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + order?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type Event = { + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +/** Event delivery. */ +export type EventDelivery = Node & { + __typename?: "EventDelivery"; + /** Event delivery attempts. */ + attempts?: Maybe; + createdAt: Scalars["DateTime"]; + /** Webhook event type. */ + eventType: WebhookEventTypeEnum; + id: Scalars["ID"]; + /** Event payload. */ + payload?: Maybe; + /** Event delivery status. */ + status: EventDeliveryStatusEnum; +}; + +/** Event delivery. */ +export type EventDeliveryAttemptsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + sortBy?: InputMaybe; +}; + +/** Event delivery attempts. */ +export type EventDeliveryAttempt = Node & { + __typename?: "EventDeliveryAttempt"; + /** Event delivery creation date and time. */ + createdAt: Scalars["DateTime"]; + /** Delivery attempt duration. */ + duration?: Maybe; + id: Scalars["ID"]; + /** Request headers for delivery attempt. */ + requestHeaders?: Maybe; + /** Delivery attempt response content. */ + response?: Maybe; + /** Response headers for delivery attempt. */ + responseHeaders?: Maybe; + /** Delivery attempt response status code. */ + responseStatusCode?: Maybe; + /** Event delivery status. */ + status: EventDeliveryStatusEnum; + /** Task id for delivery attempt. */ + taskId?: Maybe; +}; + +export type EventDeliveryAttemptCountableConnection = { + __typename?: "EventDeliveryAttemptCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type EventDeliveryAttemptCountableEdge = { + __typename?: "EventDeliveryAttemptCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: EventDeliveryAttempt; +}; + +export enum EventDeliveryAttemptSortField { + /** Sort event delivery attempts by created at. */ + CreatedAt = "CREATED_AT", +} + +export type EventDeliveryAttemptSortingInput = { + /** Specifies the direction in which to sort products. */ + direction: OrderDirection; + /** Sort attempts by the selected field. */ + field: EventDeliveryAttemptSortField; +}; + +export type EventDeliveryCountableConnection = { + __typename?: "EventDeliveryCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type EventDeliveryCountableEdge = { + __typename?: "EventDeliveryCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: EventDelivery; +}; + +export type EventDeliveryFilterInput = { + eventType?: InputMaybe; + status?: InputMaybe; +}; + +/** + * Retries event delivery. + * + * Requires one of the following permissions: MANAGE_APPS. + */ +export type EventDeliveryRetry = { + __typename?: "EventDeliveryRetry"; + /** Event delivery. */ + delivery?: Maybe; + errors: Array; +}; + +export enum EventDeliverySortField { + /** Sort event deliveries by created at. */ + CreatedAt = "CREATED_AT", +} + +export type EventDeliverySortingInput = { + /** Specifies the direction in which to sort products. */ + direction: OrderDirection; + /** Sort deliveries by the selected field. */ + field: EventDeliverySortField; +}; + +export enum EventDeliveryStatusEnum { + Failed = "FAILED", + Pending = "PENDING", + Success = "SUCCESS", +} + +export type ExportError = { + __typename?: "ExportError"; + /** The error code. */ + code: ExportErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; +}; + +/** An enumeration. */ +export enum ExportErrorCode { + GraphqlError = "GRAPHQL_ERROR", + Invalid = "INVALID", + NotFound = "NOT_FOUND", + Required = "REQUIRED", +} + +/** History log of export file. */ +export type ExportEvent = Node & { + __typename?: "ExportEvent"; + /** App which performed the action. Requires one of the following permissions: OWNER, MANAGE_APPS. */ + app?: Maybe; + /** Date when event happened at in ISO 8601 format. */ + date: Scalars["DateTime"]; + /** The ID of the object. */ + id: Scalars["ID"]; + /** Content of the event. */ + message: Scalars["String"]; + /** Export event type. */ + type: ExportEventsEnum; + /** User who performed the action. Requires one of the following permissions: OWNER, MANAGE_STAFF. */ + user?: Maybe; +}; + +/** An enumeration. */ +export enum ExportEventsEnum { + ExportedFileSent = "EXPORTED_FILE_SENT", + ExportDeleted = "EXPORT_DELETED", + ExportFailed = "EXPORT_FAILED", + ExportFailedInfoSent = "EXPORT_FAILED_INFO_SENT", + ExportPending = "EXPORT_PENDING", + ExportSuccess = "EXPORT_SUCCESS", +} + +/** Represents a job data of exported file. */ +export type ExportFile = Job & + Node & { + __typename?: "ExportFile"; + app?: Maybe; + /** Created date time of job in ISO 8601 format. */ + createdAt: Scalars["DateTime"]; + /** List of events associated with the export. */ + events?: Maybe>; + id: Scalars["ID"]; + /** Job message. */ + message?: Maybe; + /** Job status. */ + status: JobStatusEnum; + /** Date time of job last update in ISO 8601 format. */ + updatedAt: Scalars["DateTime"]; + /** The URL of field to download. */ + url?: Maybe; + user?: Maybe; + }; + +export type ExportFileCountableConnection = { + __typename?: "ExportFileCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type ExportFileCountableEdge = { + __typename?: "ExportFileCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: ExportFile; +}; + +export type ExportFileFilterInput = { + app?: InputMaybe; + createdAt?: InputMaybe; + status?: InputMaybe; + updatedAt?: InputMaybe; + user?: InputMaybe; +}; + +export enum ExportFileSortField { + CreatedAt = "CREATED_AT", + LastModifiedAt = "LAST_MODIFIED_AT", + Status = "STATUS", + UpdatedAt = "UPDATED_AT", +} + +export type ExportFileSortingInput = { + /** Specifies the direction in which to sort products. */ + direction: OrderDirection; + /** Sort export file by the selected field. */ + field: ExportFileSortField; +}; + +/** + * Export gift cards to csv file. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ +export type ExportGiftCards = { + __typename?: "ExportGiftCards"; + errors: Array; + /** The newly created export file job which is responsible for export data. */ + exportFile?: Maybe; +}; + +export type ExportGiftCardsInput = { + /** Type of exported file. */ + fileType: FileTypesEnum; + /** Filtering options for gift cards. */ + filter?: InputMaybe; + /** List of gift cards IDs to export. */ + ids?: InputMaybe>; + /** Determine which gift cards should be exported. */ + scope: ExportScope; +}; + +export type ExportInfoInput = { + /** List of attribute ids witch should be exported. */ + attributes?: InputMaybe>; + /** List of channels ids which should be exported. */ + channels?: InputMaybe>; + /** List of product fields witch should be exported. */ + fields?: InputMaybe>; + /** List of warehouse ids witch should be exported. */ + warehouses?: InputMaybe>; +}; + +/** + * Export products to csv file. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type ExportProducts = { + __typename?: "ExportProducts"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + exportErrors: Array; + /** The newly created export file job which is responsible for export data. */ + exportFile?: Maybe; +}; + +export type ExportProductsInput = { + /** Input with info about fields which should be exported. */ + exportInfo?: InputMaybe; + /** Type of exported file. */ + fileType: FileTypesEnum; + /** Filtering options for products. */ + filter?: InputMaybe; + /** List of products IDs to export. */ + ids?: InputMaybe>; + /** Determine which products should be exported. */ + scope: ExportScope; +}; + +export enum ExportScope { + /** Export all products. */ + All = "ALL", + /** Export the filtered products. */ + Filter = "FILTER", + /** Export products with given ids. */ + Ids = "IDS", +} + +export type ExternalAuthentication = { + __typename?: "ExternalAuthentication"; + /** ID of external authentication plugin. */ + id: Scalars["String"]; + /** Name of external authentication plugin. */ + name?: Maybe; +}; + +/** Prepare external authentication url for user by custom plugin. */ +export type ExternalAuthenticationUrl = { + __typename?: "ExternalAuthenticationUrl"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + /** The data returned by authentication plugin. */ + authenticationData?: Maybe; + errors: Array; +}; + +/** Logout user by custom plugin. */ +export type ExternalLogout = { + __typename?: "ExternalLogout"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + errors: Array; + /** The data returned by authentication plugin. */ + logoutData?: Maybe; +}; + +export type ExternalNotificationError = { + __typename?: "ExternalNotificationError"; + /** The error code. */ + code: ExternalNotificationErrorCodes; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; +}; + +/** An enumeration. */ +export enum ExternalNotificationErrorCodes { + ChannelInactive = "CHANNEL_INACTIVE", + InvalidModelType = "INVALID_MODEL_TYPE", + NotFound = "NOT_FOUND", + Required = "REQUIRED", +} + +/** + * Trigger sending a notification with the notify plugin method. Serializes nodes provided as ids parameter and includes this data in the notification payload. + * + * Added in Saleor 3.1. + */ +export type ExternalNotificationTrigger = { + __typename?: "ExternalNotificationTrigger"; + errors: Array; +}; + +export type ExternalNotificationTriggerInput = { + /** External event type. This field is passed to a plugin as an event type. */ + externalEventType: Scalars["String"]; + /** Additional payload that will be merged with the one based on the bussines object ID. */ + extraPayload?: InputMaybe; + /** The list of customers or orders node IDs that will be serialized and included in the notification payload. */ + ids: Array; +}; + +/** Obtain external access tokens for user by custom plugin. */ +export type ExternalObtainAccessTokens = { + __typename?: "ExternalObtainAccessTokens"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + /** CSRF token required to re-generate external access token. */ + csrfToken?: Maybe; + errors: Array; + /** The refresh token, required to re-generate external access token. */ + refreshToken?: Maybe; + /** The token, required to authenticate. */ + token?: Maybe; + /** A user instance. */ + user?: Maybe; +}; + +/** Refresh user's access by custom plugin. */ +export type ExternalRefresh = { + __typename?: "ExternalRefresh"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + /** CSRF token required to re-generate external access token. */ + csrfToken?: Maybe; + errors: Array; + /** The refresh token, required to re-generate external access token. */ + refreshToken?: Maybe; + /** The token, required to authenticate. */ + token?: Maybe; + /** A user instance. */ + user?: Maybe; +}; + +/** Verify external authentication data by plugin. */ +export type ExternalVerify = { + __typename?: "ExternalVerify"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + errors: Array; + /** Determine if authentication data is valid or not. */ + isValid: Scalars["Boolean"]; + /** User assigned to data. */ + user?: Maybe; + /** External data. */ + verifyData?: Maybe; +}; + +export type File = { + __typename?: "File"; + /** Content type of the file. */ + contentType?: Maybe; + /** The URL of the file. */ + url: Scalars["String"]; +}; + +/** An enumeration. */ +export enum FileTypesEnum { + Csv = "CSV", + Xlsx = "XLSX", +} + +/** + * Upload a file. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + * + * Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER. + */ +export type FileUpload = { + __typename?: "FileUpload"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + uploadErrors: Array; + uploadedFile?: Maybe; +}; + +/** Represents order fulfillment. */ +export type Fulfillment = Node & + ObjectWithMetadata & { + __typename?: "Fulfillment"; + created: Scalars["DateTime"]; + fulfillmentOrder: Scalars["Int"]; + id: Scalars["ID"]; + /** List of lines for the fulfillment. */ + lines?: Maybe>; + /** List of public metadata items. Can be accessed without permissions. */ + metadata: Array; + /** + * A single key from public metadata. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafield?: Maybe; + /** + * Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafields?: Maybe; + /** List of private metadata items. Requires staff permissions to access. */ + privateMetadata: Array; + /** + * A single key from private metadata. Requires staff permissions to access. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafield?: Maybe; + /** + * Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafields?: Maybe; + status: FulfillmentStatus; + /** User-friendly fulfillment status. */ + statusDisplay?: Maybe; + trackingNumber: Scalars["String"]; + /** Warehouse from fulfillment was fulfilled. */ + warehouse?: Maybe; + }; + +/** Represents order fulfillment. */ +export type FulfillmentMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents order fulfillment. */ +export type FulfillmentMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Represents order fulfillment. */ +export type FulfillmentPrivateMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents order fulfillment. */ +export type FulfillmentPrivateMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** + * Approve existing fulfillment. + * + * Added in Saleor 3.1. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type FulfillmentApprove = { + __typename?: "FulfillmentApprove"; + errors: Array; + /** An approved fulfillment. */ + fulfillment?: Maybe; + /** Order which fulfillment was approved. */ + order?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; +}; + +/** + * Cancels existing fulfillment and optionally restocks items. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type FulfillmentCancel = { + __typename?: "FulfillmentCancel"; + errors: Array; + /** A canceled fulfillment. */ + fulfillment?: Maybe; + /** Order which fulfillment was cancelled. */ + order?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; +}; + +export type FulfillmentCancelInput = { + /** ID of a warehouse where items will be restocked. Optional when fulfillment is in WAITING_FOR_APPROVAL state. */ + warehouseId?: InputMaybe; +}; + +export type FulfillmentCanceled = Event & { + __typename?: "FulfillmentCanceled"; + /** + * The fulfillment the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + fulfillment?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The order the fulfillment belongs to. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + order?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type FulfillmentCreated = Event & { + __typename?: "FulfillmentCreated"; + /** + * The fulfillment the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + fulfillment?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The order the fulfillment belongs to. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + order?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +/** Represents line of the fulfillment. */ +export type FulfillmentLine = Node & { + __typename?: "FulfillmentLine"; + id: Scalars["ID"]; + orderLine?: Maybe; + quantity: Scalars["Int"]; +}; + +/** + * Refund products. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type FulfillmentRefundProducts = { + __typename?: "FulfillmentRefundProducts"; + errors: Array; + /** A refunded fulfillment. */ + fulfillment?: Maybe; + /** Order which fulfillment was refunded. */ + order?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; +}; + +/** + * Return products. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type FulfillmentReturnProducts = { + __typename?: "FulfillmentReturnProducts"; + errors: Array; + /** Order which fulfillment was returned. */ + order?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; + /** A replace fulfillment. */ + replaceFulfillment?: Maybe; + /** A draft order which was created for products with replace flag. */ + replaceOrder?: Maybe; + /** A return fulfillment. */ + returnFulfillment?: Maybe; +}; + +/** An enumeration. */ +export enum FulfillmentStatus { + Canceled = "CANCELED", + Fulfilled = "FULFILLED", + Refunded = "REFUNDED", + RefundedAndReturned = "REFUNDED_AND_RETURNED", + Replaced = "REPLACED", + Returned = "RETURNED", + WaitingForApproval = "WAITING_FOR_APPROVAL", +} + +/** + * Updates a fulfillment for an order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type FulfillmentUpdateTracking = { + __typename?: "FulfillmentUpdateTracking"; + errors: Array; + /** A fulfillment with updated tracking. */ + fulfillment?: Maybe; + /** Order for which fulfillment was updated. */ + order?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; +}; + +export type FulfillmentUpdateTrackingInput = { + /** If true, send an email notification to the customer. */ + notifyCustomer?: InputMaybe; + /** Fulfillment tracking number. */ + trackingNumber?: InputMaybe; +}; + +/** Payment gateway client configuration key and value pair. */ +export type GatewayConfigLine = { + __typename?: "GatewayConfigLine"; + /** Gateway config key. */ + field: Scalars["String"]; + /** Gateway config value for key. */ + value?: Maybe; +}; + +/** A gift card is a prepaid electronic payment card accepted in stores. They can be used during checkout by providing a valid gift card codes. */ +export type GiftCard = Node & + ObjectWithMetadata & { + __typename?: "GiftCard"; + /** + * App which created the gift card. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: MANAGE_APPS, OWNER. + */ + app?: Maybe; + /** + * Slug of the channel where the gift card was bought. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + boughtInChannel?: Maybe; + /** Gift card code. Can be fetched by a staff member with MANAGE_GIFT_CARD when gift card wasn't yet used and by the gift card owner. */ + code: Scalars["String"]; + created: Scalars["DateTime"]; + /** + * The user who bought or issued a gift card. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + createdBy?: Maybe; + /** + * Email address of the user who bought or issued gift card. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: MANAGE_USERS, OWNER. + */ + createdByEmail?: Maybe; + currentBalance?: Maybe; + /** Code in format which allows displaying in a user interface. */ + displayCode: Scalars["String"]; + /** + * End date of gift card. + * @deprecated This field will be removed in Saleor 4.0. Use `expiryDate` field instead. + */ + endDate?: Maybe; + /** + * List of events associated with the gift card. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ + events: Array; + expiryDate?: Maybe; + id: Scalars["ID"]; + initialBalance?: Maybe; + isActive: Scalars["Boolean"]; + /** Last 4 characters of gift card code. */ + last4CodeChars: Scalars["String"]; + lastUsedOn?: Maybe; + /** List of public metadata items. Can be accessed without permissions. */ + metadata: Array; + /** + * A single key from public metadata. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafield?: Maybe; + /** + * Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafields?: Maybe; + /** List of private metadata items. Requires staff permissions to access. */ + privateMetadata: Array; + /** + * A single key from private metadata. Requires staff permissions to access. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafield?: Maybe; + /** + * Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafields?: Maybe; + /** + * Related gift card product. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + product?: Maybe; + /** + * Start date of gift card. + * @deprecated This field will be removed in Saleor 4.0. + */ + startDate?: Maybe; + /** + * The gift card tag. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ + tags: Array; + /** + * The customer who used a gift card. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + usedBy?: Maybe; + /** + * Email address of the customer who used a gift card. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + usedByEmail?: Maybe; + /** + * The customer who bought a gift card. + * @deprecated This field will be removed in Saleor 4.0. Use `createdBy` field instead. + */ + user?: Maybe; + }; + +/** A gift card is a prepaid electronic payment card accepted in stores. They can be used during checkout by providing a valid gift card codes. */ +export type GiftCardEventsArgs = { + filter?: InputMaybe; +}; + +/** A gift card is a prepaid electronic payment card accepted in stores. They can be used during checkout by providing a valid gift card codes. */ +export type GiftCardMetafieldArgs = { + key: Scalars["String"]; +}; + +/** A gift card is a prepaid electronic payment card accepted in stores. They can be used during checkout by providing a valid gift card codes. */ +export type GiftCardMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** A gift card is a prepaid electronic payment card accepted in stores. They can be used during checkout by providing a valid gift card codes. */ +export type GiftCardPrivateMetafieldArgs = { + key: Scalars["String"]; +}; + +/** A gift card is a prepaid electronic payment card accepted in stores. They can be used during checkout by providing a valid gift card codes. */ +export type GiftCardPrivateMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** + * Activate a gift card. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ +export type GiftCardActivate = { + __typename?: "GiftCardActivate"; + errors: Array; + /** Activated gift card. */ + giftCard?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + giftCardErrors: Array; +}; + +/** + * Adds note to the gift card. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ +export type GiftCardAddNote = { + __typename?: "GiftCardAddNote"; + errors: Array; + /** Gift card note created. */ + event?: Maybe; + /** Gift card with the note added. */ + giftCard?: Maybe; +}; + +export type GiftCardAddNoteInput = { + /** Note message. */ + message: Scalars["String"]; +}; + +/** + * Activate gift cards. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ +export type GiftCardBulkActivate = { + __typename?: "GiftCardBulkActivate"; + /** Returns how many objects were affected. */ + count: Scalars["Int"]; + errors: Array; +}; + +/** + * Create gift cards. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ +export type GiftCardBulkCreate = { + __typename?: "GiftCardBulkCreate"; + /** Returns how many objects were created. */ + count: Scalars["Int"]; + errors: Array; + /** List of created gift cards. */ + giftCards: Array; +}; + +export type GiftCardBulkCreateInput = { + /** Balance of the gift card. */ + balance: PriceInput; + /** The number of cards to issue. */ + count: Scalars["Int"]; + /** The gift card expiry date. */ + expiryDate?: InputMaybe; + /** Determine if gift card is active. */ + isActive: Scalars["Boolean"]; + /** The gift card tags. */ + tags?: InputMaybe>; +}; + +/** + * Deactivate gift cards. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ +export type GiftCardBulkDeactivate = { + __typename?: "GiftCardBulkDeactivate"; + /** Returns how many objects were affected. */ + count: Scalars["Int"]; + errors: Array; +}; + +/** + * Delete gift cards. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ +export type GiftCardBulkDelete = { + __typename?: "GiftCardBulkDelete"; + /** Returns how many objects were affected. */ + count: Scalars["Int"]; + errors: Array; +}; + +export type GiftCardCountableConnection = { + __typename?: "GiftCardCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type GiftCardCountableEdge = { + __typename?: "GiftCardCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: GiftCard; +}; + +/** + * Creates a new gift card. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ +export type GiftCardCreate = { + __typename?: "GiftCardCreate"; + errors: Array; + giftCard?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + giftCardErrors: Array; +}; + +export type GiftCardCreateInput = { + /** + * The gift card tags to add. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + addTags?: InputMaybe>; + /** Balance of the gift card. */ + balance: PriceInput; + /** + * Slug of a channel from which the email should be sent. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + channel?: InputMaybe; + /** + * Code to use the gift card. + * + * DEPRECATED: this field will be removed in Saleor 4.0. The code is now auto generated. + */ + code?: InputMaybe; + /** + * End date of the gift card in ISO 8601 format. + * + * DEPRECATED: this field will be removed in Saleor 4.0. Use `expiryDate` from `expirySettings` instead. + */ + endDate?: InputMaybe; + /** + * The gift card expiry date. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + expiryDate?: InputMaybe; + /** + * Determine if gift card is active. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + isActive: Scalars["Boolean"]; + /** + * The gift card note from the staff member. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + note?: InputMaybe; + /** + * Start date of the gift card in ISO 8601 format. + * + * DEPRECATED: this field will be removed in Saleor 4.0. + */ + startDate?: InputMaybe; + /** Email of the customer to whom gift card will be sent. */ + userEmail?: InputMaybe; +}; + +export type GiftCardCreated = Event & { + __typename?: "GiftCardCreated"; + /** + * The gift card the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + giftCard?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +/** + * Deactivate a gift card. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ +export type GiftCardDeactivate = { + __typename?: "GiftCardDeactivate"; + errors: Array; + /** Deactivated gift card. */ + giftCard?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + giftCardErrors: Array; +}; + +/** + * Delete gift card. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ +export type GiftCardDelete = { + __typename?: "GiftCardDelete"; + errors: Array; + giftCard?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + giftCardErrors: Array; +}; + +export type GiftCardDeleted = Event & { + __typename?: "GiftCardDeleted"; + /** + * The gift card the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + giftCard?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type GiftCardError = { + __typename?: "GiftCardError"; + /** The error code. */ + code: GiftCardErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; + /** List of tag values that cause the error. */ + tags?: Maybe>; +}; + +/** An enumeration. */ +export enum GiftCardErrorCode { + AlreadyExists = "ALREADY_EXISTS", + DuplicatedInputItem = "DUPLICATED_INPUT_ITEM", + ExpiredGiftCard = "EXPIRED_GIFT_CARD", + GraphqlError = "GRAPHQL_ERROR", + Invalid = "INVALID", + NotFound = "NOT_FOUND", + Required = "REQUIRED", + Unique = "UNIQUE", +} + +/** + * History log of the gift card. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ +export type GiftCardEvent = Node & { + __typename?: "GiftCardEvent"; + /** App that performed the action. Requires one of the following permissions: MANAGE_APPS, OWNER. */ + app?: Maybe; + /** The gift card balance. */ + balance?: Maybe; + /** Date when event happened at in ISO 8601 format. */ + date?: Maybe; + /** Email of the customer. */ + email?: Maybe; + /** The gift card expiry date. */ + expiryDate?: Maybe; + id: Scalars["ID"]; + /** Content of the event. */ + message?: Maybe; + /** Previous gift card expiry date. */ + oldExpiryDate?: Maybe; + /** The list of old gift card tags. */ + oldTags?: Maybe>; + /** The order ID where gift card was used or bought. */ + orderId?: Maybe; + /** User-friendly number of an order where gift card was used or bought. */ + orderNumber?: Maybe; + /** The list of gift card tags. */ + tags?: Maybe>; + /** Gift card event type. */ + type?: Maybe; + /** User who performed the action. Requires one of the following permissions: MANAGE_USERS, MANAGE_STAFF, OWNER. */ + user?: Maybe; +}; + +export type GiftCardEventBalance = { + __typename?: "GiftCardEventBalance"; + /** Current balance of the gift card. */ + currentBalance: Money; + /** Initial balance of the gift card. */ + initialBalance?: Maybe; + /** Previous current balance of the gift card. */ + oldCurrentBalance?: Maybe; + /** Previous initial balance of the gift card. */ + oldInitialBalance?: Maybe; +}; + +export type GiftCardEventFilterInput = { + orders?: InputMaybe>; + type?: InputMaybe; +}; + +/** An enumeration. */ +export enum GiftCardEventsEnum { + Activated = "ACTIVATED", + BalanceReset = "BALANCE_RESET", + Bought = "BOUGHT", + Deactivated = "DEACTIVATED", + ExpiryDateUpdated = "EXPIRY_DATE_UPDATED", + Issued = "ISSUED", + NoteAdded = "NOTE_ADDED", + Resent = "RESENT", + SentToCustomer = "SENT_TO_CUSTOMER", + TagsUpdated = "TAGS_UPDATED", + Updated = "UPDATED", + UsedInOrder = "USED_IN_ORDER", +} + +export type GiftCardFilterInput = { + code?: InputMaybe; + currency?: InputMaybe; + currentBalance?: InputMaybe; + initialBalance?: InputMaybe; + isActive?: InputMaybe; + metadata?: InputMaybe>; + products?: InputMaybe>; + tags?: InputMaybe>; + used?: InputMaybe; + usedBy?: InputMaybe>; +}; + +/** + * Resend a gift card. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ +export type GiftCardResend = { + __typename?: "GiftCardResend"; + errors: Array; + /** Gift card which has been sent. */ + giftCard?: Maybe; +}; + +export type GiftCardResendInput = { + /** Slug of a channel from which the email should be sent. */ + channel: Scalars["String"]; + /** Email to which gift card should be send. */ + email?: InputMaybe; + /** ID of a gift card to resend. */ + id: Scalars["ID"]; +}; + +/** Gift card related settings from site settings. */ +export type GiftCardSettings = { + __typename?: "GiftCardSettings"; + /** The gift card expiry period settings. */ + expiryPeriod?: Maybe; + /** The gift card expiry type settings. */ + expiryType: GiftCardSettingsExpiryTypeEnum; +}; + +export type GiftCardSettingsError = { + __typename?: "GiftCardSettingsError"; + /** The error code. */ + code: GiftCardSettingsErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; +}; + +/** An enumeration. */ +export enum GiftCardSettingsErrorCode { + GraphqlError = "GRAPHQL_ERROR", + Invalid = "INVALID", + Required = "REQUIRED", +} + +/** An enumeration. */ +export enum GiftCardSettingsExpiryTypeEnum { + ExpiryPeriod = "EXPIRY_PERIOD", + NeverExpire = "NEVER_EXPIRE", +} + +/** + * Update gift card settings. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ +export type GiftCardSettingsUpdate = { + __typename?: "GiftCardSettingsUpdate"; + errors: Array; + /** Gift card settings. */ + giftCardSettings?: Maybe; +}; + +export type GiftCardSettingsUpdateInput = { + /** Defines gift card expiry period. */ + expiryPeriod?: InputMaybe; + /** Defines gift card default expiry settings. */ + expiryType?: InputMaybe; +}; + +export enum GiftCardSortField { + /** Sort orders by current balance. */ + CurrentBalance = "CURRENT_BALANCE", + /** Sort orders by product. */ + Product = "PRODUCT", + /** Sort orders by used by. */ + UsedBy = "USED_BY", +} + +export type GiftCardSortingInput = { + /** Specifies the direction in which to sort products. */ + direction: OrderDirection; + /** Sort gift cards by the selected field. */ + field: GiftCardSortField; +}; + +export type GiftCardStatusChanged = Event & { + __typename?: "GiftCardStatusChanged"; + /** + * The gift card the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + giftCard?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +/** + * The gift card tag. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ +export type GiftCardTag = Node & { + __typename?: "GiftCardTag"; + id: Scalars["ID"]; + name: Scalars["String"]; +}; + +export type GiftCardTagCountableConnection = { + __typename?: "GiftCardTagCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type GiftCardTagCountableEdge = { + __typename?: "GiftCardTagCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: GiftCardTag; +}; + +export type GiftCardTagFilterInput = { + search?: InputMaybe; +}; + +/** + * Update a gift card. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ +export type GiftCardUpdate = { + __typename?: "GiftCardUpdate"; + errors: Array; + giftCard?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + giftCardErrors: Array; +}; + +export type GiftCardUpdateInput = { + /** + * The gift card tags to add. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + addTags?: InputMaybe>; + /** + * The gift card balance amount. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + balanceAmount?: InputMaybe; + /** + * End date of the gift card in ISO 8601 format. + * + * DEPRECATED: this field will be removed in Saleor 4.0. Use `expiryDate` from `expirySettings` instead. + */ + endDate?: InputMaybe; + /** + * The gift card expiry date. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + expiryDate?: InputMaybe; + /** + * The gift card tags to remove. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + removeTags?: InputMaybe>; + /** + * Start date of the gift card in ISO 8601 format. + * + * DEPRECATED: this field will be removed in Saleor 4.0. + */ + startDate?: InputMaybe; +}; + +export type GiftCardUpdated = Event & { + __typename?: "GiftCardUpdated"; + /** + * The gift card the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + giftCard?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +/** Represents permission group data. */ +export type Group = Node & { + __typename?: "Group"; + id: Scalars["ID"]; + name: Scalars["String"]; + /** List of group permissions */ + permissions?: Maybe>; + /** True, if the currently authenticated user has rights to manage a group. */ + userCanManage: Scalars["Boolean"]; + /** + * List of group users + * + * Requires one of the following permissions: MANAGE_STAFF. + */ + users?: Maybe>; +}; + +export type GroupCountableConnection = { + __typename?: "GroupCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type GroupCountableEdge = { + __typename?: "GroupCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: Group; +}; + +/** Represents an image. */ +export type Image = { + __typename?: "Image"; + /** Alt text for an image. */ + alt?: Maybe; + /** The URL of the image. */ + url: Scalars["String"]; +}; + +export type IntRangeInput = { + /** Value greater than or equal to. */ + gte?: InputMaybe; + /** Value less than or equal to. */ + lte?: InputMaybe; +}; + +/** Represents an Invoice. */ +export type Invoice = Job & + Node & + ObjectWithMetadata & { + __typename?: "Invoice"; + createdAt: Scalars["DateTime"]; + externalUrl?: Maybe; + /** The ID of the object. */ + id: Scalars["ID"]; + message?: Maybe; + /** List of public metadata items. Can be accessed without permissions. */ + metadata: Array; + /** + * A single key from public metadata. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafield?: Maybe; + /** + * Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafields?: Maybe; + number?: Maybe; + /** List of private metadata items. Requires staff permissions to access. */ + privateMetadata: Array; + /** + * A single key from private metadata. Requires staff permissions to access. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafield?: Maybe; + /** + * Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafields?: Maybe; + /** Job status. */ + status: JobStatusEnum; + updatedAt: Scalars["DateTime"]; + /** URL to download an invoice. */ + url?: Maybe; + }; + +/** Represents an Invoice. */ +export type InvoiceMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents an Invoice. */ +export type InvoiceMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Represents an Invoice. */ +export type InvoicePrivateMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents an Invoice. */ +export type InvoicePrivateMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** + * Creates a ready to send invoice. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type InvoiceCreate = { + __typename?: "InvoiceCreate"; + errors: Array; + invoice?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + invoiceErrors: Array; +}; + +export type InvoiceCreateInput = { + /** Invoice number. */ + number: Scalars["String"]; + /** URL of an invoice to download. */ + url: Scalars["String"]; +}; + +/** + * Deletes an invoice. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type InvoiceDelete = { + __typename?: "InvoiceDelete"; + errors: Array; + invoice?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + invoiceErrors: Array; +}; + +export type InvoiceDeleted = Event & { + __typename?: "InvoiceDeleted"; + /** + * The invoice the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + invoice?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type InvoiceError = { + __typename?: "InvoiceError"; + /** The error code. */ + code: InvoiceErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; +}; + +/** An enumeration. */ +export enum InvoiceErrorCode { + EmailNotSet = "EMAIL_NOT_SET", + InvalidStatus = "INVALID_STATUS", + NotFound = "NOT_FOUND", + NotReady = "NOT_READY", + NoInvoicePlugin = "NO_INVOICE_PLUGIN", + NumberNotSet = "NUMBER_NOT_SET", + Required = "REQUIRED", + UrlNotSet = "URL_NOT_SET", +} + +/** + * Request an invoice for the order using plugin. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type InvoiceRequest = { + __typename?: "InvoiceRequest"; + errors: Array; + invoice?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + invoiceErrors: Array; + /** Order related to an invoice. */ + order?: Maybe; +}; + +/** + * Requests deletion of an invoice. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type InvoiceRequestDelete = { + __typename?: "InvoiceRequestDelete"; + errors: Array; + invoice?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + invoiceErrors: Array; +}; + +export type InvoiceRequested = Event & { + __typename?: "InvoiceRequested"; + /** + * The invoice the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + invoice?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +/** + * Send an invoice notification to the customer. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type InvoiceSendNotification = { + __typename?: "InvoiceSendNotification"; + errors: Array; + invoice?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + invoiceErrors: Array; +}; + +export type InvoiceSent = Event & { + __typename?: "InvoiceSent"; + /** + * The invoice the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + invoice?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +/** + * Updates an invoice. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type InvoiceUpdate = { + __typename?: "InvoiceUpdate"; + errors: Array; + invoice?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + invoiceErrors: Array; +}; + +export type IssuingPrincipal = App | User; + +export type Job = { + /** Created date time of job in ISO 8601 format. */ + createdAt: Scalars["DateTime"]; + /** Job message. */ + message?: Maybe; + /** Job status. */ + status: JobStatusEnum; + /** Date time of job last update in ISO 8601 format. */ + updatedAt: Scalars["DateTime"]; +}; + +/** An enumeration. */ +export enum JobStatusEnum { + Deleted = "DELETED", + Failed = "FAILED", + Pending = "PENDING", + Success = "SUCCESS", +} + +/** An enumeration. */ +export enum LanguageCodeEnum { + Af = "AF", + AfNa = "AF_NA", + AfZa = "AF_ZA", + Agq = "AGQ", + AgqCm = "AGQ_CM", + Ak = "AK", + AkGh = "AK_GH", + Am = "AM", + AmEt = "AM_ET", + Ar = "AR", + ArAe = "AR_AE", + ArBh = "AR_BH", + ArDj = "AR_DJ", + ArDz = "AR_DZ", + ArEg = "AR_EG", + ArEh = "AR_EH", + ArEr = "AR_ER", + ArIl = "AR_IL", + ArIq = "AR_IQ", + ArJo = "AR_JO", + ArKm = "AR_KM", + ArKw = "AR_KW", + ArLb = "AR_LB", + ArLy = "AR_LY", + ArMa = "AR_MA", + ArMr = "AR_MR", + ArOm = "AR_OM", + ArPs = "AR_PS", + ArQa = "AR_QA", + ArSa = "AR_SA", + ArSd = "AR_SD", + ArSo = "AR_SO", + ArSs = "AR_SS", + ArSy = "AR_SY", + ArTd = "AR_TD", + ArTn = "AR_TN", + ArYe = "AR_YE", + As = "AS", + Asa = "ASA", + AsaTz = "ASA_TZ", + Ast = "AST", + AstEs = "AST_ES", + AsIn = "AS_IN", + Az = "AZ", + AzCyrl = "AZ_CYRL", + AzCyrlAz = "AZ_CYRL_AZ", + AzLatn = "AZ_LATN", + AzLatnAz = "AZ_LATN_AZ", + Bas = "BAS", + BasCm = "BAS_CM", + Be = "BE", + Bem = "BEM", + BemZm = "BEM_ZM", + Bez = "BEZ", + BezTz = "BEZ_TZ", + BeBy = "BE_BY", + Bg = "BG", + BgBg = "BG_BG", + Bm = "BM", + BmMl = "BM_ML", + Bn = "BN", + BnBd = "BN_BD", + BnIn = "BN_IN", + Bo = "BO", + BoCn = "BO_CN", + BoIn = "BO_IN", + Br = "BR", + Brx = "BRX", + BrxIn = "BRX_IN", + BrFr = "BR_FR", + Bs = "BS", + BsCyrl = "BS_CYRL", + BsCyrlBa = "BS_CYRL_BA", + BsLatn = "BS_LATN", + BsLatnBa = "BS_LATN_BA", + Ca = "CA", + CaAd = "CA_AD", + CaEs = "CA_ES", + CaEsValencia = "CA_ES_VALENCIA", + CaFr = "CA_FR", + CaIt = "CA_IT", + Ccp = "CCP", + CcpBd = "CCP_BD", + CcpIn = "CCP_IN", + Ce = "CE", + Ceb = "CEB", + CebPh = "CEB_PH", + CeRu = "CE_RU", + Cgg = "CGG", + CggUg = "CGG_UG", + Chr = "CHR", + ChrUs = "CHR_US", + Ckb = "CKB", + CkbIq = "CKB_IQ", + CkbIr = "CKB_IR", + Cs = "CS", + CsCz = "CS_CZ", + Cu = "CU", + CuRu = "CU_RU", + Cy = "CY", + CyGb = "CY_GB", + Da = "DA", + Dav = "DAV", + DavKe = "DAV_KE", + DaDk = "DA_DK", + DaGl = "DA_GL", + De = "DE", + DeAt = "DE_AT", + DeBe = "DE_BE", + DeCh = "DE_CH", + DeDe = "DE_DE", + DeIt = "DE_IT", + DeLi = "DE_LI", + DeLu = "DE_LU", + Dje = "DJE", + DjeNe = "DJE_NE", + Dsb = "DSB", + DsbDe = "DSB_DE", + Dua = "DUA", + DuaCm = "DUA_CM", + Dyo = "DYO", + DyoSn = "DYO_SN", + Dz = "DZ", + DzBt = "DZ_BT", + Ebu = "EBU", + EbuKe = "EBU_KE", + Ee = "EE", + EeGh = "EE_GH", + EeTg = "EE_TG", + El = "EL", + ElCy = "EL_CY", + ElGr = "EL_GR", + En = "EN", + EnAe = "EN_AE", + EnAg = "EN_AG", + EnAi = "EN_AI", + EnAs = "EN_AS", + EnAt = "EN_AT", + EnAu = "EN_AU", + EnBb = "EN_BB", + EnBe = "EN_BE", + EnBi = "EN_BI", + EnBm = "EN_BM", + EnBs = "EN_BS", + EnBw = "EN_BW", + EnBz = "EN_BZ", + EnCa = "EN_CA", + EnCc = "EN_CC", + EnCh = "EN_CH", + EnCk = "EN_CK", + EnCm = "EN_CM", + EnCx = "EN_CX", + EnCy = "EN_CY", + EnDe = "EN_DE", + EnDg = "EN_DG", + EnDk = "EN_DK", + EnDm = "EN_DM", + EnEr = "EN_ER", + EnFi = "EN_FI", + EnFj = "EN_FJ", + EnFk = "EN_FK", + EnFm = "EN_FM", + EnGb = "EN_GB", + EnGd = "EN_GD", + EnGg = "EN_GG", + EnGh = "EN_GH", + EnGi = "EN_GI", + EnGm = "EN_GM", + EnGu = "EN_GU", + EnGy = "EN_GY", + EnHk = "EN_HK", + EnIe = "EN_IE", + EnIl = "EN_IL", + EnIm = "EN_IM", + EnIn = "EN_IN", + EnIo = "EN_IO", + EnJe = "EN_JE", + EnJm = "EN_JM", + EnKe = "EN_KE", + EnKi = "EN_KI", + EnKn = "EN_KN", + EnKy = "EN_KY", + EnLc = "EN_LC", + EnLr = "EN_LR", + EnLs = "EN_LS", + EnMg = "EN_MG", + EnMh = "EN_MH", + EnMo = "EN_MO", + EnMp = "EN_MP", + EnMs = "EN_MS", + EnMt = "EN_MT", + EnMu = "EN_MU", + EnMw = "EN_MW", + EnMy = "EN_MY", + EnNa = "EN_NA", + EnNf = "EN_NF", + EnNg = "EN_NG", + EnNl = "EN_NL", + EnNr = "EN_NR", + EnNu = "EN_NU", + EnNz = "EN_NZ", + EnPg = "EN_PG", + EnPh = "EN_PH", + EnPk = "EN_PK", + EnPn = "EN_PN", + EnPr = "EN_PR", + EnPw = "EN_PW", + EnRw = "EN_RW", + EnSb = "EN_SB", + EnSc = "EN_SC", + EnSd = "EN_SD", + EnSe = "EN_SE", + EnSg = "EN_SG", + EnSh = "EN_SH", + EnSi = "EN_SI", + EnSl = "EN_SL", + EnSs = "EN_SS", + EnSx = "EN_SX", + EnSz = "EN_SZ", + EnTc = "EN_TC", + EnTk = "EN_TK", + EnTo = "EN_TO", + EnTt = "EN_TT", + EnTv = "EN_TV", + EnTz = "EN_TZ", + EnUg = "EN_UG", + EnUm = "EN_UM", + EnUs = "EN_US", + EnVc = "EN_VC", + EnVg = "EN_VG", + EnVi = "EN_VI", + EnVu = "EN_VU", + EnWs = "EN_WS", + EnZa = "EN_ZA", + EnZm = "EN_ZM", + EnZw = "EN_ZW", + Eo = "EO", + Es = "ES", + EsAr = "ES_AR", + EsBo = "ES_BO", + EsBr = "ES_BR", + EsBz = "ES_BZ", + EsCl = "ES_CL", + EsCo = "ES_CO", + EsCr = "ES_CR", + EsCu = "ES_CU", + EsDo = "ES_DO", + EsEa = "ES_EA", + EsEc = "ES_EC", + EsEs = "ES_ES", + EsGq = "ES_GQ", + EsGt = "ES_GT", + EsHn = "ES_HN", + EsIc = "ES_IC", + EsMx = "ES_MX", + EsNi = "ES_NI", + EsPa = "ES_PA", + EsPe = "ES_PE", + EsPh = "ES_PH", + EsPr = "ES_PR", + EsPy = "ES_PY", + EsSv = "ES_SV", + EsUs = "ES_US", + EsUy = "ES_UY", + EsVe = "ES_VE", + Et = "ET", + EtEe = "ET_EE", + Eu = "EU", + EuEs = "EU_ES", + Ewo = "EWO", + EwoCm = "EWO_CM", + Fa = "FA", + FaAf = "FA_AF", + FaIr = "FA_IR", + Ff = "FF", + FfAdlm = "FF_ADLM", + FfAdlmBf = "FF_ADLM_BF", + FfAdlmCm = "FF_ADLM_CM", + FfAdlmGh = "FF_ADLM_GH", + FfAdlmGm = "FF_ADLM_GM", + FfAdlmGn = "FF_ADLM_GN", + FfAdlmGw = "FF_ADLM_GW", + FfAdlmLr = "FF_ADLM_LR", + FfAdlmMr = "FF_ADLM_MR", + FfAdlmNe = "FF_ADLM_NE", + FfAdlmNg = "FF_ADLM_NG", + FfAdlmSl = "FF_ADLM_SL", + FfAdlmSn = "FF_ADLM_SN", + FfLatn = "FF_LATN", + FfLatnBf = "FF_LATN_BF", + FfLatnCm = "FF_LATN_CM", + FfLatnGh = "FF_LATN_GH", + FfLatnGm = "FF_LATN_GM", + FfLatnGn = "FF_LATN_GN", + FfLatnGw = "FF_LATN_GW", + FfLatnLr = "FF_LATN_LR", + FfLatnMr = "FF_LATN_MR", + FfLatnNe = "FF_LATN_NE", + FfLatnNg = "FF_LATN_NG", + FfLatnSl = "FF_LATN_SL", + FfLatnSn = "FF_LATN_SN", + Fi = "FI", + Fil = "FIL", + FilPh = "FIL_PH", + FiFi = "FI_FI", + Fo = "FO", + FoDk = "FO_DK", + FoFo = "FO_FO", + Fr = "FR", + FrBe = "FR_BE", + FrBf = "FR_BF", + FrBi = "FR_BI", + FrBj = "FR_BJ", + FrBl = "FR_BL", + FrCa = "FR_CA", + FrCd = "FR_CD", + FrCf = "FR_CF", + FrCg = "FR_CG", + FrCh = "FR_CH", + FrCi = "FR_CI", + FrCm = "FR_CM", + FrDj = "FR_DJ", + FrDz = "FR_DZ", + FrFr = "FR_FR", + FrGa = "FR_GA", + FrGf = "FR_GF", + FrGn = "FR_GN", + FrGp = "FR_GP", + FrGq = "FR_GQ", + FrHt = "FR_HT", + FrKm = "FR_KM", + FrLu = "FR_LU", + FrMa = "FR_MA", + FrMc = "FR_MC", + FrMf = "FR_MF", + FrMg = "FR_MG", + FrMl = "FR_ML", + FrMq = "FR_MQ", + FrMr = "FR_MR", + FrMu = "FR_MU", + FrNc = "FR_NC", + FrNe = "FR_NE", + FrPf = "FR_PF", + FrPm = "FR_PM", + FrRe = "FR_RE", + FrRw = "FR_RW", + FrSc = "FR_SC", + FrSn = "FR_SN", + FrSy = "FR_SY", + FrTd = "FR_TD", + FrTg = "FR_TG", + FrTn = "FR_TN", + FrVu = "FR_VU", + FrWf = "FR_WF", + FrYt = "FR_YT", + Fur = "FUR", + FurIt = "FUR_IT", + Fy = "FY", + FyNl = "FY_NL", + Ga = "GA", + GaGb = "GA_GB", + GaIe = "GA_IE", + Gd = "GD", + GdGb = "GD_GB", + Gl = "GL", + GlEs = "GL_ES", + Gsw = "GSW", + GswCh = "GSW_CH", + GswFr = "GSW_FR", + GswLi = "GSW_LI", + Gu = "GU", + Guz = "GUZ", + GuzKe = "GUZ_KE", + GuIn = "GU_IN", + Gv = "GV", + GvIm = "GV_IM", + Ha = "HA", + Haw = "HAW", + HawUs = "HAW_US", + HaGh = "HA_GH", + HaNe = "HA_NE", + HaNg = "HA_NG", + He = "HE", + HeIl = "HE_IL", + Hi = "HI", + HiIn = "HI_IN", + Hr = "HR", + HrBa = "HR_BA", + HrHr = "HR_HR", + Hsb = "HSB", + HsbDe = "HSB_DE", + Hu = "HU", + HuHu = "HU_HU", + Hy = "HY", + HyAm = "HY_AM", + Ia = "IA", + Id = "ID", + IdId = "ID_ID", + Ig = "IG", + IgNg = "IG_NG", + Ii = "II", + IiCn = "II_CN", + Is = "IS", + IsIs = "IS_IS", + It = "IT", + ItCh = "IT_CH", + ItIt = "IT_IT", + ItSm = "IT_SM", + ItVa = "IT_VA", + Ja = "JA", + JaJp = "JA_JP", + Jgo = "JGO", + JgoCm = "JGO_CM", + Jmc = "JMC", + JmcTz = "JMC_TZ", + Jv = "JV", + JvId = "JV_ID", + Ka = "KA", + Kab = "KAB", + KabDz = "KAB_DZ", + Kam = "KAM", + KamKe = "KAM_KE", + KaGe = "KA_GE", + Kde = "KDE", + KdeTz = "KDE_TZ", + Kea = "KEA", + KeaCv = "KEA_CV", + Khq = "KHQ", + KhqMl = "KHQ_ML", + Ki = "KI", + KiKe = "KI_KE", + Kk = "KK", + Kkj = "KKJ", + KkjCm = "KKJ_CM", + KkKz = "KK_KZ", + Kl = "KL", + Kln = "KLN", + KlnKe = "KLN_KE", + KlGl = "KL_GL", + Km = "KM", + KmKh = "KM_KH", + Kn = "KN", + KnIn = "KN_IN", + Ko = "KO", + Kok = "KOK", + KokIn = "KOK_IN", + KoKp = "KO_KP", + KoKr = "KO_KR", + Ks = "KS", + Ksb = "KSB", + KsbTz = "KSB_TZ", + Ksf = "KSF", + KsfCm = "KSF_CM", + Ksh = "KSH", + KshDe = "KSH_DE", + KsArab = "KS_ARAB", + KsArabIn = "KS_ARAB_IN", + Ku = "KU", + KuTr = "KU_TR", + Kw = "KW", + KwGb = "KW_GB", + Ky = "KY", + KyKg = "KY_KG", + Lag = "LAG", + LagTz = "LAG_TZ", + Lb = "LB", + LbLu = "LB_LU", + Lg = "LG", + LgUg = "LG_UG", + Lkt = "LKT", + LktUs = "LKT_US", + Ln = "LN", + LnAo = "LN_AO", + LnCd = "LN_CD", + LnCf = "LN_CF", + LnCg = "LN_CG", + Lo = "LO", + LoLa = "LO_LA", + Lrc = "LRC", + LrcIq = "LRC_IQ", + LrcIr = "LRC_IR", + Lt = "LT", + LtLt = "LT_LT", + Lu = "LU", + Luo = "LUO", + LuoKe = "LUO_KE", + Luy = "LUY", + LuyKe = "LUY_KE", + LuCd = "LU_CD", + Lv = "LV", + LvLv = "LV_LV", + Mai = "MAI", + MaiIn = "MAI_IN", + Mas = "MAS", + MasKe = "MAS_KE", + MasTz = "MAS_TZ", + Mer = "MER", + MerKe = "MER_KE", + Mfe = "MFE", + MfeMu = "MFE_MU", + Mg = "MG", + Mgh = "MGH", + MghMz = "MGH_MZ", + Mgo = "MGO", + MgoCm = "MGO_CM", + MgMg = "MG_MG", + Mi = "MI", + MiNz = "MI_NZ", + Mk = "MK", + MkMk = "MK_MK", + Ml = "ML", + MlIn = "ML_IN", + Mn = "MN", + Mni = "MNI", + MniBeng = "MNI_BENG", + MniBengIn = "MNI_BENG_IN", + MnMn = "MN_MN", + Mr = "MR", + MrIn = "MR_IN", + Ms = "MS", + MsBn = "MS_BN", + MsId = "MS_ID", + MsMy = "MS_MY", + MsSg = "MS_SG", + Mt = "MT", + MtMt = "MT_MT", + Mua = "MUA", + MuaCm = "MUA_CM", + My = "MY", + MyMm = "MY_MM", + Mzn = "MZN", + MznIr = "MZN_IR", + Naq = "NAQ", + NaqNa = "NAQ_NA", + Nb = "NB", + NbNo = "NB_NO", + NbSj = "NB_SJ", + Nd = "ND", + Nds = "NDS", + NdsDe = "NDS_DE", + NdsNl = "NDS_NL", + NdZw = "ND_ZW", + Ne = "NE", + NeIn = "NE_IN", + NeNp = "NE_NP", + Nl = "NL", + NlAw = "NL_AW", + NlBe = "NL_BE", + NlBq = "NL_BQ", + NlCw = "NL_CW", + NlNl = "NL_NL", + NlSr = "NL_SR", + NlSx = "NL_SX", + Nmg = "NMG", + NmgCm = "NMG_CM", + Nn = "NN", + Nnh = "NNH", + NnhCm = "NNH_CM", + NnNo = "NN_NO", + Nus = "NUS", + NusSs = "NUS_SS", + Nyn = "NYN", + NynUg = "NYN_UG", + Om = "OM", + OmEt = "OM_ET", + OmKe = "OM_KE", + Or = "OR", + OrIn = "OR_IN", + Os = "OS", + OsGe = "OS_GE", + OsRu = "OS_RU", + Pa = "PA", + PaArab = "PA_ARAB", + PaArabPk = "PA_ARAB_PK", + PaGuru = "PA_GURU", + PaGuruIn = "PA_GURU_IN", + Pcm = "PCM", + PcmNg = "PCM_NG", + Pl = "PL", + PlPl = "PL_PL", + Prg = "PRG", + Ps = "PS", + PsAf = "PS_AF", + PsPk = "PS_PK", + Pt = "PT", + PtAo = "PT_AO", + PtBr = "PT_BR", + PtCh = "PT_CH", + PtCv = "PT_CV", + PtGq = "PT_GQ", + PtGw = "PT_GW", + PtLu = "PT_LU", + PtMo = "PT_MO", + PtMz = "PT_MZ", + PtPt = "PT_PT", + PtSt = "PT_ST", + PtTl = "PT_TL", + Qu = "QU", + QuBo = "QU_BO", + QuEc = "QU_EC", + QuPe = "QU_PE", + Rm = "RM", + RmCh = "RM_CH", + Rn = "RN", + RnBi = "RN_BI", + Ro = "RO", + Rof = "ROF", + RofTz = "ROF_TZ", + RoMd = "RO_MD", + RoRo = "RO_RO", + Ru = "RU", + RuBy = "RU_BY", + RuKg = "RU_KG", + RuKz = "RU_KZ", + RuMd = "RU_MD", + RuRu = "RU_RU", + RuUa = "RU_UA", + Rw = "RW", + Rwk = "RWK", + RwkTz = "RWK_TZ", + RwRw = "RW_RW", + Sah = "SAH", + SahRu = "SAH_RU", + Saq = "SAQ", + SaqKe = "SAQ_KE", + Sat = "SAT", + SatOlck = "SAT_OLCK", + SatOlckIn = "SAT_OLCK_IN", + Sbp = "SBP", + SbpTz = "SBP_TZ", + Sd = "SD", + SdArab = "SD_ARAB", + SdArabPk = "SD_ARAB_PK", + SdDeva = "SD_DEVA", + SdDevaIn = "SD_DEVA_IN", + Se = "SE", + Seh = "SEH", + SehMz = "SEH_MZ", + Ses = "SES", + SesMl = "SES_ML", + SeFi = "SE_FI", + SeNo = "SE_NO", + SeSe = "SE_SE", + Sg = "SG", + SgCf = "SG_CF", + Shi = "SHI", + ShiLatn = "SHI_LATN", + ShiLatnMa = "SHI_LATN_MA", + ShiTfng = "SHI_TFNG", + ShiTfngMa = "SHI_TFNG_MA", + Si = "SI", + SiLk = "SI_LK", + Sk = "SK", + SkSk = "SK_SK", + Sl = "SL", + SlSi = "SL_SI", + Smn = "SMN", + SmnFi = "SMN_FI", + Sn = "SN", + SnZw = "SN_ZW", + So = "SO", + SoDj = "SO_DJ", + SoEt = "SO_ET", + SoKe = "SO_KE", + SoSo = "SO_SO", + Sq = "SQ", + SqAl = "SQ_AL", + SqMk = "SQ_MK", + SqXk = "SQ_XK", + Sr = "SR", + SrCyrl = "SR_CYRL", + SrCyrlBa = "SR_CYRL_BA", + SrCyrlMe = "SR_CYRL_ME", + SrCyrlRs = "SR_CYRL_RS", + SrCyrlXk = "SR_CYRL_XK", + SrLatn = "SR_LATN", + SrLatnBa = "SR_LATN_BA", + SrLatnMe = "SR_LATN_ME", + SrLatnRs = "SR_LATN_RS", + SrLatnXk = "SR_LATN_XK", + Su = "SU", + SuLatn = "SU_LATN", + SuLatnId = "SU_LATN_ID", + Sv = "SV", + SvAx = "SV_AX", + SvFi = "SV_FI", + SvSe = "SV_SE", + Sw = "SW", + SwCd = "SW_CD", + SwKe = "SW_KE", + SwTz = "SW_TZ", + SwUg = "SW_UG", + Ta = "TA", + TaIn = "TA_IN", + TaLk = "TA_LK", + TaMy = "TA_MY", + TaSg = "TA_SG", + Te = "TE", + Teo = "TEO", + TeoKe = "TEO_KE", + TeoUg = "TEO_UG", + TeIn = "TE_IN", + Tg = "TG", + TgTj = "TG_TJ", + Th = "TH", + ThTh = "TH_TH", + Ti = "TI", + TiEr = "TI_ER", + TiEt = "TI_ET", + Tk = "TK", + TkTm = "TK_TM", + To = "TO", + ToTo = "TO_TO", + Tr = "TR", + TrCy = "TR_CY", + TrTr = "TR_TR", + Tt = "TT", + TtRu = "TT_RU", + Twq = "TWQ", + TwqNe = "TWQ_NE", + Tzm = "TZM", + TzmMa = "TZM_MA", + Ug = "UG", + UgCn = "UG_CN", + Uk = "UK", + UkUa = "UK_UA", + Ur = "UR", + UrIn = "UR_IN", + UrPk = "UR_PK", + Uz = "UZ", + UzArab = "UZ_ARAB", + UzArabAf = "UZ_ARAB_AF", + UzCyrl = "UZ_CYRL", + UzCyrlUz = "UZ_CYRL_UZ", + UzLatn = "UZ_LATN", + UzLatnUz = "UZ_LATN_UZ", + Vai = "VAI", + VaiLatn = "VAI_LATN", + VaiLatnLr = "VAI_LATN_LR", + VaiVaii = "VAI_VAII", + VaiVaiiLr = "VAI_VAII_LR", + Vi = "VI", + ViVn = "VI_VN", + Vo = "VO", + Vun = "VUN", + VunTz = "VUN_TZ", + Wae = "WAE", + WaeCh = "WAE_CH", + Wo = "WO", + WoSn = "WO_SN", + Xh = "XH", + XhZa = "XH_ZA", + Xog = "XOG", + XogUg = "XOG_UG", + Yav = "YAV", + YavCm = "YAV_CM", + Yi = "YI", + Yo = "YO", + YoBj = "YO_BJ", + YoNg = "YO_NG", + Yue = "YUE", + YueHans = "YUE_HANS", + YueHansCn = "YUE_HANS_CN", + YueHant = "YUE_HANT", + YueHantHk = "YUE_HANT_HK", + Zgh = "ZGH", + ZghMa = "ZGH_MA", + Zh = "ZH", + ZhHans = "ZH_HANS", + ZhHansCn = "ZH_HANS_CN", + ZhHansHk = "ZH_HANS_HK", + ZhHansMo = "ZH_HANS_MO", + ZhHansSg = "ZH_HANS_SG", + ZhHant = "ZH_HANT", + ZhHantHk = "ZH_HANT_HK", + ZhHantMo = "ZH_HANT_MO", + ZhHantTw = "ZH_HANT_TW", + Zu = "ZU", + ZuZa = "ZU_ZA", +} + +export type LanguageDisplay = { + __typename?: "LanguageDisplay"; + /** ISO 639 representation of the language name. */ + code: LanguageCodeEnum; + /** Full name of the language. */ + language: Scalars["String"]; +}; + +export type LimitInfo = { + __typename?: "LimitInfo"; + /** Defines the allowed maximum resource usage, null means unlimited. */ + allowedUsage: Limits; + /** Defines the current resource usage. */ + currentUsage: Limits; +}; + +export type Limits = { + __typename?: "Limits"; + channels?: Maybe; + orders?: Maybe; + productVariants?: Maybe; + staffUsers?: Maybe; + warehouses?: Maybe; +}; + +/** The manifest definition. */ +export type Manifest = { + __typename?: "Manifest"; + about?: Maybe; + appUrl?: Maybe; + configurationUrl?: Maybe; + dataPrivacy?: Maybe; + dataPrivacyUrl?: Maybe; + extensions: Array; + homepageUrl?: Maybe; + identifier: Scalars["String"]; + name: Scalars["String"]; + permissions?: Maybe>; + supportUrl?: Maybe; + tokenTargetUrl?: Maybe; + version: Scalars["String"]; +}; + +export type Margin = { + __typename?: "Margin"; + start?: Maybe; + stop?: Maybe; +}; + +/** An enumeration. */ +export enum MeasurementUnitsEnum { + AcreFt = "ACRE_FT", + AcreIn = "ACRE_IN", + Cm = "CM", + CubicCentimeter = "CUBIC_CENTIMETER", + CubicDecimeter = "CUBIC_DECIMETER", + CubicFoot = "CUBIC_FOOT", + CubicInch = "CUBIC_INCH", + CubicMeter = "CUBIC_METER", + CubicMillimeter = "CUBIC_MILLIMETER", + CubicYard = "CUBIC_YARD", + FlOz = "FL_OZ", + Ft = "FT", + G = "G", + Inch = "INCH", + Kg = "KG", + Km = "KM", + Lb = "LB", + Liter = "LITER", + M = "M", + Oz = "OZ", + Pint = "PINT", + Qt = "QT", + SqCm = "SQ_CM", + SqFt = "SQ_FT", + SqInch = "SQ_INCH", + SqKm = "SQ_KM", + SqM = "SQ_M", + SqYd = "SQ_YD", + Tonne = "TONNE", + Yd = "YD", +} + +/** Represents a single menu - an object that is used to help navigate through the store. */ +export type Menu = Node & + ObjectWithMetadata & { + __typename?: "Menu"; + id: Scalars["ID"]; + items?: Maybe>; + /** List of public metadata items. Can be accessed without permissions. */ + metadata: Array; + /** + * A single key from public metadata. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafield?: Maybe; + /** + * Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafields?: Maybe; + name: Scalars["String"]; + /** List of private metadata items. Requires staff permissions to access. */ + privateMetadata: Array; + /** + * A single key from private metadata. Requires staff permissions to access. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafield?: Maybe; + /** + * Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafields?: Maybe; + slug: Scalars["String"]; + }; + +/** Represents a single menu - an object that is used to help navigate through the store. */ +export type MenuMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents a single menu - an object that is used to help navigate through the store. */ +export type MenuMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Represents a single menu - an object that is used to help navigate through the store. */ +export type MenuPrivateMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents a single menu - an object that is used to help navigate through the store. */ +export type MenuPrivateMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** + * Deletes menus. + * + * Requires one of the following permissions: MANAGE_MENUS. + */ +export type MenuBulkDelete = { + __typename?: "MenuBulkDelete"; + /** Returns how many objects were affected. */ + count: Scalars["Int"]; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + menuErrors: Array; +}; + +export type MenuCountableConnection = { + __typename?: "MenuCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type MenuCountableEdge = { + __typename?: "MenuCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: Menu; +}; + +/** + * Creates a new Menu. + * + * Requires one of the following permissions: MANAGE_MENUS. + */ +export type MenuCreate = { + __typename?: "MenuCreate"; + errors: Array; + menu?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + menuErrors: Array; +}; + +export type MenuCreateInput = { + /** List of menu items. */ + items?: InputMaybe>; + /** Name of the menu. */ + name: Scalars["String"]; + /** Slug of the menu. Will be generated if not provided. */ + slug?: InputMaybe; +}; + +export type MenuCreated = Event & { + __typename?: "MenuCreated"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The menu the event relates to. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + menu?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type MenuCreatedMenuArgs = { + channel?: InputMaybe; +}; + +/** + * Deletes a menu. + * + * Requires one of the following permissions: MANAGE_MENUS. + */ +export type MenuDelete = { + __typename?: "MenuDelete"; + errors: Array; + menu?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + menuErrors: Array; +}; + +export type MenuDeleted = Event & { + __typename?: "MenuDeleted"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The menu the event relates to. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + menu?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type MenuDeletedMenuArgs = { + channel?: InputMaybe; +}; + +export type MenuError = { + __typename?: "MenuError"; + /** The error code. */ + code: MenuErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; +}; + +/** An enumeration. */ +export enum MenuErrorCode { + CannotAssignNode = "CANNOT_ASSIGN_NODE", + GraphqlError = "GRAPHQL_ERROR", + Invalid = "INVALID", + InvalidMenuItem = "INVALID_MENU_ITEM", + NotFound = "NOT_FOUND", + NoMenuItemProvided = "NO_MENU_ITEM_PROVIDED", + Required = "REQUIRED", + TooManyMenuItems = "TOO_MANY_MENU_ITEMS", + Unique = "UNIQUE", +} + +export type MenuFilterInput = { + metadata?: InputMaybe>; + search?: InputMaybe; + slug?: InputMaybe>; +}; + +export type MenuInput = { + /** Name of the menu. */ + name?: InputMaybe; + /** Slug of the menu. */ + slug?: InputMaybe; +}; + +/** Represents a single item of the related menu. Can store categories, collection or pages. */ +export type MenuItem = Node & + ObjectWithMetadata & { + __typename?: "MenuItem"; + category?: Maybe; + children?: Maybe>; + /** A collection associated with this menu item. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. */ + collection?: Maybe; + id: Scalars["ID"]; + level: Scalars["Int"]; + menu: Menu; + /** List of public metadata items. Can be accessed without permissions. */ + metadata: Array; + /** + * A single key from public metadata. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafield?: Maybe; + /** + * Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafields?: Maybe; + name: Scalars["String"]; + /** A page associated with this menu item. Requires one of the following permissions to include unpublished items: MANAGE_PAGES. */ + page?: Maybe; + parent?: Maybe; + /** List of private metadata items. Requires staff permissions to access. */ + privateMetadata: Array; + /** + * A single key from private metadata. Requires staff permissions to access. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafield?: Maybe; + /** + * Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafields?: Maybe; + /** Returns translated menu item fields for the given language code. */ + translation?: Maybe; + /** URL to the menu item. */ + url?: Maybe; + }; + +/** Represents a single item of the related menu. Can store categories, collection or pages. */ +export type MenuItemMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents a single item of the related menu. Can store categories, collection or pages. */ +export type MenuItemMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Represents a single item of the related menu. Can store categories, collection or pages. */ +export type MenuItemPrivateMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents a single item of the related menu. Can store categories, collection or pages. */ +export type MenuItemPrivateMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Represents a single item of the related menu. Can store categories, collection or pages. */ +export type MenuItemTranslationArgs = { + languageCode: LanguageCodeEnum; +}; + +/** + * Deletes menu items. + * + * Requires one of the following permissions: MANAGE_MENUS. + */ +export type MenuItemBulkDelete = { + __typename?: "MenuItemBulkDelete"; + /** Returns how many objects were affected. */ + count: Scalars["Int"]; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + menuErrors: Array; +}; + +export type MenuItemCountableConnection = { + __typename?: "MenuItemCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type MenuItemCountableEdge = { + __typename?: "MenuItemCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: MenuItem; +}; + +/** + * Creates a new menu item. + * + * Requires one of the following permissions: MANAGE_MENUS. + */ +export type MenuItemCreate = { + __typename?: "MenuItemCreate"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + menuErrors: Array; + menuItem?: Maybe; +}; + +export type MenuItemCreateInput = { + /** Category to which item points. */ + category?: InputMaybe; + /** Collection to which item points. */ + collection?: InputMaybe; + /** Menu to which item belongs. */ + menu: Scalars["ID"]; + /** Name of the menu item. */ + name: Scalars["String"]; + /** Page to which item points. */ + page?: InputMaybe; + /** ID of the parent menu. If empty, menu will be top level menu. */ + parent?: InputMaybe; + /** URL of the pointed item. */ + url?: InputMaybe; +}; + +export type MenuItemCreated = Event & { + __typename?: "MenuItemCreated"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The menu item the event relates to. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + menuItem?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type MenuItemCreatedMenuItemArgs = { + channel?: InputMaybe; +}; + +/** + * Deletes a menu item. + * + * Requires one of the following permissions: MANAGE_MENUS. + */ +export type MenuItemDelete = { + __typename?: "MenuItemDelete"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + menuErrors: Array; + menuItem?: Maybe; +}; + +export type MenuItemDeleted = Event & { + __typename?: "MenuItemDeleted"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The menu item the event relates to. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + menuItem?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type MenuItemDeletedMenuItemArgs = { + channel?: InputMaybe; +}; + +export type MenuItemFilterInput = { + metadata?: InputMaybe>; + search?: InputMaybe; +}; + +export type MenuItemInput = { + /** Category to which item points. */ + category?: InputMaybe; + /** Collection to which item points. */ + collection?: InputMaybe; + /** Name of the menu item. */ + name?: InputMaybe; + /** Page to which item points. */ + page?: InputMaybe; + /** URL of the pointed item. */ + url?: InputMaybe; +}; + +/** + * Moves items of menus. + * + * Requires one of the following permissions: MANAGE_MENUS. + */ +export type MenuItemMove = { + __typename?: "MenuItemMove"; + errors: Array; + /** Assigned menu to move within. */ + menu?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + menuErrors: Array; +}; + +export type MenuItemMoveInput = { + /** The menu item ID to move. */ + itemId: Scalars["ID"]; + /** ID of the parent menu. If empty, menu will be top level menu. */ + parentId?: InputMaybe; + /** The new relative sorting position of the item (from -inf to +inf). 1 moves the item one position forward, -1 moves the item one position backward, 0 leaves the item unchanged. */ + sortOrder?: InputMaybe; +}; + +export type MenuItemSortingInput = { + /** Specifies the direction in which to sort products. */ + direction: OrderDirection; + /** Sort menu items by the selected field. */ + field: MenuItemsSortField; +}; + +export type MenuItemTranslatableContent = Node & { + __typename?: "MenuItemTranslatableContent"; + id: Scalars["ID"]; + /** + * Represents a single item of the related menu. Can store categories, collection or pages. + * @deprecated This field will be removed in Saleor 4.0. Get model fields from the root level queries. + */ + menuItem?: Maybe; + name: Scalars["String"]; + /** Returns translated menu item fields for the given language code. */ + translation?: Maybe; +}; + +export type MenuItemTranslatableContentTranslationArgs = { + languageCode: LanguageCodeEnum; +}; + +/** + * Creates/updates translations for a menu item. + * + * Requires one of the following permissions: MANAGE_TRANSLATIONS. + */ +export type MenuItemTranslate = { + __typename?: "MenuItemTranslate"; + errors: Array; + menuItem?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + translationErrors: Array; +}; + +export type MenuItemTranslation = Node & { + __typename?: "MenuItemTranslation"; + id: Scalars["ID"]; + /** Translation language. */ + language: LanguageDisplay; + name: Scalars["String"]; +}; + +/** + * Updates a menu item. + * + * Requires one of the following permissions: MANAGE_MENUS. + */ +export type MenuItemUpdate = { + __typename?: "MenuItemUpdate"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + menuErrors: Array; + menuItem?: Maybe; +}; + +export type MenuItemUpdated = Event & { + __typename?: "MenuItemUpdated"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The menu item the event relates to. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + menuItem?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type MenuItemUpdatedMenuItemArgs = { + channel?: InputMaybe; +}; + +export enum MenuItemsSortField { + /** Sort menu items by name. */ + Name = "NAME", +} + +export enum MenuSortField { + /** Sort menus by items count. */ + ItemsCount = "ITEMS_COUNT", + /** Sort menus by name. */ + Name = "NAME", +} + +export type MenuSortingInput = { + /** Specifies the direction in which to sort products. */ + direction: OrderDirection; + /** Sort menus by the selected field. */ + field: MenuSortField; +}; + +/** + * Updates a menu. + * + * Requires one of the following permissions: MANAGE_MENUS. + */ +export type MenuUpdate = { + __typename?: "MenuUpdate"; + errors: Array; + menu?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + menuErrors: Array; +}; + +export type MenuUpdated = Event & { + __typename?: "MenuUpdated"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The menu the event relates to. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + menu?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type MenuUpdatedMenuArgs = { + channel?: InputMaybe; +}; + +export type MetadataError = { + __typename?: "MetadataError"; + /** The error code. */ + code: MetadataErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; +}; + +/** An enumeration. */ +export enum MetadataErrorCode { + GraphqlError = "GRAPHQL_ERROR", + Invalid = "INVALID", + NotFound = "NOT_FOUND", + NotUpdated = "NOT_UPDATED", + Required = "REQUIRED", +} + +export type MetadataFilter = { + /** Key of a metadata item. */ + key: Scalars["String"]; + /** Value of a metadata item. */ + value?: InputMaybe; +}; + +export type MetadataInput = { + /** Key of a metadata item. */ + key: Scalars["String"]; + /** Value of a metadata item. */ + value: Scalars["String"]; +}; + +export type MetadataItem = { + __typename?: "MetadataItem"; + /** Key of a metadata item. */ + key: Scalars["String"]; + /** Value of a metadata item. */ + value: Scalars["String"]; +}; + +/** Represents amount of money in specific currency. */ +export type Money = { + __typename?: "Money"; + /** Amount of money. */ + amount: Scalars["Float"]; + /** Currency code. */ + currency: Scalars["String"]; +}; + +export type MoneyInput = { + /** Amount of money. */ + amount: Scalars["PositiveDecimal"]; + /** Currency code. */ + currency: Scalars["String"]; +}; + +/** Represents a range of amounts of money. */ +export type MoneyRange = { + __typename?: "MoneyRange"; + /** Lower bound of a price range. */ + start?: Maybe; + /** Upper bound of a price range. */ + stop?: Maybe; +}; + +export type MoveProductInput = { + /** The ID of the product to move. */ + productId: Scalars["ID"]; + /** The relative sorting position of the product (from -inf to +inf) starting from the first given product's actual position.1 moves the item one position forward, -1 moves the item one position backward, 0 leaves the item unchanged. */ + sortOrder?: InputMaybe; +}; + +export type Mutation = { + __typename?: "Mutation"; + /** + * Create a new address for the customer. + * + * Requires one of the following permissions: AUTHENTICATED_USER. + */ + accountAddressCreate?: Maybe; + /** Delete an address of the logged-in user. Requires one of the following permissions: MANAGE_USERS, IS_OWNER. */ + accountAddressDelete?: Maybe; + /** Updates an address of the logged-in user. Requires one of the following permissions: MANAGE_USERS, IS_OWNER. */ + accountAddressUpdate?: Maybe; + /** + * Remove user account. + * + * Requires one of the following permissions: AUTHENTICATED_USER. + */ + accountDelete?: Maybe; + /** Register a new user. */ + accountRegister?: Maybe; + /** + * Sends an email with the account removal link for the logged-in user. + * + * Requires one of the following permissions: AUTHENTICATED_USER. + */ + accountRequestDeletion?: Maybe; + /** + * Sets a default address for the authenticated user. + * + * Requires one of the following permissions: AUTHENTICATED_USER. + */ + accountSetDefaultAddress?: Maybe; + /** + * Updates the account of the logged-in user. + * + * Requires one of the following permissions: AUTHENTICATED_USER. + */ + accountUpdate?: Maybe; + /** + * Creates user address. + * + * Requires one of the following permissions: MANAGE_USERS. + */ + addressCreate?: Maybe; + /** + * Deletes an address. + * + * Requires one of the following permissions: MANAGE_USERS. + */ + addressDelete?: Maybe; + /** + * Sets a default address for the given user. + * + * Requires one of the following permissions: MANAGE_USERS. + */ + addressSetDefault?: Maybe; + /** + * Updates an address. + * + * Requires one of the following permissions: MANAGE_USERS. + */ + addressUpdate?: Maybe; + /** + * Activate the app. + * + * Requires one of the following permissions: MANAGE_APPS. + */ + appActivate?: Maybe; + /** Creates a new app. Requires the following permissions: AUTHENTICATED_STAFF_USER and MANAGE_APPS. */ + appCreate?: Maybe; + /** + * Deactivate the app. + * + * Requires one of the following permissions: MANAGE_APPS. + */ + appDeactivate?: Maybe; + /** + * Deletes an app. + * + * Requires one of the following permissions: MANAGE_APPS. + */ + appDelete?: Maybe; + /** + * Delete failed installation. + * + * Requires one of the following permissions: MANAGE_APPS. + */ + appDeleteFailedInstallation?: Maybe; + /** + * Fetch and validate manifest. + * + * Requires one of the following permissions: MANAGE_APPS. + */ + appFetchManifest?: Maybe; + /** Install new app by using app manifest. Requires the following permissions: AUTHENTICATED_STAFF_USER and MANAGE_APPS. */ + appInstall?: Maybe; + /** + * Retry failed installation of new app. + * + * Requires one of the following permissions: MANAGE_APPS. + */ + appRetryInstall?: Maybe; + /** + * Creates a new token. + * + * Requires one of the following permissions: MANAGE_APPS. + */ + appTokenCreate?: Maybe; + /** + * Deletes an authentication token assigned to app. + * + * Requires one of the following permissions: MANAGE_APPS. + */ + appTokenDelete?: Maybe; + /** Verify provided app token. */ + appTokenVerify?: Maybe; + /** + * Updates an existing app. + * + * Requires one of the following permissions: MANAGE_APPS. + */ + appUpdate?: Maybe; + /** + * Assigns storefront's navigation menus. + * + * Requires one of the following permissions: MANAGE_MENUS, MANAGE_SETTINGS. + */ + assignNavigation?: Maybe; + /** + * Add shipping zone to given warehouse. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + assignWarehouseShippingZone?: Maybe; + /** + * Deletes attributes. + * + * Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + */ + attributeBulkDelete?: Maybe; + /** Creates an attribute. */ + attributeCreate?: Maybe; + /** + * Deletes an attribute. + * + * Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + */ + attributeDelete?: Maybe; + /** + * Reorder the values of an attribute. + * + * Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + */ + attributeReorderValues?: Maybe; + /** + * Creates/updates translations for an attribute. + * + * Requires one of the following permissions: MANAGE_TRANSLATIONS. + */ + attributeTranslate?: Maybe; + /** + * Updates attribute. + * + * Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + */ + attributeUpdate?: Maybe; + /** + * Deletes values of attributes. + * + * Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + */ + attributeValueBulkDelete?: Maybe; + /** + * Creates a value for an attribute. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + attributeValueCreate?: Maybe; + /** + * Deletes a value of an attribute. + * + * Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + */ + attributeValueDelete?: Maybe; + /** + * Creates/updates translations for an attribute value. + * + * Requires one of the following permissions: MANAGE_TRANSLATIONS. + */ + attributeValueTranslate?: Maybe; + /** + * Updates value of an attribute. + * + * Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + */ + attributeValueUpdate?: Maybe; + /** + * Deletes categories. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + categoryBulkDelete?: Maybe; + /** + * Creates a new category. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + categoryCreate?: Maybe; + /** + * Deletes a category. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + categoryDelete?: Maybe; + /** + * Creates/updates translations for a category. + * + * Requires one of the following permissions: MANAGE_TRANSLATIONS. + */ + categoryTranslate?: Maybe; + /** + * Updates a category. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + categoryUpdate?: Maybe; + /** + * Activate a channel. + * + * Requires one of the following permissions: MANAGE_CHANNELS. + */ + channelActivate?: Maybe; + /** + * Creates new channel. + * + * Requires one of the following permissions: MANAGE_CHANNELS. + */ + channelCreate?: Maybe; + /** + * Deactivate a channel. + * + * Requires one of the following permissions: MANAGE_CHANNELS. + */ + channelDeactivate?: Maybe; + /** + * Delete a channel. Orders associated with the deleted channel will be moved to the target channel. Checkouts, product availability, and pricing will be removed. + * + * Requires one of the following permissions: MANAGE_CHANNELS. + */ + channelDelete?: Maybe; + /** + * Update a channel. + * + * Requires one of the following permissions: MANAGE_CHANNELS. + */ + channelUpdate?: Maybe; + /** Adds a gift card or a voucher to a checkout. */ + checkoutAddPromoCode?: Maybe; + /** Update billing address in the existing checkout. */ + checkoutBillingAddressUpdate?: Maybe; + /** Completes the checkout. As a result a new order is created and a payment charge is made. This action requires a successful payment before it can be performed. In case additional confirmation step as 3D secure is required confirmationNeeded flag will be set to True and no order created until payment is confirmed with second call of this mutation. */ + checkoutComplete?: Maybe; + /** Create a new checkout. */ + checkoutCreate?: Maybe; + /** + * Sets the customer as the owner of the checkout. + * + * Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_USER. + */ + checkoutCustomerAttach?: Maybe; + /** + * Removes the user assigned as the owner of the checkout. + * + * Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_USER. + */ + checkoutCustomerDetach?: Maybe; + /** + * Updates the delivery method (shipping method or pick up point) of the checkout. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + checkoutDeliveryMethodUpdate?: Maybe; + /** Updates email address in the existing checkout object. */ + checkoutEmailUpdate?: Maybe; + /** Update language code in the existing checkout. */ + checkoutLanguageCodeUpdate?: Maybe; + /** + * Deletes a CheckoutLine. + * @deprecated DEPRECATED: Will be removed in Saleor 4.0. Use `checkoutLinesDelete` instead. + */ + checkoutLineDelete?: Maybe; + /** Adds a checkout line to the existing checkout.If line was already in checkout, its quantity will be increased. */ + checkoutLinesAdd?: Maybe; + /** Deletes checkout lines. */ + checkoutLinesDelete?: Maybe; + /** Updates checkout line in the existing checkout. */ + checkoutLinesUpdate?: Maybe; + /** Create a new payment for given checkout. */ + checkoutPaymentCreate?: Maybe; + /** Remove a gift card or a voucher from a checkout. */ + checkoutRemovePromoCode?: Maybe; + /** Update shipping address in the existing checkout. */ + checkoutShippingAddressUpdate?: Maybe; + /** + * Updates the shipping method of the checkout. + * @deprecated This field will be removed in Saleor 4.0. Use `checkoutDeliveryMethodUpdate` instead. + */ + checkoutShippingMethodUpdate?: Maybe; + /** + * Adds products to a collection. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + collectionAddProducts?: Maybe; + /** + * Deletes collections. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + collectionBulkDelete?: Maybe; + /** + * Manage collection's availability in channels. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + collectionChannelListingUpdate?: Maybe; + /** + * Creates a new collection. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + collectionCreate?: Maybe; + /** + * Deletes a collection. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + collectionDelete?: Maybe; + /** + * Remove products from a collection. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + collectionRemoveProducts?: Maybe; + /** + * Reorder the products of a collection. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + collectionReorderProducts?: Maybe; + /** + * Creates/updates translations for a collection. + * + * Requires one of the following permissions: MANAGE_TRANSLATIONS. + */ + collectionTranslate?: Maybe; + /** + * Updates a collection. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + collectionUpdate?: Maybe; + /** Confirm user account with token sent by email during registration. */ + confirmAccount?: Maybe; + /** + * Confirm the email change of the logged-in user. + * + * Requires one of the following permissions: AUTHENTICATED_USER. + */ + confirmEmailChange?: Maybe; + /** + * Creates new warehouse. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + createWarehouse?: Maybe; + /** + * Deletes customers. + * + * Requires one of the following permissions: MANAGE_USERS. + */ + customerBulkDelete?: Maybe; + /** + * Creates a new customer. + * + * Requires one of the following permissions: MANAGE_USERS. + */ + customerCreate?: Maybe; + /** + * Deletes a customer. + * + * Requires one of the following permissions: MANAGE_USERS. + */ + customerDelete?: Maybe; + /** + * Updates an existing customer. + * + * Requires one of the following permissions: MANAGE_USERS. + */ + customerUpdate?: Maybe; + /** Delete metadata of an object. To use it, you need to have access to the modified object. */ + deleteMetadata?: Maybe; + /** Delete object's private metadata. To use it, you need to be an authenticated staff user or an app and have access to the modified object. */ + deletePrivateMetadata?: Maybe; + /** + * Deletes selected warehouse. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + deleteWarehouse?: Maybe; + /** + * Create new digital content. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + digitalContentCreate?: Maybe; + /** + * Remove digital content assigned to given variant. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + digitalContentDelete?: Maybe; + /** + * Update digital content. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + digitalContentUpdate?: Maybe; + /** + * Generate new URL to digital content. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + digitalContentUrlCreate?: Maybe; + /** + * Deletes draft orders. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + draftOrderBulkDelete?: Maybe; + /** + * Completes creating an order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + draftOrderComplete?: Maybe; + /** + * Creates a new draft order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + draftOrderCreate?: Maybe; + /** + * Deletes a draft order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + draftOrderDelete?: Maybe; + /** + * Deletes order lines. + * + * Requires one of the following permissions: MANAGE_ORDERS. + * @deprecated This field will be removed in Saleor 4.0. + */ + draftOrderLinesBulkDelete?: Maybe; + /** + * Updates a draft order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + draftOrderUpdate?: Maybe; + /** + * Retries event delivery. + * + * Requires one of the following permissions: MANAGE_APPS. + */ + eventDeliveryRetry?: Maybe; + /** + * Export gift cards to csv file. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ + exportGiftCards?: Maybe; + /** + * Export products to csv file. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + exportProducts?: Maybe; + /** Prepare external authentication url for user by custom plugin. */ + externalAuthenticationUrl?: Maybe; + /** Logout user by custom plugin. */ + externalLogout?: Maybe; + /** + * Trigger sending a notification with the notify plugin method. Serializes nodes provided as ids parameter and includes this data in the notification payload. + * + * Added in Saleor 3.1. + */ + externalNotificationTrigger?: Maybe; + /** Obtain external access tokens for user by custom plugin. */ + externalObtainAccessTokens?: Maybe; + /** Refresh user's access by custom plugin. */ + externalRefresh?: Maybe; + /** Verify external authentication data by plugin. */ + externalVerify?: Maybe; + /** + * Upload a file. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + * + * Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER. + */ + fileUpload?: Maybe; + /** + * Activate a gift card. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ + giftCardActivate?: Maybe; + /** + * Adds note to the gift card. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ + giftCardAddNote?: Maybe; + /** + * Activate gift cards. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ + giftCardBulkActivate?: Maybe; + /** + * Create gift cards. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ + giftCardBulkCreate?: Maybe; + /** + * Deactivate gift cards. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ + giftCardBulkDeactivate?: Maybe; + /** + * Delete gift cards. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ + giftCardBulkDelete?: Maybe; + /** + * Creates a new gift card. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ + giftCardCreate?: Maybe; + /** + * Deactivate a gift card. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ + giftCardDeactivate?: Maybe; + /** + * Delete gift card. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ + giftCardDelete?: Maybe; + /** + * Resend a gift card. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ + giftCardResend?: Maybe; + /** + * Update gift card settings. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ + giftCardSettingsUpdate?: Maybe; + /** + * Update a gift card. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ + giftCardUpdate?: Maybe; + /** + * Creates a ready to send invoice. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + invoiceCreate?: Maybe; + /** + * Deletes an invoice. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + invoiceDelete?: Maybe; + /** + * Request an invoice for the order using plugin. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + invoiceRequest?: Maybe; + /** + * Requests deletion of an invoice. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + invoiceRequestDelete?: Maybe; + /** + * Send an invoice notification to the customer. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + invoiceSendNotification?: Maybe; + /** + * Updates an invoice. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + invoiceUpdate?: Maybe; + /** + * Deletes menus. + * + * Requires one of the following permissions: MANAGE_MENUS. + */ + menuBulkDelete?: Maybe; + /** + * Creates a new Menu. + * + * Requires one of the following permissions: MANAGE_MENUS. + */ + menuCreate?: Maybe; + /** + * Deletes a menu. + * + * Requires one of the following permissions: MANAGE_MENUS. + */ + menuDelete?: Maybe; + /** + * Deletes menu items. + * + * Requires one of the following permissions: MANAGE_MENUS. + */ + menuItemBulkDelete?: Maybe; + /** + * Creates a new menu item. + * + * Requires one of the following permissions: MANAGE_MENUS. + */ + menuItemCreate?: Maybe; + /** + * Deletes a menu item. + * + * Requires one of the following permissions: MANAGE_MENUS. + */ + menuItemDelete?: Maybe; + /** + * Moves items of menus. + * + * Requires one of the following permissions: MANAGE_MENUS. + */ + menuItemMove?: Maybe; + /** + * Creates/updates translations for a menu item. + * + * Requires one of the following permissions: MANAGE_TRANSLATIONS. + */ + menuItemTranslate?: Maybe; + /** + * Updates a menu item. + * + * Requires one of the following permissions: MANAGE_MENUS. + */ + menuItemUpdate?: Maybe; + /** + * Updates a menu. + * + * Requires one of the following permissions: MANAGE_MENUS. + */ + menuUpdate?: Maybe; + /** + * Adds note to the order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + orderAddNote?: Maybe; + /** + * Cancels orders. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + orderBulkCancel?: Maybe; + /** + * Cancel an order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + orderCancel?: Maybe; + /** + * Capture an order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + orderCapture?: Maybe; + /** + * Confirms an unconfirmed order by changing status to unfulfilled. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + orderConfirm?: Maybe; + /** + * Create new order from existing checkout. Requires the following permissions: AUTHENTICATED_APP and HANDLE_CHECKOUTS. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + orderCreateFromCheckout?: Maybe; + /** + * Adds discount to the order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + orderDiscountAdd?: Maybe; + /** + * Remove discount from the order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + orderDiscountDelete?: Maybe; + /** + * Update discount for the order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + orderDiscountUpdate?: Maybe; + /** + * Creates new fulfillments for an order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + orderFulfill?: Maybe; + /** + * Approve existing fulfillment. + * + * Added in Saleor 3.1. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + orderFulfillmentApprove?: Maybe; + /** + * Cancels existing fulfillment and optionally restocks items. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + orderFulfillmentCancel?: Maybe; + /** + * Refund products. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + orderFulfillmentRefundProducts?: Maybe; + /** + * Return products. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + orderFulfillmentReturnProducts?: Maybe; + /** + * Updates a fulfillment for an order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + orderFulfillmentUpdateTracking?: Maybe; + /** + * Deletes an order line from an order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + orderLineDelete?: Maybe; + /** + * Remove discount applied to the order line. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + orderLineDiscountRemove?: Maybe; + /** + * Update discount for the order line. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + orderLineDiscountUpdate?: Maybe; + /** + * Updates an order line of an order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + orderLineUpdate?: Maybe; + /** + * Create order lines for an order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + orderLinesCreate?: Maybe; + /** + * Mark order as manually paid. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + orderMarkAsPaid?: Maybe; + /** + * Refund an order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + orderRefund?: Maybe; + /** + * Update shop order settings. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + orderSettingsUpdate?: Maybe; + /** + * Updates an order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + orderUpdate?: Maybe; + /** + * Updates a shipping method of the order. Requires shipping method ID to update, when null is passed then currently assigned shipping method is removed. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + orderUpdateShipping?: Maybe; + /** + * Void an order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + orderVoid?: Maybe; + /** + * Assign attributes to a given page type. + * + * Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + */ + pageAttributeAssign?: Maybe; + /** + * Unassign attributes from a given page type. + * + * Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + */ + pageAttributeUnassign?: Maybe; + /** + * Deletes pages. + * + * Requires one of the following permissions: MANAGE_PAGES. + */ + pageBulkDelete?: Maybe; + /** + * Publish pages. + * + * Requires one of the following permissions: MANAGE_PAGES. + */ + pageBulkPublish?: Maybe; + /** + * Creates a new page. + * + * Requires one of the following permissions: MANAGE_PAGES. + */ + pageCreate?: Maybe; + /** + * Deletes a page. + * + * Requires one of the following permissions: MANAGE_PAGES. + */ + pageDelete?: Maybe; + /** + * Reorder page attribute values. + * + * Requires one of the following permissions: MANAGE_PAGES. + */ + pageReorderAttributeValues?: Maybe; + /** + * Creates/updates translations for a page. + * + * Requires one of the following permissions: MANAGE_TRANSLATIONS. + */ + pageTranslate?: Maybe; + /** + * Delete page types. + * + * Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + */ + pageTypeBulkDelete?: Maybe; + /** + * Create a new page type. + * + * Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + */ + pageTypeCreate?: Maybe; + /** + * Delete a page type. + * + * Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + */ + pageTypeDelete?: Maybe; + /** + * Reorder the attributes of a page type. + * + * Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + */ + pageTypeReorderAttributes?: Maybe; + /** + * Update page type. + * + * Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + */ + pageTypeUpdate?: Maybe; + /** + * Updates an existing page. + * + * Requires one of the following permissions: MANAGE_PAGES. + */ + pageUpdate?: Maybe; + /** + * Change the password of the logged in user. + * + * Requires one of the following permissions: AUTHENTICATED_USER. + */ + passwordChange?: Maybe; + /** + * Captures the authorized payment amount. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + paymentCapture?: Maybe; + /** Check payment balance. */ + paymentCheckBalance?: Maybe; + /** Initializes payment process when it is required by gateway. */ + paymentInitialize?: Maybe; + /** + * Refunds the captured payment amount. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + paymentRefund?: Maybe; + /** + * Voids the authorized payment. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + paymentVoid?: Maybe; + /** + * Create new permission group. + * + * Requires one of the following permissions: MANAGE_STAFF. + */ + permissionGroupCreate?: Maybe; + /** + * Delete permission group. + * + * Requires one of the following permissions: MANAGE_STAFF. + */ + permissionGroupDelete?: Maybe; + /** + * Update permission group. + * + * Requires one of the following permissions: MANAGE_STAFF. + */ + permissionGroupUpdate?: Maybe; + /** + * Update plugin configuration. + * + * Requires one of the following permissions: MANAGE_PLUGINS. + */ + pluginUpdate?: Maybe; + /** + * Assign attributes to a given product type. + * + * Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + */ + productAttributeAssign?: Maybe; + /** + * Update attributes assigned to product variant for given product type. + * + * Added in Saleor 3.1. + * + * Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + */ + productAttributeAssignmentUpdate?: Maybe; + /** + * Un-assign attributes from a given product type. + * + * Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + */ + productAttributeUnassign?: Maybe; + /** + * Deletes products. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + productBulkDelete?: Maybe; + /** + * Manage product's availability in channels. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + productChannelListingUpdate?: Maybe; + /** + * Creates a new product. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + productCreate?: Maybe; + /** + * Deletes a product. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + productDelete?: Maybe; + /** + * Deletes product media. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + productMediaBulkDelete?: Maybe; + /** + * Create a media object (image or video URL) associated with product. For image, this mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + productMediaCreate?: Maybe; + /** + * Deletes a product media. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + productMediaDelete?: Maybe; + /** + * Changes ordering of the product media. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + productMediaReorder?: Maybe; + /** + * Updates a product media. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + productMediaUpdate?: Maybe; + /** + * Reorder product attribute values. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + productReorderAttributeValues?: Maybe; + /** + * Creates/updates translations for a product. + * + * Requires one of the following permissions: MANAGE_TRANSLATIONS. + */ + productTranslate?: Maybe; + /** + * Deletes product types. + * + * Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + */ + productTypeBulkDelete?: Maybe; + /** + * Creates a new product type. + * + * Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + */ + productTypeCreate?: Maybe; + /** + * Deletes a product type. + * + * Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + */ + productTypeDelete?: Maybe; + /** + * Reorder the attributes of a product type. + * + * Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + */ + productTypeReorderAttributes?: Maybe; + /** + * Updates an existing product type. + * + * Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + */ + productTypeUpdate?: Maybe; + /** + * Updates an existing product. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + productUpdate?: Maybe; + /** + * Creates product variants for a given product. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + productVariantBulkCreate?: Maybe; + /** + * Deletes product variants. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + productVariantBulkDelete?: Maybe; + /** + * Manage product variant prices in channels. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + productVariantChannelListingUpdate?: Maybe; + /** + * Creates a new variant for a product. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + productVariantCreate?: Maybe; + /** + * Deletes a product variant. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + productVariantDelete?: Maybe; + /** + * Deactivates product variant preorder. It changes all preorder allocation into regular allocation. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + productVariantPreorderDeactivate?: Maybe; + /** + * Reorder the variants of a product. Mutation updates updated_at on product and triggers PRODUCT_UPDATED webhook. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + productVariantReorder?: Maybe; + /** + * Reorder product variant attribute values. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + productVariantReorderAttributeValues?: Maybe; + /** + * Set default variant for a product. Mutation triggers PRODUCT_UPDATED webhook. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + productVariantSetDefault?: Maybe; + /** + * Creates stocks for product variant. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + productVariantStocksCreate?: Maybe; + /** + * Delete stocks from product variant. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + productVariantStocksDelete?: Maybe; + /** + * Update stocks for product variant. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + productVariantStocksUpdate?: Maybe; + /** + * Creates/updates translations for a product variant. + * + * Requires one of the following permissions: MANAGE_TRANSLATIONS. + */ + productVariantTranslate?: Maybe; + /** + * Updates an existing variant for product. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + productVariantUpdate?: Maybe; + /** + * Request email change of the logged in user. + * + * Requires one of the following permissions: AUTHENTICATED_USER. + */ + requestEmailChange?: Maybe; + /** Sends an email with the account password modification link. */ + requestPasswordReset?: Maybe; + /** + * Deletes sales. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ + saleBulkDelete?: Maybe; + /** + * Adds products, categories, collections to a voucher. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ + saleCataloguesAdd?: Maybe; + /** + * Removes products, categories, collections from a sale. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ + saleCataloguesRemove?: Maybe; + /** + * Manage sale's availability in channels. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ + saleChannelListingUpdate?: Maybe; + /** + * Creates a new sale. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ + saleCreate?: Maybe; + /** + * Deletes a sale. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ + saleDelete?: Maybe; + /** + * Creates/updates translations for a sale. + * + * Requires one of the following permissions: MANAGE_TRANSLATIONS. + */ + saleTranslate?: Maybe; + /** + * Updates a sale. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ + saleUpdate?: Maybe; + /** Sets the user's password from the token sent by email using the RequestPasswordReset mutation. */ + setPassword?: Maybe; + /** + * Manage shipping method's availability in channels. + * + * Requires one of the following permissions: MANAGE_SHIPPING. + */ + shippingMethodChannelListingUpdate?: Maybe; + /** + * Deletes shipping prices. + * + * Requires one of the following permissions: MANAGE_SHIPPING. + */ + shippingPriceBulkDelete?: Maybe; + /** + * Creates a new shipping price. + * + * Requires one of the following permissions: MANAGE_SHIPPING. + */ + shippingPriceCreate?: Maybe; + /** + * Deletes a shipping price. + * + * Requires one of the following permissions: MANAGE_SHIPPING. + */ + shippingPriceDelete?: Maybe; + /** + * Exclude products from shipping price. + * + * Requires one of the following permissions: MANAGE_SHIPPING. + */ + shippingPriceExcludeProducts?: Maybe; + /** + * Remove product from excluded list for shipping price. + * + * Requires one of the following permissions: MANAGE_SHIPPING. + */ + shippingPriceRemoveProductFromExclude?: Maybe; + /** + * Creates/updates translations for a shipping method. + * + * Requires one of the following permissions: MANAGE_TRANSLATIONS. + */ + shippingPriceTranslate?: Maybe; + /** + * Updates a new shipping price. + * + * Requires one of the following permissions: MANAGE_SHIPPING. + */ + shippingPriceUpdate?: Maybe; + /** + * Deletes shipping zones. + * + * Requires one of the following permissions: MANAGE_SHIPPING. + */ + shippingZoneBulkDelete?: Maybe; + /** + * Creates a new shipping zone. + * + * Requires one of the following permissions: MANAGE_SHIPPING. + */ + shippingZoneCreate?: Maybe; + /** + * Deletes a shipping zone. + * + * Requires one of the following permissions: MANAGE_SHIPPING. + */ + shippingZoneDelete?: Maybe; + /** + * Updates a new shipping zone. + * + * Requires one of the following permissions: MANAGE_SHIPPING. + */ + shippingZoneUpdate?: Maybe; + /** + * Update the shop's address. If the `null` value is passed, the currently selected address will be deleted. + * + * Requires one of the following permissions: MANAGE_SETTINGS. + */ + shopAddressUpdate?: Maybe; + /** + * Updates site domain of the shop. + * + * Requires one of the following permissions: MANAGE_SETTINGS. + */ + shopDomainUpdate?: Maybe; + /** + * Fetch tax rates. + * + * Requires one of the following permissions: MANAGE_SETTINGS. + */ + shopFetchTaxRates?: Maybe; + /** + * Creates/updates translations for shop settings. + * + * Requires one of the following permissions: MANAGE_TRANSLATIONS. + */ + shopSettingsTranslate?: Maybe; + /** + * Updates shop settings. + * + * Requires one of the following permissions: MANAGE_SETTINGS. + */ + shopSettingsUpdate?: Maybe; + /** + * Deletes staff users. + * + * Requires one of the following permissions: MANAGE_STAFF. + */ + staffBulkDelete?: Maybe; + /** + * Creates a new staff user. + * + * Requires one of the following permissions: MANAGE_STAFF. + */ + staffCreate?: Maybe; + /** + * Deletes a staff user. + * + * Requires one of the following permissions: MANAGE_STAFF. + */ + staffDelete?: Maybe; + /** + * Creates a new staff notification recipient. + * + * Requires one of the following permissions: MANAGE_SETTINGS. + */ + staffNotificationRecipientCreate?: Maybe; + /** + * Delete staff notification recipient. + * + * Requires one of the following permissions: MANAGE_SETTINGS. + */ + staffNotificationRecipientDelete?: Maybe; + /** + * Updates a staff notification recipient. + * + * Requires one of the following permissions: MANAGE_SETTINGS. + */ + staffNotificationRecipientUpdate?: Maybe; + /** + * Updates an existing staff user. + * + * Requires one of the following permissions: MANAGE_STAFF. + */ + staffUpdate?: Maybe; + /** Create JWT token. */ + tokenCreate?: Maybe; + /** Refresh JWT token. Mutation tries to take refreshToken from the input.If it fails it will try to take refreshToken from the http-only cookie -refreshToken. csrfToken is required when refreshToken is provided as a cookie. */ + tokenRefresh?: Maybe; + /** Verify JWT token. */ + tokenVerify?: Maybe; + /** + * Deactivate all JWT tokens of the currently authenticated user. + * + * Requires one of the following permissions: AUTHENTICATED_USER. + */ + tokensDeactivateAll?: Maybe; + /** + * Create transaction for checkout or order. Requires the following permissions: AUTHENTICATED_APP and HANDLE_PAYMENTS. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + transactionCreate?: Maybe; + /** + * Request an action for payment transaction. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: HANDLE_PAYMENTS, MANAGE_ORDERS. + */ + transactionRequestAction?: Maybe; + /** + * Create transaction for checkout or order. Requires the following permissions: AUTHENTICATED_APP and HANDLE_PAYMENTS. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + transactionUpdate?: Maybe; + /** + * Remove shipping zone from given warehouse. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + unassignWarehouseShippingZone?: Maybe; + /** Updates metadata of an object. To use it, you need to have access to the modified object. */ + updateMetadata?: Maybe; + /** Updates private metadata of an object. To use it, you need to be an authenticated staff user or an app and have access to the modified object. */ + updatePrivateMetadata?: Maybe; + /** + * Updates given warehouse. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + updateWarehouse?: Maybe; + /** + * Deletes a user avatar. Only for staff members. + * + * Requires one of the following permissions: AUTHENTICATED_STAFF_USER. + */ + userAvatarDelete?: Maybe; + /** + * Create a user avatar. Only for staff members. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + * + * Requires one of the following permissions: AUTHENTICATED_STAFF_USER. + */ + userAvatarUpdate?: Maybe; + /** + * Activate or deactivate users. + * + * Requires one of the following permissions: MANAGE_USERS. + */ + userBulkSetActive?: Maybe; + /** + * Assign an media to a product variant. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + variantMediaAssign?: Maybe; + /** + * Unassign an media from a product variant. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + variantMediaUnassign?: Maybe; + /** + * Deletes vouchers. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ + voucherBulkDelete?: Maybe; + /** + * Adds products, categories, collections to a voucher. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ + voucherCataloguesAdd?: Maybe; + /** + * Removes products, categories, collections from a voucher. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ + voucherCataloguesRemove?: Maybe; + /** + * Manage voucher's availability in channels. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ + voucherChannelListingUpdate?: Maybe; + /** + * Creates a new voucher. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ + voucherCreate?: Maybe; + /** + * Deletes a voucher. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ + voucherDelete?: Maybe; + /** + * Creates/updates translations for a voucher. + * + * Requires one of the following permissions: MANAGE_TRANSLATIONS. + */ + voucherTranslate?: Maybe; + /** + * Updates a voucher. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ + voucherUpdate?: Maybe; + /** + * Creates a new webhook subscription. + * + * Requires one of the following permissions: MANAGE_APPS, AUTHENTICATED_APP. + */ + webhookCreate?: Maybe; + /** + * Deletes a webhook subscription. + * + * Requires one of the following permissions: MANAGE_APPS, AUTHENTICATED_APP. + */ + webhookDelete?: Maybe; + /** + * Updates a webhook subscription. + * + * Requires one of the following permissions: MANAGE_APPS. + */ + webhookUpdate?: Maybe; +}; + +export type MutationAccountAddressCreateArgs = { + input: AddressInput; + type?: InputMaybe; +}; + +export type MutationAccountAddressDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationAccountAddressUpdateArgs = { + id: Scalars["ID"]; + input: AddressInput; +}; + +export type MutationAccountDeleteArgs = { + token: Scalars["String"]; +}; + +export type MutationAccountRegisterArgs = { + input: AccountRegisterInput; +}; + +export type MutationAccountRequestDeletionArgs = { + channel?: InputMaybe; + redirectUrl: Scalars["String"]; +}; + +export type MutationAccountSetDefaultAddressArgs = { + id: Scalars["ID"]; + type: AddressTypeEnum; +}; + +export type MutationAccountUpdateArgs = { + input: AccountInput; +}; + +export type MutationAddressCreateArgs = { + input: AddressInput; + userId: Scalars["ID"]; +}; + +export type MutationAddressDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationAddressSetDefaultArgs = { + addressId: Scalars["ID"]; + type: AddressTypeEnum; + userId: Scalars["ID"]; +}; + +export type MutationAddressUpdateArgs = { + id: Scalars["ID"]; + input: AddressInput; +}; + +export type MutationAppActivateArgs = { + id: Scalars["ID"]; +}; + +export type MutationAppCreateArgs = { + input: AppInput; +}; + +export type MutationAppDeactivateArgs = { + id: Scalars["ID"]; +}; + +export type MutationAppDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationAppDeleteFailedInstallationArgs = { + id: Scalars["ID"]; +}; + +export type MutationAppFetchManifestArgs = { + manifestUrl: Scalars["String"]; +}; + +export type MutationAppInstallArgs = { + input: AppInstallInput; +}; + +export type MutationAppRetryInstallArgs = { + activateAfterInstallation?: InputMaybe; + id: Scalars["ID"]; +}; + +export type MutationAppTokenCreateArgs = { + input: AppTokenInput; +}; + +export type MutationAppTokenDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationAppTokenVerifyArgs = { + token: Scalars["String"]; +}; + +export type MutationAppUpdateArgs = { + id: Scalars["ID"]; + input: AppInput; +}; + +export type MutationAssignNavigationArgs = { + menu?: InputMaybe; + navigationType: NavigationType; +}; + +export type MutationAssignWarehouseShippingZoneArgs = { + id: Scalars["ID"]; + shippingZoneIds: Array; +}; + +export type MutationAttributeBulkDeleteArgs = { + ids: Array; +}; + +export type MutationAttributeCreateArgs = { + input: AttributeCreateInput; +}; + +export type MutationAttributeDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationAttributeReorderValuesArgs = { + attributeId: Scalars["ID"]; + moves: Array; +}; + +export type MutationAttributeTranslateArgs = { + id: Scalars["ID"]; + input: NameTranslationInput; + languageCode: LanguageCodeEnum; +}; + +export type MutationAttributeUpdateArgs = { + id: Scalars["ID"]; + input: AttributeUpdateInput; +}; + +export type MutationAttributeValueBulkDeleteArgs = { + ids: Array; +}; + +export type MutationAttributeValueCreateArgs = { + attribute: Scalars["ID"]; + input: AttributeValueCreateInput; +}; + +export type MutationAttributeValueDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationAttributeValueTranslateArgs = { + id: Scalars["ID"]; + input: AttributeValueTranslationInput; + languageCode: LanguageCodeEnum; +}; + +export type MutationAttributeValueUpdateArgs = { + id: Scalars["ID"]; + input: AttributeValueUpdateInput; +}; + +export type MutationCategoryBulkDeleteArgs = { + ids: Array; +}; + +export type MutationCategoryCreateArgs = { + input: CategoryInput; + parent?: InputMaybe; +}; + +export type MutationCategoryDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationCategoryTranslateArgs = { + id: Scalars["ID"]; + input: TranslationInput; + languageCode: LanguageCodeEnum; +}; + +export type MutationCategoryUpdateArgs = { + id: Scalars["ID"]; + input: CategoryInput; +}; + +export type MutationChannelActivateArgs = { + id: Scalars["ID"]; +}; + +export type MutationChannelCreateArgs = { + input: ChannelCreateInput; +}; + +export type MutationChannelDeactivateArgs = { + id: Scalars["ID"]; +}; + +export type MutationChannelDeleteArgs = { + id: Scalars["ID"]; + input?: InputMaybe; +}; + +export type MutationChannelUpdateArgs = { + id: Scalars["ID"]; + input: ChannelUpdateInput; +}; + +export type MutationCheckoutAddPromoCodeArgs = { + checkoutId?: InputMaybe; + id?: InputMaybe; + promoCode: Scalars["String"]; + token?: InputMaybe; +}; + +export type MutationCheckoutBillingAddressUpdateArgs = { + billingAddress: AddressInput; + checkoutId?: InputMaybe; + id?: InputMaybe; + token?: InputMaybe; +}; + +export type MutationCheckoutCompleteArgs = { + checkoutId?: InputMaybe; + id?: InputMaybe; + paymentData?: InputMaybe; + redirectUrl?: InputMaybe; + storeSource?: InputMaybe; + token?: InputMaybe; +}; + +export type MutationCheckoutCreateArgs = { + input: CheckoutCreateInput; +}; + +export type MutationCheckoutCustomerAttachArgs = { + checkoutId?: InputMaybe; + customerId?: InputMaybe; + id?: InputMaybe; + token?: InputMaybe; +}; + +export type MutationCheckoutCustomerDetachArgs = { + checkoutId?: InputMaybe; + id?: InputMaybe; + token?: InputMaybe; +}; + +export type MutationCheckoutDeliveryMethodUpdateArgs = { + deliveryMethodId?: InputMaybe; + id?: InputMaybe; + token?: InputMaybe; +}; + +export type MutationCheckoutEmailUpdateArgs = { + checkoutId?: InputMaybe; + email: Scalars["String"]; + id?: InputMaybe; + token?: InputMaybe; +}; + +export type MutationCheckoutLanguageCodeUpdateArgs = { + checkoutId?: InputMaybe; + id?: InputMaybe; + languageCode: LanguageCodeEnum; + token?: InputMaybe; +}; + +export type MutationCheckoutLineDeleteArgs = { + checkoutId?: InputMaybe; + id?: InputMaybe; + lineId?: InputMaybe; + token?: InputMaybe; +}; + +export type MutationCheckoutLinesAddArgs = { + checkoutId?: InputMaybe; + id?: InputMaybe; + lines: Array; + token?: InputMaybe; +}; + +export type MutationCheckoutLinesDeleteArgs = { + id?: InputMaybe; + linesIds: Array; + token?: InputMaybe; +}; + +export type MutationCheckoutLinesUpdateArgs = { + checkoutId?: InputMaybe; + id?: InputMaybe; + lines: Array; + token?: InputMaybe; +}; + +export type MutationCheckoutPaymentCreateArgs = { + checkoutId?: InputMaybe; + id?: InputMaybe; + input: PaymentInput; + token?: InputMaybe; +}; + +export type MutationCheckoutRemovePromoCodeArgs = { + checkoutId?: InputMaybe; + id?: InputMaybe; + promoCode?: InputMaybe; + promoCodeId?: InputMaybe; + token?: InputMaybe; +}; + +export type MutationCheckoutShippingAddressUpdateArgs = { + checkoutId?: InputMaybe; + id?: InputMaybe; + shippingAddress: AddressInput; + token?: InputMaybe; +}; + +export type MutationCheckoutShippingMethodUpdateArgs = { + checkoutId?: InputMaybe; + id?: InputMaybe; + shippingMethodId: Scalars["ID"]; + token?: InputMaybe; +}; + +export type MutationCollectionAddProductsArgs = { + collectionId: Scalars["ID"]; + products: Array; +}; + +export type MutationCollectionBulkDeleteArgs = { + ids: Array; +}; + +export type MutationCollectionChannelListingUpdateArgs = { + id: Scalars["ID"]; + input: CollectionChannelListingUpdateInput; +}; + +export type MutationCollectionCreateArgs = { + input: CollectionCreateInput; +}; + +export type MutationCollectionDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationCollectionRemoveProductsArgs = { + collectionId: Scalars["ID"]; + products: Array; +}; + +export type MutationCollectionReorderProductsArgs = { + collectionId: Scalars["ID"]; + moves: Array; +}; + +export type MutationCollectionTranslateArgs = { + id: Scalars["ID"]; + input: TranslationInput; + languageCode: LanguageCodeEnum; +}; + +export type MutationCollectionUpdateArgs = { + id: Scalars["ID"]; + input: CollectionInput; +}; + +export type MutationConfirmAccountArgs = { + email: Scalars["String"]; + token: Scalars["String"]; +}; + +export type MutationConfirmEmailChangeArgs = { + channel?: InputMaybe; + token: Scalars["String"]; +}; + +export type MutationCreateWarehouseArgs = { + input: WarehouseCreateInput; +}; + +export type MutationCustomerBulkDeleteArgs = { + ids: Array; +}; + +export type MutationCustomerCreateArgs = { + input: UserCreateInput; +}; + +export type MutationCustomerDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationCustomerUpdateArgs = { + id: Scalars["ID"]; + input: CustomerInput; +}; + +export type MutationDeleteMetadataArgs = { + id: Scalars["ID"]; + keys: Array; +}; + +export type MutationDeletePrivateMetadataArgs = { + id: Scalars["ID"]; + keys: Array; +}; + +export type MutationDeleteWarehouseArgs = { + id: Scalars["ID"]; +}; + +export type MutationDigitalContentCreateArgs = { + input: DigitalContentUploadInput; + variantId: Scalars["ID"]; +}; + +export type MutationDigitalContentDeleteArgs = { + variantId: Scalars["ID"]; +}; + +export type MutationDigitalContentUpdateArgs = { + input: DigitalContentInput; + variantId: Scalars["ID"]; +}; + +export type MutationDigitalContentUrlCreateArgs = { + input: DigitalContentUrlCreateInput; +}; + +export type MutationDraftOrderBulkDeleteArgs = { + ids: Array; +}; + +export type MutationDraftOrderCompleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationDraftOrderCreateArgs = { + input: DraftOrderCreateInput; +}; + +export type MutationDraftOrderDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationDraftOrderLinesBulkDeleteArgs = { + ids: Array; +}; + +export type MutationDraftOrderUpdateArgs = { + id: Scalars["ID"]; + input: DraftOrderInput; +}; + +export type MutationEventDeliveryRetryArgs = { + id: Scalars["ID"]; +}; + +export type MutationExportGiftCardsArgs = { + input: ExportGiftCardsInput; +}; + +export type MutationExportProductsArgs = { + input: ExportProductsInput; +}; + +export type MutationExternalAuthenticationUrlArgs = { + input: Scalars["JSONString"]; + pluginId: Scalars["String"]; +}; + +export type MutationExternalLogoutArgs = { + input: Scalars["JSONString"]; + pluginId: Scalars["String"]; +}; + +export type MutationExternalNotificationTriggerArgs = { + channel: Scalars["String"]; + input: ExternalNotificationTriggerInput; + pluginId?: InputMaybe; +}; + +export type MutationExternalObtainAccessTokensArgs = { + input: Scalars["JSONString"]; + pluginId: Scalars["String"]; +}; + +export type MutationExternalRefreshArgs = { + input: Scalars["JSONString"]; + pluginId: Scalars["String"]; +}; + +export type MutationExternalVerifyArgs = { + input: Scalars["JSONString"]; + pluginId: Scalars["String"]; +}; + +export type MutationFileUploadArgs = { + file: Scalars["Upload"]; +}; + +export type MutationGiftCardActivateArgs = { + id: Scalars["ID"]; +}; + +export type MutationGiftCardAddNoteArgs = { + id: Scalars["ID"]; + input: GiftCardAddNoteInput; +}; + +export type MutationGiftCardBulkActivateArgs = { + ids: Array; +}; + +export type MutationGiftCardBulkCreateArgs = { + input: GiftCardBulkCreateInput; +}; + +export type MutationGiftCardBulkDeactivateArgs = { + ids: Array; +}; + +export type MutationGiftCardBulkDeleteArgs = { + ids: Array; +}; + +export type MutationGiftCardCreateArgs = { + input: GiftCardCreateInput; +}; + +export type MutationGiftCardDeactivateArgs = { + id: Scalars["ID"]; +}; + +export type MutationGiftCardDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationGiftCardResendArgs = { + input: GiftCardResendInput; +}; + +export type MutationGiftCardSettingsUpdateArgs = { + input: GiftCardSettingsUpdateInput; +}; + +export type MutationGiftCardUpdateArgs = { + id: Scalars["ID"]; + input: GiftCardUpdateInput; +}; + +export type MutationInvoiceCreateArgs = { + input: InvoiceCreateInput; + orderId: Scalars["ID"]; +}; + +export type MutationInvoiceDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationInvoiceRequestArgs = { + number?: InputMaybe; + orderId: Scalars["ID"]; +}; + +export type MutationInvoiceRequestDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationInvoiceSendNotificationArgs = { + id: Scalars["ID"]; +}; + +export type MutationInvoiceUpdateArgs = { + id: Scalars["ID"]; + input: UpdateInvoiceInput; +}; + +export type MutationMenuBulkDeleteArgs = { + ids: Array; +}; + +export type MutationMenuCreateArgs = { + input: MenuCreateInput; +}; + +export type MutationMenuDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationMenuItemBulkDeleteArgs = { + ids: Array; +}; + +export type MutationMenuItemCreateArgs = { + input: MenuItemCreateInput; +}; + +export type MutationMenuItemDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationMenuItemMoveArgs = { + menu: Scalars["ID"]; + moves: Array; +}; + +export type MutationMenuItemTranslateArgs = { + id: Scalars["ID"]; + input: NameTranslationInput; + languageCode: LanguageCodeEnum; +}; + +export type MutationMenuItemUpdateArgs = { + id: Scalars["ID"]; + input: MenuItemInput; +}; + +export type MutationMenuUpdateArgs = { + id: Scalars["ID"]; + input: MenuInput; +}; + +export type MutationOrderAddNoteArgs = { + input: OrderAddNoteInput; + order: Scalars["ID"]; +}; + +export type MutationOrderBulkCancelArgs = { + ids: Array; +}; + +export type MutationOrderCancelArgs = { + id: Scalars["ID"]; +}; + +export type MutationOrderCaptureArgs = { + amount: Scalars["PositiveDecimal"]; + id: Scalars["ID"]; +}; + +export type MutationOrderConfirmArgs = { + id: Scalars["ID"]; +}; + +export type MutationOrderCreateFromCheckoutArgs = { + id: Scalars["ID"]; + removeCheckout?: InputMaybe; +}; + +export type MutationOrderDiscountAddArgs = { + input: OrderDiscountCommonInput; + orderId: Scalars["ID"]; +}; + +export type MutationOrderDiscountDeleteArgs = { + discountId: Scalars["ID"]; +}; + +export type MutationOrderDiscountUpdateArgs = { + discountId: Scalars["ID"]; + input: OrderDiscountCommonInput; +}; + +export type MutationOrderFulfillArgs = { + input: OrderFulfillInput; + order?: InputMaybe; +}; + +export type MutationOrderFulfillmentApproveArgs = { + allowStockToBeExceeded?: InputMaybe; + id: Scalars["ID"]; + notifyCustomer: Scalars["Boolean"]; +}; + +export type MutationOrderFulfillmentCancelArgs = { + id: Scalars["ID"]; + input?: InputMaybe; +}; + +export type MutationOrderFulfillmentRefundProductsArgs = { + input: OrderRefundProductsInput; + order: Scalars["ID"]; +}; + +export type MutationOrderFulfillmentReturnProductsArgs = { + input: OrderReturnProductsInput; + order: Scalars["ID"]; +}; + +export type MutationOrderFulfillmentUpdateTrackingArgs = { + id: Scalars["ID"]; + input: FulfillmentUpdateTrackingInput; +}; + +export type MutationOrderLineDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationOrderLineDiscountRemoveArgs = { + orderLineId: Scalars["ID"]; +}; + +export type MutationOrderLineDiscountUpdateArgs = { + input: OrderDiscountCommonInput; + orderLineId: Scalars["ID"]; +}; + +export type MutationOrderLineUpdateArgs = { + id: Scalars["ID"]; + input: OrderLineInput; +}; + +export type MutationOrderLinesCreateArgs = { + id: Scalars["ID"]; + input: Array; +}; + +export type MutationOrderMarkAsPaidArgs = { + id: Scalars["ID"]; + transactionReference?: InputMaybe; +}; + +export type MutationOrderRefundArgs = { + amount: Scalars["PositiveDecimal"]; + id: Scalars["ID"]; +}; + +export type MutationOrderSettingsUpdateArgs = { + input: OrderSettingsUpdateInput; +}; + +export type MutationOrderUpdateArgs = { + id: Scalars["ID"]; + input: OrderUpdateInput; +}; + +export type MutationOrderUpdateShippingArgs = { + input: OrderUpdateShippingInput; + order: Scalars["ID"]; +}; + +export type MutationOrderVoidArgs = { + id: Scalars["ID"]; +}; + +export type MutationPageAttributeAssignArgs = { + attributeIds: Array; + pageTypeId: Scalars["ID"]; +}; + +export type MutationPageAttributeUnassignArgs = { + attributeIds: Array; + pageTypeId: Scalars["ID"]; +}; + +export type MutationPageBulkDeleteArgs = { + ids: Array; +}; + +export type MutationPageBulkPublishArgs = { + ids: Array; + isPublished: Scalars["Boolean"]; +}; + +export type MutationPageCreateArgs = { + input: PageCreateInput; +}; + +export type MutationPageDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationPageReorderAttributeValuesArgs = { + attributeId: Scalars["ID"]; + moves: Array; + pageId: Scalars["ID"]; +}; + +export type MutationPageTranslateArgs = { + id: Scalars["ID"]; + input: PageTranslationInput; + languageCode: LanguageCodeEnum; +}; + +export type MutationPageTypeBulkDeleteArgs = { + ids: Array; +}; + +export type MutationPageTypeCreateArgs = { + input: PageTypeCreateInput; +}; + +export type MutationPageTypeDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationPageTypeReorderAttributesArgs = { + moves: Array; + pageTypeId: Scalars["ID"]; +}; + +export type MutationPageTypeUpdateArgs = { + id?: InputMaybe; + input: PageTypeUpdateInput; +}; + +export type MutationPageUpdateArgs = { + id: Scalars["ID"]; + input: PageInput; +}; + +export type MutationPasswordChangeArgs = { + newPassword: Scalars["String"]; + oldPassword: Scalars["String"]; +}; + +export type MutationPaymentCaptureArgs = { + amount?: InputMaybe; + paymentId: Scalars["ID"]; +}; + +export type MutationPaymentCheckBalanceArgs = { + input: PaymentCheckBalanceInput; +}; + +export type MutationPaymentInitializeArgs = { + channel?: InputMaybe; + gateway: Scalars["String"]; + paymentData?: InputMaybe; +}; + +export type MutationPaymentRefundArgs = { + amount?: InputMaybe; + paymentId: Scalars["ID"]; +}; + +export type MutationPaymentVoidArgs = { + paymentId: Scalars["ID"]; +}; + +export type MutationPermissionGroupCreateArgs = { + input: PermissionGroupCreateInput; +}; + +export type MutationPermissionGroupDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationPermissionGroupUpdateArgs = { + id: Scalars["ID"]; + input: PermissionGroupUpdateInput; +}; + +export type MutationPluginUpdateArgs = { + channelId?: InputMaybe; + id: Scalars["ID"]; + input: PluginUpdateInput; +}; + +export type MutationProductAttributeAssignArgs = { + operations: Array; + productTypeId: Scalars["ID"]; +}; + +export type MutationProductAttributeAssignmentUpdateArgs = { + operations: Array; + productTypeId: Scalars["ID"]; +}; + +export type MutationProductAttributeUnassignArgs = { + attributeIds: Array; + productTypeId: Scalars["ID"]; +}; + +export type MutationProductBulkDeleteArgs = { + ids: Array; +}; + +export type MutationProductChannelListingUpdateArgs = { + id: Scalars["ID"]; + input: ProductChannelListingUpdateInput; +}; + +export type MutationProductCreateArgs = { + input: ProductCreateInput; +}; + +export type MutationProductDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationProductMediaBulkDeleteArgs = { + ids: Array; +}; + +export type MutationProductMediaCreateArgs = { + input: ProductMediaCreateInput; +}; + +export type MutationProductMediaDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationProductMediaReorderArgs = { + mediaIds: Array; + productId: Scalars["ID"]; +}; + +export type MutationProductMediaUpdateArgs = { + id: Scalars["ID"]; + input: ProductMediaUpdateInput; +}; + +export type MutationProductReorderAttributeValuesArgs = { + attributeId: Scalars["ID"]; + moves: Array; + productId: Scalars["ID"]; +}; + +export type MutationProductTranslateArgs = { + id: Scalars["ID"]; + input: TranslationInput; + languageCode: LanguageCodeEnum; +}; + +export type MutationProductTypeBulkDeleteArgs = { + ids: Array; +}; + +export type MutationProductTypeCreateArgs = { + input: ProductTypeInput; +}; + +export type MutationProductTypeDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationProductTypeReorderAttributesArgs = { + moves: Array; + productTypeId: Scalars["ID"]; + type: ProductAttributeType; +}; + +export type MutationProductTypeUpdateArgs = { + id: Scalars["ID"]; + input: ProductTypeInput; +}; + +export type MutationProductUpdateArgs = { + id: Scalars["ID"]; + input: ProductInput; +}; + +export type MutationProductVariantBulkCreateArgs = { + product: Scalars["ID"]; + variants: Array; +}; + +export type MutationProductVariantBulkDeleteArgs = { + ids: Array; +}; + +export type MutationProductVariantChannelListingUpdateArgs = { + id: Scalars["ID"]; + input: Array; +}; + +export type MutationProductVariantCreateArgs = { + input: ProductVariantCreateInput; +}; + +export type MutationProductVariantDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationProductVariantPreorderDeactivateArgs = { + id: Scalars["ID"]; +}; + +export type MutationProductVariantReorderArgs = { + moves: Array; + productId: Scalars["ID"]; +}; + +export type MutationProductVariantReorderAttributeValuesArgs = { + attributeId: Scalars["ID"]; + moves: Array; + variantId: Scalars["ID"]; +}; + +export type MutationProductVariantSetDefaultArgs = { + productId: Scalars["ID"]; + variantId: Scalars["ID"]; +}; + +export type MutationProductVariantStocksCreateArgs = { + stocks: Array; + variantId: Scalars["ID"]; +}; + +export type MutationProductVariantStocksDeleteArgs = { + variantId: Scalars["ID"]; + warehouseIds?: InputMaybe>; +}; + +export type MutationProductVariantStocksUpdateArgs = { + stocks: Array; + variantId: Scalars["ID"]; +}; + +export type MutationProductVariantTranslateArgs = { + id: Scalars["ID"]; + input: NameTranslationInput; + languageCode: LanguageCodeEnum; +}; + +export type MutationProductVariantUpdateArgs = { + id: Scalars["ID"]; + input: ProductVariantInput; +}; + +export type MutationRequestEmailChangeArgs = { + channel?: InputMaybe; + newEmail: Scalars["String"]; + password: Scalars["String"]; + redirectUrl: Scalars["String"]; +}; + +export type MutationRequestPasswordResetArgs = { + channel?: InputMaybe; + email: Scalars["String"]; + redirectUrl: Scalars["String"]; +}; + +export type MutationSaleBulkDeleteArgs = { + ids: Array; +}; + +export type MutationSaleCataloguesAddArgs = { + id: Scalars["ID"]; + input: CatalogueInput; +}; + +export type MutationSaleCataloguesRemoveArgs = { + id: Scalars["ID"]; + input: CatalogueInput; +}; + +export type MutationSaleChannelListingUpdateArgs = { + id: Scalars["ID"]; + input: SaleChannelListingInput; +}; + +export type MutationSaleCreateArgs = { + input: SaleInput; +}; + +export type MutationSaleDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationSaleTranslateArgs = { + id: Scalars["ID"]; + input: NameTranslationInput; + languageCode: LanguageCodeEnum; +}; + +export type MutationSaleUpdateArgs = { + id: Scalars["ID"]; + input: SaleInput; +}; + +export type MutationSetPasswordArgs = { + email: Scalars["String"]; + password: Scalars["String"]; + token: Scalars["String"]; +}; + +export type MutationShippingMethodChannelListingUpdateArgs = { + id: Scalars["ID"]; + input: ShippingMethodChannelListingInput; +}; + +export type MutationShippingPriceBulkDeleteArgs = { + ids: Array; +}; + +export type MutationShippingPriceCreateArgs = { + input: ShippingPriceInput; +}; + +export type MutationShippingPriceDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationShippingPriceExcludeProductsArgs = { + id: Scalars["ID"]; + input: ShippingPriceExcludeProductsInput; +}; + +export type MutationShippingPriceRemoveProductFromExcludeArgs = { + id: Scalars["ID"]; + products: Array; +}; + +export type MutationShippingPriceTranslateArgs = { + id: Scalars["ID"]; + input: ShippingPriceTranslationInput; + languageCode: LanguageCodeEnum; +}; + +export type MutationShippingPriceUpdateArgs = { + id: Scalars["ID"]; + input: ShippingPriceInput; +}; + +export type MutationShippingZoneBulkDeleteArgs = { + ids: Array; +}; + +export type MutationShippingZoneCreateArgs = { + input: ShippingZoneCreateInput; +}; + +export type MutationShippingZoneDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationShippingZoneUpdateArgs = { + id: Scalars["ID"]; + input: ShippingZoneUpdateInput; +}; + +export type MutationShopAddressUpdateArgs = { + input?: InputMaybe; +}; + +export type MutationShopDomainUpdateArgs = { + input?: InputMaybe; +}; + +export type MutationShopSettingsTranslateArgs = { + input: ShopSettingsTranslationInput; + languageCode: LanguageCodeEnum; +}; + +export type MutationShopSettingsUpdateArgs = { + input: ShopSettingsInput; +}; + +export type MutationStaffBulkDeleteArgs = { + ids: Array; +}; + +export type MutationStaffCreateArgs = { + input: StaffCreateInput; +}; + +export type MutationStaffDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationStaffNotificationRecipientCreateArgs = { + input: StaffNotificationRecipientInput; +}; + +export type MutationStaffNotificationRecipientDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationStaffNotificationRecipientUpdateArgs = { + id: Scalars["ID"]; + input: StaffNotificationRecipientInput; +}; + +export type MutationStaffUpdateArgs = { + id: Scalars["ID"]; + input: StaffUpdateInput; +}; + +export type MutationTokenCreateArgs = { + email: Scalars["String"]; + password: Scalars["String"]; +}; + +export type MutationTokenRefreshArgs = { + csrfToken?: InputMaybe; + refreshToken?: InputMaybe; +}; + +export type MutationTokenVerifyArgs = { + token: Scalars["String"]; +}; + +export type MutationTransactionCreateArgs = { + id: Scalars["ID"]; + transaction: TransactionCreateInput; + transactionEvent?: InputMaybe; +}; + +export type MutationTransactionRequestActionArgs = { + actionType: TransactionActionEnum; + amount?: InputMaybe; + id: Scalars["ID"]; +}; + +export type MutationTransactionUpdateArgs = { + id: Scalars["ID"]; + transaction?: InputMaybe; + transactionEvent?: InputMaybe; +}; + +export type MutationUnassignWarehouseShippingZoneArgs = { + id: Scalars["ID"]; + shippingZoneIds: Array; +}; + +export type MutationUpdateMetadataArgs = { + id: Scalars["ID"]; + input: Array; +}; + +export type MutationUpdatePrivateMetadataArgs = { + id: Scalars["ID"]; + input: Array; +}; + +export type MutationUpdateWarehouseArgs = { + id: Scalars["ID"]; + input: WarehouseUpdateInput; +}; + +export type MutationUserAvatarUpdateArgs = { + image: Scalars["Upload"]; +}; + +export type MutationUserBulkSetActiveArgs = { + ids: Array; + isActive: Scalars["Boolean"]; +}; + +export type MutationVariantMediaAssignArgs = { + mediaId: Scalars["ID"]; + variantId: Scalars["ID"]; +}; + +export type MutationVariantMediaUnassignArgs = { + mediaId: Scalars["ID"]; + variantId: Scalars["ID"]; +}; + +export type MutationVoucherBulkDeleteArgs = { + ids: Array; +}; + +export type MutationVoucherCataloguesAddArgs = { + id: Scalars["ID"]; + input: CatalogueInput; +}; + +export type MutationVoucherCataloguesRemoveArgs = { + id: Scalars["ID"]; + input: CatalogueInput; +}; + +export type MutationVoucherChannelListingUpdateArgs = { + id: Scalars["ID"]; + input: VoucherChannelListingInput; +}; + +export type MutationVoucherCreateArgs = { + input: VoucherInput; +}; + +export type MutationVoucherDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationVoucherTranslateArgs = { + id: Scalars["ID"]; + input: NameTranslationInput; + languageCode: LanguageCodeEnum; +}; + +export type MutationVoucherUpdateArgs = { + id: Scalars["ID"]; + input: VoucherInput; +}; + +export type MutationWebhookCreateArgs = { + input: WebhookCreateInput; +}; + +export type MutationWebhookDeleteArgs = { + id: Scalars["ID"]; +}; + +export type MutationWebhookUpdateArgs = { + id: Scalars["ID"]; + input: WebhookUpdateInput; +}; + +export type NameTranslationInput = { + name?: InputMaybe; +}; + +export enum NavigationType { + /** Main storefront navigation. */ + Main = "MAIN", + /** Secondary storefront navigation. */ + Secondary = "SECONDARY", +} + +/** An object with an ID */ +export type Node = { + /** The ID of the object. */ + id: Scalars["ID"]; +}; + +export type ObjectWithMetadata = { + /** List of public metadata items. Can be accessed without permissions. */ + metadata: Array; + /** + * A single key from public metadata. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafield?: Maybe; + /** + * Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafields?: Maybe; + /** List of private metadata items. Requires staff permissions to access. */ + privateMetadata: Array; + /** + * A single key from private metadata. Requires staff permissions to access. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafield?: Maybe; + /** + * Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafields?: Maybe; +}; + +export type ObjectWithMetadataMetafieldArgs = { + key: Scalars["String"]; +}; + +export type ObjectWithMetadataMetafieldsArgs = { + keys?: InputMaybe>; +}; + +export type ObjectWithMetadataPrivateMetafieldArgs = { + key: Scalars["String"]; +}; + +export type ObjectWithMetadataPrivateMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Represents an order in the shop. */ +export type Order = Node & + ObjectWithMetadata & { + __typename?: "Order"; + /** List of actions that can be performed in the current state of an order. */ + actions: Array; + /** + * The authorize status of the order. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + authorizeStatus: OrderAuthorizeStatusEnum; + /** + * Collection points that can be used for this order. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + availableCollectionPoints: Array; + /** + * Shipping methods that can be used with this order. + * @deprecated Use `shippingMethods`, this field will be removed in 4.0 + */ + availableShippingMethods?: Maybe>; + /** Billing address. The full data can be access for orders created in Saleor 3.2 and later, for other orders requires one of the following permissions: MANAGE_ORDERS, OWNER. */ + billingAddress?: Maybe
; + /** Informs whether a draft order can be finalized(turned into a regular order). */ + canFinalize: Scalars["Boolean"]; + channel: Channel; + /** + * The charge status of the order. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + chargeStatus: OrderChargeStatusEnum; + collectionPointName?: Maybe; + created: Scalars["DateTime"]; + customerNote: Scalars["String"]; + /** + * The delivery method selected for this checkout. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + deliveryMethod?: Maybe; + /** + * Returns applied discount. + * @deprecated This field will be removed in Saleor 4.0. Use the `discounts` field instead. + */ + discount?: Maybe; + /** + * Discount name. + * @deprecated This field will be removed in Saleor 4.0. Use the `discounts` field instead. + */ + discountName?: Maybe; + /** List of all discounts assigned to the order. */ + discounts: Array; + displayGrossPrices: Scalars["Boolean"]; + /** List of errors that occurred during order validation. */ + errors: Array; + /** + * List of events associated with the order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + events: Array; + /** List of shipments for the order. */ + fulfillments: Array; + /** List of user gift cards. */ + giftCards: Array; + id: Scalars["ID"]; + /** List of order invoices. Can be fetched for orders created in Saleor 3.2 and later, for other orders requires one of the following permissions: MANAGE_ORDERS, OWNER. */ + invoices: Array; + /** Informs if an order is fully paid. */ + isPaid: Scalars["Boolean"]; + /** Returns True, if order requires shipping. */ + isShippingRequired: Scalars["Boolean"]; + /** @deprecated This field will be removed in Saleor 4.0. Use the `languageCodeEnum` field to fetch the language code. */ + languageCode: Scalars["String"]; + /** Order language code. */ + languageCodeEnum: LanguageCodeEnum; + /** List of order lines. */ + lines: Array; + /** List of public metadata items. Can be accessed without permissions. */ + metadata: Array; + /** + * A single key from public metadata. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafield?: Maybe; + /** + * Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafields?: Maybe; + /** User-friendly number of an order. */ + number: Scalars["String"]; + /** The order origin. */ + origin: OrderOriginEnum; + /** The ID of the order that was the base for this order. */ + original?: Maybe; + /** Internal payment status. */ + paymentStatus: PaymentChargeStatusEnum; + /** User-friendly payment status. */ + paymentStatusDisplay: Scalars["String"]; + /** List of payments for the order. */ + payments: Array; + /** List of private metadata items. Requires staff permissions to access. */ + privateMetadata: Array; + /** + * A single key from private metadata. Requires staff permissions to access. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafield?: Maybe; + /** + * Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafields?: Maybe; + redirectUrl?: Maybe; + /** Shipping address. The full data can be access for orders created in Saleor 3.2 and later, for other orders requires one of the following permissions: MANAGE_ORDERS, OWNER. */ + shippingAddress?: Maybe
; + /** + * Shipping method for this order. + * @deprecated This field will be removed in Saleor 4.0. Use `deliveryMethod` instead. + */ + shippingMethod?: Maybe; + shippingMethodName?: Maybe; + /** Shipping methods related to this order. */ + shippingMethods: Array; + /** Total price of shipping. */ + shippingPrice: TaxedMoney; + shippingTaxRate: Scalars["Float"]; + status: OrderStatus; + /** User-friendly order status. */ + statusDisplay: Scalars["String"]; + /** The sum of line prices not including shipping. */ + subtotal: TaxedMoney; + /** @deprecated This field will be removed in Saleor 4.0. Use `id` instead. */ + token: Scalars["String"]; + /** Total amount of the order. */ + total: TaxedMoney; + /** Amount authorized for the order. */ + totalAuthorized: Money; + /** The difference between the paid and the order total amount. */ + totalBalance: Money; + /** Amount captured by payment. */ + totalCaptured: Money; + trackingClientId: Scalars["String"]; + /** + * List of transactions for the order. Requires one of the following permissions: MANAGE_ORDERS, HANDLE_PAYMENTS. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + transactions: Array; + /** + * Translated discount name. + * @deprecated This field will be removed in Saleor 4.0. Use the `discounts` field instead. + */ + translatedDiscountName?: Maybe; + /** Undiscounted total amount of the order. */ + undiscountedTotal: TaxedMoney; + updatedAt: Scalars["DateTime"]; + /** User who placed the order. This field is set only for orders placed by authenticated users. Can be fetched for orders created in Saleor 3.2 and later, for other orders requires one of the following permissions: MANAGE_USERS, MANAGE_ORDERS, OWNER. */ + user?: Maybe; + /** Email address of the customer. The full data can be access for orders created in Saleor 3.2 and later, for other orders requires one of the following permissions: MANAGE_ORDERS, OWNER. */ + userEmail?: Maybe; + voucher?: Maybe; + weight: Weight; + }; + +/** Represents an order in the shop. */ +export type OrderMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents an order in the shop. */ +export type OrderMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Represents an order in the shop. */ +export type OrderPrivateMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents an order in the shop. */ +export type OrderPrivateMetafieldsArgs = { + keys?: InputMaybe>; +}; + +export enum OrderAction { + /** Represents the capture action. */ + Capture = "CAPTURE", + /** Represents a mark-as-paid action. */ + MarkAsPaid = "MARK_AS_PAID", + /** Represents a refund action. */ + Refund = "REFUND", + /** Represents a void action. */ + Void = "VOID", +} + +/** + * Adds note to the order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type OrderAddNote = { + __typename?: "OrderAddNote"; + errors: Array; + /** Order note created. */ + event?: Maybe; + /** Order with the note added. */ + order?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; +}; + +export type OrderAddNoteInput = { + /** Note message. */ + message: Scalars["String"]; +}; + +/** + * Determine a current authorize status for order. + * + * We treat the order as fully authorized when the sum of authorized and charged funds + * cover the order.total. + * We treat the order as partially authorized when the sum of authorized and charged + * funds covers only part of the order.total + * We treat the order as not authorized when the sum of authorized and charged funds is + * 0. + * + * NONE - the funds are not authorized + * PARTIAL - the funds that are authorized or charged don't cover fully the order's + * total + * FULL - the funds that are authorized or charged fully cover the order's total + */ +export enum OrderAuthorizeStatusEnum { + Full = "FULL", + None = "NONE", + Partial = "PARTIAL", +} + +/** + * Cancels orders. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type OrderBulkCancel = { + __typename?: "OrderBulkCancel"; + /** Returns how many objects were affected. */ + count: Scalars["Int"]; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; +}; + +/** + * Cancel an order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type OrderCancel = { + __typename?: "OrderCancel"; + errors: Array; + /** Canceled order. */ + order?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; +}; + +export type OrderCancelled = Event & { + __typename?: "OrderCancelled"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The order the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + order?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +/** + * Capture an order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type OrderCapture = { + __typename?: "OrderCapture"; + errors: Array; + /** Captured order. */ + order?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; +}; + +/** + * Determine the current charge status for the order. + * + * We treat the order as overcharged when the charged amount is bigger that order.total + * We treat the order as fully charged when the charged amount is equal to order.total. + * We treat the order as partially charged when the charged amount covers only part of + * the order.total + * + * NONE - the funds are not charged. + * PARTIAL - the funds that are charged don't cover the order's total + * FULL - the funds that are charged fully cover the order's total + * OVERCHARGED - the charged funds are bigger than order's total + */ +export enum OrderChargeStatusEnum { + Full = "FULL", + None = "NONE", + Overcharged = "OVERCHARGED", + Partial = "PARTIAL", +} + +/** + * Confirms an unconfirmed order by changing status to unfulfilled. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type OrderConfirm = { + __typename?: "OrderConfirm"; + errors: Array; + order?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; +}; + +export type OrderConfirmed = Event & { + __typename?: "OrderConfirmed"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The order the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + order?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type OrderCountableConnection = { + __typename?: "OrderCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type OrderCountableEdge = { + __typename?: "OrderCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: Order; +}; + +/** + * Create new order from existing checkout. Requires the following permissions: AUTHENTICATED_APP and HANDLE_CHECKOUTS. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ +export type OrderCreateFromCheckout = { + __typename?: "OrderCreateFromCheckout"; + errors: Array; + /** Placed order. */ + order?: Maybe; +}; + +export type OrderCreateFromCheckoutError = { + __typename?: "OrderCreateFromCheckoutError"; + /** The error code. */ + code: OrderCreateFromCheckoutErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** List of line Ids which cause the error. */ + lines?: Maybe>; + /** The error message. */ + message?: Maybe; + /** List of variant IDs which causes the error. */ + variants?: Maybe>; +}; + +/** An enumeration. */ +export enum OrderCreateFromCheckoutErrorCode { + BillingAddressNotSet = "BILLING_ADDRESS_NOT_SET", + ChannelInactive = "CHANNEL_INACTIVE", + CheckoutNotFound = "CHECKOUT_NOT_FOUND", + EmailNotSet = "EMAIL_NOT_SET", + GiftCardNotApplicable = "GIFT_CARD_NOT_APPLICABLE", + GraphqlError = "GRAPHQL_ERROR", + InsufficientStock = "INSUFFICIENT_STOCK", + InvalidShippingMethod = "INVALID_SHIPPING_METHOD", + NoLines = "NO_LINES", + ShippingAddressNotSet = "SHIPPING_ADDRESS_NOT_SET", + ShippingMethodNotSet = "SHIPPING_METHOD_NOT_SET", + TaxError = "TAX_ERROR", + UnavailableVariantInChannel = "UNAVAILABLE_VARIANT_IN_CHANNEL", + VoucherNotApplicable = "VOUCHER_NOT_APPLICABLE", +} + +export type OrderCreated = Event & { + __typename?: "OrderCreated"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The order the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + order?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export enum OrderDirection { + /** Specifies an ascending sort order. */ + Asc = "ASC", + /** Specifies a descending sort order. */ + Desc = "DESC", +} + +/** Contains all details related to the applied discount to the order. */ +export type OrderDiscount = Node & { + __typename?: "OrderDiscount"; + /** Returns amount of discount. */ + amount: Money; + id: Scalars["ID"]; + name?: Maybe; + /** + * Explanation for the applied discount. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + reason?: Maybe; + translatedName?: Maybe; + type: OrderDiscountType; + /** Value of the discount. Can store fixed value or percent value */ + value: Scalars["PositiveDecimal"]; + /** Type of the discount: fixed or percent */ + valueType: DiscountValueTypeEnum; +}; + +/** + * Adds discount to the order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type OrderDiscountAdd = { + __typename?: "OrderDiscountAdd"; + errors: Array; + /** Order which has been discounted. */ + order?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; +}; + +export type OrderDiscountCommonInput = { + /** Explanation for the applied discount. */ + reason?: InputMaybe; + /** Value of the discount. Can store fixed value or percent value */ + value: Scalars["PositiveDecimal"]; + /** Type of the discount: fixed or percent */ + valueType: DiscountValueTypeEnum; +}; + +/** + * Remove discount from the order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type OrderDiscountDelete = { + __typename?: "OrderDiscountDelete"; + errors: Array; + /** Order which has removed discount. */ + order?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; +}; + +/** An enumeration. */ +export enum OrderDiscountType { + Manual = "MANUAL", + Voucher = "VOUCHER", +} + +/** + * Update discount for the order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type OrderDiscountUpdate = { + __typename?: "OrderDiscountUpdate"; + errors: Array; + /** Order which has been discounted. */ + order?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; +}; + +export type OrderDraftFilterInput = { + channels?: InputMaybe>; + created?: InputMaybe; + customer?: InputMaybe; + metadata?: InputMaybe>; + search?: InputMaybe; +}; + +export type OrderError = { + __typename?: "OrderError"; + /** A type of address that causes the error. */ + addressType?: Maybe; + /** The error code. */ + code: OrderErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; + /** List of order line IDs that cause the error. */ + orderLines?: Maybe>; + /** List of product variants that are associated with the error */ + variants?: Maybe>; + /** Warehouse ID which causes the error. */ + warehouse?: Maybe; +}; + +/** An enumeration. */ +export enum OrderErrorCode { + BillingAddressNotSet = "BILLING_ADDRESS_NOT_SET", + CannotCancelFulfillment = "CANNOT_CANCEL_FULFILLMENT", + CannotCancelOrder = "CANNOT_CANCEL_ORDER", + CannotDelete = "CANNOT_DELETE", + CannotDiscount = "CANNOT_DISCOUNT", + CannotFulfillUnpaidOrder = "CANNOT_FULFILL_UNPAID_ORDER", + CannotRefund = "CANNOT_REFUND", + CaptureInactivePayment = "CAPTURE_INACTIVE_PAYMENT", + ChannelInactive = "CHANNEL_INACTIVE", + DuplicatedInputItem = "DUPLICATED_INPUT_ITEM", + FulfillOrderLine = "FULFILL_ORDER_LINE", + GiftCardLine = "GIFT_CARD_LINE", + GraphqlError = "GRAPHQL_ERROR", + InsufficientStock = "INSUFFICIENT_STOCK", + Invalid = "INVALID", + InvalidQuantity = "INVALID_QUANTITY", + MissingTransactionActionRequestWebhook = "MISSING_TRANSACTION_ACTION_REQUEST_WEBHOOK", + NotAvailableInChannel = "NOT_AVAILABLE_IN_CHANNEL", + NotEditable = "NOT_EDITABLE", + NotFound = "NOT_FOUND", + OrderNoShippingAddress = "ORDER_NO_SHIPPING_ADDRESS", + PaymentError = "PAYMENT_ERROR", + PaymentMissing = "PAYMENT_MISSING", + ProductNotPublished = "PRODUCT_NOT_PUBLISHED", + ProductUnavailableForPurchase = "PRODUCT_UNAVAILABLE_FOR_PURCHASE", + Required = "REQUIRED", + ShippingMethodNotApplicable = "SHIPPING_METHOD_NOT_APPLICABLE", + ShippingMethodRequired = "SHIPPING_METHOD_REQUIRED", + TaxError = "TAX_ERROR", + Unique = "UNIQUE", + VoidInactivePayment = "VOID_INACTIVE_PAYMENT", + ZeroQuantity = "ZERO_QUANTITY", +} + +/** History log of the order. */ +export type OrderEvent = Node & { + __typename?: "OrderEvent"; + /** Amount of money. */ + amount?: Maybe; + /** App that performed the action. Requires of of the following permissions: MANAGE_APPS, MANAGE_ORDERS, OWNER. */ + app?: Maybe; + /** Composed ID of the Fulfillment. */ + composedId?: Maybe; + /** Date when event happened at in ISO 8601 format. */ + date?: Maybe; + /** The discount applied to the order. */ + discount?: Maybe; + /** Email of the customer. */ + email?: Maybe; + /** Type of an email sent to the customer. */ + emailType?: Maybe; + /** The lines fulfilled. */ + fulfilledItems?: Maybe>; + id: Scalars["ID"]; + /** Number of an invoice related to the order. */ + invoiceNumber?: Maybe; + /** The concerned lines. */ + lines?: Maybe>; + /** Content of the event. */ + message?: Maybe; + /** User-friendly number of an order. */ + orderNumber?: Maybe; + /** List of oversold lines names. */ + oversoldItems?: Maybe>; + /** The payment gateway of the payment. */ + paymentGateway?: Maybe; + /** The payment reference from the payment provider. */ + paymentId?: Maybe; + /** Number of items. */ + quantity?: Maybe; + /** The reference of payment's transaction. */ + reference?: Maybe; + /** The order which is related to this order. */ + relatedOrder?: Maybe; + /** Define if shipping costs were included to the refund. */ + shippingCostsIncluded?: Maybe; + /** The status of payment's transaction. */ + status?: Maybe; + /** The transaction reference of captured payment. */ + transactionReference?: Maybe; + /** Order event type. */ + type?: Maybe; + /** User who performed the action. */ + user?: Maybe; + /** The warehouse were items were restocked. */ + warehouse?: Maybe; +}; + +export type OrderEventCountableConnection = { + __typename?: "OrderEventCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type OrderEventCountableEdge = { + __typename?: "OrderEventCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: OrderEvent; +}; + +export type OrderEventDiscountObject = { + __typename?: "OrderEventDiscountObject"; + /** Returns amount of discount. */ + amount?: Maybe; + /** Returns amount of discount. */ + oldAmount?: Maybe; + /** Value of the discount. Can store fixed value or percent value. */ + oldValue?: Maybe; + /** Type of the discount: fixed or percent. */ + oldValueType?: Maybe; + /** Explanation for the applied discount. */ + reason?: Maybe; + /** Value of the discount. Can store fixed value or percent value. */ + value: Scalars["PositiveDecimal"]; + /** Type of the discount: fixed or percent. */ + valueType: DiscountValueTypeEnum; +}; + +export type OrderEventOrderLineObject = { + __typename?: "OrderEventOrderLineObject"; + /** The discount applied to the order line. */ + discount?: Maybe; + /** The variant name. */ + itemName?: Maybe; + /** The order line. */ + orderLine?: Maybe; + /** The variant quantity. */ + quantity?: Maybe; +}; + +/** An enumeration. */ +export enum OrderEventsEmailsEnum { + Confirmed = "CONFIRMED", + DigitalLinks = "DIGITAL_LINKS", + FulfillmentConfirmation = "FULFILLMENT_CONFIRMATION", + OrderCancel = "ORDER_CANCEL", + OrderConfirmation = "ORDER_CONFIRMATION", + OrderRefund = "ORDER_REFUND", + PaymentConfirmation = "PAYMENT_CONFIRMATION", + ShippingConfirmation = "SHIPPING_CONFIRMATION", + TrackingUpdated = "TRACKING_UPDATED", +} + +/** An enumeration. */ +export enum OrderEventsEnum { + AddedProducts = "ADDED_PRODUCTS", + Canceled = "CANCELED", + Confirmed = "CONFIRMED", + DraftCreated = "DRAFT_CREATED", + DraftCreatedFromReplace = "DRAFT_CREATED_FROM_REPLACE", + EmailSent = "EMAIL_SENT", + ExternalServiceNotification = "EXTERNAL_SERVICE_NOTIFICATION", + FulfillmentAwaitsApproval = "FULFILLMENT_AWAITS_APPROVAL", + FulfillmentCanceled = "FULFILLMENT_CANCELED", + FulfillmentFulfilledItems = "FULFILLMENT_FULFILLED_ITEMS", + FulfillmentRefunded = "FULFILLMENT_REFUNDED", + FulfillmentReplaced = "FULFILLMENT_REPLACED", + FulfillmentRestockedItems = "FULFILLMENT_RESTOCKED_ITEMS", + FulfillmentReturned = "FULFILLMENT_RETURNED", + InvoiceGenerated = "INVOICE_GENERATED", + InvoiceRequested = "INVOICE_REQUESTED", + InvoiceSent = "INVOICE_SENT", + InvoiceUpdated = "INVOICE_UPDATED", + NoteAdded = "NOTE_ADDED", + OrderDiscountAdded = "ORDER_DISCOUNT_ADDED", + OrderDiscountAutomaticallyUpdated = "ORDER_DISCOUNT_AUTOMATICALLY_UPDATED", + OrderDiscountDeleted = "ORDER_DISCOUNT_DELETED", + OrderDiscountUpdated = "ORDER_DISCOUNT_UPDATED", + OrderFullyPaid = "ORDER_FULLY_PAID", + OrderLineDiscountRemoved = "ORDER_LINE_DISCOUNT_REMOVED", + OrderLineDiscountUpdated = "ORDER_LINE_DISCOUNT_UPDATED", + OrderLineProductDeleted = "ORDER_LINE_PRODUCT_DELETED", + OrderLineVariantDeleted = "ORDER_LINE_VARIANT_DELETED", + OrderMarkedAsPaid = "ORDER_MARKED_AS_PAID", + OrderReplacementCreated = "ORDER_REPLACEMENT_CREATED", + Other = "OTHER", + OversoldItems = "OVERSOLD_ITEMS", + PaymentAuthorized = "PAYMENT_AUTHORIZED", + PaymentCaptured = "PAYMENT_CAPTURED", + PaymentFailed = "PAYMENT_FAILED", + PaymentRefunded = "PAYMENT_REFUNDED", + PaymentVoided = "PAYMENT_VOIDED", + Placed = "PLACED", + PlacedFromDraft = "PLACED_FROM_DRAFT", + RemovedProducts = "REMOVED_PRODUCTS", + TrackingUpdated = "TRACKING_UPDATED", + TransactionCaptureRequested = "TRANSACTION_CAPTURE_REQUESTED", + TransactionEvent = "TRANSACTION_EVENT", + TransactionRefundRequested = "TRANSACTION_REFUND_REQUESTED", + TransactionVoidRequested = "TRANSACTION_VOID_REQUESTED", + UpdatedAddress = "UPDATED_ADDRESS", +} + +export type OrderFilterInput = { + authorizeStatus?: InputMaybe>; + channels?: InputMaybe>; + chargeStatus?: InputMaybe>; + created?: InputMaybe; + customer?: InputMaybe; + giftCardBought?: InputMaybe; + giftCardUsed?: InputMaybe; + ids?: InputMaybe>; + isClickAndCollect?: InputMaybe; + isPreorder?: InputMaybe; + metadata?: InputMaybe>; + numbers?: InputMaybe>; + paymentStatus?: InputMaybe>; + search?: InputMaybe; + status?: InputMaybe>; + updatedAt?: InputMaybe; +}; + +/** + * Creates new fulfillments for an order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type OrderFulfill = { + __typename?: "OrderFulfill"; + errors: Array; + /** List of created fulfillments. */ + fulfillments?: Maybe>; + /** Fulfilled order. */ + order?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; +}; + +export type OrderFulfillInput = { + /** If true, then allow proceed fulfillment when stock is exceeded. */ + allowStockToBeExceeded?: InputMaybe; + /** List of items informing how to fulfill the order. */ + lines: Array; + /** If true, send an email notification to the customer. */ + notifyCustomer?: InputMaybe; +}; + +export type OrderFulfillLineInput = { + /** The ID of the order line. */ + orderLineId?: InputMaybe; + /** List of stock items to create. */ + stocks: Array; +}; + +export type OrderFulfillStockInput = { + /** The number of line items to be fulfilled from given warehouse. */ + quantity: Scalars["Int"]; + /** ID of the warehouse from which the item will be fulfilled. */ + warehouse: Scalars["ID"]; +}; + +export type OrderFulfilled = Event & { + __typename?: "OrderFulfilled"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The order the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + order?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type OrderFullyPaid = Event & { + __typename?: "OrderFullyPaid"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The order the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + order?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +/** Represents order line of particular order. */ +export type OrderLine = Node & { + __typename?: "OrderLine"; + /** + * List of allocations across warehouses. + * + * Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. + */ + allocations?: Maybe>; + digitalContentUrl?: Maybe; + id: Scalars["ID"]; + isShippingRequired: Scalars["Boolean"]; + productName: Scalars["String"]; + productSku?: Maybe; + productVariantId?: Maybe; + quantity: Scalars["Int"]; + quantityFulfilled: Scalars["Int"]; + /** + * A quantity of items remaining to be fulfilled. + * + * Added in Saleor 3.1. + */ + quantityToFulfill: Scalars["Int"]; + taxRate: Scalars["Float"]; + /** The main thumbnail for the ordered product. */ + thumbnail?: Maybe; + /** Price of the order line. */ + totalPrice: TaxedMoney; + /** Product name in the customer's language */ + translatedProductName: Scalars["String"]; + /** Variant name in the customer's language */ + translatedVariantName: Scalars["String"]; + /** Price of the single item in the order line without applied an order line discount. */ + undiscountedUnitPrice: TaxedMoney; + /** The discount applied to the single order line. */ + unitDiscount: Money; + unitDiscountReason?: Maybe; + /** Type of the discount: fixed or percent */ + unitDiscountType?: Maybe; + /** Value of the discount. Can store fixed value or percent value */ + unitDiscountValue: Scalars["PositiveDecimal"]; + /** Price of the single item in the order line. */ + unitPrice: TaxedMoney; + /** A purchased product variant. Note: this field may be null if the variant has been removed from stock at all. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. */ + variant?: Maybe; + variantName: Scalars["String"]; +}; + +/** Represents order line of particular order. */ +export type OrderLineThumbnailArgs = { + size?: InputMaybe; +}; + +export type OrderLineCreateInput = { + /** Number of variant items ordered. */ + quantity: Scalars["Int"]; + /** Product variant ID. */ + variantId: Scalars["ID"]; +}; + +/** + * Deletes an order line from an order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type OrderLineDelete = { + __typename?: "OrderLineDelete"; + errors: Array; + /** A related order. */ + order?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; + /** An order line that was deleted. */ + orderLine?: Maybe; +}; + +/** + * Remove discount applied to the order line. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type OrderLineDiscountRemove = { + __typename?: "OrderLineDiscountRemove"; + errors: Array; + /** Order which is related to line which has removed discount. */ + order?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; + /** Order line which has removed discount. */ + orderLine?: Maybe; +}; + +/** + * Update discount for the order line. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type OrderLineDiscountUpdate = { + __typename?: "OrderLineDiscountUpdate"; + errors: Array; + /** Order which is related to the discounted line. */ + order?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; + /** Order line which has been discounted. */ + orderLine?: Maybe; +}; + +export type OrderLineInput = { + /** Number of variant items ordered. */ + quantity: Scalars["Int"]; +}; + +/** + * Updates an order line of an order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type OrderLineUpdate = { + __typename?: "OrderLineUpdate"; + errors: Array; + /** Related order. */ + order?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; + orderLine?: Maybe; +}; + +/** + * Create order lines for an order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type OrderLinesCreate = { + __typename?: "OrderLinesCreate"; + errors: Array; + /** Related order. */ + order?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; + /** List of added order lines. */ + orderLines?: Maybe>; +}; + +/** + * Mark order as manually paid. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type OrderMarkAsPaid = { + __typename?: "OrderMarkAsPaid"; + errors: Array; + /** Order marked as paid. */ + order?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; +}; + +/** An enumeration. */ +export enum OrderOriginEnum { + Checkout = "CHECKOUT", + Draft = "DRAFT", + Reissue = "REISSUE", +} + +/** + * Refund an order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type OrderRefund = { + __typename?: "OrderRefund"; + errors: Array; + /** A refunded order. */ + order?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; +}; + +export type OrderRefundFulfillmentLineInput = { + /** The ID of the fulfillment line to refund. */ + fulfillmentLineId: Scalars["ID"]; + /** The number of items to be refunded. */ + quantity: Scalars["Int"]; +}; + +export type OrderRefundLineInput = { + /** The ID of the order line to refund. */ + orderLineId: Scalars["ID"]; + /** The number of items to be refunded. */ + quantity: Scalars["Int"]; +}; + +export type OrderRefundProductsInput = { + /** The total amount of refund when the value is provided manually. */ + amountToRefund?: InputMaybe; + /** List of fulfilled lines to refund. */ + fulfillmentLines?: InputMaybe>; + /** If true, Saleor will refund shipping costs. If amountToRefund is providedincludeShippingCosts will be ignored. */ + includeShippingCosts?: InputMaybe; + /** List of unfulfilled lines to refund. */ + orderLines?: InputMaybe>; +}; + +export type OrderReturnFulfillmentLineInput = { + /** The ID of the fulfillment line to return. */ + fulfillmentLineId: Scalars["ID"]; + /** The number of items to be returned. */ + quantity: Scalars["Int"]; + /** Determines, if the line should be added to replace order. */ + replace?: InputMaybe; +}; + +export type OrderReturnLineInput = { + /** The ID of the order line to return. */ + orderLineId: Scalars["ID"]; + /** The number of items to be returned. */ + quantity: Scalars["Int"]; + /** Determines, if the line should be added to replace order. */ + replace?: InputMaybe; +}; + +export type OrderReturnProductsInput = { + /** The total amount of refund when the value is provided manually. */ + amountToRefund?: InputMaybe; + /** List of fulfilled lines to return. */ + fulfillmentLines?: InputMaybe>; + /** If true, Saleor will refund shipping costs. If amountToRefund is providedincludeShippingCosts will be ignored. */ + includeShippingCosts?: InputMaybe; + /** List of unfulfilled lines to return. */ + orderLines?: InputMaybe>; + /** If true, Saleor will call refund action for all lines. */ + refund?: InputMaybe; +}; + +/** Order related settings from site settings. */ +export type OrderSettings = { + __typename?: "OrderSettings"; + automaticallyConfirmAllNewOrders: Scalars["Boolean"]; + automaticallyFulfillNonShippableGiftCard: Scalars["Boolean"]; +}; + +export type OrderSettingsError = { + __typename?: "OrderSettingsError"; + /** The error code. */ + code: OrderSettingsErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; +}; + +/** An enumeration. */ +export enum OrderSettingsErrorCode { + Invalid = "INVALID", +} + +/** + * Update shop order settings. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type OrderSettingsUpdate = { + __typename?: "OrderSettingsUpdate"; + errors: Array; + /** Order settings. */ + orderSettings?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderSettingsErrors: Array; +}; + +export type OrderSettingsUpdateInput = { + /** When disabled, all new orders from checkout will be marked as unconfirmed. When enabled orders from checkout will become unfulfilled immediately. */ + automaticallyConfirmAllNewOrders?: InputMaybe; + /** When enabled, all non-shippable gift card orders will be fulfilled automatically. */ + automaticallyFulfillNonShippableGiftCard?: InputMaybe; +}; + +export enum OrderSortField { + /** + * Sort orders by creation date. + * + * DEPRECATED: this field will be removed in Saleor 4.0. + */ + CreatedAt = "CREATED_AT", + /** + * Sort orders by creation date. + * + * DEPRECATED: this field will be removed in Saleor 4.0. + */ + CreationDate = "CREATION_DATE", + /** Sort orders by customer. */ + Customer = "CUSTOMER", + /** Sort orders by fulfillment status. */ + FulfillmentStatus = "FULFILLMENT_STATUS", + /** Sort orders by last modified at. */ + LastModifiedAt = "LAST_MODIFIED_AT", + /** Sort orders by number. */ + Number = "NUMBER", + /** Sort orders by payment. */ + Payment = "PAYMENT", +} + +export type OrderSortingInput = { + /** Specifies the direction in which to sort products. */ + direction: OrderDirection; + /** Sort orders by the selected field. */ + field: OrderSortField; +}; + +/** An enumeration. */ +export enum OrderStatus { + Canceled = "CANCELED", + Draft = "DRAFT", + Fulfilled = "FULFILLED", + PartiallyFulfilled = "PARTIALLY_FULFILLED", + PartiallyReturned = "PARTIALLY_RETURNED", + Returned = "RETURNED", + Unconfirmed = "UNCONFIRMED", + Unfulfilled = "UNFULFILLED", +} + +export enum OrderStatusFilter { + Canceled = "CANCELED", + Fulfilled = "FULFILLED", + PartiallyFulfilled = "PARTIALLY_FULFILLED", + ReadyToCapture = "READY_TO_CAPTURE", + ReadyToFulfill = "READY_TO_FULFILL", + Unconfirmed = "UNCONFIRMED", + Unfulfilled = "UNFULFILLED", +} + +/** + * Updates an order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type OrderUpdate = { + __typename?: "OrderUpdate"; + errors: Array; + order?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; +}; + +export type OrderUpdateInput = { + /** Billing address of the customer. */ + billingAddress?: InputMaybe; + /** Shipping address of the customer. */ + shippingAddress?: InputMaybe; + /** Email address of the customer. */ + userEmail?: InputMaybe; +}; + +/** + * Updates a shipping method of the order. Requires shipping method ID to update, when null is passed then currently assigned shipping method is removed. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type OrderUpdateShipping = { + __typename?: "OrderUpdateShipping"; + errors: Array; + /** Order with updated shipping method. */ + order?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; +}; + +export type OrderUpdateShippingInput = { + /** ID of the selected shipping method, pass null to remove currently assigned shipping method. */ + shippingMethod?: InputMaybe; +}; + +export type OrderUpdated = Event & { + __typename?: "OrderUpdated"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The order the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + order?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +/** + * Void an order. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type OrderVoid = { + __typename?: "OrderVoid"; + errors: Array; + /** A voided order. */ + order?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + orderErrors: Array; +}; + +/** A static page that can be manually added by a shop operator through the dashboard. */ +export type Page = Node & + ObjectWithMetadata & { + __typename?: "Page"; + /** List of attributes assigned to this product. */ + attributes: Array; + /** + * Content of the page. + * + * Rich text format. For reference see https://editorjs.io/ + */ + content?: Maybe; + /** + * Content of the page. + * + * Rich text format. For reference see https://editorjs.io/ + * @deprecated This field will be removed in Saleor 4.0. Use the `content` field instead. + */ + contentJson: Scalars["JSONString"]; + created: Scalars["DateTime"]; + id: Scalars["ID"]; + isPublished: Scalars["Boolean"]; + /** List of public metadata items. Can be accessed without permissions. */ + metadata: Array; + /** + * A single key from public metadata. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafield?: Maybe; + /** + * Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafields?: Maybe; + pageType: PageType; + /** List of private metadata items. Requires staff permissions to access. */ + privateMetadata: Array; + /** + * A single key from private metadata. Requires staff permissions to access. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafield?: Maybe; + /** + * Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafields?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use the `publishedAt` field to fetch the publication date. */ + publicationDate?: Maybe; + /** + * The page publication date. + * + * Added in Saleor 3.3. + */ + publishedAt?: Maybe; + seoDescription?: Maybe; + seoTitle?: Maybe; + slug: Scalars["String"]; + title: Scalars["String"]; + /** Returns translated page fields for the given language code. */ + translation?: Maybe; + }; + +/** A static page that can be manually added by a shop operator through the dashboard. */ +export type PageMetafieldArgs = { + key: Scalars["String"]; +}; + +/** A static page that can be manually added by a shop operator through the dashboard. */ +export type PageMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** A static page that can be manually added by a shop operator through the dashboard. */ +export type PagePrivateMetafieldArgs = { + key: Scalars["String"]; +}; + +/** A static page that can be manually added by a shop operator through the dashboard. */ +export type PagePrivateMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** A static page that can be manually added by a shop operator through the dashboard. */ +export type PageTranslationArgs = { + languageCode: LanguageCodeEnum; +}; + +/** + * Assign attributes to a given page type. + * + * Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + */ +export type PageAttributeAssign = { + __typename?: "PageAttributeAssign"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + pageErrors: Array; + /** The updated page type. */ + pageType?: Maybe; +}; + +/** + * Unassign attributes from a given page type. + * + * Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + */ +export type PageAttributeUnassign = { + __typename?: "PageAttributeUnassign"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + pageErrors: Array; + /** The updated page type. */ + pageType?: Maybe; +}; + +/** + * Deletes pages. + * + * Requires one of the following permissions: MANAGE_PAGES. + */ +export type PageBulkDelete = { + __typename?: "PageBulkDelete"; + /** Returns how many objects were affected. */ + count: Scalars["Int"]; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + pageErrors: Array; +}; + +/** + * Publish pages. + * + * Requires one of the following permissions: MANAGE_PAGES. + */ +export type PageBulkPublish = { + __typename?: "PageBulkPublish"; + /** Returns how many objects were affected. */ + count: Scalars["Int"]; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + pageErrors: Array; +}; + +export type PageCountableConnection = { + __typename?: "PageCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type PageCountableEdge = { + __typename?: "PageCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: Page; +}; + +/** + * Creates a new page. + * + * Requires one of the following permissions: MANAGE_PAGES. + */ +export type PageCreate = { + __typename?: "PageCreate"; + errors: Array; + page?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + pageErrors: Array; +}; + +export type PageCreateInput = { + /** List of attributes. */ + attributes?: InputMaybe>; + /** + * Page content. + * + * Rich text format. For reference see https://editorjs.io/ + */ + content?: InputMaybe; + /** Determines if page is visible in the storefront. */ + isPublished?: InputMaybe; + /** ID of the page type that page belongs to. */ + pageType: Scalars["ID"]; + /** + * Publication date. ISO 8601 standard. + * + * DEPRECATED: this field will be removed in Saleor 4.0. Use `publishedAt` field instead. + */ + publicationDate?: InputMaybe; + /** + * Publication date time. ISO 8601 standard. + * + * Added in Saleor 3.3. + */ + publishedAt?: InputMaybe; + /** Search engine optimization fields. */ + seo?: InputMaybe; + /** Page internal name. */ + slug?: InputMaybe; + /** Page title. */ + title?: InputMaybe; +}; + +export type PageCreated = Event & { + __typename?: "PageCreated"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The page the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + page?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +/** + * Deletes a page. + * + * Requires one of the following permissions: MANAGE_PAGES. + */ +export type PageDelete = { + __typename?: "PageDelete"; + errors: Array; + page?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + pageErrors: Array; +}; + +export type PageDeleted = Event & { + __typename?: "PageDeleted"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The page the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + page?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type PageError = { + __typename?: "PageError"; + /** List of attributes IDs which causes the error. */ + attributes?: Maybe>; + /** The error code. */ + code: PageErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; + /** List of attribute values IDs which causes the error. */ + values?: Maybe>; +}; + +/** An enumeration. */ +export enum PageErrorCode { + AttributeAlreadyAssigned = "ATTRIBUTE_ALREADY_ASSIGNED", + DuplicatedInputItem = "DUPLICATED_INPUT_ITEM", + GraphqlError = "GRAPHQL_ERROR", + Invalid = "INVALID", + NotFound = "NOT_FOUND", + Required = "REQUIRED", + Unique = "UNIQUE", +} + +export type PageFilterInput = { + ids?: InputMaybe>; + metadata?: InputMaybe>; + pageTypes?: InputMaybe>; + search?: InputMaybe; +}; + +/** The Relay compliant `PageInfo` type, containing data necessary to paginate this connection. */ +export type PageInfo = { + __typename?: "PageInfo"; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars["Boolean"]; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars["Boolean"]; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; +}; + +export type PageInput = { + /** List of attributes. */ + attributes?: InputMaybe>; + /** + * Page content. + * + * Rich text format. For reference see https://editorjs.io/ + */ + content?: InputMaybe; + /** Determines if page is visible in the storefront. */ + isPublished?: InputMaybe; + /** + * Publication date. ISO 8601 standard. + * + * DEPRECATED: this field will be removed in Saleor 4.0. Use `publishedAt` field instead. + */ + publicationDate?: InputMaybe; + /** + * Publication date time. ISO 8601 standard. + * + * Added in Saleor 3.3. + */ + publishedAt?: InputMaybe; + /** Search engine optimization fields. */ + seo?: InputMaybe; + /** Page internal name. */ + slug?: InputMaybe; + /** Page title. */ + title?: InputMaybe; +}; + +/** + * Reorder page attribute values. + * + * Requires one of the following permissions: MANAGE_PAGES. + */ +export type PageReorderAttributeValues = { + __typename?: "PageReorderAttributeValues"; + errors: Array; + /** Page from which attribute values are reordered. */ + page?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + pageErrors: Array; +}; + +export enum PageSortField { + /** Sort pages by creation date. */ + CreationDate = "CREATION_DATE", + /** + * Sort pages by publication date. + * + * DEPRECATED: this field will be removed in Saleor 4.0. + */ + PublicationDate = "PUBLICATION_DATE", + /** + * Sort pages by publication date. + * + * DEPRECATED: this field will be removed in Saleor 4.0. + */ + PublishedAt = "PUBLISHED_AT", + /** Sort pages by slug. */ + Slug = "SLUG", + /** Sort pages by title. */ + Title = "TITLE", + /** Sort pages by visibility. */ + Visibility = "VISIBILITY", +} + +export type PageSortingInput = { + /** Specifies the direction in which to sort products. */ + direction: OrderDirection; + /** Sort pages by the selected field. */ + field: PageSortField; +}; + +export type PageTranslatableContent = Node & { + __typename?: "PageTranslatableContent"; + /** List of page content attribute values that can be translated. */ + attributeValues: Array; + /** + * Content of the page. + * + * Rich text format. For reference see https://editorjs.io/ + */ + content?: Maybe; + /** + * Content of the page. + * + * Rich text format. For reference see https://editorjs.io/ + * @deprecated This field will be removed in Saleor 4.0. Use the `content` field instead. + */ + contentJson?: Maybe; + id: Scalars["ID"]; + /** + * A static page that can be manually added by a shop operator through the dashboard. + * @deprecated This field will be removed in Saleor 4.0. Get model fields from the root level queries. + */ + page?: Maybe; + seoDescription?: Maybe; + seoTitle?: Maybe; + title: Scalars["String"]; + /** Returns translated page fields for the given language code. */ + translation?: Maybe; +}; + +export type PageTranslatableContentTranslationArgs = { + languageCode: LanguageCodeEnum; +}; + +/** + * Creates/updates translations for a page. + * + * Requires one of the following permissions: MANAGE_TRANSLATIONS. + */ +export type PageTranslate = { + __typename?: "PageTranslate"; + errors: Array; + page?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + translationErrors: Array; +}; + +export type PageTranslation = Node & { + __typename?: "PageTranslation"; + /** + * Translated content of the page. + * + * Rich text format. For reference see https://editorjs.io/ + */ + content?: Maybe; + /** + * Translated description of the page. + * + * Rich text format. For reference see https://editorjs.io/ + * @deprecated This field will be removed in Saleor 4.0. Use the `content` field instead. + */ + contentJson?: Maybe; + id: Scalars["ID"]; + /** Translation language. */ + language: LanguageDisplay; + seoDescription?: Maybe; + seoTitle?: Maybe; + title?: Maybe; +}; + +export type PageTranslationInput = { + /** + * Translated page content. + * + * Rich text format. For reference see https://editorjs.io/ + */ + content?: InputMaybe; + seoDescription?: InputMaybe; + seoTitle?: InputMaybe; + title?: InputMaybe; +}; + +/** Represents a type of page. It defines what attributes are available to pages of this type. */ +export type PageType = Node & + ObjectWithMetadata & { + __typename?: "PageType"; + /** Page attributes of that page type. */ + attributes?: Maybe>; + /** + * Attributes that can be assigned to the page type. + * + * Requires one of the following permissions: MANAGE_PAGES. + */ + availableAttributes?: Maybe; + /** + * Whether page type has pages assigned. + * + * Requires one of the following permissions: MANAGE_PAGES. + */ + hasPages?: Maybe; + id: Scalars["ID"]; + /** List of public metadata items. Can be accessed without permissions. */ + metadata: Array; + /** + * A single key from public metadata. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafield?: Maybe; + /** + * Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafields?: Maybe; + name: Scalars["String"]; + /** List of private metadata items. Requires staff permissions to access. */ + privateMetadata: Array; + /** + * A single key from private metadata. Requires staff permissions to access. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafield?: Maybe; + /** + * Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafields?: Maybe; + slug: Scalars["String"]; + }; + +/** Represents a type of page. It defines what attributes are available to pages of this type. */ +export type PageTypeAvailableAttributesArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +/** Represents a type of page. It defines what attributes are available to pages of this type. */ +export type PageTypeMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents a type of page. It defines what attributes are available to pages of this type. */ +export type PageTypeMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Represents a type of page. It defines what attributes are available to pages of this type. */ +export type PageTypePrivateMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents a type of page. It defines what attributes are available to pages of this type. */ +export type PageTypePrivateMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** + * Delete page types. + * + * Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + */ +export type PageTypeBulkDelete = { + __typename?: "PageTypeBulkDelete"; + /** Returns how many objects were affected. */ + count: Scalars["Int"]; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + pageErrors: Array; +}; + +export type PageTypeCountableConnection = { + __typename?: "PageTypeCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type PageTypeCountableEdge = { + __typename?: "PageTypeCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: PageType; +}; + +/** + * Create a new page type. + * + * Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + */ +export type PageTypeCreate = { + __typename?: "PageTypeCreate"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + pageErrors: Array; + pageType?: Maybe; +}; + +export type PageTypeCreateInput = { + /** List of attribute IDs to be assigned to the page type. */ + addAttributes?: InputMaybe>; + /** Name of the page type. */ + name?: InputMaybe; + /** Page type slug. */ + slug?: InputMaybe; +}; + +/** + * Delete a page type. + * + * Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + */ +export type PageTypeDelete = { + __typename?: "PageTypeDelete"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + pageErrors: Array; + pageType?: Maybe; +}; + +export type PageTypeFilterInput = { + search?: InputMaybe; +}; + +/** + * Reorder the attributes of a page type. + * + * Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + */ +export type PageTypeReorderAttributes = { + __typename?: "PageTypeReorderAttributes"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + pageErrors: Array; + /** Page type from which attributes are reordered. */ + pageType?: Maybe; +}; + +export enum PageTypeSortField { + /** Sort page types by name. */ + Name = "NAME", + /** Sort page types by slug. */ + Slug = "SLUG", +} + +export type PageTypeSortingInput = { + /** Specifies the direction in which to sort products. */ + direction: OrderDirection; + /** Sort page types by the selected field. */ + field: PageTypeSortField; +}; + +/** + * Update page type. + * + * Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + */ +export type PageTypeUpdate = { + __typename?: "PageTypeUpdate"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + pageErrors: Array; + pageType?: Maybe; +}; + +export type PageTypeUpdateInput = { + /** List of attribute IDs to be assigned to the page type. */ + addAttributes?: InputMaybe>; + /** Name of the page type. */ + name?: InputMaybe; + /** List of attribute IDs to be assigned to the page type. */ + removeAttributes?: InputMaybe>; + /** Page type slug. */ + slug?: InputMaybe; +}; + +/** + * Updates an existing page. + * + * Requires one of the following permissions: MANAGE_PAGES. + */ +export type PageUpdate = { + __typename?: "PageUpdate"; + errors: Array; + page?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + pageErrors: Array; +}; + +export type PageUpdated = Event & { + __typename?: "PageUpdated"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The page the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + page?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +/** + * Change the password of the logged in user. + * + * Requires one of the following permissions: AUTHENTICATED_USER. + */ +export type PasswordChange = { + __typename?: "PasswordChange"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + errors: Array; + /** A user instance with a new password. */ + user?: Maybe; +}; + +/** Represents a payment of a given type. */ +export type Payment = Node & + ObjectWithMetadata & { + __typename?: "Payment"; + /** + * List of actions that can be performed in the current state of a payment. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + actions: Array; + /** + * Maximum amount of money that can be captured. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + availableCaptureAmount?: Maybe; + /** + * Maximum amount of money that can be refunded. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + availableRefundAmount?: Maybe; + /** Total amount captured for this payment. */ + capturedAmount?: Maybe; + /** Internal payment status. */ + chargeStatus: PaymentChargeStatusEnum; + checkout?: Maybe; + created: Scalars["DateTime"]; + /** The details of the card used for this payment. */ + creditCard?: Maybe; + /** + * IP address of the user who created the payment. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + customerIpAddress?: Maybe; + gateway: Scalars["String"]; + id: Scalars["ID"]; + isActive: Scalars["Boolean"]; + /** List of public metadata items. Can be accessed without permissions. */ + metadata: Array; + /** + * A single key from public metadata. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafield?: Maybe; + /** + * Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafields?: Maybe; + modified: Scalars["DateTime"]; + order?: Maybe; + paymentMethodType: Scalars["String"]; + /** List of private metadata items. Requires staff permissions to access. */ + privateMetadata: Array; + /** + * A single key from private metadata. Requires staff permissions to access. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafield?: Maybe; + /** + * Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafields?: Maybe; + token: Scalars["String"]; + /** Total amount of the payment. */ + total?: Maybe; + /** + * List of all transactions within this payment. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + transactions?: Maybe>; + }; + +/** Represents a payment of a given type. */ +export type PaymentMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents a payment of a given type. */ +export type PaymentMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Represents a payment of a given type. */ +export type PaymentPrivateMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents a payment of a given type. */ +export type PaymentPrivateMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** + * Captures the authorized payment amount. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type PaymentCapture = { + __typename?: "PaymentCapture"; + errors: Array; + /** Updated payment. */ + payment?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + paymentErrors: Array; +}; + +/** An enumeration. */ +export enum PaymentChargeStatusEnum { + Cancelled = "CANCELLED", + FullyCharged = "FULLY_CHARGED", + FullyRefunded = "FULLY_REFUNDED", + NotCharged = "NOT_CHARGED", + PartiallyCharged = "PARTIALLY_CHARGED", + PartiallyRefunded = "PARTIALLY_REFUNDED", + Pending = "PENDING", + Refused = "REFUSED", +} + +/** Check payment balance. */ +export type PaymentCheckBalance = { + __typename?: "PaymentCheckBalance"; + /** Response from the gateway. */ + data?: Maybe; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + paymentErrors: Array; +}; + +export type PaymentCheckBalanceInput = { + /** Information about card. */ + card: CardInput; + /** Slug of a channel for which the data should be returned. */ + channel: Scalars["String"]; + /** An ID of a payment gateway to check. */ + gatewayId: Scalars["String"]; + /** Payment method name. */ + method: Scalars["String"]; +}; + +export type PaymentCountableConnection = { + __typename?: "PaymentCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type PaymentCountableEdge = { + __typename?: "PaymentCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: Payment; +}; + +export type PaymentError = { + __typename?: "PaymentError"; + /** The error code. */ + code: PaymentErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; + /** List of varint IDs which causes the error. */ + variants?: Maybe>; +}; + +/** An enumeration. */ +export enum PaymentErrorCode { + BalanceCheckError = "BALANCE_CHECK_ERROR", + BillingAddressNotSet = "BILLING_ADDRESS_NOT_SET", + ChannelInactive = "CHANNEL_INACTIVE", + CheckoutEmailNotSet = "CHECKOUT_EMAIL_NOT_SET", + GraphqlError = "GRAPHQL_ERROR", + Invalid = "INVALID", + InvalidShippingMethod = "INVALID_SHIPPING_METHOD", + NotFound = "NOT_FOUND", + NotSupportedGateway = "NOT_SUPPORTED_GATEWAY", + NoCheckoutLines = "NO_CHECKOUT_LINES", + PartialPaymentNotAllowed = "PARTIAL_PAYMENT_NOT_ALLOWED", + PaymentError = "PAYMENT_ERROR", + Required = "REQUIRED", + ShippingAddressNotSet = "SHIPPING_ADDRESS_NOT_SET", + ShippingMethodNotSet = "SHIPPING_METHOD_NOT_SET", + UnavailableVariantInChannel = "UNAVAILABLE_VARIANT_IN_CHANNEL", + Unique = "UNIQUE", +} + +export type PaymentFilterInput = { + checkouts?: InputMaybe>; +}; + +/** Available payment gateway backend with configuration necessary to setup client. */ +export type PaymentGateway = { + __typename?: "PaymentGateway"; + /** Payment gateway client configuration. */ + config: Array; + /** Payment gateway supported currencies. */ + currencies: Array; + /** Payment gateway ID. */ + id: Scalars["ID"]; + /** Payment gateway name. */ + name: Scalars["String"]; +}; + +/** Initializes payment process when it is required by gateway. */ +export type PaymentInitialize = { + __typename?: "PaymentInitialize"; + errors: Array; + initializedPayment?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + paymentErrors: Array; +}; + +/** Server-side data generated by a payment gateway. Optional step when the payment provider requires an additional action to initialize payment session. */ +export type PaymentInitialized = { + __typename?: "PaymentInitialized"; + /** Initialized data by gateway. */ + data?: Maybe; + /** ID of a payment gateway. */ + gateway: Scalars["String"]; + /** Payment gateway name. */ + name: Scalars["String"]; +}; + +export type PaymentInput = { + /** Total amount of the transaction, including all taxes and discounts. If no amount is provided, the checkout total will be used. */ + amount?: InputMaybe; + /** A gateway to use with that payment. */ + gateway: Scalars["String"]; + /** + * User public metadata. + * + * Added in Saleor 3.1. + */ + metadata?: InputMaybe>; + /** URL of a storefront view where user should be redirected after requiring additional actions. Payment with additional actions will not be finished if this field is not provided. */ + returnUrl?: InputMaybe; + /** + * Payment store type. + * + * Added in Saleor 3.1. + */ + storePaymentMethod?: InputMaybe; + /** Client-side generated payment token, representing customer's billing data in a secure manner. */ + token?: InputMaybe; +}; + +/** + * Refunds the captured payment amount. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type PaymentRefund = { + __typename?: "PaymentRefund"; + errors: Array; + /** Updated payment. */ + payment?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + paymentErrors: Array; +}; + +/** Represents a payment source stored for user in payment gateway, such as credit card. */ +export type PaymentSource = { + __typename?: "PaymentSource"; + /** Stored credit card details if available. */ + creditCardInfo?: Maybe; + /** Payment gateway name. */ + gateway: Scalars["String"]; + /** + * List of public metadata items. + * + * Added in Saleor 3.1. + * + * Can be accessed without permissions. + */ + metadata: Array; + /** ID of stored payment method. */ + paymentMethodId?: Maybe; +}; + +/** + * Voids the authorized payment. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ +export type PaymentVoid = { + __typename?: "PaymentVoid"; + errors: Array; + /** Updated payment. */ + payment?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + paymentErrors: Array; +}; + +/** Represents a permission object in a friendly form. */ +export type Permission = { + __typename?: "Permission"; + /** Internal code for permission. */ + code: PermissionEnum; + /** Describe action(s) allowed to do by permission. */ + name: Scalars["String"]; +}; + +/** An enumeration. */ +export enum PermissionEnum { + HandleCheckouts = "HANDLE_CHECKOUTS", + HandlePayments = "HANDLE_PAYMENTS", + ImpersonateUser = "IMPERSONATE_USER", + ManageApps = "MANAGE_APPS", + ManageChannels = "MANAGE_CHANNELS", + ManageCheckouts = "MANAGE_CHECKOUTS", + ManageDiscounts = "MANAGE_DISCOUNTS", + ManageGiftCard = "MANAGE_GIFT_CARD", + ManageMenus = "MANAGE_MENUS", + ManageObservability = "MANAGE_OBSERVABILITY", + ManageOrders = "MANAGE_ORDERS", + ManagePages = "MANAGE_PAGES", + ManagePageTypesAndAttributes = "MANAGE_PAGE_TYPES_AND_ATTRIBUTES", + ManagePlugins = "MANAGE_PLUGINS", + ManageProducts = "MANAGE_PRODUCTS", + ManageProductTypesAndAttributes = "MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES", + ManageSettings = "MANAGE_SETTINGS", + ManageShipping = "MANAGE_SHIPPING", + ManageStaff = "MANAGE_STAFF", + ManageTranslations = "MANAGE_TRANSLATIONS", + ManageUsers = "MANAGE_USERS", +} + +/** + * Create new permission group. + * + * Requires one of the following permissions: MANAGE_STAFF. + */ +export type PermissionGroupCreate = { + __typename?: "PermissionGroupCreate"; + errors: Array; + group?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + permissionGroupErrors: Array; +}; + +export type PermissionGroupCreateInput = { + /** List of permission code names to assign to this group. */ + addPermissions?: InputMaybe>; + /** List of users to assign to this group. */ + addUsers?: InputMaybe>; + /** Group name. */ + name: Scalars["String"]; +}; + +/** + * Delete permission group. + * + * Requires one of the following permissions: MANAGE_STAFF. + */ +export type PermissionGroupDelete = { + __typename?: "PermissionGroupDelete"; + errors: Array; + group?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + permissionGroupErrors: Array; +}; + +export type PermissionGroupError = { + __typename?: "PermissionGroupError"; + /** The error code. */ + code: PermissionGroupErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; + /** List of permissions which causes the error. */ + permissions?: Maybe>; + /** List of user IDs which causes the error. */ + users?: Maybe>; +}; + +/** An enumeration. */ +export enum PermissionGroupErrorCode { + AssignNonStaffMember = "ASSIGN_NON_STAFF_MEMBER", + CannotRemoveFromLastGroup = "CANNOT_REMOVE_FROM_LAST_GROUP", + DuplicatedInputItem = "DUPLICATED_INPUT_ITEM", + LeftNotManageablePermission = "LEFT_NOT_MANAGEABLE_PERMISSION", + OutOfScopePermission = "OUT_OF_SCOPE_PERMISSION", + OutOfScopeUser = "OUT_OF_SCOPE_USER", + Required = "REQUIRED", + Unique = "UNIQUE", +} + +export type PermissionGroupFilterInput = { + ids?: InputMaybe>; + search?: InputMaybe; +}; + +export enum PermissionGroupSortField { + /** Sort permission group accounts by name. */ + Name = "NAME", +} + +export type PermissionGroupSortingInput = { + /** Specifies the direction in which to sort products. */ + direction: OrderDirection; + /** Sort permission group by the selected field. */ + field: PermissionGroupSortField; +}; + +/** + * Update permission group. + * + * Requires one of the following permissions: MANAGE_STAFF. + */ +export type PermissionGroupUpdate = { + __typename?: "PermissionGroupUpdate"; + errors: Array; + group?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + permissionGroupErrors: Array; +}; + +export type PermissionGroupUpdateInput = { + /** List of permission code names to assign to this group. */ + addPermissions?: InputMaybe>; + /** List of users to assign to this group. */ + addUsers?: InputMaybe>; + /** Group name. */ + name?: InputMaybe; + /** List of permission code names to unassign from this group. */ + removePermissions?: InputMaybe>; + /** List of users to unassign from this group. */ + removeUsers?: InputMaybe>; +}; + +/** Plugin. */ +export type Plugin = { + __typename?: "Plugin"; + /** Channel-specific plugin configuration. */ + channelConfigurations: Array; + /** Description of the plugin. */ + description: Scalars["String"]; + /** Global configuration of the plugin (not channel-specific). */ + globalConfiguration?: Maybe; + /** Identifier of the plugin. */ + id: Scalars["ID"]; + /** Name of the plugin. */ + name: Scalars["String"]; +}; + +/** Stores information about a configuration of plugin. */ +export type PluginConfiguration = { + __typename?: "PluginConfiguration"; + /** Determines if plugin is active or not. */ + active: Scalars["Boolean"]; + /** The channel to which the plugin configuration is assigned to. */ + channel?: Maybe; + /** Configuration of the plugin. */ + configuration?: Maybe>; +}; + +export enum PluginConfigurationType { + Global = "GLOBAL", + PerChannel = "PER_CHANNEL", +} + +export type PluginCountableConnection = { + __typename?: "PluginCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type PluginCountableEdge = { + __typename?: "PluginCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: Plugin; +}; + +export type PluginError = { + __typename?: "PluginError"; + /** The error code. */ + code: PluginErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; +}; + +/** An enumeration. */ +export enum PluginErrorCode { + GraphqlError = "GRAPHQL_ERROR", + Invalid = "INVALID", + NotFound = "NOT_FOUND", + PluginMisconfigured = "PLUGIN_MISCONFIGURED", + Required = "REQUIRED", + Unique = "UNIQUE", +} + +export type PluginFilterInput = { + search?: InputMaybe; + statusInChannels?: InputMaybe; + type?: InputMaybe; +}; + +export enum PluginSortField { + IsActive = "IS_ACTIVE", + Name = "NAME", +} + +export type PluginSortingInput = { + /** Specifies the direction in which to sort products. */ + direction: OrderDirection; + /** Sort plugins by the selected field. */ + field: PluginSortField; +}; + +export type PluginStatusInChannelsInput = { + active: Scalars["Boolean"]; + channels: Array; +}; + +/** + * Update plugin configuration. + * + * Requires one of the following permissions: MANAGE_PLUGINS. + */ +export type PluginUpdate = { + __typename?: "PluginUpdate"; + errors: Array; + plugin?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + pluginsErrors: Array; +}; + +export type PluginUpdateInput = { + /** Indicates whether the plugin should be enabled. */ + active?: InputMaybe; + /** Configuration of the plugin. */ + configuration?: InputMaybe>; +}; + +/** An enumeration. */ +export enum PostalCodeRuleInclusionTypeEnum { + Exclude = "EXCLUDE", + Include = "INCLUDE", +} + +/** Represents preorder settings for product variant. */ +export type PreorderData = { + __typename?: "PreorderData"; + /** Preorder end date. */ + endDate?: Maybe; + /** + * Total number of sold product variant during preorder. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + globalSoldUnits: Scalars["Int"]; + /** + * The global preorder threshold for product variant. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + globalThreshold?: Maybe; +}; + +export type PreorderSettingsInput = { + /** The end date for preorder. */ + endDate?: InputMaybe; + /** The global threshold for preorder variant. */ + globalThreshold?: InputMaybe; +}; + +/** Represents preorder variant data for channel. */ +export type PreorderThreshold = { + __typename?: "PreorderThreshold"; + /** Preorder threshold for product variant in this channel. */ + quantity?: Maybe; + /** Number of sold product variant in this channel. */ + soldUnits: Scalars["Int"]; +}; + +export type PriceInput = { + /** Amount of money. */ + amount: Scalars["PositiveDecimal"]; + /** Currency code. */ + currency: Scalars["String"]; +}; + +export type PriceRangeInput = { + /** Price greater than or equal to. */ + gte?: InputMaybe; + /** Price less than or equal to. */ + lte?: InputMaybe; +}; + +/** Represents an individual item for sale in the storefront. */ +export type Product = Node & + ObjectWithMetadata & { + __typename?: "Product"; + /** List of attributes assigned to this product. */ + attributes: Array; + /** + * Date when product is available for purchase. + * @deprecated This field will be removed in Saleor 4.0. Use the `availableForPurchaseAt` field to fetch the available for purchase date. + */ + availableForPurchase?: Maybe; + /** Date when product is available for purchase. */ + availableForPurchaseAt?: Maybe; + category?: Maybe; + /** Channel given to retrieve this product. Also used by federation gateway to resolve this object in a federated query. */ + channel?: Maybe; + /** + * List of availability in channels for the product. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + channelListings?: Maybe>; + chargeTaxes: Scalars["Boolean"]; + /** List of collections for the product. Requires the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. */ + collections?: Maybe>; + created: Scalars["DateTime"]; + defaultVariant?: Maybe; + /** + * Description of the product. + * + * Rich text format. For reference see https://editorjs.io/ + */ + description?: Maybe; + /** + * Description of the product. + * + * Rich text format. For reference see https://editorjs.io/ + * @deprecated This field will be removed in Saleor 4.0. Use the `description` field instead. + */ + descriptionJson?: Maybe; + id: Scalars["ID"]; + /** + * Get a single product image by ID. + * @deprecated This field will be removed in Saleor 4.0. Use the `mediaById` field instead. + */ + imageById?: Maybe; + /** + * List of images for the product. + * @deprecated This field will be removed in Saleor 4.0. Use the `media` field instead. + */ + images?: Maybe>; + /** Whether the product is in stock and visible or not. */ + isAvailable?: Maybe; + /** Whether the product is available for purchase. */ + isAvailableForPurchase?: Maybe; + /** List of media for the product. */ + media?: Maybe>; + /** Get a single product media by ID. */ + mediaById?: Maybe; + /** List of public metadata items. Can be accessed without permissions. */ + metadata: Array; + /** + * A single key from public metadata. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafield?: Maybe; + /** + * Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafields?: Maybe; + name: Scalars["String"]; + /** Lists the storefront product's pricing, the current price and discounts, only meant for displaying. */ + pricing?: Maybe; + /** List of private metadata items. Requires staff permissions to access. */ + privateMetadata: Array; + /** + * A single key from private metadata. Requires staff permissions to access. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafield?: Maybe; + /** + * Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafields?: Maybe; + productType: ProductType; + rating?: Maybe; + seoDescription?: Maybe; + seoTitle?: Maybe; + slug: Scalars["String"]; + /** A type of tax. Assigned by enabled tax gateway */ + taxType?: Maybe; + /** The main thumbnail for a product. */ + thumbnail?: Maybe; + /** Returns translated product fields for the given language code. */ + translation?: Maybe; + updatedAt: Scalars["DateTime"]; + /** List of variants for the product. Requires the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. */ + variants?: Maybe>; + weight?: Maybe; + }; + +/** Represents an individual item for sale in the storefront. */ +export type ProductImageByIdArgs = { + id?: InputMaybe; +}; + +/** Represents an individual item for sale in the storefront. */ +export type ProductIsAvailableArgs = { + address?: InputMaybe; +}; + +/** Represents an individual item for sale in the storefront. */ +export type ProductMediaByIdArgs = { + id?: InputMaybe; +}; + +/** Represents an individual item for sale in the storefront. */ +export type ProductMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents an individual item for sale in the storefront. */ +export type ProductMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Represents an individual item for sale in the storefront. */ +export type ProductPricingArgs = { + address?: InputMaybe; +}; + +/** Represents an individual item for sale in the storefront. */ +export type ProductPrivateMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents an individual item for sale in the storefront. */ +export type ProductPrivateMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Represents an individual item for sale in the storefront. */ +export type ProductThumbnailArgs = { + size?: InputMaybe; +}; + +/** Represents an individual item for sale in the storefront. */ +export type ProductTranslationArgs = { + languageCode: LanguageCodeEnum; +}; + +/** + * Assign attributes to a given product type. + * + * Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + */ +export type ProductAttributeAssign = { + __typename?: "ProductAttributeAssign"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; + /** The updated product type. */ + productType?: Maybe; +}; + +export type ProductAttributeAssignInput = { + /** The ID of the attribute to assign. */ + id: Scalars["ID"]; + /** The attribute type to be assigned as. */ + type: ProductAttributeType; + /** + * Whether attribute is allowed in variant selection. Allowed types are: ['dropdown', 'boolean', 'swatch', 'numeric']. + * + * Added in Saleor 3.1. + */ + variantSelection?: InputMaybe; +}; + +/** + * Update attributes assigned to product variant for given product type. + * + * Added in Saleor 3.1. + * + * Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + */ +export type ProductAttributeAssignmentUpdate = { + __typename?: "ProductAttributeAssignmentUpdate"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; + /** The updated product type. */ + productType?: Maybe; +}; + +export type ProductAttributeAssignmentUpdateInput = { + /** The ID of the attribute to assign. */ + id: Scalars["ID"]; + /** + * Whether attribute is allowed in variant selection. Allowed types are: ['dropdown', 'boolean', 'swatch', 'numeric']. + * + * Added in Saleor 3.1. + */ + variantSelection: Scalars["Boolean"]; +}; + +export enum ProductAttributeType { + Product = "PRODUCT", + Variant = "VARIANT", +} + +/** + * Un-assign attributes from a given product type. + * + * Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + */ +export type ProductAttributeUnassign = { + __typename?: "ProductAttributeUnassign"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; + /** The updated product type. */ + productType?: Maybe; +}; + +/** + * Deletes products. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type ProductBulkDelete = { + __typename?: "ProductBulkDelete"; + /** Returns how many objects were affected. */ + count: Scalars["Int"]; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; +}; + +/** Represents product channel listing. */ +export type ProductChannelListing = Node & { + __typename?: "ProductChannelListing"; + /** @deprecated This field will be removed in Saleor 4.0. Use the `availableForPurchaseAt` field to fetch the available for purchase date. */ + availableForPurchase?: Maybe; + /** + * The product available for purchase date time. + * + * Added in Saleor 3.3. + */ + availableForPurchaseAt?: Maybe; + channel: Channel; + /** The price of the cheapest variant (including discounts). */ + discountedPrice?: Maybe; + id: Scalars["ID"]; + /** Whether the product is available for purchase. */ + isAvailableForPurchase?: Maybe; + isPublished: Scalars["Boolean"]; + /** + * Range of margin percentage value. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + margin?: Maybe; + /** Lists the storefront product's pricing, the current price and discounts, only meant for displaying. */ + pricing?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use the `publishedAt` field to fetch the publication date. */ + publicationDate?: Maybe; + /** + * The product publication date time. + * + * Added in Saleor 3.3. + */ + publishedAt?: Maybe; + /** + * Purchase cost of product. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + purchaseCost?: Maybe; + visibleInListings: Scalars["Boolean"]; +}; + +/** Represents product channel listing. */ +export type ProductChannelListingPricingArgs = { + address?: InputMaybe; +}; + +export type ProductChannelListingAddInput = { + /** List of variants to which the channel should be assigned. */ + addVariants?: InputMaybe>; + /** + * A start date time from which a product will be available for purchase. When not set and `isAvailable` is set to True, the current day is assumed. + * + * Added in Saleor 3.3. + */ + availableForPurchaseAt?: InputMaybe; + /** + * A start date from which a product will be available for purchase. When not set and isAvailable is set to True, the current day is assumed. + * + * DEPRECATED: this field will be removed in Saleor 4.0. Use `availableForPurchaseAt` field instead. + */ + availableForPurchaseDate?: InputMaybe; + /** ID of a channel. */ + channelId: Scalars["ID"]; + /** Determine if product should be available for purchase. */ + isAvailableForPurchase?: InputMaybe; + /** Determines if object is visible to customers. */ + isPublished?: InputMaybe; + /** + * Publication date. ISO 8601 standard. + * + * DEPRECATED: this field will be removed in Saleor 4.0. Use `publishedAt` field instead. + */ + publicationDate?: InputMaybe; + /** + * Publication date time. ISO 8601 standard. + * + * Added in Saleor 3.3. + */ + publishedAt?: InputMaybe; + /** List of variants from which the channel should be unassigned. */ + removeVariants?: InputMaybe>; + /** Determines if product is visible in product listings (doesn't apply to product collections). */ + visibleInListings?: InputMaybe; +}; + +export type ProductChannelListingError = { + __typename?: "ProductChannelListingError"; + /** List of attributes IDs which causes the error. */ + attributes?: Maybe>; + /** List of channels IDs which causes the error. */ + channels?: Maybe>; + /** The error code. */ + code: ProductErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; + /** List of attribute values IDs which causes the error. */ + values?: Maybe>; + /** List of variants IDs which causes the error. */ + variants?: Maybe>; +}; + +/** + * Manage product's availability in channels. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type ProductChannelListingUpdate = { + __typename?: "ProductChannelListingUpdate"; + errors: Array; + /** An updated product instance. */ + product?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productChannelListingErrors: Array; +}; + +export type ProductChannelListingUpdateInput = { + /** List of channels from which the product should be unassigned. */ + removeChannels?: InputMaybe>; + /** List of channels to which the product should be assigned or updated. */ + updateChannels?: InputMaybe>; +}; + +export type ProductCountableConnection = { + __typename?: "ProductCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type ProductCountableEdge = { + __typename?: "ProductCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: Product; +}; + +/** + * Creates a new product. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type ProductCreate = { + __typename?: "ProductCreate"; + errors: Array; + product?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; +}; + +export type ProductCreateInput = { + /** List of attributes. */ + attributes?: InputMaybe>; + /** ID of the product's category. */ + category?: InputMaybe; + /** Determine if taxes are being charged for the product. */ + chargeTaxes?: InputMaybe; + /** List of IDs of collections that the product belongs to. */ + collections?: InputMaybe>; + /** + * Product description. + * + * Rich text format. For reference see https://editorjs.io/ + */ + description?: InputMaybe; + /** Product name. */ + name?: InputMaybe; + /** ID of the type that product belongs to. */ + productType: Scalars["ID"]; + /** Defines the product rating value. */ + rating?: InputMaybe; + /** Search engine optimization fields. */ + seo?: InputMaybe; + /** Product slug. */ + slug?: InputMaybe; + /** Tax rate for enabled tax gateway. */ + taxCode?: InputMaybe; + /** Weight of the Product. */ + weight?: InputMaybe; +}; + +export type ProductCreated = Event & { + __typename?: "ProductCreated"; + /** + * The category of the product. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + category?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The product the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + product?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type ProductCreatedProductArgs = { + channel?: InputMaybe; +}; + +/** + * Deletes a product. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type ProductDelete = { + __typename?: "ProductDelete"; + errors: Array; + product?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; +}; + +export type ProductDeleted = Event & { + __typename?: "ProductDeleted"; + /** + * The category of the product. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + category?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The product the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + product?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type ProductDeletedProductArgs = { + channel?: InputMaybe; +}; + +export type ProductError = { + __typename?: "ProductError"; + /** List of attributes IDs which causes the error. */ + attributes?: Maybe>; + /** The error code. */ + code: ProductErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; + /** List of attribute values IDs which causes the error. */ + values?: Maybe>; +}; + +/** An enumeration. */ +export enum ProductErrorCode { + AlreadyExists = "ALREADY_EXISTS", + AttributeAlreadyAssigned = "ATTRIBUTE_ALREADY_ASSIGNED", + AttributeCannotBeAssigned = "ATTRIBUTE_CANNOT_BE_ASSIGNED", + AttributeVariantsDisabled = "ATTRIBUTE_VARIANTS_DISABLED", + CannotManageProductWithoutVariant = "CANNOT_MANAGE_PRODUCT_WITHOUT_VARIANT", + DuplicatedInputItem = "DUPLICATED_INPUT_ITEM", + GraphqlError = "GRAPHQL_ERROR", + Invalid = "INVALID", + MediaAlreadyAssigned = "MEDIA_ALREADY_ASSIGNED", + NotFound = "NOT_FOUND", + NotProductsImage = "NOT_PRODUCTS_IMAGE", + NotProductsVariant = "NOT_PRODUCTS_VARIANT", + PreorderVariantCannotBeDeactivated = "PREORDER_VARIANT_CANNOT_BE_DEACTIVATED", + ProductNotAssignedToChannel = "PRODUCT_NOT_ASSIGNED_TO_CHANNEL", + ProductWithoutCategory = "PRODUCT_WITHOUT_CATEGORY", + Required = "REQUIRED", + Unique = "UNIQUE", + UnsupportedMediaProvider = "UNSUPPORTED_MEDIA_PROVIDER", + VariantNoDigitalContent = "VARIANT_NO_DIGITAL_CONTENT", +} + +export enum ProductFieldEnum { + Category = "CATEGORY", + ChargeTaxes = "CHARGE_TAXES", + Collections = "COLLECTIONS", + Description = "DESCRIPTION", + Name = "NAME", + ProductMedia = "PRODUCT_MEDIA", + ProductType = "PRODUCT_TYPE", + ProductWeight = "PRODUCT_WEIGHT", + VariantId = "VARIANT_ID", + VariantMedia = "VARIANT_MEDIA", + VariantSku = "VARIANT_SKU", + VariantWeight = "VARIANT_WEIGHT", +} + +export type ProductFilterInput = { + attributes?: InputMaybe>; + categories?: InputMaybe>; + /** + * Specifies the channel by which the data should be filtered. + * + * DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. + */ + channel?: InputMaybe; + collections?: InputMaybe>; + giftCard?: InputMaybe; + hasCategory?: InputMaybe; + hasPreorderedVariants?: InputMaybe; + ids?: InputMaybe>; + isPublished?: InputMaybe; + metadata?: InputMaybe>; + minimalPrice?: InputMaybe; + price?: InputMaybe; + productTypes?: InputMaybe>; + search?: InputMaybe; + stockAvailability?: InputMaybe; + stocks?: InputMaybe; + updatedAt?: InputMaybe; +}; + +/** Represents a product image. */ +export type ProductImage = { + __typename?: "ProductImage"; + /** The alt text of the image. */ + alt?: Maybe; + /** The ID of the image. */ + id: Scalars["ID"]; + /** The new relative sorting position of the item (from -inf to +inf). 1 moves the item one position forward, -1 moves the item one position backward, 0 leaves the item unchanged. */ + sortOrder?: Maybe; + /** The URL of the image. */ + url: Scalars["String"]; +}; + +/** Represents a product image. */ +export type ProductImageUrlArgs = { + size?: InputMaybe; +}; + +export type ProductInput = { + /** List of attributes. */ + attributes?: InputMaybe>; + /** ID of the product's category. */ + category?: InputMaybe; + /** Determine if taxes are being charged for the product. */ + chargeTaxes?: InputMaybe; + /** List of IDs of collections that the product belongs to. */ + collections?: InputMaybe>; + /** + * Product description. + * + * Rich text format. For reference see https://editorjs.io/ + */ + description?: InputMaybe; + /** Product name. */ + name?: InputMaybe; + /** Defines the product rating value. */ + rating?: InputMaybe; + /** Search engine optimization fields. */ + seo?: InputMaybe; + /** Product slug. */ + slug?: InputMaybe; + /** Tax rate for enabled tax gateway. */ + taxCode?: InputMaybe; + /** Weight of the Product. */ + weight?: InputMaybe; +}; + +/** Represents a product media. */ +export type ProductMedia = Node & { + __typename?: "ProductMedia"; + alt: Scalars["String"]; + id: Scalars["ID"]; + oembedData: Scalars["JSONString"]; + sortOrder?: Maybe; + type: ProductMediaType; + /** The URL of the media. */ + url: Scalars["String"]; +}; + +/** Represents a product media. */ +export type ProductMediaUrlArgs = { + size?: InputMaybe; +}; + +/** + * Deletes product media. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type ProductMediaBulkDelete = { + __typename?: "ProductMediaBulkDelete"; + /** Returns how many objects were affected. */ + count: Scalars["Int"]; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; +}; + +/** + * Create a media object (image or video URL) associated with product. For image, this mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type ProductMediaCreate = { + __typename?: "ProductMediaCreate"; + errors: Array; + media?: Maybe; + product?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; +}; + +export type ProductMediaCreateInput = { + /** Alt text for a product media. */ + alt?: InputMaybe; + /** Represents an image file in a multipart request. */ + image?: InputMaybe; + /** Represents an URL to an external media. */ + mediaUrl?: InputMaybe; + /** ID of an product. */ + product: Scalars["ID"]; +}; + +/** + * Deletes a product media. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type ProductMediaDelete = { + __typename?: "ProductMediaDelete"; + errors: Array; + media?: Maybe; + product?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; +}; + +/** + * Changes ordering of the product media. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type ProductMediaReorder = { + __typename?: "ProductMediaReorder"; + errors: Array; + media?: Maybe>; + product?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; +}; + +/** An enumeration. */ +export enum ProductMediaType { + Image = "IMAGE", + Video = "VIDEO", +} + +/** + * Updates a product media. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type ProductMediaUpdate = { + __typename?: "ProductMediaUpdate"; + errors: Array; + media?: Maybe; + product?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; +}; + +export type ProductMediaUpdateInput = { + /** Alt text for a product media. */ + alt?: InputMaybe; +}; + +export type ProductOrder = { + /** + * Sort product by the selected attribute's values. + * Note: this doesn't take translations into account yet. + */ + attributeId?: InputMaybe; + /** + * Specifies the channel in which to sort the data. + * + * DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. + */ + channel?: InputMaybe; + /** Specifies the direction in which to sort products. */ + direction: OrderDirection; + /** Sort products by the selected field. */ + field?: InputMaybe; +}; + +export enum ProductOrderField { + /** + * Sort products by collection. Note: This option is available only for the `Collection.products` query. + * + * This option requires a channel filter to work as the values can vary between channels. + */ + Collection = "COLLECTION", + /** Sort products by update date. */ + Date = "DATE", + /** Sort products by update date. */ + LastModified = "LAST_MODIFIED", + /** Sort products by update date. */ + LastModifiedAt = "LAST_MODIFIED_AT", + /** + * Sort products by a minimal price of a product's variant. + * + * This option requires a channel filter to work as the values can vary between channels. + */ + MinimalPrice = "MINIMAL_PRICE", + /** Sort products by name. */ + Name = "NAME", + /** + * Sort products by price. + * + * This option requires a channel filter to work as the values can vary between channels. + */ + Price = "PRICE", + /** + * Sort products by publication date. + * + * This option requires a channel filter to work as the values can vary between channels. + */ + PublicationDate = "PUBLICATION_DATE", + /** + * Sort products by publication status. + * + * This option requires a channel filter to work as the values can vary between channels. + */ + Published = "PUBLISHED", + /** + * Sort products by publication date. + * + * This option requires a channel filter to work as the values can vary between channels. + */ + PublishedAt = "PUBLISHED_AT", + /** Sort products by rank. Note: This option is available only with the `search` filter. */ + Rank = "RANK", + /** Sort products by rating. */ + Rating = "RATING", + /** Sort products by type. */ + Type = "TYPE", +} + +/** Represents availability of a product in the storefront. */ +export type ProductPricingInfo = { + __typename?: "ProductPricingInfo"; + /** The discount amount if in sale (null otherwise). */ + discount?: Maybe; + /** The discount amount in the local currency. */ + discountLocalCurrency?: Maybe; + /** Whether it is in sale or not. */ + onSale?: Maybe; + /** The discounted price range of the product variants. */ + priceRange?: Maybe; + /** The discounted price range of the product variants in the local currency. */ + priceRangeLocalCurrency?: Maybe; + /** The undiscounted price range of the product variants. */ + priceRangeUndiscounted?: Maybe; +}; + +/** + * Reorder product attribute values. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type ProductReorderAttributeValues = { + __typename?: "ProductReorderAttributeValues"; + errors: Array; + /** Product from which attribute values are reordered. */ + product?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; +}; + +export type ProductStockFilterInput = { + quantity?: InputMaybe; + warehouseIds?: InputMaybe>; +}; + +export type ProductTranslatableContent = Node & { + __typename?: "ProductTranslatableContent"; + /** List of product attribute values that can be translated. */ + attributeValues: Array; + /** + * Description of the product. + * + * Rich text format. For reference see https://editorjs.io/ + */ + description?: Maybe; + /** + * Description of the product. + * + * Rich text format. For reference see https://editorjs.io/ + * @deprecated This field will be removed in Saleor 4.0. Use the `description` field instead. + */ + descriptionJson?: Maybe; + id: Scalars["ID"]; + name: Scalars["String"]; + /** + * Represents an individual item for sale in the storefront. + * @deprecated This field will be removed in Saleor 4.0. Get model fields from the root level queries. + */ + product?: Maybe; + seoDescription?: Maybe; + seoTitle?: Maybe; + /** Returns translated product fields for the given language code. */ + translation?: Maybe; +}; + +export type ProductTranslatableContentTranslationArgs = { + languageCode: LanguageCodeEnum; +}; + +/** + * Creates/updates translations for a product. + * + * Requires one of the following permissions: MANAGE_TRANSLATIONS. + */ +export type ProductTranslate = { + __typename?: "ProductTranslate"; + errors: Array; + product?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + translationErrors: Array; +}; + +export type ProductTranslation = Node & { + __typename?: "ProductTranslation"; + /** + * Translated description of the product. + * + * Rich text format. For reference see https://editorjs.io/ + */ + description?: Maybe; + /** + * Translated description of the product. + * + * Rich text format. For reference see https://editorjs.io/ + * @deprecated This field will be removed in Saleor 4.0. Use the `description` field instead. + */ + descriptionJson?: Maybe; + id: Scalars["ID"]; + /** Translation language. */ + language: LanguageDisplay; + name?: Maybe; + seoDescription?: Maybe; + seoTitle?: Maybe; +}; + +/** Represents a type of product. It defines what attributes are available to products of this type. */ +export type ProductType = Node & + ObjectWithMetadata & { + __typename?: "ProductType"; + /** + * Variant attributes of that product type with attached variant selection. + * + * Added in Saleor 3.1. + */ + assignedVariantAttributes?: Maybe>; + /** + * List of attributes which can be assigned to this product type. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + availableAttributes?: Maybe; + hasVariants: Scalars["Boolean"]; + id: Scalars["ID"]; + isDigital: Scalars["Boolean"]; + isShippingRequired: Scalars["Boolean"]; + /** The product type kind. */ + kind: ProductTypeKindEnum; + /** List of public metadata items. Can be accessed without permissions. */ + metadata: Array; + /** + * A single key from public metadata. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafield?: Maybe; + /** + * Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafields?: Maybe; + name: Scalars["String"]; + /** List of private metadata items. Requires staff permissions to access. */ + privateMetadata: Array; + /** + * A single key from private metadata. Requires staff permissions to access. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafield?: Maybe; + /** + * Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafields?: Maybe; + /** Product attributes of that product type. */ + productAttributes?: Maybe>; + /** + * List of products of this type. + * @deprecated This field will be removed in Saleor 4.0. Use the top-level `products` query with the `productTypes` filter. + */ + products?: Maybe; + slug: Scalars["String"]; + /** A type of tax. Assigned by enabled tax gateway */ + taxType?: Maybe; + /** + * Variant attributes of that product type. + * @deprecated This field will be removed in Saleor 4.0. Use `assignedVariantAttributes` instead. + */ + variantAttributes?: Maybe>; + weight?: Maybe; + }; + +/** Represents a type of product. It defines what attributes are available to products of this type. */ +export type ProductTypeAssignedVariantAttributesArgs = { + variantSelection?: InputMaybe; +}; + +/** Represents a type of product. It defines what attributes are available to products of this type. */ +export type ProductTypeAvailableAttributesArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +/** Represents a type of product. It defines what attributes are available to products of this type. */ +export type ProductTypeMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents a type of product. It defines what attributes are available to products of this type. */ +export type ProductTypeMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Represents a type of product. It defines what attributes are available to products of this type. */ +export type ProductTypePrivateMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents a type of product. It defines what attributes are available to products of this type. */ +export type ProductTypePrivateMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Represents a type of product. It defines what attributes are available to products of this type. */ +export type ProductTypeProductsArgs = { + after?: InputMaybe; + before?: InputMaybe; + channel?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +/** Represents a type of product. It defines what attributes are available to products of this type. */ +export type ProductTypeVariantAttributesArgs = { + variantSelection?: InputMaybe; +}; + +/** + * Deletes product types. + * + * Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + */ +export type ProductTypeBulkDelete = { + __typename?: "ProductTypeBulkDelete"; + /** Returns how many objects were affected. */ + count: Scalars["Int"]; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; +}; + +export enum ProductTypeConfigurable { + Configurable = "CONFIGURABLE", + Simple = "SIMPLE", +} + +export type ProductTypeCountableConnection = { + __typename?: "ProductTypeCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type ProductTypeCountableEdge = { + __typename?: "ProductTypeCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: ProductType; +}; + +/** + * Creates a new product type. + * + * Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + */ +export type ProductTypeCreate = { + __typename?: "ProductTypeCreate"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; + productType?: Maybe; +}; + +/** + * Deletes a product type. + * + * Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + */ +export type ProductTypeDelete = { + __typename?: "ProductTypeDelete"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; + productType?: Maybe; +}; + +export enum ProductTypeEnum { + Digital = "DIGITAL", + Shippable = "SHIPPABLE", +} + +export type ProductTypeFilterInput = { + configurable?: InputMaybe; + ids?: InputMaybe>; + kind?: InputMaybe; + metadata?: InputMaybe>; + productType?: InputMaybe; + search?: InputMaybe; +}; + +export type ProductTypeInput = { + /** Determines if product of this type has multiple variants. This option mainly simplifies product management in the dashboard. There is always at least one variant created under the hood. */ + hasVariants?: InputMaybe; + /** Determines if products are digital. */ + isDigital?: InputMaybe; + /** Determines if shipping is required for products of this variant. */ + isShippingRequired?: InputMaybe; + /** The product type kind. */ + kind?: InputMaybe; + /** Name of the product type. */ + name?: InputMaybe; + /** List of attributes shared among all product variants. */ + productAttributes?: InputMaybe>; + /** Product type slug. */ + slug?: InputMaybe; + /** Tax rate for enabled tax gateway. */ + taxCode?: InputMaybe; + /** List of attributes used to distinguish between different variants of a product. */ + variantAttributes?: InputMaybe>; + /** Weight of the ProductType items. */ + weight?: InputMaybe; +}; + +/** An enumeration. */ +export enum ProductTypeKindEnum { + GiftCard = "GIFT_CARD", + Normal = "NORMAL", +} + +/** + * Reorder the attributes of a product type. + * + * Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + */ +export type ProductTypeReorderAttributes = { + __typename?: "ProductTypeReorderAttributes"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; + /** Product type from which attributes are reordered. */ + productType?: Maybe; +}; + +export enum ProductTypeSortField { + /** Sort products by type. */ + Digital = "DIGITAL", + /** Sort products by name. */ + Name = "NAME", + /** Sort products by shipping. */ + ShippingRequired = "SHIPPING_REQUIRED", +} + +export type ProductTypeSortingInput = { + /** Specifies the direction in which to sort products. */ + direction: OrderDirection; + /** Sort product types by the selected field. */ + field: ProductTypeSortField; +}; + +/** + * Updates an existing product type. + * + * Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + */ +export type ProductTypeUpdate = { + __typename?: "ProductTypeUpdate"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; + productType?: Maybe; +}; + +/** + * Updates an existing product. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type ProductUpdate = { + __typename?: "ProductUpdate"; + errors: Array; + product?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; +}; + +export type ProductUpdated = Event & { + __typename?: "ProductUpdated"; + /** + * The category of the product. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + category?: Maybe; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The product the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + product?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type ProductUpdatedProductArgs = { + channel?: InputMaybe; +}; + +/** Represents a version of a product such as different size or color. */ +export type ProductVariant = Node & + ObjectWithMetadata & { + __typename?: "ProductVariant"; + /** List of attributes assigned to this variant. */ + attributes: Array; + /** Channel given to retrieve this product variant. Also used by federation gateway to resolve this object in a federated query. */ + channel?: Maybe; + /** + * List of price information in channels for the product. + * + * Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER. + */ + channelListings?: Maybe>; + created: Scalars["DateTime"]; + /** + * Digital content for the product variant. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + digitalContent?: Maybe; + id: Scalars["ID"]; + /** + * List of images for the product variant. + * @deprecated This field will be removed in Saleor 4.0. Use the `media` field instead. + */ + images?: Maybe>; + /** Gross margin percentage value. */ + margin?: Maybe; + /** List of media for the product variant. */ + media?: Maybe>; + /** List of public metadata items. Can be accessed without permissions. */ + metadata: Array; + /** + * A single key from public metadata. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafield?: Maybe; + /** + * Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafields?: Maybe; + name: Scalars["String"]; + /** + * Preorder data for product variant. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + preorder?: Maybe; + /** Lists the storefront variant's pricing, the current price and discounts, only meant for displaying. */ + pricing?: Maybe; + /** List of private metadata items. Requires staff permissions to access. */ + privateMetadata: Array; + /** + * A single key from private metadata. Requires staff permissions to access. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafield?: Maybe; + /** + * Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafields?: Maybe; + product: Product; + /** Quantity of a product available for sale in one checkout. Field value will be `null` when no `limitQuantityPerCheckout` in global settings has been set, and `productVariant` stocks are not tracked. */ + quantityAvailable?: Maybe; + quantityLimitPerCustomer?: Maybe; + /** + * Total quantity ordered. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + quantityOrdered?: Maybe; + /** + * Total revenue generated by a variant in given period of time. Note: this field should be queried using `reportProductSales` query as it uses optimizations suitable for such calculations. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + revenue?: Maybe; + sku?: Maybe; + /** + * Stocks for the product variant. + * + * Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. + */ + stocks?: Maybe>; + trackInventory: Scalars["Boolean"]; + /** Returns translated product variant fields for the given language code. */ + translation?: Maybe; + updatedAt: Scalars["DateTime"]; + weight?: Maybe; + }; + +/** Represents a version of a product such as different size or color. */ +export type ProductVariantAttributesArgs = { + variantSelection?: InputMaybe; +}; + +/** Represents a version of a product such as different size or color. */ +export type ProductVariantMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents a version of a product such as different size or color. */ +export type ProductVariantMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Represents a version of a product such as different size or color. */ +export type ProductVariantPricingArgs = { + address?: InputMaybe; +}; + +/** Represents a version of a product such as different size or color. */ +export type ProductVariantPrivateMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents a version of a product such as different size or color. */ +export type ProductVariantPrivateMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Represents a version of a product such as different size or color. */ +export type ProductVariantQuantityAvailableArgs = { + address?: InputMaybe; + countryCode?: InputMaybe; +}; + +/** Represents a version of a product such as different size or color. */ +export type ProductVariantRevenueArgs = { + period?: InputMaybe; +}; + +/** Represents a version of a product such as different size or color. */ +export type ProductVariantStocksArgs = { + address?: InputMaybe; + countryCode?: InputMaybe; +}; + +/** Represents a version of a product such as different size or color. */ +export type ProductVariantTranslationArgs = { + languageCode: LanguageCodeEnum; +}; + +export type ProductVariantBackInStock = Event & { + __typename?: "ProductVariantBackInStock"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The product variant the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + productVariant?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; + /** + * Look up a warehouse. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + warehouse?: Maybe; +}; + +export type ProductVariantBackInStockProductVariantArgs = { + channel?: InputMaybe; +}; + +/** + * Creates product variants for a given product. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type ProductVariantBulkCreate = { + __typename?: "ProductVariantBulkCreate"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + bulkProductErrors: Array; + /** Returns how many objects were created. */ + count: Scalars["Int"]; + errors: Array; + /** List of the created variants. */ + productVariants: Array; +}; + +export type ProductVariantBulkCreateInput = { + /** List of attributes specific to this variant. */ + attributes: Array; + /** List of prices assigned to channels. */ + channelListings?: InputMaybe>; + /** + * Determines if variant is in preorder. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + preorder?: InputMaybe; + /** + * Determines maximum quantity of `ProductVariant`,that can be bought in a single checkout. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + quantityLimitPerCustomer?: InputMaybe; + /** Stock keeping unit. */ + sku?: InputMaybe; + /** Stocks of a product available for sale. */ + stocks?: InputMaybe>; + /** Determines if the inventory of this variant should be tracked. If false, the quantity won't change when customers buy this item. */ + trackInventory?: InputMaybe; + /** Weight of the Product Variant. */ + weight?: InputMaybe; +}; + +/** + * Deletes product variants. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type ProductVariantBulkDelete = { + __typename?: "ProductVariantBulkDelete"; + /** Returns how many objects were affected. */ + count: Scalars["Int"]; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; +}; + +/** Represents product varaint channel listing. */ +export type ProductVariantChannelListing = Node & { + __typename?: "ProductVariantChannelListing"; + channel: Channel; + /** Cost price of the variant. */ + costPrice?: Maybe; + id: Scalars["ID"]; + /** + * Gross margin percentage value. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + margin?: Maybe; + /** + * Preorder variant data. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + preorderThreshold?: Maybe; + price?: Maybe; +}; + +export type ProductVariantChannelListingAddInput = { + /** ID of a channel. */ + channelId: Scalars["ID"]; + /** Cost price of the variant in channel. */ + costPrice?: InputMaybe; + /** + * The threshold for preorder variant in channel. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + preorderThreshold?: InputMaybe; + /** Price of the particular variant in channel. */ + price: Scalars["PositiveDecimal"]; +}; + +/** + * Manage product variant prices in channels. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type ProductVariantChannelListingUpdate = { + __typename?: "ProductVariantChannelListingUpdate"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productChannelListingErrors: Array; + /** An updated product variant instance. */ + variant?: Maybe; +}; + +export type ProductVariantCountableConnection = { + __typename?: "ProductVariantCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type ProductVariantCountableEdge = { + __typename?: "ProductVariantCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: ProductVariant; +}; + +/** + * Creates a new variant for a product. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type ProductVariantCreate = { + __typename?: "ProductVariantCreate"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; + productVariant?: Maybe; +}; + +export type ProductVariantCreateInput = { + /** List of attributes specific to this variant. */ + attributes: Array; + /** + * Determines if variant is in preorder. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + preorder?: InputMaybe; + /** Product ID of which type is the variant. */ + product: Scalars["ID"]; + /** + * Determines maximum quantity of `ProductVariant`,that can be bought in a single checkout. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + quantityLimitPerCustomer?: InputMaybe; + /** Stock keeping unit. */ + sku?: InputMaybe; + /** Stocks of a product available for sale. */ + stocks?: InputMaybe>; + /** Determines if the inventory of this variant should be tracked. If false, the quantity won't change when customers buy this item. */ + trackInventory?: InputMaybe; + /** Weight of the Product Variant. */ + weight?: InputMaybe; +}; + +export type ProductVariantCreated = Event & { + __typename?: "ProductVariantCreated"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The product variant the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + productVariant?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type ProductVariantCreatedProductVariantArgs = { + channel?: InputMaybe; +}; + +/** + * Deletes a product variant. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type ProductVariantDelete = { + __typename?: "ProductVariantDelete"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; + productVariant?: Maybe; +}; + +export type ProductVariantDeleted = Event & { + __typename?: "ProductVariantDeleted"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The product variant the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + productVariant?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type ProductVariantDeletedProductVariantArgs = { + channel?: InputMaybe; +}; + +export type ProductVariantFilterInput = { + isPreorder?: InputMaybe; + metadata?: InputMaybe>; + search?: InputMaybe; + sku?: InputMaybe>; + updatedAt?: InputMaybe; +}; + +export type ProductVariantInput = { + /** List of attributes specific to this variant. */ + attributes?: InputMaybe>; + /** + * Determines if variant is in preorder. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + preorder?: InputMaybe; + /** + * Determines maximum quantity of `ProductVariant`,that can be bought in a single checkout. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + quantityLimitPerCustomer?: InputMaybe; + /** Stock keeping unit. */ + sku?: InputMaybe; + /** Determines if the inventory of this variant should be tracked. If false, the quantity won't change when customers buy this item. */ + trackInventory?: InputMaybe; + /** Weight of the Product Variant. */ + weight?: InputMaybe; +}; + +export type ProductVariantOutOfStock = Event & { + __typename?: "ProductVariantOutOfStock"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The product variant the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + productVariant?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; + /** + * Look up a warehouse. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + warehouse?: Maybe; +}; + +export type ProductVariantOutOfStockProductVariantArgs = { + channel?: InputMaybe; +}; + +/** + * Deactivates product variant preorder. It changes all preorder allocation into regular allocation. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type ProductVariantPreorderDeactivate = { + __typename?: "ProductVariantPreorderDeactivate"; + errors: Array; + /** Product variant with ended preorder. */ + productVariant?: Maybe; +}; + +/** + * Reorder the variants of a product. Mutation updates updated_at on product and triggers PRODUCT_UPDATED webhook. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type ProductVariantReorder = { + __typename?: "ProductVariantReorder"; + errors: Array; + product?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; +}; + +/** + * Reorder product variant attribute values. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type ProductVariantReorderAttributeValues = { + __typename?: "ProductVariantReorderAttributeValues"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; + /** Product variant from which attribute values are reordered. */ + productVariant?: Maybe; +}; + +/** + * Set default variant for a product. Mutation triggers PRODUCT_UPDATED webhook. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type ProductVariantSetDefault = { + __typename?: "ProductVariantSetDefault"; + errors: Array; + product?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; +}; + +export enum ProductVariantSortField { + /** Sort products variants by last modified at. */ + LastModifiedAt = "LAST_MODIFIED_AT", +} + +export type ProductVariantSortingInput = { + /** Specifies the direction in which to sort products. */ + direction: OrderDirection; + /** Sort productVariants by the selected field. */ + field: ProductVariantSortField; +}; + +/** + * Creates stocks for product variant. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type ProductVariantStocksCreate = { + __typename?: "ProductVariantStocksCreate"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + bulkStockErrors: Array; + errors: Array; + /** Updated product variant. */ + productVariant?: Maybe; +}; + +/** + * Delete stocks from product variant. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type ProductVariantStocksDelete = { + __typename?: "ProductVariantStocksDelete"; + errors: Array; + /** Updated product variant. */ + productVariant?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + stockErrors: Array; +}; + +/** + * Update stocks for product variant. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type ProductVariantStocksUpdate = { + __typename?: "ProductVariantStocksUpdate"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + bulkStockErrors: Array; + errors: Array; + /** Updated product variant. */ + productVariant?: Maybe; +}; + +export type ProductVariantTranslatableContent = Node & { + __typename?: "ProductVariantTranslatableContent"; + /** List of product variant attribute values that can be translated. */ + attributeValues: Array; + id: Scalars["ID"]; + name: Scalars["String"]; + /** + * Represents a version of a product such as different size or color. + * @deprecated This field will be removed in Saleor 4.0. Get model fields from the root level queries. + */ + productVariant?: Maybe; + /** Returns translated product variant fields for the given language code. */ + translation?: Maybe; +}; + +export type ProductVariantTranslatableContentTranslationArgs = { + languageCode: LanguageCodeEnum; +}; + +/** + * Creates/updates translations for a product variant. + * + * Requires one of the following permissions: MANAGE_TRANSLATIONS. + */ +export type ProductVariantTranslate = { + __typename?: "ProductVariantTranslate"; + errors: Array; + productVariant?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + translationErrors: Array; +}; + +export type ProductVariantTranslation = Node & { + __typename?: "ProductVariantTranslation"; + id: Scalars["ID"]; + /** Translation language. */ + language: LanguageDisplay; + name: Scalars["String"]; +}; + +/** + * Updates an existing variant for product. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type ProductVariantUpdate = { + __typename?: "ProductVariantUpdate"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; + productVariant?: Maybe; +}; + +export type ProductVariantUpdated = Event & { + __typename?: "ProductVariantUpdated"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** + * The product variant the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + productVariant?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type ProductVariantUpdatedProductVariantArgs = { + channel?: InputMaybe; +}; + +export type PublishableChannelListingInput = { + /** ID of a channel. */ + channelId: Scalars["ID"]; + /** Determines if object is visible to customers. */ + isPublished?: InputMaybe; + /** + * Publication date. ISO 8601 standard. + * + * DEPRECATED: this field will be removed in Saleor 4.0. Use `publishedAt` field instead. + */ + publicationDate?: InputMaybe; + /** + * Publication date time. ISO 8601 standard. + * + * Added in Saleor 3.3. + */ + publishedAt?: InputMaybe; +}; + +export type Query = { + __typename?: "Query"; + _entities?: Maybe>>; + _service?: Maybe<_Service>; + /** Look up an address by ID. */ + address?: Maybe
; + /** Returns address validation rules. */ + addressValidationRules?: Maybe; + /** + * Look up an app by ID. If ID is not provided, return the currently authenticated app. + * + * Requires one of the following permissions: AUTHENTICATED_STAFF_USER AUTHENTICATED_APP. The authenticated app has access to its resources. Fetching different apps requires MANAGE_APPS permission. + */ + app?: Maybe; + /** + * Look up an app extension by ID. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP. + */ + appExtension?: Maybe; + /** + * List of all extensions. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP. + */ + appExtensions?: Maybe; + /** + * List of the apps. + * + * Requires one of the following permissions: AUTHENTICATED_STAFF_USER, MANAGE_APPS. + */ + apps?: Maybe; + /** + * List of all apps installations + * + * Requires one of the following permissions: MANAGE_APPS. + */ + appsInstallations: Array; + /** Look up an attribute by ID. */ + attribute?: Maybe; + /** List of the shop's attributes. */ + attributes?: Maybe; + /** List of the shop's categories. */ + categories?: Maybe; + /** Look up a category by ID or slug. */ + category?: Maybe; + /** + * Look up a channel by ID. + * + * Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER. + */ + channel?: Maybe; + /** + * List of all channels. + * + * Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER. + */ + channels?: Maybe>; + /** Look up a checkout by token and slug of channel. */ + checkout?: Maybe; + /** + * List of checkout lines. + * + * Requires one of the following permissions: MANAGE_CHECKOUTS. + */ + checkoutLines?: Maybe; + /** + * List of checkouts. + * + * Requires one of the following permissions: MANAGE_CHECKOUTS. + */ + checkouts?: Maybe; + /** Look up a collection by ID. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. */ + collection?: Maybe; + /** List of the shop's collections. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. */ + collections?: Maybe; + /** + * List of the shop's customers. + * + * Requires one of the following permissions: MANAGE_ORDERS, MANAGE_USERS. + */ + customers?: Maybe; + /** + * Look up digital content by ID. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + digitalContent?: Maybe; + /** + * List of digital content. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + digitalContents?: Maybe; + /** + * List of draft orders. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + draftOrders?: Maybe; + /** + * Look up a export file by ID. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + exportFile?: Maybe; + /** + * List of export files. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + exportFiles?: Maybe; + /** + * Look up a gift card by ID. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ + giftCard?: Maybe; + /** + * List of gift card currencies. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ + giftCardCurrencies: Array; + /** + * Gift card related settings from site settings. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ + giftCardSettings: GiftCardSettings; + /** + * List of gift card tags. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ + giftCardTags?: Maybe; + /** + * List of gift cards. + * + * Requires one of the following permissions: MANAGE_GIFT_CARD. + */ + giftCards?: Maybe; + /** + * List of activity events to display on homepage (at the moment it only contains order-events). + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + homepageEvents?: Maybe; + /** Return the currently authenticated user. */ + me?: Maybe; + /** Look up a navigation menu by ID or name. */ + menu?: Maybe; + /** Look up a menu item by ID. */ + menuItem?: Maybe; + /** List of the storefronts's menu items. */ + menuItems?: Maybe; + /** List of the storefront's menus. */ + menus?: Maybe; + /** Look up an order by ID. */ + order?: Maybe; + /** + * Look up an order by token. + * @deprecated This field will be removed in Saleor 4.0. + */ + orderByToken?: Maybe; + /** + * Order related settings from site settings. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + orderSettings?: Maybe; + /** + * List of orders. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + orders?: Maybe; + /** + * Return the total sales amount from a specific period. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + ordersTotal?: Maybe; + /** Look up a page by ID or slug. */ + page?: Maybe; + /** Look up a page type by ID. */ + pageType?: Maybe; + /** List of the page types. */ + pageTypes?: Maybe; + /** List of the shop's pages. */ + pages?: Maybe; + /** + * Look up a payment by ID. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + payment?: Maybe; + /** + * List of payments. + * + * Requires one of the following permissions: MANAGE_ORDERS. + */ + payments?: Maybe; + /** + * Look up permission group by ID. + * + * Requires one of the following permissions: MANAGE_STAFF. + */ + permissionGroup?: Maybe; + /** + * List of permission groups. + * + * Requires one of the following permissions: MANAGE_STAFF. + */ + permissionGroups?: Maybe; + /** + * Look up a plugin by ID. + * + * Requires one of the following permissions: MANAGE_PLUGINS. + */ + plugin?: Maybe; + /** + * List of plugins. + * + * Requires one of the following permissions: MANAGE_PLUGINS. + */ + plugins?: Maybe; + /** Look up a product by ID. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. */ + product?: Maybe; + /** Look up a product type by ID. */ + productType?: Maybe; + /** List of the shop's product types. */ + productTypes?: Maybe; + /** Look up a product variant by ID or SKU. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. */ + productVariant?: Maybe; + /** List of product variants. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. */ + productVariants?: Maybe; + /** List of the shop's products. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. */ + products?: Maybe; + /** + * List of top selling products. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + reportProductSales?: Maybe; + /** + * Look up a sale by ID. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ + sale?: Maybe; + /** + * List of the shop's sales. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ + sales?: Maybe; + /** + * Look up a shipping zone by ID. + * + * Requires one of the following permissions: MANAGE_SHIPPING. + */ + shippingZone?: Maybe; + /** + * List of the shop's shipping zones. + * + * Requires one of the following permissions: MANAGE_SHIPPING. + */ + shippingZones?: Maybe; + /** Return information about the shop. */ + shop: Shop; + /** + * List of the shop's staff users. + * + * Requires one of the following permissions: MANAGE_STAFF. + */ + staffUsers?: Maybe; + /** + * Look up a stock by ID + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + stock?: Maybe; + /** + * List of stocks. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ + stocks?: Maybe; + /** List of all tax rates available from tax gateway. */ + taxTypes?: Maybe>; + /** + * Lookup a translatable item by ID. + * + * Requires one of the following permissions: MANAGE_TRANSLATIONS. + */ + translation?: Maybe; + /** + * Returns a list of all translatable items of a given kind. + * + * Requires one of the following permissions: MANAGE_TRANSLATIONS. + */ + translations?: Maybe; + /** + * Look up a user by ID or email address. + * + * Requires one of the following permissions: MANAGE_STAFF, MANAGE_USERS, MANAGE_ORDERS. + */ + user?: Maybe; + /** + * Look up a voucher by ID. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ + voucher?: Maybe; + /** + * List of the shop's vouchers. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ + vouchers?: Maybe; + /** + * Look up a warehouse by ID. + * + * Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS, MANAGE_SHIPPING. + */ + warehouse?: Maybe; + /** + * List of warehouses. + * + * Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS, MANAGE_SHIPPING. + */ + warehouses?: Maybe; + /** Look up a webhook by ID. Requires one of the following permissions: MANAGE_APPS, OWNER. */ + webhook?: Maybe; + /** + * List of all available webhook events. + * + * Requires one of the following permissions: MANAGE_APPS. + * @deprecated This field will be removed in Saleor 4.0. Use `WebhookEventTypeAsyncEnum` and `WebhookEventTypeSyncEnum` to get available event types. + */ + webhookEvents?: Maybe>; + /** Retrieve a sample payload for a given webhook event based on real data. It can be useful for some integrations where sample payload is required. */ + webhookSamplePayload?: Maybe; +}; + +export type Query_EntitiesArgs = { + representations?: InputMaybe>>; +}; + +export type QueryAddressArgs = { + id: Scalars["ID"]; +}; + +export type QueryAddressValidationRulesArgs = { + city?: InputMaybe; + cityArea?: InputMaybe; + countryArea?: InputMaybe; + countryCode: CountryCode; +}; + +export type QueryAppArgs = { + id?: InputMaybe; +}; + +export type QueryAppExtensionArgs = { + id: Scalars["ID"]; +}; + +export type QueryAppExtensionsArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +export type QueryAppsArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + sortBy?: InputMaybe; +}; + +export type QueryAttributeArgs = { + id?: InputMaybe; + slug?: InputMaybe; +}; + +export type QueryAttributesArgs = { + after?: InputMaybe; + before?: InputMaybe; + channel?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + sortBy?: InputMaybe; +}; + +export type QueryCategoriesArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + level?: InputMaybe; + sortBy?: InputMaybe; +}; + +export type QueryCategoryArgs = { + id?: InputMaybe; + slug?: InputMaybe; +}; + +export type QueryChannelArgs = { + id?: InputMaybe; +}; + +export type QueryCheckoutArgs = { + id?: InputMaybe; + token?: InputMaybe; +}; + +export type QueryCheckoutLinesArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +export type QueryCheckoutsArgs = { + after?: InputMaybe; + before?: InputMaybe; + channel?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + sortBy?: InputMaybe; +}; + +export type QueryCollectionArgs = { + channel?: InputMaybe; + id?: InputMaybe; + slug?: InputMaybe; +}; + +export type QueryCollectionsArgs = { + after?: InputMaybe; + before?: InputMaybe; + channel?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + sortBy?: InputMaybe; +}; + +export type QueryCustomersArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + sortBy?: InputMaybe; +}; + +export type QueryDigitalContentArgs = { + id: Scalars["ID"]; +}; + +export type QueryDigitalContentsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +export type QueryDraftOrdersArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + sortBy?: InputMaybe; +}; + +export type QueryExportFileArgs = { + id: Scalars["ID"]; +}; + +export type QueryExportFilesArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + sortBy?: InputMaybe; +}; + +export type QueryGiftCardArgs = { + id: Scalars["ID"]; +}; + +export type QueryGiftCardTagsArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +export type QueryGiftCardsArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + sortBy?: InputMaybe; +}; + +export type QueryHomepageEventsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +export type QueryMenuArgs = { + channel?: InputMaybe; + id?: InputMaybe; + name?: InputMaybe; + slug?: InputMaybe; +}; + +export type QueryMenuItemArgs = { + channel?: InputMaybe; + id: Scalars["ID"]; +}; + +export type QueryMenuItemsArgs = { + after?: InputMaybe; + before?: InputMaybe; + channel?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + sortBy?: InputMaybe; +}; + +export type QueryMenusArgs = { + after?: InputMaybe; + before?: InputMaybe; + channel?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + sortBy?: InputMaybe; +}; + +export type QueryOrderArgs = { + id: Scalars["ID"]; +}; + +export type QueryOrderByTokenArgs = { + token: Scalars["UUID"]; +}; + +export type QueryOrdersArgs = { + after?: InputMaybe; + before?: InputMaybe; + channel?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + sortBy?: InputMaybe; +}; + +export type QueryOrdersTotalArgs = { + channel?: InputMaybe; + period?: InputMaybe; +}; + +export type QueryPageArgs = { + id?: InputMaybe; + slug?: InputMaybe; +}; + +export type QueryPageTypeArgs = { + id: Scalars["ID"]; +}; + +export type QueryPageTypesArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + sortBy?: InputMaybe; +}; + +export type QueryPagesArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + sortBy?: InputMaybe; +}; + +export type QueryPaymentArgs = { + id: Scalars["ID"]; +}; + +export type QueryPaymentsArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +export type QueryPermissionGroupArgs = { + id: Scalars["ID"]; +}; + +export type QueryPermissionGroupsArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + sortBy?: InputMaybe; +}; + +export type QueryPluginArgs = { + id: Scalars["ID"]; +}; + +export type QueryPluginsArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + sortBy?: InputMaybe; +}; + +export type QueryProductArgs = { + channel?: InputMaybe; + id?: InputMaybe; + slug?: InputMaybe; +}; + +export type QueryProductTypeArgs = { + id: Scalars["ID"]; +}; + +export type QueryProductTypesArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + sortBy?: InputMaybe; +}; + +export type QueryProductVariantArgs = { + channel?: InputMaybe; + id?: InputMaybe; + sku?: InputMaybe; +}; + +export type QueryProductVariantsArgs = { + after?: InputMaybe; + before?: InputMaybe; + channel?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + ids?: InputMaybe>; + last?: InputMaybe; + sortBy?: InputMaybe; +}; + +export type QueryProductsArgs = { + after?: InputMaybe; + before?: InputMaybe; + channel?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + sortBy?: InputMaybe; +}; + +export type QueryReportProductSalesArgs = { + after?: InputMaybe; + before?: InputMaybe; + channel: Scalars["String"]; + first?: InputMaybe; + last?: InputMaybe; + period: ReportingPeriod; +}; + +export type QuerySaleArgs = { + channel?: InputMaybe; + id: Scalars["ID"]; +}; + +export type QuerySalesArgs = { + after?: InputMaybe; + before?: InputMaybe; + channel?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + query?: InputMaybe; + sortBy?: InputMaybe; +}; + +export type QueryShippingZoneArgs = { + channel?: InputMaybe; + id: Scalars["ID"]; +}; + +export type QueryShippingZonesArgs = { + after?: InputMaybe; + before?: InputMaybe; + channel?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +export type QueryStaffUsersArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + sortBy?: InputMaybe; +}; + +export type QueryStockArgs = { + id: Scalars["ID"]; +}; + +export type QueryStocksArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +export type QueryTranslationArgs = { + id: Scalars["ID"]; + kind: TranslatableKinds; +}; + +export type QueryTranslationsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + kind: TranslatableKinds; + last?: InputMaybe; +}; + +export type QueryUserArgs = { + email?: InputMaybe; + id?: InputMaybe; +}; + +export type QueryVoucherArgs = { + channel?: InputMaybe; + id: Scalars["ID"]; +}; + +export type QueryVouchersArgs = { + after?: InputMaybe; + before?: InputMaybe; + channel?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + query?: InputMaybe; + sortBy?: InputMaybe; +}; + +export type QueryWarehouseArgs = { + id: Scalars["ID"]; +}; + +export type QueryWarehousesArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + sortBy?: InputMaybe; +}; + +export type QueryWebhookArgs = { + id: Scalars["ID"]; +}; + +export type QueryWebhookSamplePayloadArgs = { + eventType: WebhookSampleEventTypeEnum; +}; + +/** Represents a reduced VAT rate for a particular type of goods. */ +export type ReducedRate = { + __typename?: "ReducedRate"; + /** Reduced VAT rate in percent. */ + rate: Scalars["Float"]; + /** A type of goods. */ + rateType: Scalars["String"]; +}; + +/** Refresh JWT token. Mutation tries to take refreshToken from the input.If it fails it will try to take refreshToken from the http-only cookie -refreshToken. csrfToken is required when refreshToken is provided as a cookie. */ +export type RefreshToken = { + __typename?: "RefreshToken"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + errors: Array; + /** JWT token, required to authenticate. */ + token?: Maybe; + /** A user instance. */ + user?: Maybe; +}; + +export type ReorderInput = { + /** The ID of the item to move. */ + id: Scalars["ID"]; + /** The new relative sorting position of the item (from -inf to +inf). 1 moves the item one position forward, -1 moves the item one position backward, 0 leaves the item unchanged. */ + sortOrder?: InputMaybe; +}; + +export enum ReportingPeriod { + ThisMonth = "THIS_MONTH", + Today = "TODAY", +} + +/** + * Request email change of the logged in user. + * + * Requires one of the following permissions: AUTHENTICATED_USER. + */ +export type RequestEmailChange = { + __typename?: "RequestEmailChange"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + errors: Array; + /** A user instance. */ + user?: Maybe; +}; + +/** Sends an email with the account password modification link. */ +export type RequestPasswordReset = { + __typename?: "RequestPasswordReset"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + errors: Array; +}; + +/** Sales allow creating discounts for categories, collections or products and are visible to all the customers. */ +export type Sale = Node & + ObjectWithMetadata & { + __typename?: "Sale"; + /** List of categories this sale applies to. */ + categories?: Maybe; + /** + * List of channels available for the sale. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ + channelListings?: Maybe>; + /** + * List of collections this sale applies to. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ + collections?: Maybe; + created: Scalars["DateTime"]; + /** Currency code for sale. */ + currency?: Maybe; + /** Sale value. */ + discountValue?: Maybe; + endDate?: Maybe; + id: Scalars["ID"]; + /** List of public metadata items. Can be accessed without permissions. */ + metadata: Array; + /** + * A single key from public metadata. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafield?: Maybe; + /** + * Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafields?: Maybe; + name: Scalars["String"]; + /** List of private metadata items. Requires staff permissions to access. */ + privateMetadata: Array; + /** + * A single key from private metadata. Requires staff permissions to access. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafield?: Maybe; + /** + * Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafields?: Maybe; + /** + * List of products this sale applies to. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ + products?: Maybe; + startDate: Scalars["DateTime"]; + /** Returns translated sale fields for the given language code. */ + translation?: Maybe; + type: SaleType; + updatedAt: Scalars["DateTime"]; + /** + * List of product variants this sale applies to. + * + * Added in Saleor 3.1. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ + variants?: Maybe; + }; + +/** Sales allow creating discounts for categories, collections or products and are visible to all the customers. */ +export type SaleCategoriesArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +/** Sales allow creating discounts for categories, collections or products and are visible to all the customers. */ +export type SaleCollectionsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +/** Sales allow creating discounts for categories, collections or products and are visible to all the customers. */ +export type SaleMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Sales allow creating discounts for categories, collections or products and are visible to all the customers. */ +export type SaleMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Sales allow creating discounts for categories, collections or products and are visible to all the customers. */ +export type SalePrivateMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Sales allow creating discounts for categories, collections or products and are visible to all the customers. */ +export type SalePrivateMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Sales allow creating discounts for categories, collections or products and are visible to all the customers. */ +export type SaleProductsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +/** Sales allow creating discounts for categories, collections or products and are visible to all the customers. */ +export type SaleTranslationArgs = { + languageCode: LanguageCodeEnum; +}; + +/** Sales allow creating discounts for categories, collections or products and are visible to all the customers. */ +export type SaleVariantsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +/** + * Adds products, categories, collections to a voucher. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ +export type SaleAddCatalogues = { + __typename?: "SaleAddCatalogues"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + discountErrors: Array; + errors: Array; + /** Sale of which catalogue IDs will be modified. */ + sale?: Maybe; +}; + +/** + * Deletes sales. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ +export type SaleBulkDelete = { + __typename?: "SaleBulkDelete"; + /** Returns how many objects were affected. */ + count: Scalars["Int"]; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + discountErrors: Array; + errors: Array; +}; + +/** Represents sale channel listing. */ +export type SaleChannelListing = Node & { + __typename?: "SaleChannelListing"; + channel: Channel; + currency: Scalars["String"]; + discountValue: Scalars["Float"]; + id: Scalars["ID"]; +}; + +export type SaleChannelListingAddInput = { + /** ID of a channel. */ + channelId: Scalars["ID"]; + /** The value of the discount. */ + discountValue: Scalars["PositiveDecimal"]; +}; + +export type SaleChannelListingInput = { + /** List of channels to which the sale should be assigned. */ + addChannels?: InputMaybe>; + /** List of channels from which the sale should be unassigned. */ + removeChannels?: InputMaybe>; +}; + +/** + * Manage sale's availability in channels. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ +export type SaleChannelListingUpdate = { + __typename?: "SaleChannelListingUpdate"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + discountErrors: Array; + errors: Array; + /** An updated sale instance. */ + sale?: Maybe; +}; + +export type SaleCountableConnection = { + __typename?: "SaleCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type SaleCountableEdge = { + __typename?: "SaleCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: Sale; +}; + +/** + * Creates a new sale. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ +export type SaleCreate = { + __typename?: "SaleCreate"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + discountErrors: Array; + errors: Array; + sale?: Maybe; +}; + +export type SaleCreated = Event & { + __typename?: "SaleCreated"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** + * The sale the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + sale?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type SaleCreatedSaleArgs = { + channel?: InputMaybe; +}; + +/** + * Deletes a sale. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ +export type SaleDelete = { + __typename?: "SaleDelete"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + discountErrors: Array; + errors: Array; + sale?: Maybe; +}; + +export type SaleDeleted = Event & { + __typename?: "SaleDeleted"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** + * The sale the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + sale?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type SaleDeletedSaleArgs = { + channel?: InputMaybe; +}; + +export type SaleFilterInput = { + metadata?: InputMaybe>; + saleType?: InputMaybe; + search?: InputMaybe; + started?: InputMaybe; + status?: InputMaybe>; + updatedAt?: InputMaybe; +}; + +export type SaleInput = { + /** Categories related to the discount. */ + categories?: InputMaybe>; + /** Collections related to the discount. */ + collections?: InputMaybe>; + /** End date of the voucher in ISO 8601 format. */ + endDate?: InputMaybe; + /** Voucher name. */ + name?: InputMaybe; + /** Products related to the discount. */ + products?: InputMaybe>; + /** Start date of the voucher in ISO 8601 format. */ + startDate?: InputMaybe; + /** Fixed or percentage. */ + type?: InputMaybe; + /** Value of the voucher. */ + value?: InputMaybe; + variants?: InputMaybe>; +}; + +/** + * Removes products, categories, collections from a sale. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ +export type SaleRemoveCatalogues = { + __typename?: "SaleRemoveCatalogues"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + discountErrors: Array; + errors: Array; + /** Sale of which catalogue IDs will be modified. */ + sale?: Maybe; +}; + +export enum SaleSortField { + /** Sort sales by created at. */ + CreatedAt = "CREATED_AT", + /** Sort sales by end date. */ + EndDate = "END_DATE", + /** Sort sales by last modified at. */ + LastModifiedAt = "LAST_MODIFIED_AT", + /** Sort sales by name. */ + Name = "NAME", + /** Sort sales by start date. */ + StartDate = "START_DATE", + /** Sort sales by type. */ + Type = "TYPE", + /** + * Sort sales by value. + * + * This option requires a channel filter to work as the values can vary between channels. + */ + Value = "VALUE", +} + +export type SaleSortingInput = { + /** + * Specifies the channel in which to sort the data. + * + * DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. + */ + channel?: InputMaybe; + /** Specifies the direction in which to sort products. */ + direction: OrderDirection; + /** Sort sales by the selected field. */ + field: SaleSortField; +}; + +export type SaleTranslatableContent = Node & { + __typename?: "SaleTranslatableContent"; + id: Scalars["ID"]; + name: Scalars["String"]; + /** + * Sales allow creating discounts for categories, collections or products and are visible to all the customers. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + * @deprecated This field will be removed in Saleor 4.0. Get model fields from the root level queries. + */ + sale?: Maybe; + /** Returns translated sale fields for the given language code. */ + translation?: Maybe; +}; + +export type SaleTranslatableContentTranslationArgs = { + languageCode: LanguageCodeEnum; +}; + +/** + * Creates/updates translations for a sale. + * + * Requires one of the following permissions: MANAGE_TRANSLATIONS. + */ +export type SaleTranslate = { + __typename?: "SaleTranslate"; + errors: Array; + sale?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + translationErrors: Array; +}; + +export type SaleTranslation = Node & { + __typename?: "SaleTranslation"; + id: Scalars["ID"]; + /** Translation language. */ + language: LanguageDisplay; + name?: Maybe; +}; + +export enum SaleType { + Fixed = "FIXED", + Percentage = "PERCENTAGE", +} + +/** + * Updates a sale. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ +export type SaleUpdate = { + __typename?: "SaleUpdate"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + discountErrors: Array; + errors: Array; + sale?: Maybe; +}; + +export type SaleUpdated = Event & { + __typename?: "SaleUpdated"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** + * The sale the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + sale?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type SaleUpdatedSaleArgs = { + channel?: InputMaybe; +}; + +/** Represents a custom attribute. */ +export type SelectedAttribute = { + __typename?: "SelectedAttribute"; + /** Name of an attribute displayed in the interface. */ + attribute: Attribute; + /** Values of an attribute. */ + values: Array; +}; + +export type SeoInput = { + /** SEO description. */ + description?: InputMaybe; + /** SEO title. */ + title?: InputMaybe; +}; + +/** Sets the user's password from the token sent by email using the RequestPasswordReset mutation. */ +export type SetPassword = { + __typename?: "SetPassword"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + /** CSRF token required to re-generate access token. */ + csrfToken?: Maybe; + errors: Array; + /** JWT refresh token, required to re-generate access token. */ + refreshToken?: Maybe; + /** JWT token, required to authenticate. */ + token?: Maybe; + /** A user instance. */ + user?: Maybe; +}; + +export type ShippingError = { + __typename?: "ShippingError"; + /** List of channels IDs which causes the error. */ + channels?: Maybe>; + /** The error code. */ + code: ShippingErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; + /** List of warehouse IDs which causes the error. */ + warehouses?: Maybe>; +}; + +/** An enumeration. */ +export enum ShippingErrorCode { + AlreadyExists = "ALREADY_EXISTS", + DuplicatedInputItem = "DUPLICATED_INPUT_ITEM", + GraphqlError = "GRAPHQL_ERROR", + Invalid = "INVALID", + MaxLessThanMin = "MAX_LESS_THAN_MIN", + NotFound = "NOT_FOUND", + Required = "REQUIRED", + Unique = "UNIQUE", +} + +/** Shipping methods that can be used as means of shipping for orders and checkouts. */ +export type ShippingMethod = Node & + ObjectWithMetadata & { + __typename?: "ShippingMethod"; + /** Describes if this shipping method is active and can be selected. */ + active: Scalars["Boolean"]; + /** + * Shipping method description. + * + * Rich text format. For reference see https://editorjs.io/ + */ + description?: Maybe; + /** Unique ID of ShippingMethod available for Order. */ + id: Scalars["ID"]; + /** Maximum delivery days for this shipping method. */ + maximumDeliveryDays?: Maybe; + /** Maximum order price for this shipping method. */ + maximumOrderPrice?: Maybe; + /** + * Maximum order weight for this shipping method. + * @deprecated This field will be removed in Saleor 4.0. + */ + maximumOrderWeight?: Maybe; + /** Message connected to this shipping method. */ + message?: Maybe; + /** List of public metadata items. Can be accessed without permissions. */ + metadata: Array; + /** + * A single key from public metadata. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafield?: Maybe; + /** + * Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafields?: Maybe; + /** Minimum delivery days for this shipping method. */ + minimumDeliveryDays?: Maybe; + /** Minimal order price for this shipping method. */ + minimumOrderPrice?: Maybe; + /** + * Minimum order weight for this shipping method. + * @deprecated This field will be removed in Saleor 4.0. + */ + minimumOrderWeight?: Maybe; + /** Shipping method name. */ + name: Scalars["String"]; + /** The price of selected shipping method. */ + price: Money; + /** List of private metadata items. Requires staff permissions to access. */ + privateMetadata: Array; + /** + * A single key from private metadata. Requires staff permissions to access. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafield?: Maybe; + /** + * Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafields?: Maybe; + /** Returns translated shipping method fields for the given language code. */ + translation?: Maybe; + /** + * Type of the shipping method. + * @deprecated This field will be removed in Saleor 4.0. + */ + type?: Maybe; + }; + +/** Shipping methods that can be used as means of shipping for orders and checkouts. */ +export type ShippingMethodMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Shipping methods that can be used as means of shipping for orders and checkouts. */ +export type ShippingMethodMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Shipping methods that can be used as means of shipping for orders and checkouts. */ +export type ShippingMethodPrivateMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Shipping methods that can be used as means of shipping for orders and checkouts. */ +export type ShippingMethodPrivateMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Shipping methods that can be used as means of shipping for orders and checkouts. */ +export type ShippingMethodTranslationArgs = { + languageCode: LanguageCodeEnum; +}; + +/** Represents shipping method channel listing. */ +export type ShippingMethodChannelListing = Node & { + __typename?: "ShippingMethodChannelListing"; + channel: Channel; + id: Scalars["ID"]; + maximumOrderPrice?: Maybe; + minimumOrderPrice?: Maybe; + price?: Maybe; +}; + +export type ShippingMethodChannelListingAddInput = { + /** ID of a channel. */ + channelId: Scalars["ID"]; + /** Maximum order price to use this shipping method. */ + maximumOrderPrice?: InputMaybe; + /** Minimum order price to use this shipping method. */ + minimumOrderPrice?: InputMaybe; + /** Shipping price of the shipping method in this channel. */ + price?: InputMaybe; +}; + +export type ShippingMethodChannelListingInput = { + /** List of channels to which the shipping method should be assigned. */ + addChannels?: InputMaybe>; + /** List of channels from which the shipping method should be unassigned. */ + removeChannels?: InputMaybe>; +}; + +/** + * Manage shipping method's availability in channels. + * + * Requires one of the following permissions: MANAGE_SHIPPING. + */ +export type ShippingMethodChannelListingUpdate = { + __typename?: "ShippingMethodChannelListingUpdate"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + shippingErrors: Array; + /** An updated shipping method instance. */ + shippingMethod?: Maybe; +}; + +/** Represents shipping method postal code rule. */ +export type ShippingMethodPostalCodeRule = Node & { + __typename?: "ShippingMethodPostalCodeRule"; + /** End address range. */ + end?: Maybe; + /** The ID of the object. */ + id: Scalars["ID"]; + /** Inclusion type of the postal code rule. */ + inclusionType?: Maybe; + /** Start address range. */ + start?: Maybe; +}; + +export type ShippingMethodTranslatableContent = Node & { + __typename?: "ShippingMethodTranslatableContent"; + /** + * Description of the shipping method. + * + * Rich text format. For reference see https://editorjs.io/ + */ + description?: Maybe; + id: Scalars["ID"]; + name: Scalars["String"]; + /** + * Shipping method are the methods you'll use to get customer's orders to them. They are directly exposed to the customers. + * + * Requires one of the following permissions: MANAGE_SHIPPING. + * @deprecated This field will be removed in Saleor 4.0. Get model fields from the root level queries. + */ + shippingMethod?: Maybe; + /** Returns translated shipping method fields for the given language code. */ + translation?: Maybe; +}; + +export type ShippingMethodTranslatableContentTranslationArgs = { + languageCode: LanguageCodeEnum; +}; + +export type ShippingMethodTranslation = Node & { + __typename?: "ShippingMethodTranslation"; + /** + * Translated description of the shipping method. + * + * Rich text format. For reference see https://editorjs.io/ + */ + description?: Maybe; + id: Scalars["ID"]; + /** Translation language. */ + language: LanguageDisplay; + name?: Maybe; +}; + +/** Shipping method are the methods you'll use to get customer's orders to them. They are directly exposed to the customers. */ +export type ShippingMethodType = Node & + ObjectWithMetadata & { + __typename?: "ShippingMethodType"; + /** + * List of channels available for the method. + * + * Requires one of the following permissions: MANAGE_SHIPPING. + */ + channelListings?: Maybe>; + /** + * Shipping method description. + * + * Rich text format. For reference see https://editorjs.io/ + */ + description?: Maybe; + /** + * List of excluded products for the shipping method. + * + * Requires one of the following permissions: MANAGE_SHIPPING. + */ + excludedProducts?: Maybe; + /** Shipping method ID. */ + id: Scalars["ID"]; + /** Maximum number of days for delivery. */ + maximumDeliveryDays?: Maybe; + /** The price of the cheapest variant (including discounts). */ + maximumOrderPrice?: Maybe; + /** Maximum order weight to use this shipping method. */ + maximumOrderWeight?: Maybe; + /** List of public metadata items. Can be accessed without permissions. */ + metadata: Array; + /** + * A single key from public metadata. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafield?: Maybe; + /** + * Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafields?: Maybe; + /** Minimal number of days for delivery. */ + minimumDeliveryDays?: Maybe; + /** The price of the cheapest variant (including discounts). */ + minimumOrderPrice?: Maybe; + /** Minimum order weight to use this shipping method. */ + minimumOrderWeight?: Maybe; + /** Shipping method name. */ + name: Scalars["String"]; + /** Postal code ranges rule of exclusion or inclusion of the shipping method. */ + postalCodeRules?: Maybe>; + /** List of private metadata items. Requires staff permissions to access. */ + privateMetadata: Array; + /** + * A single key from private metadata. Requires staff permissions to access. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafield?: Maybe; + /** + * Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafields?: Maybe; + /** Returns translated shipping method fields for the given language code. */ + translation?: Maybe; + /** Type of the shipping method. */ + type?: Maybe; + }; + +/** Shipping method are the methods you'll use to get customer's orders to them. They are directly exposed to the customers. */ +export type ShippingMethodTypeExcludedProductsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +/** Shipping method are the methods you'll use to get customer's orders to them. They are directly exposed to the customers. */ +export type ShippingMethodTypeMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Shipping method are the methods you'll use to get customer's orders to them. They are directly exposed to the customers. */ +export type ShippingMethodTypeMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Shipping method are the methods you'll use to get customer's orders to them. They are directly exposed to the customers. */ +export type ShippingMethodTypePrivateMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Shipping method are the methods you'll use to get customer's orders to them. They are directly exposed to the customers. */ +export type ShippingMethodTypePrivateMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Shipping method are the methods you'll use to get customer's orders to them. They are directly exposed to the customers. */ +export type ShippingMethodTypeTranslationArgs = { + languageCode: LanguageCodeEnum; +}; + +/** An enumeration. */ +export enum ShippingMethodTypeEnum { + Price = "PRICE", + Weight = "WEIGHT", +} + +export type ShippingPostalCodeRulesCreateInputRange = { + /** End range of the postal code. */ + end?: InputMaybe; + /** Start range of the postal code. */ + start: Scalars["String"]; +}; + +/** + * Deletes shipping prices. + * + * Requires one of the following permissions: MANAGE_SHIPPING. + */ +export type ShippingPriceBulkDelete = { + __typename?: "ShippingPriceBulkDelete"; + /** Returns how many objects were affected. */ + count: Scalars["Int"]; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + shippingErrors: Array; +}; + +/** + * Creates a new shipping price. + * + * Requires one of the following permissions: MANAGE_SHIPPING. + */ +export type ShippingPriceCreate = { + __typename?: "ShippingPriceCreate"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + shippingErrors: Array; + shippingMethod?: Maybe; + /** A shipping zone to which the shipping method belongs. */ + shippingZone?: Maybe; +}; + +export type ShippingPriceCreated = Event & { + __typename?: "ShippingPriceCreated"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** + * The shipping method the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + shippingMethod?: Maybe; + /** + * The shipping zone the shipping method belongs to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + shippingZone?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type ShippingPriceCreatedShippingMethodArgs = { + channel?: InputMaybe; +}; + +export type ShippingPriceCreatedShippingZoneArgs = { + channel?: InputMaybe; +}; + +/** + * Deletes a shipping price. + * + * Requires one of the following permissions: MANAGE_SHIPPING. + */ +export type ShippingPriceDelete = { + __typename?: "ShippingPriceDelete"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + shippingErrors: Array; + /** A shipping method to delete. */ + shippingMethod?: Maybe; + /** A shipping zone to which the shipping method belongs. */ + shippingZone?: Maybe; +}; + +export type ShippingPriceDeleted = Event & { + __typename?: "ShippingPriceDeleted"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** + * The shipping method the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + shippingMethod?: Maybe; + /** + * The shipping zone the shipping method belongs to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + shippingZone?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type ShippingPriceDeletedShippingMethodArgs = { + channel?: InputMaybe; +}; + +export type ShippingPriceDeletedShippingZoneArgs = { + channel?: InputMaybe; +}; + +/** + * Exclude products from shipping price. + * + * Requires one of the following permissions: MANAGE_SHIPPING. + */ +export type ShippingPriceExcludeProducts = { + __typename?: "ShippingPriceExcludeProducts"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + shippingErrors: Array; + /** A shipping method with new list of excluded products. */ + shippingMethod?: Maybe; +}; + +export type ShippingPriceExcludeProductsInput = { + /** List of products which will be excluded. */ + products: Array; +}; + +export type ShippingPriceInput = { + /** Postal code rules to add. */ + addPostalCodeRules?: InputMaybe>; + /** Postal code rules to delete. */ + deletePostalCodeRules?: InputMaybe>; + /** Shipping method description. */ + description?: InputMaybe; + /** Inclusion type for currently assigned postal code rules. */ + inclusionType?: InputMaybe; + /** Maximum number of days for delivery. */ + maximumDeliveryDays?: InputMaybe; + /** Maximum order weight to use this shipping method. */ + maximumOrderWeight?: InputMaybe; + /** Minimal number of days for delivery. */ + minimumDeliveryDays?: InputMaybe; + /** Minimum order weight to use this shipping method. */ + minimumOrderWeight?: InputMaybe; + /** Name of the shipping method. */ + name?: InputMaybe; + /** Shipping zone this method belongs to. */ + shippingZone?: InputMaybe; + /** Shipping type: price or weight based. */ + type?: InputMaybe; +}; + +/** + * Remove product from excluded list for shipping price. + * + * Requires one of the following permissions: MANAGE_SHIPPING. + */ +export type ShippingPriceRemoveProductFromExclude = { + __typename?: "ShippingPriceRemoveProductFromExclude"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + shippingErrors: Array; + /** A shipping method with new list of excluded products. */ + shippingMethod?: Maybe; +}; + +/** + * Creates/updates translations for a shipping method. + * + * Requires one of the following permissions: MANAGE_TRANSLATIONS. + */ +export type ShippingPriceTranslate = { + __typename?: "ShippingPriceTranslate"; + errors: Array; + shippingMethod?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + translationErrors: Array; +}; + +export type ShippingPriceTranslationInput = { + /** + * Translated shipping method description. + * + * Rich text format. For reference see https://editorjs.io/ + */ + description?: InputMaybe; + name?: InputMaybe; +}; + +/** + * Updates a new shipping price. + * + * Requires one of the following permissions: MANAGE_SHIPPING. + */ +export type ShippingPriceUpdate = { + __typename?: "ShippingPriceUpdate"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + shippingErrors: Array; + shippingMethod?: Maybe; + /** A shipping zone to which the shipping method belongs. */ + shippingZone?: Maybe; +}; + +export type ShippingPriceUpdated = Event & { + __typename?: "ShippingPriceUpdated"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** + * The shipping method the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + shippingMethod?: Maybe; + /** + * The shipping zone the shipping method belongs to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + shippingZone?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type ShippingPriceUpdatedShippingMethodArgs = { + channel?: InputMaybe; +}; + +export type ShippingPriceUpdatedShippingZoneArgs = { + channel?: InputMaybe; +}; + +/** Represents a shipping zone in the shop. Zones are the concept used only for grouping shipping methods in the dashboard, and are never exposed to the customers directly. */ +export type ShippingZone = Node & + ObjectWithMetadata & { + __typename?: "ShippingZone"; + /** List of channels for shipping zone. */ + channels: Array; + /** List of countries available for the method. */ + countries: Array; + default: Scalars["Boolean"]; + /** Description of a shipping zone. */ + description?: Maybe; + id: Scalars["ID"]; + /** List of public metadata items. Can be accessed without permissions. */ + metadata: Array; + /** + * A single key from public metadata. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafield?: Maybe; + /** + * Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafields?: Maybe; + name: Scalars["String"]; + /** Lowest and highest prices for the shipping. */ + priceRange?: Maybe; + /** List of private metadata items. Requires staff permissions to access. */ + privateMetadata: Array; + /** + * A single key from private metadata. Requires staff permissions to access. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafield?: Maybe; + /** + * Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafields?: Maybe; + /** List of shipping methods available for orders shipped to countries within this shipping zone. */ + shippingMethods?: Maybe>; + /** List of warehouses for shipping zone. */ + warehouses: Array; + }; + +/** Represents a shipping zone in the shop. Zones are the concept used only for grouping shipping methods in the dashboard, and are never exposed to the customers directly. */ +export type ShippingZoneMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents a shipping zone in the shop. Zones are the concept used only for grouping shipping methods in the dashboard, and are never exposed to the customers directly. */ +export type ShippingZoneMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Represents a shipping zone in the shop. Zones are the concept used only for grouping shipping methods in the dashboard, and are never exposed to the customers directly. */ +export type ShippingZonePrivateMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents a shipping zone in the shop. Zones are the concept used only for grouping shipping methods in the dashboard, and are never exposed to the customers directly. */ +export type ShippingZonePrivateMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** + * Deletes shipping zones. + * + * Requires one of the following permissions: MANAGE_SHIPPING. + */ +export type ShippingZoneBulkDelete = { + __typename?: "ShippingZoneBulkDelete"; + /** Returns how many objects were affected. */ + count: Scalars["Int"]; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + shippingErrors: Array; +}; + +export type ShippingZoneCountableConnection = { + __typename?: "ShippingZoneCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type ShippingZoneCountableEdge = { + __typename?: "ShippingZoneCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: ShippingZone; +}; + +/** + * Creates a new shipping zone. + * + * Requires one of the following permissions: MANAGE_SHIPPING. + */ +export type ShippingZoneCreate = { + __typename?: "ShippingZoneCreate"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + shippingErrors: Array; + shippingZone?: Maybe; +}; + +export type ShippingZoneCreateInput = { + /** List of channels to assign to the shipping zone. */ + addChannels?: InputMaybe>; + /** List of warehouses to assign to a shipping zone */ + addWarehouses?: InputMaybe>; + /** List of countries in this shipping zone. */ + countries?: InputMaybe>; + /** Default shipping zone will be used for countries not covered by other zones. */ + default?: InputMaybe; + /** Description of the shipping zone. */ + description?: InputMaybe; + /** Shipping zone's name. Visible only to the staff. */ + name?: InputMaybe; +}; + +export type ShippingZoneCreated = Event & { + __typename?: "ShippingZoneCreated"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** + * The shipping zone the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + shippingZone?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type ShippingZoneCreatedShippingZoneArgs = { + channel?: InputMaybe; +}; + +/** + * Deletes a shipping zone. + * + * Requires one of the following permissions: MANAGE_SHIPPING. + */ +export type ShippingZoneDelete = { + __typename?: "ShippingZoneDelete"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + shippingErrors: Array; + shippingZone?: Maybe; +}; + +export type ShippingZoneDeleted = Event & { + __typename?: "ShippingZoneDeleted"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** + * The shipping zone the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + shippingZone?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type ShippingZoneDeletedShippingZoneArgs = { + channel?: InputMaybe; +}; + +export type ShippingZoneFilterInput = { + channels?: InputMaybe>; + search?: InputMaybe; +}; + +/** + * Updates a new shipping zone. + * + * Requires one of the following permissions: MANAGE_SHIPPING. + */ +export type ShippingZoneUpdate = { + __typename?: "ShippingZoneUpdate"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + shippingErrors: Array; + shippingZone?: Maybe; +}; + +export type ShippingZoneUpdateInput = { + /** List of channels to assign to the shipping zone. */ + addChannels?: InputMaybe>; + /** List of warehouses to assign to a shipping zone */ + addWarehouses?: InputMaybe>; + /** List of countries in this shipping zone. */ + countries?: InputMaybe>; + /** Default shipping zone will be used for countries not covered by other zones. */ + default?: InputMaybe; + /** Description of the shipping zone. */ + description?: InputMaybe; + /** Shipping zone's name. Visible only to the staff. */ + name?: InputMaybe; + /** List of channels to unassign from the shipping zone. */ + removeChannels?: InputMaybe>; + /** List of warehouses to unassign from a shipping zone */ + removeWarehouses?: InputMaybe>; +}; + +export type ShippingZoneUpdated = Event & { + __typename?: "ShippingZoneUpdated"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** + * The shipping zone the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + shippingZone?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type ShippingZoneUpdatedShippingZoneArgs = { + channel?: InputMaybe; +}; + +/** Represents a shop resource containing general shop data and configuration. */ +export type Shop = { + __typename?: "Shop"; + /** + * Enable automatic fulfillment for all digital products. + * + * Requires one of the following permissions: MANAGE_SETTINGS. + */ + automaticFulfillmentDigitalProducts?: Maybe; + /** List of available external authentications. */ + availableExternalAuthentications: Array; + /** List of available payment gateways. */ + availablePaymentGateways: Array; + /** Shipping methods that are available for the shop. */ + availableShippingMethods?: Maybe>; + /** + * List of all currencies supported by shop's channels. + * + * Added in Saleor 3.1. + * + * Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP. + */ + channelCurrencies: Array; + /** Charge taxes on shipping. */ + chargeTaxesOnShipping: Scalars["Boolean"]; + /** Company address. */ + companyAddress?: Maybe
; + /** List of countries available in the shop. */ + countries: Array; + /** URL of a view where customers can set their password. */ + customerSetPasswordUrl?: Maybe; + /** Shop's default country. */ + defaultCountry?: Maybe; + /** + * Default number of max downloads per digital content URL. + * + * Requires one of the following permissions: MANAGE_SETTINGS. + */ + defaultDigitalMaxDownloads?: Maybe; + /** + * Default number of days which digital content URL will be valid. + * + * Requires one of the following permissions: MANAGE_SETTINGS. + */ + defaultDigitalUrlValidDays?: Maybe; + /** + * Default shop's email sender's address. + * + * Requires one of the following permissions: MANAGE_SETTINGS. + */ + defaultMailSenderAddress?: Maybe; + /** + * Default shop's email sender's name. + * + * Requires one of the following permissions: MANAGE_SETTINGS. + */ + defaultMailSenderName?: Maybe; + /** Default weight unit. */ + defaultWeightUnit?: Maybe; + /** Shop's description. */ + description?: Maybe; + /** Display prices with tax in store. */ + displayGrossPrices: Scalars["Boolean"]; + /** Shop's domain data. */ + domain: Domain; + /** + * Allow to approve fulfillments which are unpaid. + * + * Added in Saleor 3.1. + */ + fulfillmentAllowUnpaid: Scalars["Boolean"]; + /** + * Automatically approve all new fulfillments. + * + * Added in Saleor 3.1. + */ + fulfillmentAutoApprove: Scalars["Boolean"]; + /** Header text. */ + headerText?: Maybe; + /** Include taxes in prices. */ + includeTaxesInPrices: Scalars["Boolean"]; + /** List of the shops's supported languages. */ + languages: Array; + /** + * Default number of maximum line quantity in single checkout (per single checkout line). + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: MANAGE_SETTINGS. + */ + limitQuantityPerCheckout?: Maybe; + /** + * Resource limitations and current usage if any set for a shop + * + * Requires one of the following permissions: AUTHENTICATED_STAFF_USER. + */ + limits: LimitInfo; + /** Shop's name. */ + name: Scalars["String"]; + /** List of available permissions. */ + permissions: Array; + /** List of possible phone prefixes. */ + phonePrefixes: Array; + /** + * Default number of minutes stock will be reserved for anonymous checkout or null when stock reservation is disabled. + * + * Added in Saleor 3.1. + * + * Requires one of the following permissions: MANAGE_SETTINGS. + */ + reserveStockDurationAnonymousUser?: Maybe; + /** + * Default number of minutes stock will be reserved for authenticated checkout or null when stock reservation is disabled. + * + * Added in Saleor 3.1. + * + * Requires one of the following permissions: MANAGE_SETTINGS. + */ + reserveStockDurationAuthenticatedUser?: Maybe; + /** + * List of staff notification recipients. + * + * Requires one of the following permissions: MANAGE_SETTINGS. + */ + staffNotificationRecipients?: Maybe>; + /** Enable inventory tracking. */ + trackInventoryByDefault?: Maybe; + /** Returns translated shop fields for the given language code. */ + translation?: Maybe; + /** + * Saleor API version. + * + * Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP. + */ + version: Scalars["String"]; +}; + +/** Represents a shop resource containing general shop data and configuration. */ +export type ShopAvailablePaymentGatewaysArgs = { + channel?: InputMaybe; + currency?: InputMaybe; +}; + +/** Represents a shop resource containing general shop data and configuration. */ +export type ShopAvailableShippingMethodsArgs = { + address?: InputMaybe; + channel: Scalars["String"]; +}; + +/** Represents a shop resource containing general shop data and configuration. */ +export type ShopCountriesArgs = { + filter?: InputMaybe; + languageCode?: InputMaybe; +}; + +/** Represents a shop resource containing general shop data and configuration. */ +export type ShopTranslationArgs = { + languageCode: LanguageCodeEnum; +}; + +/** + * Update the shop's address. If the `null` value is passed, the currently selected address will be deleted. + * + * Requires one of the following permissions: MANAGE_SETTINGS. + */ +export type ShopAddressUpdate = { + __typename?: "ShopAddressUpdate"; + errors: Array; + /** Updated shop. */ + shop?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + shopErrors: Array; +}; + +/** + * Updates site domain of the shop. + * + * Requires one of the following permissions: MANAGE_SETTINGS. + */ +export type ShopDomainUpdate = { + __typename?: "ShopDomainUpdate"; + errors: Array; + /** Updated shop. */ + shop?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + shopErrors: Array; +}; + +export type ShopError = { + __typename?: "ShopError"; + /** The error code. */ + code: ShopErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; +}; + +/** An enumeration. */ +export enum ShopErrorCode { + AlreadyExists = "ALREADY_EXISTS", + CannotFetchTaxRates = "CANNOT_FETCH_TAX_RATES", + GraphqlError = "GRAPHQL_ERROR", + Invalid = "INVALID", + NotFound = "NOT_FOUND", + Required = "REQUIRED", + Unique = "UNIQUE", +} + +/** + * Fetch tax rates. + * + * Requires one of the following permissions: MANAGE_SETTINGS. + */ +export type ShopFetchTaxRates = { + __typename?: "ShopFetchTaxRates"; + errors: Array; + /** Updated shop. */ + shop?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + shopErrors: Array; +}; + +export type ShopSettingsInput = { + /** Enable automatic fulfillment for all digital products. */ + automaticFulfillmentDigitalProducts?: InputMaybe; + /** Charge taxes on shipping. */ + chargeTaxesOnShipping?: InputMaybe; + /** URL of a view where customers can set their password. */ + customerSetPasswordUrl?: InputMaybe; + /** Default number of max downloads per digital content URL. */ + defaultDigitalMaxDownloads?: InputMaybe; + /** Default number of days which digital content URL will be valid. */ + defaultDigitalUrlValidDays?: InputMaybe; + /** Default email sender's address. */ + defaultMailSenderAddress?: InputMaybe; + /** Default email sender's name. */ + defaultMailSenderName?: InputMaybe; + /** Default weight unit. */ + defaultWeightUnit?: InputMaybe; + /** SEO description. */ + description?: InputMaybe; + /** Display prices with tax in store. */ + displayGrossPrices?: InputMaybe; + /** + * Enable ability to approve fulfillments which are unpaid. + * + * Added in Saleor 3.1. + */ + fulfillmentAllowUnpaid?: InputMaybe; + /** + * Enable automatic approval of all new fulfillments. + * + * Added in Saleor 3.1. + */ + fulfillmentAutoApprove?: InputMaybe; + /** Header text. */ + headerText?: InputMaybe; + /** Include taxes in prices. */ + includeTaxesInPrices?: InputMaybe; + /** + * Default number of maximum line quantity in single checkout. Minimum possible value is 1, default value is 50. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + limitQuantityPerCheckout?: InputMaybe; + /** + * Default number of minutes stock will be reserved for anonymous checkout. Enter 0 or null to disable. + * + * Added in Saleor 3.1. + */ + reserveStockDurationAnonymousUser?: InputMaybe; + /** + * Default number of minutes stock will be reserved for authenticated checkout. Enter 0 or null to disable. + * + * Added in Saleor 3.1. + */ + reserveStockDurationAuthenticatedUser?: InputMaybe; + /** Enable inventory tracking. */ + trackInventoryByDefault?: InputMaybe; +}; + +/** + * Creates/updates translations for shop settings. + * + * Requires one of the following permissions: MANAGE_TRANSLATIONS. + */ +export type ShopSettingsTranslate = { + __typename?: "ShopSettingsTranslate"; + errors: Array; + /** Updated shop settings. */ + shop?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + translationErrors: Array; +}; + +export type ShopSettingsTranslationInput = { + description?: InputMaybe; + headerText?: InputMaybe; +}; + +/** + * Updates shop settings. + * + * Requires one of the following permissions: MANAGE_SETTINGS. + */ +export type ShopSettingsUpdate = { + __typename?: "ShopSettingsUpdate"; + errors: Array; + /** Updated shop. */ + shop?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + shopErrors: Array; +}; + +export type ShopTranslation = Node & { + __typename?: "ShopTranslation"; + description: Scalars["String"]; + headerText: Scalars["String"]; + id: Scalars["ID"]; + /** Translation language. */ + language: LanguageDisplay; +}; + +export type SiteDomainInput = { + /** Domain name for shop. */ + domain?: InputMaybe; + /** Shop site name. */ + name?: InputMaybe; +}; + +/** + * Deletes staff users. + * + * Requires one of the following permissions: MANAGE_STAFF. + */ +export type StaffBulkDelete = { + __typename?: "StaffBulkDelete"; + /** Returns how many objects were affected. */ + count: Scalars["Int"]; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + staffErrors: Array; +}; + +/** + * Creates a new staff user. + * + * Requires one of the following permissions: MANAGE_STAFF. + */ +export type StaffCreate = { + __typename?: "StaffCreate"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + staffErrors: Array; + user?: Maybe; +}; + +export type StaffCreateInput = { + /** List of permission group IDs to which user should be assigned. */ + addGroups?: InputMaybe>; + /** The unique email address of the user. */ + email?: InputMaybe; + /** Given name. */ + firstName?: InputMaybe; + /** User account is active. */ + isActive?: InputMaybe; + /** Family name. */ + lastName?: InputMaybe; + /** A note about the user. */ + note?: InputMaybe; + /** URL of a view where users should be redirected to set the password. URL in RFC 1808 format. */ + redirectUrl?: InputMaybe; +}; + +/** + * Deletes a staff user. + * + * Requires one of the following permissions: MANAGE_STAFF. + */ +export type StaffDelete = { + __typename?: "StaffDelete"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + staffErrors: Array; + user?: Maybe; +}; + +export type StaffError = { + __typename?: "StaffError"; + /** A type of address that causes the error. */ + addressType?: Maybe; + /** The error code. */ + code: AccountErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** List of permission group IDs which cause the error. */ + groups?: Maybe>; + /** The error message. */ + message?: Maybe; + /** List of permissions which causes the error. */ + permissions?: Maybe>; + /** List of user IDs which causes the error. */ + users?: Maybe>; +}; + +export enum StaffMemberStatus { + /** User account has been activated. */ + Active = "ACTIVE", + /** User account has not been activated yet. */ + Deactivated = "DEACTIVATED", +} + +/** Represents a recipient of email notifications send by Saleor, such as notifications about new orders. Notifications can be assigned to staff users or arbitrary email addresses. */ +export type StaffNotificationRecipient = Node & { + __typename?: "StaffNotificationRecipient"; + /** Determines if a notification active. */ + active?: Maybe; + /** Returns email address of a user subscribed to email notifications. */ + email?: Maybe; + id: Scalars["ID"]; + /** Returns a user subscribed to email notifications. */ + user?: Maybe; +}; + +/** + * Creates a new staff notification recipient. + * + * Requires one of the following permissions: MANAGE_SETTINGS. + */ +export type StaffNotificationRecipientCreate = { + __typename?: "StaffNotificationRecipientCreate"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + shopErrors: Array; + staffNotificationRecipient?: Maybe; +}; + +/** + * Delete staff notification recipient. + * + * Requires one of the following permissions: MANAGE_SETTINGS. + */ +export type StaffNotificationRecipientDelete = { + __typename?: "StaffNotificationRecipientDelete"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + shopErrors: Array; + staffNotificationRecipient?: Maybe; +}; + +export type StaffNotificationRecipientInput = { + /** Determines if a notification active. */ + active?: InputMaybe; + /** Email address of a user subscribed to email notifications. */ + email?: InputMaybe; + /** The ID of the user subscribed to email notifications.. */ + user?: InputMaybe; +}; + +/** + * Updates a staff notification recipient. + * + * Requires one of the following permissions: MANAGE_SETTINGS. + */ +export type StaffNotificationRecipientUpdate = { + __typename?: "StaffNotificationRecipientUpdate"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + shopErrors: Array; + staffNotificationRecipient?: Maybe; +}; + +/** + * Updates an existing staff user. + * + * Requires one of the following permissions: MANAGE_STAFF. + */ +export type StaffUpdate = { + __typename?: "StaffUpdate"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + staffErrors: Array; + user?: Maybe; +}; + +export type StaffUpdateInput = { + /** List of permission group IDs to which user should be assigned. */ + addGroups?: InputMaybe>; + /** The unique email address of the user. */ + email?: InputMaybe; + /** Given name. */ + firstName?: InputMaybe; + /** User account is active. */ + isActive?: InputMaybe; + /** Family name. */ + lastName?: InputMaybe; + /** A note about the user. */ + note?: InputMaybe; + /** List of permission group IDs from which user should be unassigned. */ + removeGroups?: InputMaybe>; +}; + +export type StaffUserInput = { + ids?: InputMaybe>; + search?: InputMaybe; + status?: InputMaybe; +}; + +/** Represents stock. */ +export type Stock = Node & { + __typename?: "Stock"; + id: Scalars["ID"]; + productVariant: ProductVariant; + /** + * Quantity of a product in the warehouse's possession, including the allocated stock that is waiting for shipment. + * + * Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. + */ + quantity: Scalars["Int"]; + /** + * Quantity allocated for orders. + * + * Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. + */ + quantityAllocated: Scalars["Int"]; + /** + * Quantity reserved for checkouts. + * + * Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. + */ + quantityReserved: Scalars["Int"]; + warehouse: Warehouse; +}; + +export enum StockAvailability { + InStock = "IN_STOCK", + OutOfStock = "OUT_OF_STOCK", +} + +export type StockCountableConnection = { + __typename?: "StockCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type StockCountableEdge = { + __typename?: "StockCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: Stock; +}; + +export type StockError = { + __typename?: "StockError"; + /** The error code. */ + code: StockErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; +}; + +/** An enumeration. */ +export enum StockErrorCode { + AlreadyExists = "ALREADY_EXISTS", + GraphqlError = "GRAPHQL_ERROR", + Invalid = "INVALID", + NotFound = "NOT_FOUND", + Required = "REQUIRED", + Unique = "UNIQUE", +} + +export type StockFilterInput = { + quantity?: InputMaybe; + search?: InputMaybe; +}; + +export type StockInput = { + /** Quantity of items available for sell. */ + quantity: Scalars["Int"]; + /** Warehouse in which stock is located. */ + warehouse: Scalars["ID"]; +}; + +/** Enum representing the type of a payment storage in a gateway. */ +export enum StorePaymentMethodEnum { + /** Storage is disabled. The payment is not stored. */ + None = "NONE", + /** Off session storage type. The payment is stored to be reused even if the customer is absent. */ + OffSession = "OFF_SESSION", + /** On session storage type. The payment is stored only to be reused when the customer is present in the checkout flow. */ + OnSession = "ON_SESSION", +} + +export type Subscription = { + __typename?: "Subscription"; + /** + * Look up subscription event. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + event?: Maybe; +}; + +/** Representation of tax types fetched from tax gateway. */ +export type TaxType = { + __typename?: "TaxType"; + /** Description of the tax type. */ + description?: Maybe; + /** External tax code used to identify given tax group. */ + taxCode?: Maybe; +}; + +/** Represents a monetary value with taxes. In cases where taxes were not applied, net and gross values will be equal. */ +export type TaxedMoney = { + __typename?: "TaxedMoney"; + /** Currency code. */ + currency: Scalars["String"]; + /** Amount of money including taxes. */ + gross: Money; + /** Amount of money without taxes. */ + net: Money; + /** Amount of taxes. */ + tax: Money; +}; + +/** Represents a range of monetary values. */ +export type TaxedMoneyRange = { + __typename?: "TaxedMoneyRange"; + /** Lower bound of a price range. */ + start?: Maybe; + /** Upper bound of a price range. */ + stop?: Maybe; +}; + +export type TimePeriod = { + __typename?: "TimePeriod"; + /** The length of the period. */ + amount: Scalars["Int"]; + /** The type of the period. */ + type: TimePeriodTypeEnum; +}; + +export type TimePeriodInputType = { + /** The length of the period. */ + amount: Scalars["Int"]; + /** The type of the period. */ + type: TimePeriodTypeEnum; +}; + +/** An enumeration. */ +export enum TimePeriodTypeEnum { + Day = "DAY", + Month = "MONTH", + Week = "WEEK", + Year = "YEAR", +} + +/** An object representing a single payment. */ +export type Transaction = Node & { + __typename?: "Transaction"; + /** Total amount of the transaction. */ + amount?: Maybe; + created: Scalars["DateTime"]; + error?: Maybe; + gatewayResponse: Scalars["JSONString"]; + id: Scalars["ID"]; + isSuccess: Scalars["Boolean"]; + kind: TransactionKind; + payment: Payment; + token: Scalars["String"]; +}; + +export type TransactionAction = { + __typename?: "TransactionAction"; + /** Determines the action type. */ + actionType: TransactionActionEnum; + /** Transaction request amount. Null when action type is VOID. */ + amount?: Maybe; +}; + +/** + * Represents possible actions on payment transaction. + * + * The following actions are possible: + * CHARGE - Represents the charge action. + * REFUND - Represents a refund action. + * VOID - Represents a void action. + */ +export enum TransactionActionEnum { + Charge = "CHARGE", + Refund = "REFUND", + Void = "VOID", +} + +export type TransactionActionRequest = Event & { + __typename?: "TransactionActionRequest"; + /** + * Requested action data. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + action: TransactionAction; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** + * Look up a transaction. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + transaction?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +/** + * Create transaction for checkout or order. Requires the following permissions: AUTHENTICATED_APP and HANDLE_PAYMENTS. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ +export type TransactionCreate = { + __typename?: "TransactionCreate"; + errors: Array; + transaction?: Maybe; +}; + +export type TransactionCreateError = { + __typename?: "TransactionCreateError"; + /** The error code. */ + code: TransactionCreateErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; +}; + +/** An enumeration. */ +export enum TransactionCreateErrorCode { + GraphqlError = "GRAPHQL_ERROR", + IncorrectCurrency = "INCORRECT_CURRENCY", + Invalid = "INVALID", + MetadataKeyRequired = "METADATA_KEY_REQUIRED", + NotFound = "NOT_FOUND", +} + +export type TransactionCreateInput = { + /** Amount authorized by this transaction. */ + amountAuthorized?: InputMaybe; + /** Amount charged by this transaction. */ + amountCharged?: InputMaybe; + /** Amount refunded by this transaction. */ + amountRefunded?: InputMaybe; + /** Amount voided by this transaction. */ + amountVoided?: InputMaybe; + /** List of all possible actions for the transaction */ + availableActions?: InputMaybe>; + /** Payment public metadata. */ + metadata?: InputMaybe>; + /** Payment private metadata. */ + privateMetadata?: InputMaybe>; + /** Reference of the transaction. */ + reference?: InputMaybe; + /** Status of the transaction. */ + status: Scalars["String"]; + /** Payment type used for this transaction. */ + type: Scalars["String"]; +}; + +/** Represents transaction's event. */ +export type TransactionEvent = Node & { + __typename?: "TransactionEvent"; + createdAt: Scalars["DateTime"]; + /** The ID of the object. */ + id: Scalars["ID"]; + /** Name of the transaction's event. */ + name?: Maybe; + /** Reference of transaction's event. */ + reference: Scalars["String"]; + /** Status of transaction's event. */ + status: TransactionStatus; +}; + +export type TransactionEventInput = { + /** Name of the transaction. */ + name?: InputMaybe; + /** Reference of the transaction. */ + reference?: InputMaybe; + /** Current status of the payment transaction. */ + status: TransactionStatus; +}; + +/** + * Represents a payment transaction. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ +export type TransactionItem = Node & + ObjectWithMetadata & { + __typename?: "TransactionItem"; + /** List of actions that can be performed in the current state of a payment. */ + actions: Array; + /** Total amount authorized for this payment. */ + authorizedAmount: Money; + /** Total amount charged for this payment. */ + chargedAmount: Money; + createdAt: Scalars["DateTime"]; + /** List of all transaction's events. */ + events: Array; + /** The ID of the object. */ + id: Scalars["ID"]; + /** List of public metadata items. Can be accessed without permissions. */ + metadata: Array; + /** + * A single key from public metadata. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafield?: Maybe; + /** + * Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafields?: Maybe; + modifiedAt: Scalars["DateTime"]; + /** List of private metadata items. Requires staff permissions to access. */ + privateMetadata: Array; + /** + * A single key from private metadata. Requires staff permissions to access. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafield?: Maybe; + /** + * Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafields?: Maybe; + /** Reference of transaction. */ + reference: Scalars["String"]; + /** Total amount refunded for this payment. */ + refundedAmount: Money; + /** Status of transaction. */ + status: Scalars["String"]; + /** Type of transaction. */ + type: Scalars["String"]; + /** Total amount voided for this payment. */ + voidedAmount: Money; + }; + +/** + * Represents a payment transaction. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ +export type TransactionItemMetafieldArgs = { + key: Scalars["String"]; +}; + +/** + * Represents a payment transaction. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ +export type TransactionItemMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** + * Represents a payment transaction. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ +export type TransactionItemPrivateMetafieldArgs = { + key: Scalars["String"]; +}; + +/** + * Represents a payment transaction. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ +export type TransactionItemPrivateMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** An enumeration. */ +export enum TransactionKind { + ActionToConfirm = "ACTION_TO_CONFIRM", + Auth = "AUTH", + Cancel = "CANCEL", + Capture = "CAPTURE", + Confirm = "CONFIRM", + External = "EXTERNAL", + Pending = "PENDING", + Refund = "REFUND", + RefundOngoing = "REFUND_ONGOING", + Void = "VOID", +} + +/** + * Request an action for payment transaction. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + * + * Requires one of the following permissions: HANDLE_PAYMENTS, MANAGE_ORDERS. + */ +export type TransactionRequestAction = { + __typename?: "TransactionRequestAction"; + errors: Array; + transaction?: Maybe; +}; + +export type TransactionRequestActionError = { + __typename?: "TransactionRequestActionError"; + /** The error code. */ + code: TransactionRequestActionErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; +}; + +/** An enumeration. */ +export enum TransactionRequestActionErrorCode { + GraphqlError = "GRAPHQL_ERROR", + Invalid = "INVALID", + MissingTransactionActionRequestWebhook = "MISSING_TRANSACTION_ACTION_REQUEST_WEBHOOK", + NotFound = "NOT_FOUND", +} + +/** An enumeration. */ +export enum TransactionStatus { + Failure = "FAILURE", + Pending = "PENDING", + Success = "SUCCESS", +} + +/** + * Create transaction for checkout or order. Requires the following permissions: AUTHENTICATED_APP and HANDLE_PAYMENTS. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ +export type TransactionUpdate = { + __typename?: "TransactionUpdate"; + errors: Array; + transaction?: Maybe; +}; + +export type TransactionUpdateError = { + __typename?: "TransactionUpdateError"; + /** The error code. */ + code: TransactionUpdateErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; +}; + +/** An enumeration. */ +export enum TransactionUpdateErrorCode { + GraphqlError = "GRAPHQL_ERROR", + IncorrectCurrency = "INCORRECT_CURRENCY", + Invalid = "INVALID", + MetadataKeyRequired = "METADATA_KEY_REQUIRED", + NotFound = "NOT_FOUND", +} + +export type TransactionUpdateInput = { + /** Amount authorized by this transaction. */ + amountAuthorized?: InputMaybe; + /** Amount charged by this transaction. */ + amountCharged?: InputMaybe; + /** Amount refunded by this transaction. */ + amountRefunded?: InputMaybe; + /** Amount voided by this transaction. */ + amountVoided?: InputMaybe; + /** List of all possible actions for the transaction */ + availableActions?: InputMaybe>; + /** Payment public metadata. */ + metadata?: InputMaybe>; + /** Payment private metadata. */ + privateMetadata?: InputMaybe>; + /** Reference of the transaction. */ + reference?: InputMaybe; + /** Status of the transaction. */ + status?: InputMaybe; + /** Payment type used for this transaction. */ + type?: InputMaybe; +}; + +export type TranslatableItem = + | AttributeTranslatableContent + | AttributeValueTranslatableContent + | CategoryTranslatableContent + | CollectionTranslatableContent + | MenuItemTranslatableContent + | PageTranslatableContent + | ProductTranslatableContent + | ProductVariantTranslatableContent + | SaleTranslatableContent + | ShippingMethodTranslatableContent + | VoucherTranslatableContent; + +export type TranslatableItemConnection = { + __typename?: "TranslatableItemConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type TranslatableItemEdge = { + __typename?: "TranslatableItemEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: TranslatableItem; +}; + +export enum TranslatableKinds { + Attribute = "ATTRIBUTE", + AttributeValue = "ATTRIBUTE_VALUE", + Category = "CATEGORY", + Collection = "COLLECTION", + MenuItem = "MENU_ITEM", + Page = "PAGE", + Product = "PRODUCT", + Sale = "SALE", + ShippingMethod = "SHIPPING_METHOD", + Variant = "VARIANT", + Voucher = "VOUCHER", +} + +export type TranslationCreated = Event & { + __typename?: "TranslationCreated"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** + * The translation the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + translation?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type TranslationError = { + __typename?: "TranslationError"; + /** The error code. */ + code: TranslationErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; +}; + +/** An enumeration. */ +export enum TranslationErrorCode { + GraphqlError = "GRAPHQL_ERROR", + Invalid = "INVALID", + NotFound = "NOT_FOUND", + Required = "REQUIRED", +} + +export type TranslationInput = { + /** + * Translated description. + * + * Rich text format. For reference see https://editorjs.io/ + */ + description?: InputMaybe; + name?: InputMaybe; + seoDescription?: InputMaybe; + seoTitle?: InputMaybe; +}; + +export type TranslationTypes = + | AttributeTranslation + | AttributeValueTranslation + | CategoryTranslation + | CollectionTranslation + | MenuItemTranslation + | PageTranslation + | ProductTranslation + | ProductVariantTranslation + | SaleTranslation + | ShippingMethodTranslation + | VoucherTranslation; + +export type TranslationUpdated = Event & { + __typename?: "TranslationUpdated"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** + * The translation the event relates to. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + translation?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; +}; + +export type UpdateInvoiceInput = { + /** Invoice number */ + number?: InputMaybe; + /** URL of an invoice to download. */ + url?: InputMaybe; +}; + +/** Updates metadata of an object. To use it, you need to have access to the modified object. */ +export type UpdateMetadata = { + __typename?: "UpdateMetadata"; + errors: Array; + item?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + metadataErrors: Array; +}; + +/** Updates private metadata of an object. To use it, you need to be an authenticated staff user or an app and have access to the modified object. */ +export type UpdatePrivateMetadata = { + __typename?: "UpdatePrivateMetadata"; + errors: Array; + item?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + metadataErrors: Array; +}; + +export type UploadError = { + __typename?: "UploadError"; + /** The error code. */ + code: UploadErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; +}; + +/** An enumeration. */ +export enum UploadErrorCode { + GraphqlError = "GRAPHQL_ERROR", +} + +/** Represents user data. */ +export type User = Node & + ObjectWithMetadata & { + __typename?: "User"; + /** List of all user's addresses. */ + addresses?: Maybe>; + avatar?: Maybe; + /** + * Returns the last open checkout of this user. + * @deprecated This field will be removed in Saleor 4.0. Use the `checkoutTokens` field to fetch the user checkouts. + */ + checkout?: Maybe; + /** Returns the checkout ID's assigned to this user. */ + checkoutIds?: Maybe>; + /** + * Returns the checkout UUID's assigned to this user. + * @deprecated This field will be removed in Saleor 4.0. Use `checkoutIds` instead. + */ + checkoutTokens?: Maybe>; + dateJoined: Scalars["DateTime"]; + defaultBillingAddress?: Maybe
; + defaultShippingAddress?: Maybe
; + /** List of user's permission groups which user can manage. */ + editableGroups?: Maybe>; + email: Scalars["String"]; + /** + * List of events associated with the user. + * + * Requires one of the following permissions: MANAGE_USERS, MANAGE_STAFF. + */ + events?: Maybe>; + firstName: Scalars["String"]; + /** List of the user gift cards. */ + giftCards?: Maybe; + id: Scalars["ID"]; + isActive: Scalars["Boolean"]; + isStaff: Scalars["Boolean"]; + /** User language code. */ + languageCode: LanguageCodeEnum; + lastLogin?: Maybe; + lastName: Scalars["String"]; + /** List of public metadata items. Can be accessed without permissions. */ + metadata: Array; + /** + * A single key from public metadata. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafield?: Maybe; + /** + * Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafields?: Maybe; + /** + * A note about the customer. + * + * Requires one of the following permissions: MANAGE_USERS, MANAGE_STAFF. + */ + note?: Maybe; + /** List of user's orders. Requires one of the following permissions: MANAGE_STAFF, OWNER. */ + orders?: Maybe; + /** List of user's permission groups. */ + permissionGroups?: Maybe>; + /** List of private metadata items. Requires staff permissions to access. */ + privateMetadata: Array; + /** + * A single key from private metadata. Requires staff permissions to access. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafield?: Maybe; + /** + * Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafields?: Maybe; + /** List of stored payment sources. */ + storedPaymentSources?: Maybe>; + updatedAt: Scalars["DateTime"]; + /** List of user's permissions. */ + userPermissions?: Maybe>; + }; + +/** Represents user data. */ +export type UserAvatarArgs = { + size?: InputMaybe; +}; + +/** Represents user data. */ +export type UserCheckoutIdsArgs = { + channel?: InputMaybe; +}; + +/** Represents user data. */ +export type UserCheckoutTokensArgs = { + channel?: InputMaybe; +}; + +/** Represents user data. */ +export type UserGiftCardsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +/** Represents user data. */ +export type UserMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents user data. */ +export type UserMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Represents user data. */ +export type UserOrdersArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +/** Represents user data. */ +export type UserPrivateMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents user data. */ +export type UserPrivateMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Represents user data. */ +export type UserStoredPaymentSourcesArgs = { + channel?: InputMaybe; +}; + +/** + * Deletes a user avatar. Only for staff members. + * + * Requires one of the following permissions: AUTHENTICATED_STAFF_USER. + */ +export type UserAvatarDelete = { + __typename?: "UserAvatarDelete"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + errors: Array; + /** An updated user instance. */ + user?: Maybe; +}; + +/** + * Create a user avatar. Only for staff members. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + * + * Requires one of the following permissions: AUTHENTICATED_STAFF_USER. + */ +export type UserAvatarUpdate = { + __typename?: "UserAvatarUpdate"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + errors: Array; + /** An updated user instance. */ + user?: Maybe; +}; + +/** + * Activate or deactivate users. + * + * Requires one of the following permissions: MANAGE_USERS. + */ +export type UserBulkSetActive = { + __typename?: "UserBulkSetActive"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + /** Returns how many objects were affected. */ + count: Scalars["Int"]; + errors: Array; +}; + +export type UserCountableConnection = { + __typename?: "UserCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type UserCountableEdge = { + __typename?: "UserCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: User; +}; + +export type UserCreateInput = { + /** Slug of a channel which will be used for notify user. Optional when only one channel exists. */ + channel?: InputMaybe; + /** Billing address of the customer. */ + defaultBillingAddress?: InputMaybe; + /** Shipping address of the customer. */ + defaultShippingAddress?: InputMaybe; + /** The unique email address of the user. */ + email?: InputMaybe; + /** Given name. */ + firstName?: InputMaybe; + /** User account is active. */ + isActive?: InputMaybe; + /** User language code. */ + languageCode?: InputMaybe; + /** Family name. */ + lastName?: InputMaybe; + /** A note about the user. */ + note?: InputMaybe; + /** URL of a view where users should be redirected to set the password. URL in RFC 1808 format. */ + redirectUrl?: InputMaybe; +}; + +export type UserPermission = { + __typename?: "UserPermission"; + /** Internal code for permission. */ + code: PermissionEnum; + /** Describe action(s) allowed to do by permission. */ + name: Scalars["String"]; + /** List of user permission groups which contains this permission. */ + sourcePermissionGroups?: Maybe>; +}; + +export type UserPermissionSourcePermissionGroupsArgs = { + userId: Scalars["ID"]; +}; + +export enum UserSortField { + /** Sort users by created at. */ + CreatedAt = "CREATED_AT", + /** Sort users by email. */ + Email = "EMAIL", + /** Sort users by first name. */ + FirstName = "FIRST_NAME", + /** Sort users by last modified at. */ + LastModifiedAt = "LAST_MODIFIED_AT", + /** Sort users by last name. */ + LastName = "LAST_NAME", + /** Sort users by order count. */ + OrderCount = "ORDER_COUNT", +} + +export type UserSortingInput = { + /** Specifies the direction in which to sort products. */ + direction: OrderDirection; + /** Sort users by the selected field. */ + field: UserSortField; +}; + +/** Represents a VAT rate for a country. */ +export type Vat = { + __typename?: "VAT"; + /** Country code. */ + countryCode: Scalars["String"]; + /** Country's VAT rate exceptions for specific types of goods. */ + reducedRates: Array; + /** Standard VAT rate in percent. */ + standardRate?: Maybe; +}; + +export enum VariantAttributeScope { + All = "ALL", + NotVariantSelection = "NOT_VARIANT_SELECTION", + VariantSelection = "VARIANT_SELECTION", +} + +/** + * Assign an media to a product variant. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type VariantMediaAssign = { + __typename?: "VariantMediaAssign"; + errors: Array; + media?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; + productVariant?: Maybe; +}; + +/** + * Unassign an media from a product variant. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type VariantMediaUnassign = { + __typename?: "VariantMediaUnassign"; + errors: Array; + media?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + productErrors: Array; + productVariant?: Maybe; +}; + +/** Represents availability of a variant in the storefront. */ +export type VariantPricingInfo = { + __typename?: "VariantPricingInfo"; + /** The discount amount if in sale (null otherwise). */ + discount?: Maybe; + /** The discount amount in the local currency. */ + discountLocalCurrency?: Maybe; + /** Whether it is in sale or not. */ + onSale?: Maybe; + /** The price, with any discount subtracted. */ + price?: Maybe; + /** The discounted price in the local currency. */ + priceLocalCurrency?: Maybe; + /** The price without any discount. */ + priceUndiscounted?: Maybe; +}; + +/** Verify JWT token. */ +export type VerifyToken = { + __typename?: "VerifyToken"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + accountErrors: Array; + errors: Array; + /** Determine if token is valid or not. */ + isValid: Scalars["Boolean"]; + /** JWT payload. */ + payload?: Maybe; + /** User assigned to token. */ + user?: Maybe; +}; + +/** An enumeration. */ +export enum VolumeUnitsEnum { + AcreFt = "ACRE_FT", + AcreIn = "ACRE_IN", + CubicCentimeter = "CUBIC_CENTIMETER", + CubicDecimeter = "CUBIC_DECIMETER", + CubicFoot = "CUBIC_FOOT", + CubicInch = "CUBIC_INCH", + CubicMeter = "CUBIC_METER", + CubicMillimeter = "CUBIC_MILLIMETER", + CubicYard = "CUBIC_YARD", + FlOz = "FL_OZ", + Liter = "LITER", + Pint = "PINT", + Qt = "QT", +} + +/** Vouchers allow giving discounts to particular customers on categories, collections or specific products. They can be used during checkout by providing valid voucher codes. */ +export type Voucher = Node & + ObjectWithMetadata & { + __typename?: "Voucher"; + applyOncePerCustomer: Scalars["Boolean"]; + applyOncePerOrder: Scalars["Boolean"]; + /** List of categories this voucher applies to. */ + categories?: Maybe; + /** + * List of availability in channels for the voucher. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ + channelListings?: Maybe>; + code: Scalars["String"]; + /** + * List of collections this voucher applies to. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ + collections?: Maybe; + /** List of countries available for the shipping voucher. */ + countries?: Maybe>; + /** Currency code for voucher. */ + currency?: Maybe; + /** Voucher value. */ + discountValue?: Maybe; + /** Determines a type of discount for voucher - value or percentage */ + discountValueType: DiscountValueTypeEnum; + endDate?: Maybe; + id: Scalars["ID"]; + /** List of public metadata items. Can be accessed without permissions. */ + metadata: Array; + /** + * A single key from public metadata. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafield?: Maybe; + /** + * Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafields?: Maybe; + minCheckoutItemsQuantity?: Maybe; + /** Minimum order value to apply voucher. */ + minSpent?: Maybe; + name?: Maybe; + onlyForStaff: Scalars["Boolean"]; + /** List of private metadata items. Requires staff permissions to access. */ + privateMetadata: Array; + /** + * A single key from private metadata. Requires staff permissions to access. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafield?: Maybe; + /** + * Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafields?: Maybe; + /** + * List of products this voucher applies to. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ + products?: Maybe; + startDate: Scalars["DateTime"]; + /** Returns translated voucher fields for the given language code. */ + translation?: Maybe; + /** Determines a type of voucher. */ + type: VoucherTypeEnum; + usageLimit?: Maybe; + used: Scalars["Int"]; + /** + * List of product variants this voucher applies to. + * + * Added in Saleor 3.1. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ + variants?: Maybe; + }; + +/** Vouchers allow giving discounts to particular customers on categories, collections or specific products. They can be used during checkout by providing valid voucher codes. */ +export type VoucherCategoriesArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +/** Vouchers allow giving discounts to particular customers on categories, collections or specific products. They can be used during checkout by providing valid voucher codes. */ +export type VoucherCollectionsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +/** Vouchers allow giving discounts to particular customers on categories, collections or specific products. They can be used during checkout by providing valid voucher codes. */ +export type VoucherMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Vouchers allow giving discounts to particular customers on categories, collections or specific products. They can be used during checkout by providing valid voucher codes. */ +export type VoucherMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Vouchers allow giving discounts to particular customers on categories, collections or specific products. They can be used during checkout by providing valid voucher codes. */ +export type VoucherPrivateMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Vouchers allow giving discounts to particular customers on categories, collections or specific products. They can be used during checkout by providing valid voucher codes. */ +export type VoucherPrivateMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Vouchers allow giving discounts to particular customers on categories, collections or specific products. They can be used during checkout by providing valid voucher codes. */ +export type VoucherProductsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +/** Vouchers allow giving discounts to particular customers on categories, collections or specific products. They can be used during checkout by providing valid voucher codes. */ +export type VoucherTranslationArgs = { + languageCode: LanguageCodeEnum; +}; + +/** Vouchers allow giving discounts to particular customers on categories, collections or specific products. They can be used during checkout by providing valid voucher codes. */ +export type VoucherVariantsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +/** + * Adds products, categories, collections to a voucher. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ +export type VoucherAddCatalogues = { + __typename?: "VoucherAddCatalogues"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + discountErrors: Array; + errors: Array; + /** Voucher of which catalogue IDs will be modified. */ + voucher?: Maybe; +}; + +/** + * Deletes vouchers. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ +export type VoucherBulkDelete = { + __typename?: "VoucherBulkDelete"; + /** Returns how many objects were affected. */ + count: Scalars["Int"]; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + discountErrors: Array; + errors: Array; +}; + +/** Represents voucher channel listing. */ +export type VoucherChannelListing = Node & { + __typename?: "VoucherChannelListing"; + channel: Channel; + currency: Scalars["String"]; + discountValue: Scalars["Float"]; + id: Scalars["ID"]; + minSpent?: Maybe; +}; + +export type VoucherChannelListingAddInput = { + /** ID of a channel. */ + channelId: Scalars["ID"]; + /** Value of the voucher. */ + discountValue?: InputMaybe; + /** Min purchase amount required to apply the voucher. */ + minAmountSpent?: InputMaybe; +}; + +export type VoucherChannelListingInput = { + /** List of channels to which the voucher should be assigned. */ + addChannels?: InputMaybe>; + /** List of channels from which the voucher should be unassigned. */ + removeChannels?: InputMaybe>; +}; + +/** + * Manage voucher's availability in channels. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ +export type VoucherChannelListingUpdate = { + __typename?: "VoucherChannelListingUpdate"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + discountErrors: Array; + errors: Array; + /** An updated voucher instance. */ + voucher?: Maybe; +}; + +export type VoucherCountableConnection = { + __typename?: "VoucherCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type VoucherCountableEdge = { + __typename?: "VoucherCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: Voucher; +}; + +/** + * Creates a new voucher. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ +export type VoucherCreate = { + __typename?: "VoucherCreate"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + discountErrors: Array; + errors: Array; + voucher?: Maybe; +}; + +export type VoucherCreated = Event & { + __typename?: "VoucherCreated"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; + /** + * The voucher the event relates to. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + voucher?: Maybe; +}; + +export type VoucherCreatedVoucherArgs = { + channel?: InputMaybe; +}; + +/** + * Deletes a voucher. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ +export type VoucherDelete = { + __typename?: "VoucherDelete"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + discountErrors: Array; + errors: Array; + voucher?: Maybe; +}; + +export type VoucherDeleted = Event & { + __typename?: "VoucherDeleted"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; + /** + * The voucher the event relates to. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + voucher?: Maybe; +}; + +export type VoucherDeletedVoucherArgs = { + channel?: InputMaybe; +}; + +export enum VoucherDiscountType { + Fixed = "FIXED", + Percentage = "PERCENTAGE", + Shipping = "SHIPPING", +} + +export type VoucherFilterInput = { + discountType?: InputMaybe>; + metadata?: InputMaybe>; + search?: InputMaybe; + started?: InputMaybe; + status?: InputMaybe>; + timesUsed?: InputMaybe; +}; + +export type VoucherInput = { + /** Voucher should be applied once per customer. */ + applyOncePerCustomer?: InputMaybe; + /** Voucher should be applied to the cheapest item or entire order. */ + applyOncePerOrder?: InputMaybe; + /** Categories discounted by the voucher. */ + categories?: InputMaybe>; + /** Code to use the voucher. */ + code?: InputMaybe; + /** Collections discounted by the voucher. */ + collections?: InputMaybe>; + /** Country codes that can be used with the shipping voucher. */ + countries?: InputMaybe>; + /** Choices: fixed or percentage. */ + discountValueType?: InputMaybe; + /** End date of the voucher in ISO 8601 format. */ + endDate?: InputMaybe; + /** Minimal quantity of checkout items required to apply the voucher. */ + minCheckoutItemsQuantity?: InputMaybe; + /** Voucher name. */ + name?: InputMaybe; + /** Voucher can be used only by staff user. */ + onlyForStaff?: InputMaybe; + /** Products discounted by the voucher. */ + products?: InputMaybe>; + /** Start date of the voucher in ISO 8601 format. */ + startDate?: InputMaybe; + /** Voucher type: PRODUCT, CATEGORY SHIPPING or ENTIRE_ORDER. */ + type?: InputMaybe; + /** Limit number of times this voucher can be used in total. */ + usageLimit?: InputMaybe; + /** + * Variants discounted by the voucher. + * + * Added in Saleor 3.1. + */ + variants?: InputMaybe>; +}; + +/** + * Removes products, categories, collections from a voucher. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ +export type VoucherRemoveCatalogues = { + __typename?: "VoucherRemoveCatalogues"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + discountErrors: Array; + errors: Array; + /** Voucher of which catalogue IDs will be modified. */ + voucher?: Maybe; +}; + +export enum VoucherSortField { + /** Sort vouchers by code. */ + Code = "CODE", + /** Sort vouchers by end date. */ + EndDate = "END_DATE", + /** + * Sort vouchers by minimum spent amount. + * + * This option requires a channel filter to work as the values can vary between channels. + */ + MinimumSpentAmount = "MINIMUM_SPENT_AMOUNT", + /** Sort vouchers by start date. */ + StartDate = "START_DATE", + /** Sort vouchers by type. */ + Type = "TYPE", + /** Sort vouchers by usage limit. */ + UsageLimit = "USAGE_LIMIT", + /** + * Sort vouchers by value. + * + * This option requires a channel filter to work as the values can vary between channels. + */ + Value = "VALUE", +} + +export type VoucherSortingInput = { + /** + * Specifies the channel in which to sort the data. + * + * DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. + */ + channel?: InputMaybe; + /** Specifies the direction in which to sort products. */ + direction: OrderDirection; + /** Sort vouchers by the selected field. */ + field: VoucherSortField; +}; + +export type VoucherTranslatableContent = Node & { + __typename?: "VoucherTranslatableContent"; + id: Scalars["ID"]; + name?: Maybe; + /** Returns translated voucher fields for the given language code. */ + translation?: Maybe; + /** + * Vouchers allow giving discounts to particular customers on categories, collections or specific products. They can be used during checkout by providing valid voucher codes. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + * @deprecated This field will be removed in Saleor 4.0. Get model fields from the root level queries. + */ + voucher?: Maybe; +}; + +export type VoucherTranslatableContentTranslationArgs = { + languageCode: LanguageCodeEnum; +}; + +/** + * Creates/updates translations for a voucher. + * + * Requires one of the following permissions: MANAGE_TRANSLATIONS. + */ +export type VoucherTranslate = { + __typename?: "VoucherTranslate"; + errors: Array; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + translationErrors: Array; + voucher?: Maybe; +}; + +export type VoucherTranslation = Node & { + __typename?: "VoucherTranslation"; + id: Scalars["ID"]; + /** Translation language. */ + language: LanguageDisplay; + name?: Maybe; +}; + +export enum VoucherTypeEnum { + EntireOrder = "ENTIRE_ORDER", + Shipping = "SHIPPING", + SpecificProduct = "SPECIFIC_PRODUCT", +} + +/** + * Updates a voucher. + * + * Requires one of the following permissions: MANAGE_DISCOUNTS. + */ +export type VoucherUpdate = { + __typename?: "VoucherUpdate"; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + discountErrors: Array; + errors: Array; + voucher?: Maybe; +}; + +export type VoucherUpdated = Event & { + __typename?: "VoucherUpdated"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; + /** + * The voucher the event relates to. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + voucher?: Maybe; +}; + +export type VoucherUpdatedVoucherArgs = { + channel?: InputMaybe; +}; + +/** Represents warehouse. */ +export type Warehouse = Node & + ObjectWithMetadata & { + __typename?: "Warehouse"; + address: Address; + /** + * Click and collect options: local, all or disabled. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + clickAndCollectOption: WarehouseClickAndCollectOptionEnum; + /** + * Warehouse company name. + * @deprecated This field will be removed in Saleor 4.0. Use `Address.companyName` instead. + */ + companyName: Scalars["String"]; + email: Scalars["String"]; + id: Scalars["ID"]; + isPrivate: Scalars["Boolean"]; + /** List of public metadata items. Can be accessed without permissions. */ + metadata: Array; + /** + * A single key from public metadata. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafield?: Maybe; + /** + * Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + metafields?: Maybe; + name: Scalars["String"]; + /** List of private metadata items. Requires staff permissions to access. */ + privateMetadata: Array; + /** + * A single key from private metadata. Requires staff permissions to access. + * + * Tip: Use GraphQL aliases to fetch multiple keys. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafield?: Maybe; + /** + * Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + * + * Added in Saleor 3.3. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + privateMetafields?: Maybe; + shippingZones: ShippingZoneCountableConnection; + slug: Scalars["String"]; + }; + +/** Represents warehouse. */ +export type WarehouseMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents warehouse. */ +export type WarehouseMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Represents warehouse. */ +export type WarehousePrivateMetafieldArgs = { + key: Scalars["String"]; +}; + +/** Represents warehouse. */ +export type WarehousePrivateMetafieldsArgs = { + keys?: InputMaybe>; +}; + +/** Represents warehouse. */ +export type WarehouseShippingZonesArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +/** An enumeration. */ +export enum WarehouseClickAndCollectOptionEnum { + All = "ALL", + Disabled = "DISABLED", + Local = "LOCAL", +} + +export type WarehouseCountableConnection = { + __typename?: "WarehouseCountableConnection"; + edges: Array; + /** Pagination data for this connection. */ + pageInfo: PageInfo; + /** A total count of items in the collection. */ + totalCount?: Maybe; +}; + +export type WarehouseCountableEdge = { + __typename?: "WarehouseCountableEdge"; + /** A cursor for use in pagination. */ + cursor: Scalars["String"]; + /** The item at the end of the edge. */ + node: Warehouse; +}; + +/** + * Creates new warehouse. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type WarehouseCreate = { + __typename?: "WarehouseCreate"; + errors: Array; + warehouse?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + warehouseErrors: Array; +}; + +export type WarehouseCreateInput = { + /** Address of the warehouse. */ + address: AddressInput; + /** The email address of the warehouse. */ + email?: InputMaybe; + /** Warehouse name. */ + name: Scalars["String"]; + /** Shipping zones supported by the warehouse. */ + shippingZones?: InputMaybe>; + /** Warehouse slug. */ + slug?: InputMaybe; +}; + +export type WarehouseCreated = Event & { + __typename?: "WarehouseCreated"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; + /** + * The warehouse the event relates to. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + warehouse?: Maybe; +}; + +/** + * Deletes selected warehouse. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type WarehouseDelete = { + __typename?: "WarehouseDelete"; + errors: Array; + warehouse?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + warehouseErrors: Array; +}; + +export type WarehouseDeleted = Event & { + __typename?: "WarehouseDeleted"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; + /** + * The warehouse the event relates to. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + warehouse?: Maybe; +}; + +export type WarehouseError = { + __typename?: "WarehouseError"; + /** The error code. */ + code: WarehouseErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; +}; + +/** An enumeration. */ +export enum WarehouseErrorCode { + AlreadyExists = "ALREADY_EXISTS", + GraphqlError = "GRAPHQL_ERROR", + Invalid = "INVALID", + NotFound = "NOT_FOUND", + Required = "REQUIRED", + Unique = "UNIQUE", +} + +export type WarehouseFilterInput = { + clickAndCollectOption?: InputMaybe; + ids?: InputMaybe>; + isPrivate?: InputMaybe; + search?: InputMaybe; +}; + +/** + * Add shipping zone to given warehouse. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type WarehouseShippingZoneAssign = { + __typename?: "WarehouseShippingZoneAssign"; + errors: Array; + warehouse?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + warehouseErrors: Array; +}; + +/** + * Remove shipping zone from given warehouse. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type WarehouseShippingZoneUnassign = { + __typename?: "WarehouseShippingZoneUnassign"; + errors: Array; + warehouse?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + warehouseErrors: Array; +}; + +export enum WarehouseSortField { + /** Sort warehouses by name. */ + Name = "NAME", +} + +export type WarehouseSortingInput = { + /** Specifies the direction in which to sort products. */ + direction: OrderDirection; + /** Sort warehouses by the selected field. */ + field: WarehouseSortField; +}; + +/** + * Updates given warehouse. + * + * Requires one of the following permissions: MANAGE_PRODUCTS. + */ +export type WarehouseUpdate = { + __typename?: "WarehouseUpdate"; + errors: Array; + warehouse?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + warehouseErrors: Array; +}; + +export type WarehouseUpdateInput = { + /** Address of the warehouse. */ + address?: InputMaybe; + /** + * Click and collect options: local, all or disabled. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + clickAndCollectOption?: InputMaybe; + /** The email address of the warehouse. */ + email?: InputMaybe; + /** + * Visibility of warehouse stocks. + * + * Added in Saleor 3.1. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + isPrivate?: InputMaybe; + /** Warehouse name. */ + name?: InputMaybe; + /** Warehouse slug. */ + slug?: InputMaybe; +}; + +export type WarehouseUpdated = Event & { + __typename?: "WarehouseUpdated"; + /** Time of the event. */ + issuedAt?: Maybe; + /** The user or application that triggered the event. */ + issuingPrincipal?: Maybe; + /** The application receiving the webhook. */ + recipient?: Maybe; + /** Saleor version that triggered the event. */ + version?: Maybe; + /** + * The warehouse the event relates to. + * + * Added in Saleor 3.4. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + warehouse?: Maybe; +}; + +/** Webhook. */ +export type Webhook = Node & { + __typename?: "Webhook"; + app: App; + /** List of asynchronous webhook events. */ + asyncEvents: Array; + /** Event deliveries. */ + eventDeliveries?: Maybe; + /** + * List of webhook events. + * @deprecated This field will be removed in Saleor 4.0. Use `asyncEvents` or `syncEvents` instead. + */ + events: Array; + id: Scalars["ID"]; + /** Informs if webhook is activated. */ + isActive: Scalars["Boolean"]; + name: Scalars["String"]; + /** Used to create a hash signature with each payload. */ + secretKey?: Maybe; + /** Used to define payloads for specific events. */ + subscriptionQuery?: Maybe; + /** List of synchronous webhook events. */ + syncEvents: Array; + /** Target URL for webhook. */ + targetUrl: Scalars["String"]; +}; + +/** Webhook. */ +export type WebhookEventDeliveriesArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + sortBy?: InputMaybe; +}; + +/** + * Creates a new webhook subscription. + * + * Requires one of the following permissions: MANAGE_APPS, AUTHENTICATED_APP. + */ +export type WebhookCreate = { + __typename?: "WebhookCreate"; + errors: Array; + webhook?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + webhookErrors: Array; +}; + +export type WebhookCreateInput = { + /** ID of the app to which webhook belongs. */ + app?: InputMaybe; + /** The asynchronous events that webhook wants to subscribe. */ + asyncEvents?: InputMaybe>; + /** + * The events that webhook wants to subscribe. + * + * DEPRECATED: this field will be removed in Saleor 4.0. Use `asyncEvents` or `syncEvents` instead. + */ + events?: InputMaybe>; + /** Determine if webhook will be set active or not. */ + isActive?: InputMaybe; + /** The name of the webhook. */ + name?: InputMaybe; + /** + * Subscription query used to define a webhook payload. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + query?: InputMaybe; + /** The secret key used to create a hash signature with each payload. */ + secretKey?: InputMaybe; + /** The synchronous events that webhook wants to subscribe. */ + syncEvents?: InputMaybe>; + /** The url to receive the payload. */ + targetUrl?: InputMaybe; +}; + +/** + * Deletes a webhook subscription. + * + * Requires one of the following permissions: MANAGE_APPS, AUTHENTICATED_APP. + */ +export type WebhookDelete = { + __typename?: "WebhookDelete"; + errors: Array; + webhook?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + webhookErrors: Array; +}; + +export type WebhookError = { + __typename?: "WebhookError"; + /** The error code. */ + code: WebhookErrorCode; + /** Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. */ + field?: Maybe; + /** The error message. */ + message?: Maybe; +}; + +/** An enumeration. */ +export enum WebhookErrorCode { + GraphqlError = "GRAPHQL_ERROR", + Invalid = "INVALID", + NotFound = "NOT_FOUND", + Required = "REQUIRED", + Unique = "UNIQUE", +} + +/** Webhook event. */ +export type WebhookEvent = { + __typename?: "WebhookEvent"; + /** Internal name of the event type. */ + eventType: WebhookEventTypeEnum; + /** Display name of the event. */ + name: Scalars["String"]; +}; + +/** Asynchronous webhook event. */ +export type WebhookEventAsync = { + __typename?: "WebhookEventAsync"; + /** Internal name of the event type. */ + eventType: WebhookEventTypeAsyncEnum; + /** Display name of the event. */ + name: Scalars["String"]; +}; + +/** Synchronous webhook event. */ +export type WebhookEventSync = { + __typename?: "WebhookEventSync"; + /** Internal name of the event type. */ + eventType: WebhookEventTypeSyncEnum; + /** Display name of the event. */ + name: Scalars["String"]; +}; + +/** Enum determining type of webhook. */ +export enum WebhookEventTypeAsyncEnum { + /** All the events. */ + AnyEvents = "ANY_EVENTS", + /** An app deleted. */ + AppDeleted = "APP_DELETED", + /** A new app installed. */ + AppInstalled = "APP_INSTALLED", + /** An app status is changed. */ + AppStatusChanged = "APP_STATUS_CHANGED", + /** An app updated. */ + AppUpdated = "APP_UPDATED", + /** A new category created. */ + CategoryCreated = "CATEGORY_CREATED", + /** A category is deleted. */ + CategoryDeleted = "CATEGORY_DELETED", + /** A category is updated. */ + CategoryUpdated = "CATEGORY_UPDATED", + /** A new channel created. */ + ChannelCreated = "CHANNEL_CREATED", + /** A channel is deleted. */ + ChannelDeleted = "CHANNEL_DELETED", + /** A channel status is changed. */ + ChannelStatusChanged = "CHANNEL_STATUS_CHANGED", + /** A channel is updated. */ + ChannelUpdated = "CHANNEL_UPDATED", + /** A new checkout is created. */ + CheckoutCreated = "CHECKOUT_CREATED", + /** A checkout is updated. It also triggers all updates related to the checkout. */ + CheckoutUpdated = "CHECKOUT_UPDATED", + /** A new collection is created. */ + CollectionCreated = "COLLECTION_CREATED", + /** A collection is deleted. */ + CollectionDeleted = "COLLECTION_DELETED", + /** A collection is updated. */ + CollectionUpdated = "COLLECTION_UPDATED", + /** A new customer account is created. */ + CustomerCreated = "CUSTOMER_CREATED", + /** A customer account is updated. */ + CustomerUpdated = "CUSTOMER_UPDATED", + DraftOrderCreated = "DRAFT_ORDER_CREATED", + DraftOrderDeleted = "DRAFT_ORDER_DELETED", + DraftOrderUpdated = "DRAFT_ORDER_UPDATED", + /** A fulfillment is cancelled. */ + FulfillmentCanceled = "FULFILLMENT_CANCELED", + /** A new fulfillment is created. */ + FulfillmentCreated = "FULFILLMENT_CREATED", + /** A new gift card created. */ + GiftCardCreated = "GIFT_CARD_CREATED", + /** A gift card is deleted. */ + GiftCardDeleted = "GIFT_CARD_DELETED", + /** A gift card status is changed. */ + GiftCardStatusChanged = "GIFT_CARD_STATUS_CHANGED", + /** A gift card is updated. */ + GiftCardUpdated = "GIFT_CARD_UPDATED", + /** An invoice is deleted. */ + InvoiceDeleted = "INVOICE_DELETED", + /** An invoice for order requested. */ + InvoiceRequested = "INVOICE_REQUESTED", + /** Invoice has been sent. */ + InvoiceSent = "INVOICE_SENT", + /** A new menu created. */ + MenuCreated = "MENU_CREATED", + /** A menu is deleted. */ + MenuDeleted = "MENU_DELETED", + /** A new menu item created. */ + MenuItemCreated = "MENU_ITEM_CREATED", + /** A menu item is deleted. */ + MenuItemDeleted = "MENU_ITEM_DELETED", + /** A menu item is updated. */ + MenuItemUpdated = "MENU_ITEM_UPDATED", + /** A menu is updated. */ + MenuUpdated = "MENU_UPDATED", + /** User notification triggered. */ + NotifyUser = "NOTIFY_USER", + /** An observability event is created. */ + Observability = "OBSERVABILITY", + /** An order is cancelled. */ + OrderCancelled = "ORDER_CANCELLED", + /** An order is confirmed (status change unconfirmed -> unfulfilled) by a staff user using the OrderConfirm mutation. It also triggers when the user completes the checkout and the shop setting `automatically_confirm_all_new_orders` is enabled. */ + OrderConfirmed = "ORDER_CONFIRMED", + /** A new order is placed. */ + OrderCreated = "ORDER_CREATED", + /** An order is fulfilled. */ + OrderFulfilled = "ORDER_FULFILLED", + /** Payment is made and an order is fully paid. */ + OrderFullyPaid = "ORDER_FULLY_PAID", + /** An order is updated; triggered for all changes related to an order; covers all other order webhooks, except for ORDER_CREATED. */ + OrderUpdated = "ORDER_UPDATED", + /** A new page is created. */ + PageCreated = "PAGE_CREATED", + /** A page is deleted. */ + PageDeleted = "PAGE_DELETED", + /** A page is updated. */ + PageUpdated = "PAGE_UPDATED", + /** A new product is created. */ + ProductCreated = "PRODUCT_CREATED", + /** A product is deleted. */ + ProductDeleted = "PRODUCT_DELETED", + /** A product is updated. */ + ProductUpdated = "PRODUCT_UPDATED", + ProductVariantBackInStock = "PRODUCT_VARIANT_BACK_IN_STOCK", + /** A new product variant is created. */ + ProductVariantCreated = "PRODUCT_VARIANT_CREATED", + /** A product variant is deleted. */ + ProductVariantDeleted = "PRODUCT_VARIANT_DELETED", + ProductVariantOutOfStock = "PRODUCT_VARIANT_OUT_OF_STOCK", + /** A product variant is updated. */ + ProductVariantUpdated = "PRODUCT_VARIANT_UPDATED", + SaleCreated = "SALE_CREATED", + SaleDeleted = "SALE_DELETED", + SaleUpdated = "SALE_UPDATED", + /** A new shipping price is created. */ + ShippingPriceCreated = "SHIPPING_PRICE_CREATED", + /** A shipping price is deleted. */ + ShippingPriceDeleted = "SHIPPING_PRICE_DELETED", + /** A shipping price is updated. */ + ShippingPriceUpdated = "SHIPPING_PRICE_UPDATED", + /** A new shipping zone is created. */ + ShippingZoneCreated = "SHIPPING_ZONE_CREATED", + /** A shipping zone is deleted. */ + ShippingZoneDeleted = "SHIPPING_ZONE_DELETED", + /** A shipping zone is updated. */ + ShippingZoneUpdated = "SHIPPING_ZONE_UPDATED", + TransactionActionRequest = "TRANSACTION_ACTION_REQUEST", + TranslationCreated = "TRANSLATION_CREATED", + TranslationUpdated = "TRANSLATION_UPDATED", + /** A new voucher created. */ + VoucherCreated = "VOUCHER_CREATED", + /** A voucher is deleted. */ + VoucherDeleted = "VOUCHER_DELETED", + /** A voucher is updated. */ + VoucherUpdated = "VOUCHER_UPDATED", + /** A new warehouse created. */ + WarehouseCreated = "WAREHOUSE_CREATED", + /** A warehouse is deleted. */ + WarehouseDeleted = "WAREHOUSE_DELETED", + /** A warehouse is updated. */ + WarehouseUpdated = "WAREHOUSE_UPDATED", +} + +/** Enum determining type of webhook. */ +export enum WebhookEventTypeEnum { + /** All the events. */ + AnyEvents = "ANY_EVENTS", + /** An app deleted. */ + AppDeleted = "APP_DELETED", + /** A new app installed. */ + AppInstalled = "APP_INSTALLED", + /** An app status is changed. */ + AppStatusChanged = "APP_STATUS_CHANGED", + /** An app updated. */ + AppUpdated = "APP_UPDATED", + /** A new category created. */ + CategoryCreated = "CATEGORY_CREATED", + /** A category is deleted. */ + CategoryDeleted = "CATEGORY_DELETED", + /** A category is updated. */ + CategoryUpdated = "CATEGORY_UPDATED", + /** A new channel created. */ + ChannelCreated = "CHANNEL_CREATED", + /** A channel is deleted. */ + ChannelDeleted = "CHANNEL_DELETED", + /** A channel status is changed. */ + ChannelStatusChanged = "CHANNEL_STATUS_CHANGED", + /** A channel is updated. */ + ChannelUpdated = "CHANNEL_UPDATED", + /** A new checkout is created. */ + CheckoutCreated = "CHECKOUT_CREATED", + CheckoutFilterShippingMethods = "CHECKOUT_FILTER_SHIPPING_METHODS", + /** A checkout is updated. It also triggers all updates related to the checkout. */ + CheckoutUpdated = "CHECKOUT_UPDATED", + /** A new collection is created. */ + CollectionCreated = "COLLECTION_CREATED", + /** A collection is deleted. */ + CollectionDeleted = "COLLECTION_DELETED", + /** A collection is updated. */ + CollectionUpdated = "COLLECTION_UPDATED", + /** A new customer account is created. */ + CustomerCreated = "CUSTOMER_CREATED", + /** A customer account is updated. */ + CustomerUpdated = "CUSTOMER_UPDATED", + DraftOrderCreated = "DRAFT_ORDER_CREATED", + DraftOrderDeleted = "DRAFT_ORDER_DELETED", + DraftOrderUpdated = "DRAFT_ORDER_UPDATED", + /** A fulfillment is cancelled. */ + FulfillmentCanceled = "FULFILLMENT_CANCELED", + /** A new fulfillment is created. */ + FulfillmentCreated = "FULFILLMENT_CREATED", + /** A new gift card created. */ + GiftCardCreated = "GIFT_CARD_CREATED", + /** A gift card is deleted. */ + GiftCardDeleted = "GIFT_CARD_DELETED", + /** A gift card status is changed. */ + GiftCardStatusChanged = "GIFT_CARD_STATUS_CHANGED", + /** A gift card is updated. */ + GiftCardUpdated = "GIFT_CARD_UPDATED", + /** An invoice is deleted. */ + InvoiceDeleted = "INVOICE_DELETED", + /** An invoice for order requested. */ + InvoiceRequested = "INVOICE_REQUESTED", + /** Invoice has been sent. */ + InvoiceSent = "INVOICE_SENT", + /** A new menu created. */ + MenuCreated = "MENU_CREATED", + /** A menu is deleted. */ + MenuDeleted = "MENU_DELETED", + /** A new menu item created. */ + MenuItemCreated = "MENU_ITEM_CREATED", + /** A menu item is deleted. */ + MenuItemDeleted = "MENU_ITEM_DELETED", + /** A menu item is updated. */ + MenuItemUpdated = "MENU_ITEM_UPDATED", + /** A menu is updated. */ + MenuUpdated = "MENU_UPDATED", + /** User notification triggered. */ + NotifyUser = "NOTIFY_USER", + /** An observability event is created. */ + Observability = "OBSERVABILITY", + /** An order is cancelled. */ + OrderCancelled = "ORDER_CANCELLED", + /** An order is confirmed (status change unconfirmed -> unfulfilled) by a staff user using the OrderConfirm mutation. It also triggers when the user completes the checkout and the shop setting `automatically_confirm_all_new_orders` is enabled. */ + OrderConfirmed = "ORDER_CONFIRMED", + /** A new order is placed. */ + OrderCreated = "ORDER_CREATED", + OrderFilterShippingMethods = "ORDER_FILTER_SHIPPING_METHODS", + /** An order is fulfilled. */ + OrderFulfilled = "ORDER_FULFILLED", + /** Payment is made and an order is fully paid. */ + OrderFullyPaid = "ORDER_FULLY_PAID", + /** An order is updated; triggered for all changes related to an order; covers all other order webhooks, except for ORDER_CREATED. */ + OrderUpdated = "ORDER_UPDATED", + /** A new page is created. */ + PageCreated = "PAGE_CREATED", + /** A page is deleted. */ + PageDeleted = "PAGE_DELETED", + /** A page is updated. */ + PageUpdated = "PAGE_UPDATED", + PaymentAuthorize = "PAYMENT_AUTHORIZE", + PaymentCapture = "PAYMENT_CAPTURE", + PaymentConfirm = "PAYMENT_CONFIRM", + PaymentListGateways = "PAYMENT_LIST_GATEWAYS", + PaymentProcess = "PAYMENT_PROCESS", + PaymentRefund = "PAYMENT_REFUND", + PaymentVoid = "PAYMENT_VOID", + /** A new product is created. */ + ProductCreated = "PRODUCT_CREATED", + /** A product is deleted. */ + ProductDeleted = "PRODUCT_DELETED", + /** A product is updated. */ + ProductUpdated = "PRODUCT_UPDATED", + ProductVariantBackInStock = "PRODUCT_VARIANT_BACK_IN_STOCK", + /** A new product variant is created. */ + ProductVariantCreated = "PRODUCT_VARIANT_CREATED", + /** A product variant is deleted. */ + ProductVariantDeleted = "PRODUCT_VARIANT_DELETED", + ProductVariantOutOfStock = "PRODUCT_VARIANT_OUT_OF_STOCK", + /** A product variant is updated. */ + ProductVariantUpdated = "PRODUCT_VARIANT_UPDATED", + SaleCreated = "SALE_CREATED", + SaleDeleted = "SALE_DELETED", + SaleUpdated = "SALE_UPDATED", + ShippingListMethodsForCheckout = "SHIPPING_LIST_METHODS_FOR_CHECKOUT", + /** A new shipping price is created. */ + ShippingPriceCreated = "SHIPPING_PRICE_CREATED", + /** A shipping price is deleted. */ + ShippingPriceDeleted = "SHIPPING_PRICE_DELETED", + /** A shipping price is updated. */ + ShippingPriceUpdated = "SHIPPING_PRICE_UPDATED", + /** A new shipping zone is created. */ + ShippingZoneCreated = "SHIPPING_ZONE_CREATED", + /** A shipping zone is deleted. */ + ShippingZoneDeleted = "SHIPPING_ZONE_DELETED", + /** A shipping zone is updated. */ + ShippingZoneUpdated = "SHIPPING_ZONE_UPDATED", + TransactionActionRequest = "TRANSACTION_ACTION_REQUEST", + TranslationCreated = "TRANSLATION_CREATED", + TranslationUpdated = "TRANSLATION_UPDATED", + /** A new voucher created. */ + VoucherCreated = "VOUCHER_CREATED", + /** A voucher is deleted. */ + VoucherDeleted = "VOUCHER_DELETED", + /** A voucher is updated. */ + VoucherUpdated = "VOUCHER_UPDATED", + /** A new warehouse created. */ + WarehouseCreated = "WAREHOUSE_CREATED", + /** A warehouse is deleted. */ + WarehouseDeleted = "WAREHOUSE_DELETED", + /** A warehouse is updated. */ + WarehouseUpdated = "WAREHOUSE_UPDATED", +} + +/** Enum determining type of webhook. */ +export enum WebhookEventTypeSyncEnum { + CheckoutFilterShippingMethods = "CHECKOUT_FILTER_SHIPPING_METHODS", + OrderFilterShippingMethods = "ORDER_FILTER_SHIPPING_METHODS", + PaymentAuthorize = "PAYMENT_AUTHORIZE", + PaymentCapture = "PAYMENT_CAPTURE", + PaymentConfirm = "PAYMENT_CONFIRM", + PaymentListGateways = "PAYMENT_LIST_GATEWAYS", + PaymentProcess = "PAYMENT_PROCESS", + PaymentRefund = "PAYMENT_REFUND", + PaymentVoid = "PAYMENT_VOID", + ShippingListMethodsForCheckout = "SHIPPING_LIST_METHODS_FOR_CHECKOUT", +} + +/** An enumeration. */ +export enum WebhookSampleEventTypeEnum { + AppDeleted = "APP_DELETED", + AppInstalled = "APP_INSTALLED", + AppStatusChanged = "APP_STATUS_CHANGED", + AppUpdated = "APP_UPDATED", + CategoryCreated = "CATEGORY_CREATED", + CategoryDeleted = "CATEGORY_DELETED", + CategoryUpdated = "CATEGORY_UPDATED", + ChannelCreated = "CHANNEL_CREATED", + ChannelDeleted = "CHANNEL_DELETED", + ChannelStatusChanged = "CHANNEL_STATUS_CHANGED", + ChannelUpdated = "CHANNEL_UPDATED", + CheckoutCreated = "CHECKOUT_CREATED", + CheckoutUpdated = "CHECKOUT_UPDATED", + CollectionCreated = "COLLECTION_CREATED", + CollectionDeleted = "COLLECTION_DELETED", + CollectionUpdated = "COLLECTION_UPDATED", + CustomerCreated = "CUSTOMER_CREATED", + CustomerUpdated = "CUSTOMER_UPDATED", + DraftOrderCreated = "DRAFT_ORDER_CREATED", + DraftOrderDeleted = "DRAFT_ORDER_DELETED", + DraftOrderUpdated = "DRAFT_ORDER_UPDATED", + FulfillmentCanceled = "FULFILLMENT_CANCELED", + FulfillmentCreated = "FULFILLMENT_CREATED", + GiftCardCreated = "GIFT_CARD_CREATED", + GiftCardDeleted = "GIFT_CARD_DELETED", + GiftCardStatusChanged = "GIFT_CARD_STATUS_CHANGED", + GiftCardUpdated = "GIFT_CARD_UPDATED", + InvoiceDeleted = "INVOICE_DELETED", + InvoiceRequested = "INVOICE_REQUESTED", + InvoiceSent = "INVOICE_SENT", + MenuCreated = "MENU_CREATED", + MenuDeleted = "MENU_DELETED", + MenuItemCreated = "MENU_ITEM_CREATED", + MenuItemDeleted = "MENU_ITEM_DELETED", + MenuItemUpdated = "MENU_ITEM_UPDATED", + MenuUpdated = "MENU_UPDATED", + NotifyUser = "NOTIFY_USER", + Observability = "OBSERVABILITY", + OrderCancelled = "ORDER_CANCELLED", + OrderConfirmed = "ORDER_CONFIRMED", + OrderCreated = "ORDER_CREATED", + OrderFulfilled = "ORDER_FULFILLED", + OrderFullyPaid = "ORDER_FULLY_PAID", + OrderUpdated = "ORDER_UPDATED", + PageCreated = "PAGE_CREATED", + PageDeleted = "PAGE_DELETED", + PageUpdated = "PAGE_UPDATED", + ProductCreated = "PRODUCT_CREATED", + ProductDeleted = "PRODUCT_DELETED", + ProductUpdated = "PRODUCT_UPDATED", + ProductVariantBackInStock = "PRODUCT_VARIANT_BACK_IN_STOCK", + ProductVariantCreated = "PRODUCT_VARIANT_CREATED", + ProductVariantDeleted = "PRODUCT_VARIANT_DELETED", + ProductVariantOutOfStock = "PRODUCT_VARIANT_OUT_OF_STOCK", + ProductVariantUpdated = "PRODUCT_VARIANT_UPDATED", + SaleCreated = "SALE_CREATED", + SaleDeleted = "SALE_DELETED", + SaleUpdated = "SALE_UPDATED", + ShippingPriceCreated = "SHIPPING_PRICE_CREATED", + ShippingPriceDeleted = "SHIPPING_PRICE_DELETED", + ShippingPriceUpdated = "SHIPPING_PRICE_UPDATED", + ShippingZoneCreated = "SHIPPING_ZONE_CREATED", + ShippingZoneDeleted = "SHIPPING_ZONE_DELETED", + ShippingZoneUpdated = "SHIPPING_ZONE_UPDATED", + TransactionActionRequest = "TRANSACTION_ACTION_REQUEST", + TranslationCreated = "TRANSLATION_CREATED", + TranslationUpdated = "TRANSLATION_UPDATED", + VoucherCreated = "VOUCHER_CREATED", + VoucherDeleted = "VOUCHER_DELETED", + VoucherUpdated = "VOUCHER_UPDATED", + WarehouseCreated = "WAREHOUSE_CREATED", + WarehouseDeleted = "WAREHOUSE_DELETED", + WarehouseUpdated = "WAREHOUSE_UPDATED", +} + +/** + * Updates a webhook subscription. + * + * Requires one of the following permissions: MANAGE_APPS. + */ +export type WebhookUpdate = { + __typename?: "WebhookUpdate"; + errors: Array; + webhook?: Maybe; + /** @deprecated This field will be removed in Saleor 4.0. Use `errors` field instead. */ + webhookErrors: Array; +}; + +export type WebhookUpdateInput = { + /** ID of the app to which webhook belongs. */ + app?: InputMaybe; + /** The asynchronous events that webhook wants to subscribe. */ + asyncEvents?: InputMaybe>; + /** + * The events that webhook wants to subscribe. + * + * DEPRECATED: this field will be removed in Saleor 4.0. Use `asyncEvents` or `syncEvents` instead. + */ + events?: InputMaybe>; + /** Determine if webhook will be set active or not. */ + isActive?: InputMaybe; + /** The new name of the webhook. */ + name?: InputMaybe; + /** + * Subscription query used to define a webhook payload. + * + * Added in Saleor 3.2. + * + * Note: this API is currently in Feature Preview and can be subject to changes at later point. + */ + query?: InputMaybe; + /** Use to create a hash signature with each payload. */ + secretKey?: InputMaybe; + /** The synchronous events that webhook wants to subscribe. */ + syncEvents?: InputMaybe>; + /** The url to receive the payload. */ + targetUrl?: InputMaybe; +}; + +/** Represents weight value in a specific weight unit. */ +export type Weight = { + __typename?: "Weight"; + /** Weight unit. */ + unit: WeightUnitsEnum; + /** Weight value. */ + value: Scalars["Float"]; +}; + +/** An enumeration. */ +export enum WeightUnitsEnum { + G = "G", + Kg = "KG", + Lb = "LB", + Oz = "OZ", + Tonne = "TONNE", +} + +/** _Entity union as defined by Federation spec. */ +export type _Entity = + | Address + | App + | Category + | Collection + | Group + | PageType + | Product + | ProductMedia + | ProductType + | ProductVariant + | User; + +/** _Service manifest as defined by Federation spec. */ +export type _Service = { + __typename?: "_Service"; + sdl?: Maybe; +}; + +export type UpdateAppMetadataMutationVariables = Exact<{ + id: Scalars["ID"]; + input: Array | MetadataInput; +}>; + +export type UpdateAppMetadataMutation = { + __typename?: "Mutation"; + updatePrivateMetadata?: { + __typename?: "UpdatePrivateMetadata"; + item?: + | { + __typename?: "App"; + privateMetadata: Array<{ __typename?: "MetadataItem"; key: string; value: string }>; + } + | { + __typename?: "Attribute"; + privateMetadata: Array<{ __typename?: "MetadataItem"; key: string; value: string }>; + } + | { + __typename?: "Category"; + privateMetadata: Array<{ __typename?: "MetadataItem"; key: string; value: string }>; + } + | { + __typename?: "Checkout"; + privateMetadata: Array<{ __typename?: "MetadataItem"; key: string; value: string }>; + } + | { + __typename?: "Collection"; + privateMetadata: Array<{ __typename?: "MetadataItem"; key: string; value: string }>; + } + | { + __typename?: "DigitalContent"; + privateMetadata: Array<{ __typename?: "MetadataItem"; key: string; value: string }>; + } + | { + __typename?: "Fulfillment"; + privateMetadata: Array<{ __typename?: "MetadataItem"; key: string; value: string }>; + } + | { + __typename?: "GiftCard"; + privateMetadata: Array<{ __typename?: "MetadataItem"; key: string; value: string }>; + } + | { + __typename?: "Invoice"; + privateMetadata: Array<{ __typename?: "MetadataItem"; key: string; value: string }>; + } + | { + __typename?: "Menu"; + privateMetadata: Array<{ __typename?: "MetadataItem"; key: string; value: string }>; + } + | { + __typename?: "MenuItem"; + privateMetadata: Array<{ __typename?: "MetadataItem"; key: string; value: string }>; + } + | { + __typename?: "Order"; + privateMetadata: Array<{ __typename?: "MetadataItem"; key: string; value: string }>; + } + | { + __typename?: "Page"; + privateMetadata: Array<{ __typename?: "MetadataItem"; key: string; value: string }>; + } + | { + __typename?: "PageType"; + privateMetadata: Array<{ __typename?: "MetadataItem"; key: string; value: string }>; + } + | { + __typename?: "Payment"; + privateMetadata: Array<{ __typename?: "MetadataItem"; key: string; value: string }>; + } + | { + __typename?: "Product"; + privateMetadata: Array<{ __typename?: "MetadataItem"; key: string; value: string }>; + } + | { + __typename?: "ProductType"; + privateMetadata: Array<{ __typename?: "MetadataItem"; key: string; value: string }>; + } + | { + __typename?: "ProductVariant"; + privateMetadata: Array<{ __typename?: "MetadataItem"; key: string; value: string }>; + } + | { + __typename?: "Sale"; + privateMetadata: Array<{ __typename?: "MetadataItem"; key: string; value: string }>; + } + | { + __typename?: "ShippingMethod"; + privateMetadata: Array<{ __typename?: "MetadataItem"; key: string; value: string }>; + } + | { + __typename?: "ShippingMethodType"; + privateMetadata: Array<{ __typename?: "MetadataItem"; key: string; value: string }>; + } + | { + __typename?: "ShippingZone"; + privateMetadata: Array<{ __typename?: "MetadataItem"; key: string; value: string }>; + } + | { + __typename?: "TransactionItem"; + privateMetadata: Array<{ __typename?: "MetadataItem"; key: string; value: string }>; + } + | { + __typename?: "User"; + privateMetadata: Array<{ __typename?: "MetadataItem"; key: string; value: string }>; + } + | { + __typename?: "Voucher"; + privateMetadata: Array<{ __typename?: "MetadataItem"; key: string; value: string }>; + } + | { + __typename?: "Warehouse"; + privateMetadata: Array<{ __typename?: "MetadataItem"; key: string; value: string }>; + } + | null; + } | null; +}; + +export type FetchAppDetailsQueryVariables = Exact<{ [key: string]: never }>; + +export type FetchAppDetailsQuery = { + __typename?: "Query"; + app?: { + __typename?: "App"; + id: string; + privateMetadata: Array<{ __typename?: "MetadataItem"; key: string; value: string }>; + } | null; +}; + +export type OrderCreatedWebhookPayloadFragment = { + __typename?: "OrderCreated"; + order?: { + __typename?: "Order"; + id: string; + number: string; + user?: { __typename?: "User"; email: string; firstName: string; lastName: string } | null; + shippingAddress?: { + __typename?: "Address"; + streetAddress1: string; + city: string; + postalCode: string; + country: { __typename?: "CountryDisplay"; country: string }; + } | null; + subtotal: { + __typename?: "TaxedMoney"; + gross: { __typename?: "Money"; amount: number; currency: string }; + }; + shippingPrice: { + __typename?: "TaxedMoney"; + gross: { __typename?: "Money"; amount: number; currency: string }; + }; + total: { + __typename?: "TaxedMoney"; + gross: { __typename?: "Money"; amount: number; currency: string }; + }; + } | null; +}; + +export type OrderCreatedSubscriptionVariables = Exact<{ [key: string]: never }>; + +export type OrderCreatedSubscription = { + __typename?: "Subscription"; + event?: + | { __typename?: "AppDeleted" } + | { __typename?: "AppInstalled" } + | { __typename?: "AppStatusChanged" } + | { __typename?: "AppUpdated" } + | { __typename?: "CategoryCreated" } + | { __typename?: "CategoryDeleted" } + | { __typename?: "CategoryUpdated" } + | { __typename?: "ChannelCreated" } + | { __typename?: "ChannelDeleted" } + | { __typename?: "ChannelStatusChanged" } + | { __typename?: "ChannelUpdated" } + | { __typename?: "CheckoutCreated" } + | { __typename?: "CheckoutUpdated" } + | { __typename?: "CollectionCreated" } + | { __typename?: "CollectionDeleted" } + | { __typename?: "CollectionUpdated" } + | { __typename?: "CustomerCreated" } + | { __typename?: "CustomerUpdated" } + | { __typename?: "DraftOrderCreated" } + | { __typename?: "DraftOrderDeleted" } + | { __typename?: "DraftOrderUpdated" } + | { __typename?: "FulfillmentCanceled" } + | { __typename?: "FulfillmentCreated" } + | { __typename?: "GiftCardCreated" } + | { __typename?: "GiftCardDeleted" } + | { __typename?: "GiftCardStatusChanged" } + | { __typename?: "GiftCardUpdated" } + | { __typename?: "InvoiceDeleted" } + | { __typename?: "InvoiceRequested" } + | { __typename?: "InvoiceSent" } + | { __typename?: "MenuCreated" } + | { __typename?: "MenuDeleted" } + | { __typename?: "MenuItemCreated" } + | { __typename?: "MenuItemDeleted" } + | { __typename?: "MenuItemUpdated" } + | { __typename?: "MenuUpdated" } + | { __typename?: "OrderCancelled" } + | { __typename?: "OrderConfirmed" } + | { + __typename?: "OrderCreated"; + order?: { + __typename?: "Order"; + id: string; + number: string; + user?: { __typename?: "User"; email: string; firstName: string; lastName: string } | null; + shippingAddress?: { + __typename?: "Address"; + streetAddress1: string; + city: string; + postalCode: string; + country: { __typename?: "CountryDisplay"; country: string }; + } | null; + subtotal: { + __typename?: "TaxedMoney"; + gross: { __typename?: "Money"; amount: number; currency: string }; + }; + shippingPrice: { + __typename?: "TaxedMoney"; + gross: { __typename?: "Money"; amount: number; currency: string }; + }; + total: { + __typename?: "TaxedMoney"; + gross: { __typename?: "Money"; amount: number; currency: string }; + }; + } | null; + } + | { __typename?: "OrderFulfilled" } + | { __typename?: "OrderFullyPaid" } + | { __typename?: "OrderUpdated" } + | { __typename?: "PageCreated" } + | { __typename?: "PageDeleted" } + | { __typename?: "PageUpdated" } + | { __typename?: "ProductCreated" } + | { __typename?: "ProductDeleted" } + | { __typename?: "ProductUpdated" } + | { __typename?: "ProductVariantBackInStock" } + | { __typename?: "ProductVariantCreated" } + | { __typename?: "ProductVariantDeleted" } + | { __typename?: "ProductVariantOutOfStock" } + | { __typename?: "ProductVariantUpdated" } + | { __typename?: "SaleCreated" } + | { __typename?: "SaleDeleted" } + | { __typename?: "SaleUpdated" } + | { __typename?: "ShippingPriceCreated" } + | { __typename?: "ShippingPriceDeleted" } + | { __typename?: "ShippingPriceUpdated" } + | { __typename?: "ShippingZoneCreated" } + | { __typename?: "ShippingZoneDeleted" } + | { __typename?: "ShippingZoneUpdated" } + | { __typename?: "TransactionActionRequest" } + | { __typename?: "TranslationCreated" } + | { __typename?: "TranslationUpdated" } + | { __typename?: "VoucherCreated" } + | { __typename?: "VoucherDeleted" } + | { __typename?: "VoucherUpdated" } + | { __typename?: "WarehouseCreated" } + | { __typename?: "WarehouseDeleted" } + | { __typename?: "WarehouseUpdated" } + | null; +}; + +import { IntrospectionQuery } from "graphql"; +export default { + __schema: { + queryType: { + name: "Query", + }, + mutationType: { + name: "Mutation", + }, + subscriptionType: { + name: "Subscription", + }, + types: [ + { + kind: "OBJECT", + name: "AccountAddressCreate", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "address", + type: { + kind: "OBJECT", + name: "Address", + ofType: null, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AccountAddressDelete", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "address", + type: { + kind: "OBJECT", + name: "Address", + ofType: null, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AccountAddressUpdate", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "address", + type: { + kind: "OBJECT", + name: "Address", + ofType: null, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AccountDelete", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AccountError", + fields: [ + { + name: "addressType", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AccountRegister", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "requiresConfirmation", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AccountRequestDeletion", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AccountSetDefaultAddress", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AccountUpdate", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "Address", + fields: [ + { + name: "city", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "cityArea", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "companyName", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "country", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CountryDisplay", + ofType: null, + }, + }, + args: [], + }, + { + name: "countryArea", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "firstName", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "isDefaultBillingAddress", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "isDefaultShippingAddress", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "lastName", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "phone", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "postalCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "streetAddress1", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "streetAddress2", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "AddressCreate", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "address", + type: { + kind: "OBJECT", + name: "Address", + ofType: null, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AddressDelete", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "address", + type: { + kind: "OBJECT", + name: "Address", + ofType: null, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AddressSetDefault", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AddressUpdate", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "address", + type: { + kind: "OBJECT", + name: "Address", + ofType: null, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AddressValidationData", + fields: [ + { + name: "addressFormat", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "addressLatinFormat", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "allowedFields", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + args: [], + }, + { + name: "cityAreaChoices", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ChoiceValue", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "cityAreaType", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "cityChoices", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ChoiceValue", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "cityType", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "countryAreaChoices", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ChoiceValue", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "countryAreaType", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "countryCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "countryName", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "postalCodeExamples", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + args: [], + }, + { + name: "postalCodeMatchers", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + args: [], + }, + { + name: "postalCodePrefix", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "postalCodeType", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "requiredFields", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + args: [], + }, + { + name: "upperFields", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "Allocation", + fields: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "quantity", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "warehouse", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Warehouse", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "App", + fields: [ + { + name: "aboutApp", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "accessToken", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "appUrl", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "configurationUrl", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "created", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "dataPrivacy", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "dataPrivacyUrl", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "extensions", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppExtension", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "homepageUrl", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "isActive", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "metafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "name", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "permissions", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Permission", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "privateMetadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "privateMetafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "supportUrl", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "tokens", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppToken", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "type", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "webhooks", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Webhook", + ofType: null, + }, + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + { + kind: "INTERFACE", + name: "ObjectWithMetadata", + }, + ], + }, + { + kind: "OBJECT", + name: "AppActivate", + fields: [ + { + name: "app", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "appErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AppCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AppCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AppCreate", + fields: [ + { + name: "app", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "appErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "authToken", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AppDeactivate", + fields: [ + { + name: "app", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "appErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AppDelete", + fields: [ + { + name: "app", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "appErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AppDeleteFailedInstallation", + fields: [ + { + name: "appErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "appInstallation", + type: { + kind: "OBJECT", + name: "AppInstallation", + ofType: null, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AppDeleted", + fields: [ + { + name: "app", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "AppError", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "permissions", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AppExtension", + fields: [ + { + name: "accessToken", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "app", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "label", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "mount", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "permissions", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Permission", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "target", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "url", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "AppExtensionCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppExtensionCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AppExtensionCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppExtension", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AppFetchManifest", + fields: [ + { + name: "appErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "manifest", + type: { + kind: "OBJECT", + name: "Manifest", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AppInstall", + fields: [ + { + name: "appErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "appInstallation", + type: { + kind: "OBJECT", + name: "AppInstallation", + ofType: null, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AppInstallation", + fields: [ + { + name: "appName", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "createdAt", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "manifestUrl", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "status", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "updatedAt", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Job", + }, + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "AppInstalled", + fields: [ + { + name: "app", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "AppManifestExtension", + fields: [ + { + name: "label", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "mount", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "permissions", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Permission", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "target", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "url", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AppRetryInstall", + fields: [ + { + name: "appErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "appInstallation", + type: { + kind: "OBJECT", + name: "AppInstallation", + ofType: null, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AppStatusChanged", + fields: [ + { + name: "app", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "AppToken", + fields: [ + { + name: "authToken", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "AppTokenCreate", + fields: [ + { + name: "appErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "appToken", + type: { + kind: "OBJECT", + name: "AppToken", + ofType: null, + }, + args: [], + }, + { + name: "authToken", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AppTokenDelete", + fields: [ + { + name: "appErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "appToken", + type: { + kind: "OBJECT", + name: "AppToken", + ofType: null, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AppTokenVerify", + fields: [ + { + name: "appErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "valid", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AppUpdate", + fields: [ + { + name: "app", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "appErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AppUpdated", + fields: [ + { + name: "app", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "AssignNavigation", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MenuError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "menu", + type: { + kind: "OBJECT", + name: "Menu", + ofType: null, + }, + args: [], + }, + { + name: "menuErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MenuError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AssignedVariantAttribute", + fields: [ + { + name: "attribute", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Attribute", + ofType: null, + }, + }, + args: [], + }, + { + name: "variantSelection", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "Attribute", + fields: [ + { + name: "availableInGrid", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "choices", + type: { + kind: "OBJECT", + name: "AttributeValueCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sortBy", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "entityType", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "filterableInDashboard", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "filterableInStorefront", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "inputType", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "metafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "name", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "privateMetadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "privateMetafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "productTypes", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductTypeCountableConnection", + ofType: null, + }, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "productVariantTypes", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductTypeCountableConnection", + ofType: null, + }, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "slug", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "storefrontSearchPosition", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "translation", + type: { + kind: "OBJECT", + name: "AttributeTranslation", + ofType: null, + }, + args: [ + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "type", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "unit", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "valueRequired", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "visibleInStorefront", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "withChoices", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + { + kind: "INTERFACE", + name: "ObjectWithMetadata", + }, + ], + }, + { + kind: "OBJECT", + name: "AttributeBulkDelete", + fields: [ + { + name: "attributeErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AttributeError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AttributeError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AttributeCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AttributeCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AttributeCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Attribute", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AttributeCreate", + fields: [ + { + name: "attribute", + type: { + kind: "OBJECT", + name: "Attribute", + ofType: null, + }, + args: [], + }, + { + name: "attributeErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AttributeError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AttributeError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AttributeDelete", + fields: [ + { + name: "attribute", + type: { + kind: "OBJECT", + name: "Attribute", + ofType: null, + }, + args: [], + }, + { + name: "attributeErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AttributeError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AttributeError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AttributeError", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AttributeReorderValues", + fields: [ + { + name: "attribute", + type: { + kind: "OBJECT", + name: "Attribute", + ofType: null, + }, + args: [], + }, + { + name: "attributeErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AttributeError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AttributeError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AttributeTranslatableContent", + fields: [ + { + name: "attribute", + type: { + kind: "OBJECT", + name: "Attribute", + ofType: null, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "translation", + type: { + kind: "OBJECT", + name: "AttributeTranslation", + ofType: null, + }, + args: [ + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "AttributeTranslate", + fields: [ + { + name: "attribute", + type: { + kind: "OBJECT", + name: "Attribute", + ofType: null, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TranslationError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "translationErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TranslationError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AttributeTranslation", + fields: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "language", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "LanguageDisplay", + ofType: null, + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "AttributeUpdate", + fields: [ + { + name: "attribute", + type: { + kind: "OBJECT", + name: "Attribute", + ofType: null, + }, + args: [], + }, + { + name: "attributeErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AttributeError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AttributeError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AttributeValue", + fields: [ + { + name: "boolean", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "date", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "dateTime", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "file", + type: { + kind: "OBJECT", + name: "File", + ofType: null, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "inputType", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "name", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "reference", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "richText", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "slug", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "translation", + type: { + kind: "OBJECT", + name: "AttributeValueTranslation", + ofType: null, + }, + args: [ + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "value", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "AttributeValueBulkDelete", + fields: [ + { + name: "attributeErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AttributeError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AttributeError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AttributeValueCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AttributeValueCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AttributeValueCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AttributeValue", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AttributeValueCreate", + fields: [ + { + name: "attribute", + type: { + kind: "OBJECT", + name: "Attribute", + ofType: null, + }, + args: [], + }, + { + name: "attributeErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AttributeError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "attributeValue", + type: { + kind: "OBJECT", + name: "AttributeValue", + ofType: null, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AttributeError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AttributeValueDelete", + fields: [ + { + name: "attribute", + type: { + kind: "OBJECT", + name: "Attribute", + ofType: null, + }, + args: [], + }, + { + name: "attributeErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AttributeError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "attributeValue", + type: { + kind: "OBJECT", + name: "AttributeValue", + ofType: null, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AttributeError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AttributeValueTranslatableContent", + fields: [ + { + name: "attributeValue", + type: { + kind: "OBJECT", + name: "AttributeValue", + ofType: null, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "richText", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "translation", + type: { + kind: "OBJECT", + name: "AttributeValueTranslation", + ofType: null, + }, + args: [ + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "AttributeValueTranslate", + fields: [ + { + name: "attributeValue", + type: { + kind: "OBJECT", + name: "AttributeValue", + ofType: null, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TranslationError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "translationErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TranslationError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "AttributeValueTranslation", + fields: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "language", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "LanguageDisplay", + ofType: null, + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "richText", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "AttributeValueUpdate", + fields: [ + { + name: "attribute", + type: { + kind: "OBJECT", + name: "Attribute", + ofType: null, + }, + args: [], + }, + { + name: "attributeErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AttributeError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "attributeValue", + type: { + kind: "OBJECT", + name: "AttributeValue", + ofType: null, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AttributeError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "BulkProductError", + fields: [ + { + name: "attributes", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + { + name: "channels", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "index", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "values", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + { + name: "warehouses", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "BulkStockError", + fields: [ + { + name: "attributes", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "index", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "values", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "Category", + fields: [ + { + name: "ancestors", + type: { + kind: "OBJECT", + name: "CategoryCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "backgroundImage", + type: { + kind: "OBJECT", + name: "Image", + ofType: null, + }, + args: [ + { + name: "size", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "children", + type: { + kind: "OBJECT", + name: "CategoryCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "description", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "descriptionJson", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "level", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "metafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "parent", + type: { + kind: "OBJECT", + name: "Category", + ofType: null, + }, + args: [], + }, + { + name: "privateMetadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "privateMetafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "products", + type: { + kind: "OBJECT", + name: "ProductCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "seoDescription", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "seoTitle", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "slug", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "translation", + type: { + kind: "OBJECT", + name: "CategoryTranslation", + ofType: null, + }, + args: [ + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + { + kind: "INTERFACE", + name: "ObjectWithMetadata", + }, + ], + }, + { + kind: "OBJECT", + name: "CategoryBulkDelete", + fields: [ + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CategoryCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CategoryCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CategoryCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Category", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CategoryCreate", + fields: [ + { + name: "category", + type: { + kind: "OBJECT", + name: "Category", + ofType: null, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CategoryCreated", + fields: [ + { + name: "category", + type: { + kind: "OBJECT", + name: "Category", + ofType: null, + }, + args: [], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "CategoryDelete", + fields: [ + { + name: "category", + type: { + kind: "OBJECT", + name: "Category", + ofType: null, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CategoryDeleted", + fields: [ + { + name: "category", + type: { + kind: "OBJECT", + name: "Category", + ofType: null, + }, + args: [], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "CategoryTranslatableContent", + fields: [ + { + name: "category", + type: { + kind: "OBJECT", + name: "Category", + ofType: null, + }, + args: [], + }, + { + name: "description", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "descriptionJson", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "seoDescription", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "seoTitle", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "translation", + type: { + kind: "OBJECT", + name: "CategoryTranslation", + ofType: null, + }, + args: [ + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "CategoryTranslate", + fields: [ + { + name: "category", + type: { + kind: "OBJECT", + name: "Category", + ofType: null, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TranslationError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "translationErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TranslationError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CategoryTranslation", + fields: [ + { + name: "description", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "descriptionJson", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "language", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "LanguageDisplay", + ofType: null, + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "seoDescription", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "seoTitle", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "CategoryUpdate", + fields: [ + { + name: "category", + type: { + kind: "OBJECT", + name: "Category", + ofType: null, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CategoryUpdated", + fields: [ + { + name: "category", + type: { + kind: "OBJECT", + name: "Category", + ofType: null, + }, + args: [], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "Channel", + fields: [ + { + name: "currencyCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "defaultCountry", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CountryDisplay", + ofType: null, + }, + }, + args: [], + }, + { + name: "hasOrders", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "isActive", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "slug", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "ChannelActivate", + fields: [ + { + name: "channel", + type: { + kind: "OBJECT", + name: "Channel", + ofType: null, + }, + args: [], + }, + { + name: "channelErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ChannelError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ChannelError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ChannelCreate", + fields: [ + { + name: "channel", + type: { + kind: "OBJECT", + name: "Channel", + ofType: null, + }, + args: [], + }, + { + name: "channelErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ChannelError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ChannelError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ChannelCreated", + fields: [ + { + name: "channel", + type: { + kind: "OBJECT", + name: "Channel", + ofType: null, + }, + args: [], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "ChannelDeactivate", + fields: [ + { + name: "channel", + type: { + kind: "OBJECT", + name: "Channel", + ofType: null, + }, + args: [], + }, + { + name: "channelErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ChannelError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ChannelError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ChannelDelete", + fields: [ + { + name: "channel", + type: { + kind: "OBJECT", + name: "Channel", + ofType: null, + }, + args: [], + }, + { + name: "channelErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ChannelError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ChannelError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ChannelDeleted", + fields: [ + { + name: "channel", + type: { + kind: "OBJECT", + name: "Channel", + ofType: null, + }, + args: [], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "ChannelError", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "shippingZones", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ChannelStatusChanged", + fields: [ + { + name: "channel", + type: { + kind: "OBJECT", + name: "Channel", + ofType: null, + }, + args: [], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "ChannelUpdate", + fields: [ + { + name: "channel", + type: { + kind: "OBJECT", + name: "Channel", + ofType: null, + }, + args: [], + }, + { + name: "channelErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ChannelError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ChannelError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ChannelUpdated", + fields: [ + { + name: "channel", + type: { + kind: "OBJECT", + name: "Channel", + ofType: null, + }, + args: [], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "Checkout", + fields: [ + { + name: "availableCollectionPoints", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Warehouse", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "availablePaymentGateways", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PaymentGateway", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "availableShippingMethods", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingMethod", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "billingAddress", + type: { + kind: "OBJECT", + name: "Address", + ofType: null, + }, + args: [], + }, + { + name: "channel", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Channel", + ofType: null, + }, + }, + args: [], + }, + { + name: "created", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "deliveryMethod", + type: { + kind: "UNION", + name: "DeliveryMethod", + ofType: null, + }, + args: [], + }, + { + name: "discount", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + { + name: "discountName", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "email", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "giftCards", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GiftCard", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "isShippingRequired", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "lastChange", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "lines", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutLine", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "metafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "note", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "privateMetadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "privateMetafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "quantity", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "shippingAddress", + type: { + kind: "OBJECT", + name: "Address", + ofType: null, + }, + args: [], + }, + { + name: "shippingMethod", + type: { + kind: "OBJECT", + name: "ShippingMethod", + ofType: null, + }, + args: [], + }, + { + name: "shippingMethods", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingMethod", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shippingPrice", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TaxedMoney", + ofType: null, + }, + }, + args: [], + }, + { + name: "stockReservationExpires", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "subtotalPrice", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TaxedMoney", + ofType: null, + }, + }, + args: [], + }, + { + name: "token", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "totalPrice", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TaxedMoney", + ofType: null, + }, + }, + args: [], + }, + { + name: "transactions", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TransactionItem", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "translatedDiscountName", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + { + name: "voucherCode", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + { + kind: "INTERFACE", + name: "ObjectWithMetadata", + }, + ], + }, + { + kind: "OBJECT", + name: "CheckoutAddPromoCode", + fields: [ + { + name: "checkout", + type: { + kind: "OBJECT", + name: "Checkout", + ofType: null, + }, + args: [], + }, + { + name: "checkoutErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CheckoutBillingAddressUpdate", + fields: [ + { + name: "checkout", + type: { + kind: "OBJECT", + name: "Checkout", + ofType: null, + }, + args: [], + }, + { + name: "checkoutErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CheckoutComplete", + fields: [ + { + name: "checkoutErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "confirmationData", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "confirmationNeeded", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CheckoutCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CheckoutCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Checkout", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CheckoutCreate", + fields: [ + { + name: "checkout", + type: { + kind: "OBJECT", + name: "Checkout", + ofType: null, + }, + args: [], + }, + { + name: "checkoutErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "created", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CheckoutCreated", + fields: [ + { + name: "checkout", + type: { + kind: "OBJECT", + name: "Checkout", + ofType: null, + }, + args: [], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "CheckoutCustomerAttach", + fields: [ + { + name: "checkout", + type: { + kind: "OBJECT", + name: "Checkout", + ofType: null, + }, + args: [], + }, + { + name: "checkoutErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CheckoutCustomerDetach", + fields: [ + { + name: "checkout", + type: { + kind: "OBJECT", + name: "Checkout", + ofType: null, + }, + args: [], + }, + { + name: "checkoutErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CheckoutDeliveryMethodUpdate", + fields: [ + { + name: "checkout", + type: { + kind: "OBJECT", + name: "Checkout", + ofType: null, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CheckoutEmailUpdate", + fields: [ + { + name: "checkout", + type: { + kind: "OBJECT", + name: "Checkout", + ofType: null, + }, + args: [], + }, + { + name: "checkoutErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CheckoutError", + fields: [ + { + name: "addressType", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "lines", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "variants", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CheckoutLanguageCodeUpdate", + fields: [ + { + name: "checkout", + type: { + kind: "OBJECT", + name: "Checkout", + ofType: null, + }, + args: [], + }, + { + name: "checkoutErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CheckoutLine", + fields: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "quantity", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "requiresShipping", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "totalPrice", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TaxedMoney", + ofType: null, + }, + }, + args: [], + }, + { + name: "undiscountedTotalPrice", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + }, + args: [], + }, + { + name: "undiscountedUnitPrice", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + }, + args: [], + }, + { + name: "unitPrice", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TaxedMoney", + ofType: null, + }, + }, + args: [], + }, + { + name: "variant", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "CheckoutLineCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutLineCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CheckoutLineCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutLine", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CheckoutLineDelete", + fields: [ + { + name: "checkout", + type: { + kind: "OBJECT", + name: "Checkout", + ofType: null, + }, + args: [], + }, + { + name: "checkoutErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CheckoutLinesAdd", + fields: [ + { + name: "checkout", + type: { + kind: "OBJECT", + name: "Checkout", + ofType: null, + }, + args: [], + }, + { + name: "checkoutErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CheckoutLinesDelete", + fields: [ + { + name: "checkout", + type: { + kind: "OBJECT", + name: "Checkout", + ofType: null, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CheckoutLinesUpdate", + fields: [ + { + name: "checkout", + type: { + kind: "OBJECT", + name: "Checkout", + ofType: null, + }, + args: [], + }, + { + name: "checkoutErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CheckoutPaymentCreate", + fields: [ + { + name: "checkout", + type: { + kind: "OBJECT", + name: "Checkout", + ofType: null, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PaymentError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "payment", + type: { + kind: "OBJECT", + name: "Payment", + ofType: null, + }, + args: [], + }, + { + name: "paymentErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PaymentError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CheckoutRemovePromoCode", + fields: [ + { + name: "checkout", + type: { + kind: "OBJECT", + name: "Checkout", + ofType: null, + }, + args: [], + }, + { + name: "checkoutErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CheckoutShippingAddressUpdate", + fields: [ + { + name: "checkout", + type: { + kind: "OBJECT", + name: "Checkout", + ofType: null, + }, + args: [], + }, + { + name: "checkoutErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CheckoutShippingMethodUpdate", + fields: [ + { + name: "checkout", + type: { + kind: "OBJECT", + name: "Checkout", + ofType: null, + }, + args: [], + }, + { + name: "checkoutErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CheckoutUpdated", + fields: [ + { + name: "checkout", + type: { + kind: "OBJECT", + name: "Checkout", + ofType: null, + }, + args: [], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "ChoiceValue", + fields: [ + { + name: "raw", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "verbose", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "Collection", + fields: [ + { + name: "backgroundImage", + type: { + kind: "OBJECT", + name: "Image", + ofType: null, + }, + args: [ + { + name: "size", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "channelListings", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CollectionChannelListing", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "description", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "descriptionJson", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "metafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "privateMetadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "privateMetafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "products", + type: { + kind: "OBJECT", + name: "ProductCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sortBy", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "seoDescription", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "seoTitle", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "slug", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "translation", + type: { + kind: "OBJECT", + name: "CollectionTranslation", + ofType: null, + }, + args: [ + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + { + kind: "INTERFACE", + name: "ObjectWithMetadata", + }, + ], + }, + { + kind: "OBJECT", + name: "CollectionAddProducts", + fields: [ + { + name: "collection", + type: { + kind: "OBJECT", + name: "Collection", + ofType: null, + }, + args: [], + }, + { + name: "collectionErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CollectionError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CollectionError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CollectionBulkDelete", + fields: [ + { + name: "collectionErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CollectionError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CollectionError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CollectionChannelListing", + fields: [ + { + name: "channel", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Channel", + ofType: null, + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "isPublished", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "publicationDate", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "publishedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "CollectionChannelListingError", + fields: [ + { + name: "attributes", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + { + name: "channels", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "values", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CollectionChannelListingUpdate", + fields: [ + { + name: "collection", + type: { + kind: "OBJECT", + name: "Collection", + ofType: null, + }, + args: [], + }, + { + name: "collectionChannelListingErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CollectionChannelListingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CollectionChannelListingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CollectionCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CollectionCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CollectionCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Collection", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CollectionCreate", + fields: [ + { + name: "collection", + type: { + kind: "OBJECT", + name: "Collection", + ofType: null, + }, + args: [], + }, + { + name: "collectionErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CollectionError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CollectionError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CollectionCreated", + fields: [ + { + name: "collection", + type: { + kind: "OBJECT", + name: "Collection", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "CollectionDelete", + fields: [ + { + name: "collection", + type: { + kind: "OBJECT", + name: "Collection", + ofType: null, + }, + args: [], + }, + { + name: "collectionErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CollectionError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CollectionError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CollectionDeleted", + fields: [ + { + name: "collection", + type: { + kind: "OBJECT", + name: "Collection", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "CollectionError", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "products", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CollectionRemoveProducts", + fields: [ + { + name: "collection", + type: { + kind: "OBJECT", + name: "Collection", + ofType: null, + }, + args: [], + }, + { + name: "collectionErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CollectionError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CollectionError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CollectionReorderProducts", + fields: [ + { + name: "collection", + type: { + kind: "OBJECT", + name: "Collection", + ofType: null, + }, + args: [], + }, + { + name: "collectionErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CollectionError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CollectionError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CollectionTranslatableContent", + fields: [ + { + name: "collection", + type: { + kind: "OBJECT", + name: "Collection", + ofType: null, + }, + args: [], + }, + { + name: "description", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "descriptionJson", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "seoDescription", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "seoTitle", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "translation", + type: { + kind: "OBJECT", + name: "CollectionTranslation", + ofType: null, + }, + args: [ + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "CollectionTranslate", + fields: [ + { + name: "collection", + type: { + kind: "OBJECT", + name: "Collection", + ofType: null, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TranslationError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "translationErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TranslationError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CollectionTranslation", + fields: [ + { + name: "description", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "descriptionJson", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "language", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "LanguageDisplay", + ofType: null, + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "seoDescription", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "seoTitle", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "CollectionUpdate", + fields: [ + { + name: "collection", + type: { + kind: "OBJECT", + name: "Collection", + ofType: null, + }, + args: [], + }, + { + name: "collectionErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CollectionError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CollectionError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CollectionUpdated", + fields: [ + { + name: "collection", + type: { + kind: "OBJECT", + name: "Collection", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "ConfigurationItem", + fields: [ + { + name: "helpText", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "label", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "type", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "value", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ConfirmAccount", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ConfirmEmailChange", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CountryDisplay", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "country", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "vat", + type: { + kind: "OBJECT", + name: "VAT", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CreateToken", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "csrfToken", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "refreshToken", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "token", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CreditCard", + fields: [ + { + name: "brand", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "expMonth", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "expYear", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "firstDigits", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "lastDigits", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CustomerBulkDelete", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CustomerCreate", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CustomerCreated", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "CustomerDelete", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CustomerEvent", + fields: [ + { + name: "app", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "count", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "date", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderLine", + type: { + kind: "OBJECT", + name: "OrderLine", + ofType: null, + }, + args: [], + }, + { + name: "type", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "CustomerUpdate", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "CustomerUpdated", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "DeactivateAllUserTokens", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "DeleteMetadata", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "item", + type: { + kind: "INTERFACE", + name: "ObjectWithMetadata", + ofType: null, + }, + args: [], + }, + { + name: "metadataErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "DeletePrivateMetadata", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "item", + type: { + kind: "INTERFACE", + name: "ObjectWithMetadata", + ofType: null, + }, + args: [], + }, + { + name: "metadataErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "UNION", + name: "DeliveryMethod", + possibleTypes: [ + { + kind: "OBJECT", + name: "ShippingMethod", + }, + { + kind: "OBJECT", + name: "Warehouse", + }, + ], + }, + { + kind: "OBJECT", + name: "DigitalContent", + fields: [ + { + name: "automaticFulfillment", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "contentFile", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "maxDownloads", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "metafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "privateMetadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "privateMetafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "productVariant", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + }, + args: [], + }, + { + name: "urlValidDays", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "urls", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DigitalContentUrl", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "useDefaultSettings", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + { + kind: "INTERFACE", + name: "ObjectWithMetadata", + }, + ], + }, + { + kind: "OBJECT", + name: "DigitalContentCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DigitalContentCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "DigitalContentCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DigitalContent", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "DigitalContentCreate", + fields: [ + { + name: "content", + type: { + kind: "OBJECT", + name: "DigitalContent", + ofType: null, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "variant", + type: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "DigitalContentDelete", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "variant", + type: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "DigitalContentUpdate", + fields: [ + { + name: "content", + type: { + kind: "OBJECT", + name: "DigitalContent", + ofType: null, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "variant", + type: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "DigitalContentUrl", + fields: [ + { + name: "content", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DigitalContent", + ofType: null, + }, + }, + args: [], + }, + { + name: "created", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "downloadNum", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "token", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "url", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "DigitalContentUrlCreate", + fields: [ + { + name: "digitalContentUrl", + type: { + kind: "OBJECT", + name: "DigitalContentUrl", + ofType: null, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "DiscountError", + fields: [ + { + name: "channels", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "products", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "Domain", + fields: [ + { + name: "host", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "sslEnabled", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "url", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "DraftOrderBulkDelete", + fields: [ + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "DraftOrderComplete", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "DraftOrderCreate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "DraftOrderCreated", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "DraftOrderDelete", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "DraftOrderDeleted", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "DraftOrderLinesBulkDelete", + fields: [ + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "DraftOrderUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "DraftOrderUpdated", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "INTERFACE", + name: "Event", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + possibleTypes: [ + { + kind: "OBJECT", + name: "AppDeleted", + }, + { + kind: "OBJECT", + name: "AppInstalled", + }, + { + kind: "OBJECT", + name: "AppStatusChanged", + }, + { + kind: "OBJECT", + name: "AppUpdated", + }, + { + kind: "OBJECT", + name: "CategoryCreated", + }, + { + kind: "OBJECT", + name: "CategoryDeleted", + }, + { + kind: "OBJECT", + name: "CategoryUpdated", + }, + { + kind: "OBJECT", + name: "ChannelCreated", + }, + { + kind: "OBJECT", + name: "ChannelDeleted", + }, + { + kind: "OBJECT", + name: "ChannelStatusChanged", + }, + { + kind: "OBJECT", + name: "ChannelUpdated", + }, + { + kind: "OBJECT", + name: "CheckoutCreated", + }, + { + kind: "OBJECT", + name: "CheckoutUpdated", + }, + { + kind: "OBJECT", + name: "CollectionCreated", + }, + { + kind: "OBJECT", + name: "CollectionDeleted", + }, + { + kind: "OBJECT", + name: "CollectionUpdated", + }, + { + kind: "OBJECT", + name: "CustomerCreated", + }, + { + kind: "OBJECT", + name: "CustomerUpdated", + }, + { + kind: "OBJECT", + name: "DraftOrderCreated", + }, + { + kind: "OBJECT", + name: "DraftOrderDeleted", + }, + { + kind: "OBJECT", + name: "DraftOrderUpdated", + }, + { + kind: "OBJECT", + name: "FulfillmentCanceled", + }, + { + kind: "OBJECT", + name: "FulfillmentCreated", + }, + { + kind: "OBJECT", + name: "GiftCardCreated", + }, + { + kind: "OBJECT", + name: "GiftCardDeleted", + }, + { + kind: "OBJECT", + name: "GiftCardStatusChanged", + }, + { + kind: "OBJECT", + name: "GiftCardUpdated", + }, + { + kind: "OBJECT", + name: "InvoiceDeleted", + }, + { + kind: "OBJECT", + name: "InvoiceRequested", + }, + { + kind: "OBJECT", + name: "InvoiceSent", + }, + { + kind: "OBJECT", + name: "MenuCreated", + }, + { + kind: "OBJECT", + name: "MenuDeleted", + }, + { + kind: "OBJECT", + name: "MenuItemCreated", + }, + { + kind: "OBJECT", + name: "MenuItemDeleted", + }, + { + kind: "OBJECT", + name: "MenuItemUpdated", + }, + { + kind: "OBJECT", + name: "MenuUpdated", + }, + { + kind: "OBJECT", + name: "OrderCancelled", + }, + { + kind: "OBJECT", + name: "OrderConfirmed", + }, + { + kind: "OBJECT", + name: "OrderCreated", + }, + { + kind: "OBJECT", + name: "OrderFulfilled", + }, + { + kind: "OBJECT", + name: "OrderFullyPaid", + }, + { + kind: "OBJECT", + name: "OrderUpdated", + }, + { + kind: "OBJECT", + name: "PageCreated", + }, + { + kind: "OBJECT", + name: "PageDeleted", + }, + { + kind: "OBJECT", + name: "PageUpdated", + }, + { + kind: "OBJECT", + name: "ProductCreated", + }, + { + kind: "OBJECT", + name: "ProductDeleted", + }, + { + kind: "OBJECT", + name: "ProductUpdated", + }, + { + kind: "OBJECT", + name: "ProductVariantBackInStock", + }, + { + kind: "OBJECT", + name: "ProductVariantCreated", + }, + { + kind: "OBJECT", + name: "ProductVariantDeleted", + }, + { + kind: "OBJECT", + name: "ProductVariantOutOfStock", + }, + { + kind: "OBJECT", + name: "ProductVariantUpdated", + }, + { + kind: "OBJECT", + name: "SaleCreated", + }, + { + kind: "OBJECT", + name: "SaleDeleted", + }, + { + kind: "OBJECT", + name: "SaleUpdated", + }, + { + kind: "OBJECT", + name: "ShippingPriceCreated", + }, + { + kind: "OBJECT", + name: "ShippingPriceDeleted", + }, + { + kind: "OBJECT", + name: "ShippingPriceUpdated", + }, + { + kind: "OBJECT", + name: "ShippingZoneCreated", + }, + { + kind: "OBJECT", + name: "ShippingZoneDeleted", + }, + { + kind: "OBJECT", + name: "ShippingZoneUpdated", + }, + { + kind: "OBJECT", + name: "TransactionActionRequest", + }, + { + kind: "OBJECT", + name: "TranslationCreated", + }, + { + kind: "OBJECT", + name: "TranslationUpdated", + }, + { + kind: "OBJECT", + name: "VoucherCreated", + }, + { + kind: "OBJECT", + name: "VoucherDeleted", + }, + { + kind: "OBJECT", + name: "VoucherUpdated", + }, + { + kind: "OBJECT", + name: "WarehouseCreated", + }, + { + kind: "OBJECT", + name: "WarehouseDeleted", + }, + { + kind: "OBJECT", + name: "WarehouseUpdated", + }, + ], + }, + { + kind: "OBJECT", + name: "EventDelivery", + fields: [ + { + name: "attempts", + type: { + kind: "OBJECT", + name: "EventDeliveryAttemptCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sortBy", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "createdAt", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "eventType", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "payload", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "status", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "EventDeliveryAttempt", + fields: [ + { + name: "createdAt", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "duration", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "requestHeaders", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "response", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "responseHeaders", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "responseStatusCode", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "status", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "taskId", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "EventDeliveryAttemptCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "EventDeliveryAttemptCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "EventDeliveryAttemptCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "EventDeliveryAttempt", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "EventDeliveryCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "EventDeliveryCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "EventDeliveryCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "EventDelivery", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "EventDeliveryRetry", + fields: [ + { + name: "delivery", + type: { + kind: "OBJECT", + name: "EventDelivery", + ofType: null, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "WebhookError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ExportError", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ExportEvent", + fields: [ + { + name: "app", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "date", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "message", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "type", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "ExportFile", + fields: [ + { + name: "app", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "createdAt", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "events", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ExportEvent", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "status", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "updatedAt", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "url", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Job", + }, + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "ExportFileCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ExportFileCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ExportFileCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ExportFile", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ExportGiftCards", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ExportError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "exportFile", + type: { + kind: "OBJECT", + name: "ExportFile", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ExportProducts", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ExportError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "exportErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ExportError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "exportFile", + type: { + kind: "OBJECT", + name: "ExportFile", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ExternalAuthentication", + fields: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ExternalAuthenticationUrl", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "authenticationData", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ExternalLogout", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "logoutData", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ExternalNotificationError", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ExternalNotificationTrigger", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ExternalNotificationError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ExternalObtainAccessTokens", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "csrfToken", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "refreshToken", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "token", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ExternalRefresh", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "csrfToken", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "refreshToken", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "token", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ExternalVerify", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "isValid", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + { + name: "verifyData", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "File", + fields: [ + { + name: "contentType", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "url", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "FileUpload", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "UploadError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "uploadErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "UploadError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "uploadedFile", + type: { + kind: "OBJECT", + name: "File", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "Fulfillment", + fields: [ + { + name: "created", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "fulfillmentOrder", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "lines", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "FulfillmentLine", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "metafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "privateMetadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "privateMetafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "status", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "statusDisplay", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "trackingNumber", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "warehouse", + type: { + kind: "OBJECT", + name: "Warehouse", + ofType: null, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + { + kind: "INTERFACE", + name: "ObjectWithMetadata", + }, + ], + }, + { + kind: "OBJECT", + name: "FulfillmentApprove", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "fulfillment", + type: { + kind: "OBJECT", + name: "Fulfillment", + ofType: null, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "FulfillmentCancel", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "fulfillment", + type: { + kind: "OBJECT", + name: "Fulfillment", + ofType: null, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "FulfillmentCanceled", + fields: [ + { + name: "fulfillment", + type: { + kind: "OBJECT", + name: "Fulfillment", + ofType: null, + }, + args: [], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "FulfillmentCreated", + fields: [ + { + name: "fulfillment", + type: { + kind: "OBJECT", + name: "Fulfillment", + ofType: null, + }, + args: [], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "FulfillmentLine", + fields: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "orderLine", + type: { + kind: "OBJECT", + name: "OrderLine", + ofType: null, + }, + args: [], + }, + { + name: "quantity", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "FulfillmentRefundProducts", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "fulfillment", + type: { + kind: "OBJECT", + name: "Fulfillment", + ofType: null, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "FulfillmentReturnProducts", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "replaceFulfillment", + type: { + kind: "OBJECT", + name: "Fulfillment", + ofType: null, + }, + args: [], + }, + { + name: "replaceOrder", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "returnFulfillment", + type: { + kind: "OBJECT", + name: "Fulfillment", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "FulfillmentUpdateTracking", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "fulfillment", + type: { + kind: "OBJECT", + name: "Fulfillment", + ofType: null, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "GatewayConfigLine", + fields: [ + { + name: "field", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "value", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "GiftCard", + fields: [ + { + name: "app", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "boughtInChannel", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "created", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "createdBy", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + { + name: "createdByEmail", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "currentBalance", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + { + name: "displayCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "endDate", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "events", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GiftCardEvent", + ofType: null, + }, + }, + }, + }, + args: [ + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "expiryDate", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "initialBalance", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + { + name: "isActive", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "last4CodeChars", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "lastUsedOn", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "metafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "privateMetadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "privateMetafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "product", + type: { + kind: "OBJECT", + name: "Product", + ofType: null, + }, + args: [], + }, + { + name: "startDate", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "tags", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GiftCardTag", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "usedBy", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + { + name: "usedByEmail", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + { + kind: "INTERFACE", + name: "ObjectWithMetadata", + }, + ], + }, + { + kind: "OBJECT", + name: "GiftCardActivate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GiftCardError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "giftCard", + type: { + kind: "OBJECT", + name: "GiftCard", + ofType: null, + }, + args: [], + }, + { + name: "giftCardErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GiftCardError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "GiftCardAddNote", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GiftCardError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "event", + type: { + kind: "OBJECT", + name: "GiftCardEvent", + ofType: null, + }, + args: [], + }, + { + name: "giftCard", + type: { + kind: "OBJECT", + name: "GiftCard", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "GiftCardBulkActivate", + fields: [ + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GiftCardError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "GiftCardBulkCreate", + fields: [ + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GiftCardError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "giftCards", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GiftCard", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "GiftCardBulkDeactivate", + fields: [ + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GiftCardError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "GiftCardBulkDelete", + fields: [ + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GiftCardError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "GiftCardCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GiftCardCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "GiftCardCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GiftCard", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "GiftCardCreate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GiftCardError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "giftCard", + type: { + kind: "OBJECT", + name: "GiftCard", + ofType: null, + }, + args: [], + }, + { + name: "giftCardErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GiftCardError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "GiftCardCreated", + fields: [ + { + name: "giftCard", + type: { + kind: "OBJECT", + name: "GiftCard", + ofType: null, + }, + args: [], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "GiftCardDeactivate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GiftCardError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "giftCard", + type: { + kind: "OBJECT", + name: "GiftCard", + ofType: null, + }, + args: [], + }, + { + name: "giftCardErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GiftCardError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "GiftCardDelete", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GiftCardError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "giftCard", + type: { + kind: "OBJECT", + name: "GiftCard", + ofType: null, + }, + args: [], + }, + { + name: "giftCardErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GiftCardError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "GiftCardDeleted", + fields: [ + { + name: "giftCard", + type: { + kind: "OBJECT", + name: "GiftCard", + ofType: null, + }, + args: [], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "GiftCardError", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "tags", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "GiftCardEvent", + fields: [ + { + name: "app", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "balance", + type: { + kind: "OBJECT", + name: "GiftCardEventBalance", + ofType: null, + }, + args: [], + }, + { + name: "date", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "email", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "expiryDate", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "oldExpiryDate", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "oldTags", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + { + name: "orderId", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "orderNumber", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "tags", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + { + name: "type", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "GiftCardEventBalance", + fields: [ + { + name: "currentBalance", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + }, + args: [], + }, + { + name: "initialBalance", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + { + name: "oldCurrentBalance", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + { + name: "oldInitialBalance", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "GiftCardResend", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GiftCardError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "giftCard", + type: { + kind: "OBJECT", + name: "GiftCard", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "GiftCardSettings", + fields: [ + { + name: "expiryPeriod", + type: { + kind: "OBJECT", + name: "TimePeriod", + ofType: null, + }, + args: [], + }, + { + name: "expiryType", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "GiftCardSettingsError", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "GiftCardSettingsUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GiftCardSettingsError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "giftCardSettings", + type: { + kind: "OBJECT", + name: "GiftCardSettings", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "GiftCardStatusChanged", + fields: [ + { + name: "giftCard", + type: { + kind: "OBJECT", + name: "GiftCard", + ofType: null, + }, + args: [], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "GiftCardTag", + fields: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "GiftCardTagCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GiftCardTagCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "GiftCardTagCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GiftCardTag", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "GiftCardUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GiftCardError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "giftCard", + type: { + kind: "OBJECT", + name: "GiftCard", + ofType: null, + }, + args: [], + }, + { + name: "giftCardErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GiftCardError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "GiftCardUpdated", + fields: [ + { + name: "giftCard", + type: { + kind: "OBJECT", + name: "GiftCard", + ofType: null, + }, + args: [], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "Group", + fields: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "permissions", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Permission", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "userCanManage", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "users", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "GroupCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GroupCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "GroupCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Group", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "Image", + fields: [ + { + name: "alt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "url", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "Invoice", + fields: [ + { + name: "createdAt", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "externalUrl", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "metafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "number", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "privateMetadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "privateMetafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "status", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "updatedAt", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "url", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Job", + }, + { + kind: "INTERFACE", + name: "Node", + }, + { + kind: "INTERFACE", + name: "ObjectWithMetadata", + }, + ], + }, + { + kind: "OBJECT", + name: "InvoiceCreate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "InvoiceError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "invoice", + type: { + kind: "OBJECT", + name: "Invoice", + ofType: null, + }, + args: [], + }, + { + name: "invoiceErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "InvoiceError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "InvoiceDelete", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "InvoiceError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "invoice", + type: { + kind: "OBJECT", + name: "Invoice", + ofType: null, + }, + args: [], + }, + { + name: "invoiceErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "InvoiceError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "InvoiceDeleted", + fields: [ + { + name: "invoice", + type: { + kind: "OBJECT", + name: "Invoice", + ofType: null, + }, + args: [], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "InvoiceError", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "InvoiceRequest", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "InvoiceError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "invoice", + type: { + kind: "OBJECT", + name: "Invoice", + ofType: null, + }, + args: [], + }, + { + name: "invoiceErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "InvoiceError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "InvoiceRequestDelete", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "InvoiceError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "invoice", + type: { + kind: "OBJECT", + name: "Invoice", + ofType: null, + }, + args: [], + }, + { + name: "invoiceErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "InvoiceError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "InvoiceRequested", + fields: [ + { + name: "invoice", + type: { + kind: "OBJECT", + name: "Invoice", + ofType: null, + }, + args: [], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "InvoiceSendNotification", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "InvoiceError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "invoice", + type: { + kind: "OBJECT", + name: "Invoice", + ofType: null, + }, + args: [], + }, + { + name: "invoiceErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "InvoiceError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "InvoiceSent", + fields: [ + { + name: "invoice", + type: { + kind: "OBJECT", + name: "Invoice", + ofType: null, + }, + args: [], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "InvoiceUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "InvoiceError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "invoice", + type: { + kind: "OBJECT", + name: "Invoice", + ofType: null, + }, + args: [], + }, + { + name: "invoiceErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "InvoiceError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "UNION", + name: "IssuingPrincipal", + possibleTypes: [ + { + kind: "OBJECT", + name: "App", + }, + { + kind: "OBJECT", + name: "User", + }, + ], + }, + { + kind: "INTERFACE", + name: "Job", + fields: [ + { + name: "createdAt", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "status", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "updatedAt", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + possibleTypes: [ + { + kind: "OBJECT", + name: "AppInstallation", + }, + { + kind: "OBJECT", + name: "ExportFile", + }, + { + kind: "OBJECT", + name: "Invoice", + }, + ], + }, + { + kind: "OBJECT", + name: "LanguageDisplay", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "language", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "LimitInfo", + fields: [ + { + name: "allowedUsage", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Limits", + ofType: null, + }, + }, + args: [], + }, + { + name: "currentUsage", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Limits", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "Limits", + fields: [ + { + name: "channels", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "orders", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "productVariants", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "staffUsers", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "warehouses", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "Manifest", + fields: [ + { + name: "about", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "appUrl", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "configurationUrl", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "dataPrivacy", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "dataPrivacyUrl", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "extensions", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppManifestExtension", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "homepageUrl", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "identifier", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "permissions", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Permission", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "supportUrl", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "tokenTargetUrl", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "version", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "Margin", + fields: [ + { + name: "start", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "stop", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "Menu", + fields: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "items", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MenuItem", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "metafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "privateMetadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "privateMetafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "slug", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + { + kind: "INTERFACE", + name: "ObjectWithMetadata", + }, + ], + }, + { + kind: "OBJECT", + name: "MenuBulkDelete", + fields: [ + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MenuError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "menuErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MenuError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "MenuCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MenuCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "MenuCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Menu", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "MenuCreate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MenuError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "menu", + type: { + kind: "OBJECT", + name: "Menu", + ofType: null, + }, + args: [], + }, + { + name: "menuErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MenuError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "MenuCreated", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "menu", + type: { + kind: "OBJECT", + name: "Menu", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "MenuDelete", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MenuError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "menu", + type: { + kind: "OBJECT", + name: "Menu", + ofType: null, + }, + args: [], + }, + { + name: "menuErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MenuError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "MenuDeleted", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "menu", + type: { + kind: "OBJECT", + name: "Menu", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "MenuError", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "MenuItem", + fields: [ + { + name: "category", + type: { + kind: "OBJECT", + name: "Category", + ofType: null, + }, + args: [], + }, + { + name: "children", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MenuItem", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "collection", + type: { + kind: "OBJECT", + name: "Collection", + ofType: null, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "level", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "menu", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Menu", + ofType: null, + }, + }, + args: [], + }, + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "metafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "page", + type: { + kind: "OBJECT", + name: "Page", + ofType: null, + }, + args: [], + }, + { + name: "parent", + type: { + kind: "OBJECT", + name: "MenuItem", + ofType: null, + }, + args: [], + }, + { + name: "privateMetadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "privateMetafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "translation", + type: { + kind: "OBJECT", + name: "MenuItemTranslation", + ofType: null, + }, + args: [ + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "url", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + { + kind: "INTERFACE", + name: "ObjectWithMetadata", + }, + ], + }, + { + kind: "OBJECT", + name: "MenuItemBulkDelete", + fields: [ + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MenuError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "menuErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MenuError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "MenuItemCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MenuItemCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "MenuItemCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MenuItem", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "MenuItemCreate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MenuError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "menuErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MenuError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "menuItem", + type: { + kind: "OBJECT", + name: "MenuItem", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "MenuItemCreated", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "menuItem", + type: { + kind: "OBJECT", + name: "MenuItem", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "MenuItemDelete", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MenuError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "menuErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MenuError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "menuItem", + type: { + kind: "OBJECT", + name: "MenuItem", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "MenuItemDeleted", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "menuItem", + type: { + kind: "OBJECT", + name: "MenuItem", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "MenuItemMove", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MenuError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "menu", + type: { + kind: "OBJECT", + name: "Menu", + ofType: null, + }, + args: [], + }, + { + name: "menuErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MenuError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "MenuItemTranslatableContent", + fields: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "menuItem", + type: { + kind: "OBJECT", + name: "MenuItem", + ofType: null, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "translation", + type: { + kind: "OBJECT", + name: "MenuItemTranslation", + ofType: null, + }, + args: [ + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "MenuItemTranslate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TranslationError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "menuItem", + type: { + kind: "OBJECT", + name: "MenuItem", + ofType: null, + }, + args: [], + }, + { + name: "translationErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TranslationError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "MenuItemTranslation", + fields: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "language", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "LanguageDisplay", + ofType: null, + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "MenuItemUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MenuError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "menuErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MenuError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "menuItem", + type: { + kind: "OBJECT", + name: "MenuItem", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "MenuItemUpdated", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "menuItem", + type: { + kind: "OBJECT", + name: "MenuItem", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "MenuUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MenuError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "menu", + type: { + kind: "OBJECT", + name: "Menu", + ofType: null, + }, + args: [], + }, + { + name: "menuErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MenuError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "MenuUpdated", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "menu", + type: { + kind: "OBJECT", + name: "Menu", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "MetadataError", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "MetadataItem", + fields: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "value", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "Money", + fields: [ + { + name: "amount", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "currency", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "MoneyRange", + fields: [ + { + name: "start", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + { + name: "stop", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "Mutation", + fields: [ + { + name: "accountAddressCreate", + type: { + kind: "OBJECT", + name: "AccountAddressCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "type", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "accountAddressDelete", + type: { + kind: "OBJECT", + name: "AccountAddressDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "accountAddressUpdate", + type: { + kind: "OBJECT", + name: "AccountAddressUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "accountDelete", + type: { + kind: "OBJECT", + name: "AccountDelete", + ofType: null, + }, + args: [ + { + name: "token", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "accountRegister", + type: { + kind: "OBJECT", + name: "AccountRegister", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "accountRequestDeletion", + type: { + kind: "OBJECT", + name: "AccountRequestDeletion", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "redirectUrl", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "accountSetDefaultAddress", + type: { + kind: "OBJECT", + name: "AccountSetDefaultAddress", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "type", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "accountUpdate", + type: { + kind: "OBJECT", + name: "AccountUpdate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "addressCreate", + type: { + kind: "OBJECT", + name: "AddressCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "userId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "addressDelete", + type: { + kind: "OBJECT", + name: "AddressDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "addressSetDefault", + type: { + kind: "OBJECT", + name: "AddressSetDefault", + ofType: null, + }, + args: [ + { + name: "addressId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "type", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "userId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "addressUpdate", + type: { + kind: "OBJECT", + name: "AddressUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "appActivate", + type: { + kind: "OBJECT", + name: "AppActivate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "appCreate", + type: { + kind: "OBJECT", + name: "AppCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "appDeactivate", + type: { + kind: "OBJECT", + name: "AppDeactivate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "appDelete", + type: { + kind: "OBJECT", + name: "AppDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "appDeleteFailedInstallation", + type: { + kind: "OBJECT", + name: "AppDeleteFailedInstallation", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "appFetchManifest", + type: { + kind: "OBJECT", + name: "AppFetchManifest", + ofType: null, + }, + args: [ + { + name: "manifestUrl", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "appInstall", + type: { + kind: "OBJECT", + name: "AppInstall", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "appRetryInstall", + type: { + kind: "OBJECT", + name: "AppRetryInstall", + ofType: null, + }, + args: [ + { + name: "activateAfterInstallation", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "appTokenCreate", + type: { + kind: "OBJECT", + name: "AppTokenCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "appTokenDelete", + type: { + kind: "OBJECT", + name: "AppTokenDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "appTokenVerify", + type: { + kind: "OBJECT", + name: "AppTokenVerify", + ofType: null, + }, + args: [ + { + name: "token", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "appUpdate", + type: { + kind: "OBJECT", + name: "AppUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "assignNavigation", + type: { + kind: "OBJECT", + name: "AssignNavigation", + ofType: null, + }, + args: [ + { + name: "menu", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "navigationType", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "assignWarehouseShippingZone", + type: { + kind: "OBJECT", + name: "WarehouseShippingZoneAssign", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "shippingZoneIds", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "attributeBulkDelete", + type: { + kind: "OBJECT", + name: "AttributeBulkDelete", + ofType: null, + }, + args: [ + { + name: "ids", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "attributeCreate", + type: { + kind: "OBJECT", + name: "AttributeCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "attributeDelete", + type: { + kind: "OBJECT", + name: "AttributeDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "attributeReorderValues", + type: { + kind: "OBJECT", + name: "AttributeReorderValues", + ofType: null, + }, + args: [ + { + name: "attributeId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "moves", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "attributeTranslate", + type: { + kind: "OBJECT", + name: "AttributeTranslate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "attributeUpdate", + type: { + kind: "OBJECT", + name: "AttributeUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "attributeValueBulkDelete", + type: { + kind: "OBJECT", + name: "AttributeValueBulkDelete", + ofType: null, + }, + args: [ + { + name: "ids", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "attributeValueCreate", + type: { + kind: "OBJECT", + name: "AttributeValueCreate", + ofType: null, + }, + args: [ + { + name: "attribute", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "attributeValueDelete", + type: { + kind: "OBJECT", + name: "AttributeValueDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "attributeValueTranslate", + type: { + kind: "OBJECT", + name: "AttributeValueTranslate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "attributeValueUpdate", + type: { + kind: "OBJECT", + name: "AttributeValueUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "categoryBulkDelete", + type: { + kind: "OBJECT", + name: "CategoryBulkDelete", + ofType: null, + }, + args: [ + { + name: "ids", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "categoryCreate", + type: { + kind: "OBJECT", + name: "CategoryCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "parent", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "categoryDelete", + type: { + kind: "OBJECT", + name: "CategoryDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "categoryTranslate", + type: { + kind: "OBJECT", + name: "CategoryTranslate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "categoryUpdate", + type: { + kind: "OBJECT", + name: "CategoryUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "channelActivate", + type: { + kind: "OBJECT", + name: "ChannelActivate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "channelCreate", + type: { + kind: "OBJECT", + name: "ChannelCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "channelDeactivate", + type: { + kind: "OBJECT", + name: "ChannelDeactivate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "channelDelete", + type: { + kind: "OBJECT", + name: "ChannelDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "channelUpdate", + type: { + kind: "OBJECT", + name: "ChannelUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "checkoutAddPromoCode", + type: { + kind: "OBJECT", + name: "CheckoutAddPromoCode", + ofType: null, + }, + args: [ + { + name: "checkoutId", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "promoCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "token", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "checkoutBillingAddressUpdate", + type: { + kind: "OBJECT", + name: "CheckoutBillingAddressUpdate", + ofType: null, + }, + args: [ + { + name: "billingAddress", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "checkoutId", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "token", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "checkoutComplete", + type: { + kind: "OBJECT", + name: "CheckoutComplete", + ofType: null, + }, + args: [ + { + name: "checkoutId", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "paymentData", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "redirectUrl", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "storeSource", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "token", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "checkoutCreate", + type: { + kind: "OBJECT", + name: "CheckoutCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "checkoutCustomerAttach", + type: { + kind: "OBJECT", + name: "CheckoutCustomerAttach", + ofType: null, + }, + args: [ + { + name: "checkoutId", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "customerId", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "token", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "checkoutCustomerDetach", + type: { + kind: "OBJECT", + name: "CheckoutCustomerDetach", + ofType: null, + }, + args: [ + { + name: "checkoutId", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "token", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "checkoutDeliveryMethodUpdate", + type: { + kind: "OBJECT", + name: "CheckoutDeliveryMethodUpdate", + ofType: null, + }, + args: [ + { + name: "deliveryMethodId", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "token", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "checkoutEmailUpdate", + type: { + kind: "OBJECT", + name: "CheckoutEmailUpdate", + ofType: null, + }, + args: [ + { + name: "checkoutId", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "email", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "token", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "checkoutLanguageCodeUpdate", + type: { + kind: "OBJECT", + name: "CheckoutLanguageCodeUpdate", + ofType: null, + }, + args: [ + { + name: "checkoutId", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "token", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "checkoutLineDelete", + type: { + kind: "OBJECT", + name: "CheckoutLineDelete", + ofType: null, + }, + args: [ + { + name: "checkoutId", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "lineId", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "token", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "checkoutLinesAdd", + type: { + kind: "OBJECT", + name: "CheckoutLinesAdd", + ofType: null, + }, + args: [ + { + name: "checkoutId", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "lines", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + { + name: "token", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "checkoutLinesDelete", + type: { + kind: "OBJECT", + name: "CheckoutLinesDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "linesIds", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + { + name: "token", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "checkoutLinesUpdate", + type: { + kind: "OBJECT", + name: "CheckoutLinesUpdate", + ofType: null, + }, + args: [ + { + name: "checkoutId", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "lines", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + { + name: "token", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "checkoutPaymentCreate", + type: { + kind: "OBJECT", + name: "CheckoutPaymentCreate", + ofType: null, + }, + args: [ + { + name: "checkoutId", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "token", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "checkoutRemovePromoCode", + type: { + kind: "OBJECT", + name: "CheckoutRemovePromoCode", + ofType: null, + }, + args: [ + { + name: "checkoutId", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "promoCode", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "promoCodeId", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "token", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "checkoutShippingAddressUpdate", + type: { + kind: "OBJECT", + name: "CheckoutShippingAddressUpdate", + ofType: null, + }, + args: [ + { + name: "checkoutId", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "shippingAddress", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "token", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "checkoutShippingMethodUpdate", + type: { + kind: "OBJECT", + name: "CheckoutShippingMethodUpdate", + ofType: null, + }, + args: [ + { + name: "checkoutId", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "shippingMethodId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "token", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "collectionAddProducts", + type: { + kind: "OBJECT", + name: "CollectionAddProducts", + ofType: null, + }, + args: [ + { + name: "collectionId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "products", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "collectionBulkDelete", + type: { + kind: "OBJECT", + name: "CollectionBulkDelete", + ofType: null, + }, + args: [ + { + name: "ids", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "collectionChannelListingUpdate", + type: { + kind: "OBJECT", + name: "CollectionChannelListingUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "collectionCreate", + type: { + kind: "OBJECT", + name: "CollectionCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "collectionDelete", + type: { + kind: "OBJECT", + name: "CollectionDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "collectionRemoveProducts", + type: { + kind: "OBJECT", + name: "CollectionRemoveProducts", + ofType: null, + }, + args: [ + { + name: "collectionId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "products", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "collectionReorderProducts", + type: { + kind: "OBJECT", + name: "CollectionReorderProducts", + ofType: null, + }, + args: [ + { + name: "collectionId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "moves", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "collectionTranslate", + type: { + kind: "OBJECT", + name: "CollectionTranslate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "collectionUpdate", + type: { + kind: "OBJECT", + name: "CollectionUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "confirmAccount", + type: { + kind: "OBJECT", + name: "ConfirmAccount", + ofType: null, + }, + args: [ + { + name: "email", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "token", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "confirmEmailChange", + type: { + kind: "OBJECT", + name: "ConfirmEmailChange", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "token", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "createWarehouse", + type: { + kind: "OBJECT", + name: "WarehouseCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "customerBulkDelete", + type: { + kind: "OBJECT", + name: "CustomerBulkDelete", + ofType: null, + }, + args: [ + { + name: "ids", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "customerCreate", + type: { + kind: "OBJECT", + name: "CustomerCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "customerDelete", + type: { + kind: "OBJECT", + name: "CustomerDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "customerUpdate", + type: { + kind: "OBJECT", + name: "CustomerUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "deleteMetadata", + type: { + kind: "OBJECT", + name: "DeleteMetadata", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "keys", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "deletePrivateMetadata", + type: { + kind: "OBJECT", + name: "DeletePrivateMetadata", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "keys", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "deleteWarehouse", + type: { + kind: "OBJECT", + name: "WarehouseDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "digitalContentCreate", + type: { + kind: "OBJECT", + name: "DigitalContentCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "variantId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "digitalContentDelete", + type: { + kind: "OBJECT", + name: "DigitalContentDelete", + ofType: null, + }, + args: [ + { + name: "variantId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "digitalContentUpdate", + type: { + kind: "OBJECT", + name: "DigitalContentUpdate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "variantId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "digitalContentUrlCreate", + type: { + kind: "OBJECT", + name: "DigitalContentUrlCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "draftOrderBulkDelete", + type: { + kind: "OBJECT", + name: "DraftOrderBulkDelete", + ofType: null, + }, + args: [ + { + name: "ids", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "draftOrderComplete", + type: { + kind: "OBJECT", + name: "DraftOrderComplete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "draftOrderCreate", + type: { + kind: "OBJECT", + name: "DraftOrderCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "draftOrderDelete", + type: { + kind: "OBJECT", + name: "DraftOrderDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "draftOrderLinesBulkDelete", + type: { + kind: "OBJECT", + name: "DraftOrderLinesBulkDelete", + ofType: null, + }, + args: [ + { + name: "ids", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "draftOrderUpdate", + type: { + kind: "OBJECT", + name: "DraftOrderUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "eventDeliveryRetry", + type: { + kind: "OBJECT", + name: "EventDeliveryRetry", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "exportGiftCards", + type: { + kind: "OBJECT", + name: "ExportGiftCards", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "exportProducts", + type: { + kind: "OBJECT", + name: "ExportProducts", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "externalAuthenticationUrl", + type: { + kind: "OBJECT", + name: "ExternalAuthenticationUrl", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "pluginId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "externalLogout", + type: { + kind: "OBJECT", + name: "ExternalLogout", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "pluginId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "externalNotificationTrigger", + type: { + kind: "OBJECT", + name: "ExternalNotificationTrigger", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "pluginId", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "externalObtainAccessTokens", + type: { + kind: "OBJECT", + name: "ExternalObtainAccessTokens", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "pluginId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "externalRefresh", + type: { + kind: "OBJECT", + name: "ExternalRefresh", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "pluginId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "externalVerify", + type: { + kind: "OBJECT", + name: "ExternalVerify", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "pluginId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "fileUpload", + type: { + kind: "OBJECT", + name: "FileUpload", + ofType: null, + }, + args: [ + { + name: "file", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "giftCardActivate", + type: { + kind: "OBJECT", + name: "GiftCardActivate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "giftCardAddNote", + type: { + kind: "OBJECT", + name: "GiftCardAddNote", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "giftCardBulkActivate", + type: { + kind: "OBJECT", + name: "GiftCardBulkActivate", + ofType: null, + }, + args: [ + { + name: "ids", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "giftCardBulkCreate", + type: { + kind: "OBJECT", + name: "GiftCardBulkCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "giftCardBulkDeactivate", + type: { + kind: "OBJECT", + name: "GiftCardBulkDeactivate", + ofType: null, + }, + args: [ + { + name: "ids", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "giftCardBulkDelete", + type: { + kind: "OBJECT", + name: "GiftCardBulkDelete", + ofType: null, + }, + args: [ + { + name: "ids", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "giftCardCreate", + type: { + kind: "OBJECT", + name: "GiftCardCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "giftCardDeactivate", + type: { + kind: "OBJECT", + name: "GiftCardDeactivate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "giftCardDelete", + type: { + kind: "OBJECT", + name: "GiftCardDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "giftCardResend", + type: { + kind: "OBJECT", + name: "GiftCardResend", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "giftCardSettingsUpdate", + type: { + kind: "OBJECT", + name: "GiftCardSettingsUpdate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "giftCardUpdate", + type: { + kind: "OBJECT", + name: "GiftCardUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "invoiceCreate", + type: { + kind: "OBJECT", + name: "InvoiceCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "orderId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "invoiceDelete", + type: { + kind: "OBJECT", + name: "InvoiceDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "invoiceRequest", + type: { + kind: "OBJECT", + name: "InvoiceRequest", + ofType: null, + }, + args: [ + { + name: "number", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "orderId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "invoiceRequestDelete", + type: { + kind: "OBJECT", + name: "InvoiceRequestDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "invoiceSendNotification", + type: { + kind: "OBJECT", + name: "InvoiceSendNotification", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "invoiceUpdate", + type: { + kind: "OBJECT", + name: "InvoiceUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "menuBulkDelete", + type: { + kind: "OBJECT", + name: "MenuBulkDelete", + ofType: null, + }, + args: [ + { + name: "ids", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "menuCreate", + type: { + kind: "OBJECT", + name: "MenuCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "menuDelete", + type: { + kind: "OBJECT", + name: "MenuDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "menuItemBulkDelete", + type: { + kind: "OBJECT", + name: "MenuItemBulkDelete", + ofType: null, + }, + args: [ + { + name: "ids", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "menuItemCreate", + type: { + kind: "OBJECT", + name: "MenuItemCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "menuItemDelete", + type: { + kind: "OBJECT", + name: "MenuItemDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "menuItemMove", + type: { + kind: "OBJECT", + name: "MenuItemMove", + ofType: null, + }, + args: [ + { + name: "menu", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "moves", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "menuItemTranslate", + type: { + kind: "OBJECT", + name: "MenuItemTranslate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "menuItemUpdate", + type: { + kind: "OBJECT", + name: "MenuItemUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "menuUpdate", + type: { + kind: "OBJECT", + name: "MenuUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "orderAddNote", + type: { + kind: "OBJECT", + name: "OrderAddNote", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "order", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "orderBulkCancel", + type: { + kind: "OBJECT", + name: "OrderBulkCancel", + ofType: null, + }, + args: [ + { + name: "ids", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "orderCancel", + type: { + kind: "OBJECT", + name: "OrderCancel", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "orderCapture", + type: { + kind: "OBJECT", + name: "OrderCapture", + ofType: null, + }, + args: [ + { + name: "amount", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "orderConfirm", + type: { + kind: "OBJECT", + name: "OrderConfirm", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "orderCreateFromCheckout", + type: { + kind: "OBJECT", + name: "OrderCreateFromCheckout", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "removeCheckout", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "orderDiscountAdd", + type: { + kind: "OBJECT", + name: "OrderDiscountAdd", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "orderId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "orderDiscountDelete", + type: { + kind: "OBJECT", + name: "OrderDiscountDelete", + ofType: null, + }, + args: [ + { + name: "discountId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "orderDiscountUpdate", + type: { + kind: "OBJECT", + name: "OrderDiscountUpdate", + ofType: null, + }, + args: [ + { + name: "discountId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "orderFulfill", + type: { + kind: "OBJECT", + name: "OrderFulfill", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "order", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "orderFulfillmentApprove", + type: { + kind: "OBJECT", + name: "FulfillmentApprove", + ofType: null, + }, + args: [ + { + name: "allowStockToBeExceeded", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "notifyCustomer", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "orderFulfillmentCancel", + type: { + kind: "OBJECT", + name: "FulfillmentCancel", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "orderFulfillmentRefundProducts", + type: { + kind: "OBJECT", + name: "FulfillmentRefundProducts", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "order", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "orderFulfillmentReturnProducts", + type: { + kind: "OBJECT", + name: "FulfillmentReturnProducts", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "order", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "orderFulfillmentUpdateTracking", + type: { + kind: "OBJECT", + name: "FulfillmentUpdateTracking", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "orderLineDelete", + type: { + kind: "OBJECT", + name: "OrderLineDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "orderLineDiscountRemove", + type: { + kind: "OBJECT", + name: "OrderLineDiscountRemove", + ofType: null, + }, + args: [ + { + name: "orderLineId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "orderLineDiscountUpdate", + type: { + kind: "OBJECT", + name: "OrderLineDiscountUpdate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "orderLineId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "orderLineUpdate", + type: { + kind: "OBJECT", + name: "OrderLineUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "orderLinesCreate", + type: { + kind: "OBJECT", + name: "OrderLinesCreate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "orderMarkAsPaid", + type: { + kind: "OBJECT", + name: "OrderMarkAsPaid", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "transactionReference", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "orderRefund", + type: { + kind: "OBJECT", + name: "OrderRefund", + ofType: null, + }, + args: [ + { + name: "amount", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "orderSettingsUpdate", + type: { + kind: "OBJECT", + name: "OrderSettingsUpdate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "orderUpdate", + type: { + kind: "OBJECT", + name: "OrderUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "orderUpdateShipping", + type: { + kind: "OBJECT", + name: "OrderUpdateShipping", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "order", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "orderVoid", + type: { + kind: "OBJECT", + name: "OrderVoid", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "pageAttributeAssign", + type: { + kind: "OBJECT", + name: "PageAttributeAssign", + ofType: null, + }, + args: [ + { + name: "attributeIds", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + { + name: "pageTypeId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "pageAttributeUnassign", + type: { + kind: "OBJECT", + name: "PageAttributeUnassign", + ofType: null, + }, + args: [ + { + name: "attributeIds", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + { + name: "pageTypeId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "pageBulkDelete", + type: { + kind: "OBJECT", + name: "PageBulkDelete", + ofType: null, + }, + args: [ + { + name: "ids", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "pageBulkPublish", + type: { + kind: "OBJECT", + name: "PageBulkPublish", + ofType: null, + }, + args: [ + { + name: "ids", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + { + name: "isPublished", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "pageCreate", + type: { + kind: "OBJECT", + name: "PageCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "pageDelete", + type: { + kind: "OBJECT", + name: "PageDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "pageReorderAttributeValues", + type: { + kind: "OBJECT", + name: "PageReorderAttributeValues", + ofType: null, + }, + args: [ + { + name: "attributeId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "moves", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + { + name: "pageId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "pageTranslate", + type: { + kind: "OBJECT", + name: "PageTranslate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "pageTypeBulkDelete", + type: { + kind: "OBJECT", + name: "PageTypeBulkDelete", + ofType: null, + }, + args: [ + { + name: "ids", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "pageTypeCreate", + type: { + kind: "OBJECT", + name: "PageTypeCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "pageTypeDelete", + type: { + kind: "OBJECT", + name: "PageTypeDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "pageTypeReorderAttributes", + type: { + kind: "OBJECT", + name: "PageTypeReorderAttributes", + ofType: null, + }, + args: [ + { + name: "moves", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + { + name: "pageTypeId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "pageTypeUpdate", + type: { + kind: "OBJECT", + name: "PageTypeUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "pageUpdate", + type: { + kind: "OBJECT", + name: "PageUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "passwordChange", + type: { + kind: "OBJECT", + name: "PasswordChange", + ofType: null, + }, + args: [ + { + name: "newPassword", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "oldPassword", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "paymentCapture", + type: { + kind: "OBJECT", + name: "PaymentCapture", + ofType: null, + }, + args: [ + { + name: "amount", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "paymentId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "paymentCheckBalance", + type: { + kind: "OBJECT", + name: "PaymentCheckBalance", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "paymentInitialize", + type: { + kind: "OBJECT", + name: "PaymentInitialize", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "gateway", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "paymentData", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "paymentRefund", + type: { + kind: "OBJECT", + name: "PaymentRefund", + ofType: null, + }, + args: [ + { + name: "amount", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "paymentId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "paymentVoid", + type: { + kind: "OBJECT", + name: "PaymentVoid", + ofType: null, + }, + args: [ + { + name: "paymentId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "permissionGroupCreate", + type: { + kind: "OBJECT", + name: "PermissionGroupCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "permissionGroupDelete", + type: { + kind: "OBJECT", + name: "PermissionGroupDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "permissionGroupUpdate", + type: { + kind: "OBJECT", + name: "PermissionGroupUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "pluginUpdate", + type: { + kind: "OBJECT", + name: "PluginUpdate", + ofType: null, + }, + args: [ + { + name: "channelId", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productAttributeAssign", + type: { + kind: "OBJECT", + name: "ProductAttributeAssign", + ofType: null, + }, + args: [ + { + name: "operations", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + { + name: "productTypeId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productAttributeAssignmentUpdate", + type: { + kind: "OBJECT", + name: "ProductAttributeAssignmentUpdate", + ofType: null, + }, + args: [ + { + name: "operations", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + { + name: "productTypeId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productAttributeUnassign", + type: { + kind: "OBJECT", + name: "ProductAttributeUnassign", + ofType: null, + }, + args: [ + { + name: "attributeIds", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + { + name: "productTypeId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productBulkDelete", + type: { + kind: "OBJECT", + name: "ProductBulkDelete", + ofType: null, + }, + args: [ + { + name: "ids", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "productChannelListingUpdate", + type: { + kind: "OBJECT", + name: "ProductChannelListingUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productCreate", + type: { + kind: "OBJECT", + name: "ProductCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productDelete", + type: { + kind: "OBJECT", + name: "ProductDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productMediaBulkDelete", + type: { + kind: "OBJECT", + name: "ProductMediaBulkDelete", + ofType: null, + }, + args: [ + { + name: "ids", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "productMediaCreate", + type: { + kind: "OBJECT", + name: "ProductMediaCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productMediaDelete", + type: { + kind: "OBJECT", + name: "ProductMediaDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productMediaReorder", + type: { + kind: "OBJECT", + name: "ProductMediaReorder", + ofType: null, + }, + args: [ + { + name: "mediaIds", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + { + name: "productId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productMediaUpdate", + type: { + kind: "OBJECT", + name: "ProductMediaUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productReorderAttributeValues", + type: { + kind: "OBJECT", + name: "ProductReorderAttributeValues", + ofType: null, + }, + args: [ + { + name: "attributeId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "moves", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + { + name: "productId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productTranslate", + type: { + kind: "OBJECT", + name: "ProductTranslate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productTypeBulkDelete", + type: { + kind: "OBJECT", + name: "ProductTypeBulkDelete", + ofType: null, + }, + args: [ + { + name: "ids", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "productTypeCreate", + type: { + kind: "OBJECT", + name: "ProductTypeCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productTypeDelete", + type: { + kind: "OBJECT", + name: "ProductTypeDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productTypeReorderAttributes", + type: { + kind: "OBJECT", + name: "ProductTypeReorderAttributes", + ofType: null, + }, + args: [ + { + name: "moves", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + { + name: "productTypeId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "type", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productTypeUpdate", + type: { + kind: "OBJECT", + name: "ProductTypeUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productUpdate", + type: { + kind: "OBJECT", + name: "ProductUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productVariantBulkCreate", + type: { + kind: "OBJECT", + name: "ProductVariantBulkCreate", + ofType: null, + }, + args: [ + { + name: "product", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "variants", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "productVariantBulkDelete", + type: { + kind: "OBJECT", + name: "ProductVariantBulkDelete", + ofType: null, + }, + args: [ + { + name: "ids", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "productVariantChannelListingUpdate", + type: { + kind: "OBJECT", + name: "ProductVariantChannelListingUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "productVariantCreate", + type: { + kind: "OBJECT", + name: "ProductVariantCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productVariantDelete", + type: { + kind: "OBJECT", + name: "ProductVariantDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productVariantPreorderDeactivate", + type: { + kind: "OBJECT", + name: "ProductVariantPreorderDeactivate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productVariantReorder", + type: { + kind: "OBJECT", + name: "ProductVariantReorder", + ofType: null, + }, + args: [ + { + name: "moves", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + { + name: "productId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productVariantReorderAttributeValues", + type: { + kind: "OBJECT", + name: "ProductVariantReorderAttributeValues", + ofType: null, + }, + args: [ + { + name: "attributeId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "moves", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + { + name: "variantId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productVariantSetDefault", + type: { + kind: "OBJECT", + name: "ProductVariantSetDefault", + ofType: null, + }, + args: [ + { + name: "productId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "variantId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productVariantStocksCreate", + type: { + kind: "OBJECT", + name: "ProductVariantStocksCreate", + ofType: null, + }, + args: [ + { + name: "stocks", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + { + name: "variantId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productVariantStocksDelete", + type: { + kind: "OBJECT", + name: "ProductVariantStocksDelete", + ofType: null, + }, + args: [ + { + name: "variantId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "warehouseIds", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "productVariantStocksUpdate", + type: { + kind: "OBJECT", + name: "ProductVariantStocksUpdate", + ofType: null, + }, + args: [ + { + name: "stocks", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + { + name: "variantId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productVariantTranslate", + type: { + kind: "OBJECT", + name: "ProductVariantTranslate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productVariantUpdate", + type: { + kind: "OBJECT", + name: "ProductVariantUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "requestEmailChange", + type: { + kind: "OBJECT", + name: "RequestEmailChange", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "newEmail", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "password", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "redirectUrl", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "requestPasswordReset", + type: { + kind: "OBJECT", + name: "RequestPasswordReset", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "email", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "redirectUrl", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "saleBulkDelete", + type: { + kind: "OBJECT", + name: "SaleBulkDelete", + ofType: null, + }, + args: [ + { + name: "ids", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "saleCataloguesAdd", + type: { + kind: "OBJECT", + name: "SaleAddCatalogues", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "saleCataloguesRemove", + type: { + kind: "OBJECT", + name: "SaleRemoveCatalogues", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "saleChannelListingUpdate", + type: { + kind: "OBJECT", + name: "SaleChannelListingUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "saleCreate", + type: { + kind: "OBJECT", + name: "SaleCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "saleDelete", + type: { + kind: "OBJECT", + name: "SaleDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "saleTranslate", + type: { + kind: "OBJECT", + name: "SaleTranslate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "saleUpdate", + type: { + kind: "OBJECT", + name: "SaleUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "setPassword", + type: { + kind: "OBJECT", + name: "SetPassword", + ofType: null, + }, + args: [ + { + name: "email", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "password", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "token", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "shippingMethodChannelListingUpdate", + type: { + kind: "OBJECT", + name: "ShippingMethodChannelListingUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "shippingPriceBulkDelete", + type: { + kind: "OBJECT", + name: "ShippingPriceBulkDelete", + ofType: null, + }, + args: [ + { + name: "ids", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "shippingPriceCreate", + type: { + kind: "OBJECT", + name: "ShippingPriceCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "shippingPriceDelete", + type: { + kind: "OBJECT", + name: "ShippingPriceDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "shippingPriceExcludeProducts", + type: { + kind: "OBJECT", + name: "ShippingPriceExcludeProducts", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "shippingPriceRemoveProductFromExclude", + type: { + kind: "OBJECT", + name: "ShippingPriceRemoveProductFromExclude", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "products", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "shippingPriceTranslate", + type: { + kind: "OBJECT", + name: "ShippingPriceTranslate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "shippingPriceUpdate", + type: { + kind: "OBJECT", + name: "ShippingPriceUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "shippingZoneBulkDelete", + type: { + kind: "OBJECT", + name: "ShippingZoneBulkDelete", + ofType: null, + }, + args: [ + { + name: "ids", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "shippingZoneCreate", + type: { + kind: "OBJECT", + name: "ShippingZoneCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "shippingZoneDelete", + type: { + kind: "OBJECT", + name: "ShippingZoneDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "shippingZoneUpdate", + type: { + kind: "OBJECT", + name: "ShippingZoneUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "shopAddressUpdate", + type: { + kind: "OBJECT", + name: "ShopAddressUpdate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "shopDomainUpdate", + type: { + kind: "OBJECT", + name: "ShopDomainUpdate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "shopFetchTaxRates", + type: { + kind: "OBJECT", + name: "ShopFetchTaxRates", + ofType: null, + }, + args: [], + }, + { + name: "shopSettingsTranslate", + type: { + kind: "OBJECT", + name: "ShopSettingsTranslate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "shopSettingsUpdate", + type: { + kind: "OBJECT", + name: "ShopSettingsUpdate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "staffBulkDelete", + type: { + kind: "OBJECT", + name: "StaffBulkDelete", + ofType: null, + }, + args: [ + { + name: "ids", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "staffCreate", + type: { + kind: "OBJECT", + name: "StaffCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "staffDelete", + type: { + kind: "OBJECT", + name: "StaffDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "staffNotificationRecipientCreate", + type: { + kind: "OBJECT", + name: "StaffNotificationRecipientCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "staffNotificationRecipientDelete", + type: { + kind: "OBJECT", + name: "StaffNotificationRecipientDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "staffNotificationRecipientUpdate", + type: { + kind: "OBJECT", + name: "StaffNotificationRecipientUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "staffUpdate", + type: { + kind: "OBJECT", + name: "StaffUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "tokenCreate", + type: { + kind: "OBJECT", + name: "CreateToken", + ofType: null, + }, + args: [ + { + name: "email", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "password", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "tokenRefresh", + type: { + kind: "OBJECT", + name: "RefreshToken", + ofType: null, + }, + args: [ + { + name: "csrfToken", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "refreshToken", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "tokenVerify", + type: { + kind: "OBJECT", + name: "VerifyToken", + ofType: null, + }, + args: [ + { + name: "token", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "tokensDeactivateAll", + type: { + kind: "OBJECT", + name: "DeactivateAllUserTokens", + ofType: null, + }, + args: [], + }, + { + name: "transactionCreate", + type: { + kind: "OBJECT", + name: "TransactionCreate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "transaction", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "transactionEvent", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "transactionRequestAction", + type: { + kind: "OBJECT", + name: "TransactionRequestAction", + ofType: null, + }, + args: [ + { + name: "actionType", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "amount", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "transactionUpdate", + type: { + kind: "OBJECT", + name: "TransactionUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "transaction", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "transactionEvent", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "unassignWarehouseShippingZone", + type: { + kind: "OBJECT", + name: "WarehouseShippingZoneUnassign", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "shippingZoneIds", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "updateMetadata", + type: { + kind: "OBJECT", + name: "UpdateMetadata", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "updatePrivateMetadata", + type: { + kind: "OBJECT", + name: "UpdatePrivateMetadata", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "updateWarehouse", + type: { + kind: "OBJECT", + name: "WarehouseUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "userAvatarDelete", + type: { + kind: "OBJECT", + name: "UserAvatarDelete", + ofType: null, + }, + args: [], + }, + { + name: "userAvatarUpdate", + type: { + kind: "OBJECT", + name: "UserAvatarUpdate", + ofType: null, + }, + args: [ + { + name: "image", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "userBulkSetActive", + type: { + kind: "OBJECT", + name: "UserBulkSetActive", + ofType: null, + }, + args: [ + { + name: "ids", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + { + name: "isActive", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "variantMediaAssign", + type: { + kind: "OBJECT", + name: "VariantMediaAssign", + ofType: null, + }, + args: [ + { + name: "mediaId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "variantId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "variantMediaUnassign", + type: { + kind: "OBJECT", + name: "VariantMediaUnassign", + ofType: null, + }, + args: [ + { + name: "mediaId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "variantId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "voucherBulkDelete", + type: { + kind: "OBJECT", + name: "VoucherBulkDelete", + ofType: null, + }, + args: [ + { + name: "ids", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + }, + ], + }, + { + name: "voucherCataloguesAdd", + type: { + kind: "OBJECT", + name: "VoucherAddCatalogues", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "voucherCataloguesRemove", + type: { + kind: "OBJECT", + name: "VoucherRemoveCatalogues", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "voucherChannelListingUpdate", + type: { + kind: "OBJECT", + name: "VoucherChannelListingUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "voucherCreate", + type: { + kind: "OBJECT", + name: "VoucherCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "voucherDelete", + type: { + kind: "OBJECT", + name: "VoucherDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "voucherTranslate", + type: { + kind: "OBJECT", + name: "VoucherTranslate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "voucherUpdate", + type: { + kind: "OBJECT", + name: "VoucherUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "webhookCreate", + type: { + kind: "OBJECT", + name: "WebhookCreate", + ofType: null, + }, + args: [ + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "webhookDelete", + type: { + kind: "OBJECT", + name: "WebhookDelete", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "webhookUpdate", + type: { + kind: "OBJECT", + name: "WebhookUpdate", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "input", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + ], + interfaces: [], + }, + { + kind: "INTERFACE", + name: "Node", + fields: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + possibleTypes: [ + { + kind: "OBJECT", + name: "Address", + }, + { + kind: "OBJECT", + name: "Allocation", + }, + { + kind: "OBJECT", + name: "App", + }, + { + kind: "OBJECT", + name: "AppExtension", + }, + { + kind: "OBJECT", + name: "AppInstallation", + }, + { + kind: "OBJECT", + name: "AppToken", + }, + { + kind: "OBJECT", + name: "Attribute", + }, + { + kind: "OBJECT", + name: "AttributeTranslatableContent", + }, + { + kind: "OBJECT", + name: "AttributeTranslation", + }, + { + kind: "OBJECT", + name: "AttributeValue", + }, + { + kind: "OBJECT", + name: "AttributeValueTranslatableContent", + }, + { + kind: "OBJECT", + name: "AttributeValueTranslation", + }, + { + kind: "OBJECT", + name: "Category", + }, + { + kind: "OBJECT", + name: "CategoryTranslatableContent", + }, + { + kind: "OBJECT", + name: "CategoryTranslation", + }, + { + kind: "OBJECT", + name: "Channel", + }, + { + kind: "OBJECT", + name: "Checkout", + }, + { + kind: "OBJECT", + name: "CheckoutLine", + }, + { + kind: "OBJECT", + name: "Collection", + }, + { + kind: "OBJECT", + name: "CollectionChannelListing", + }, + { + kind: "OBJECT", + name: "CollectionTranslatableContent", + }, + { + kind: "OBJECT", + name: "CollectionTranslation", + }, + { + kind: "OBJECT", + name: "CustomerEvent", + }, + { + kind: "OBJECT", + name: "DigitalContent", + }, + { + kind: "OBJECT", + name: "DigitalContentUrl", + }, + { + kind: "OBJECT", + name: "EventDelivery", + }, + { + kind: "OBJECT", + name: "EventDeliveryAttempt", + }, + { + kind: "OBJECT", + name: "ExportEvent", + }, + { + kind: "OBJECT", + name: "ExportFile", + }, + { + kind: "OBJECT", + name: "Fulfillment", + }, + { + kind: "OBJECT", + name: "FulfillmentLine", + }, + { + kind: "OBJECT", + name: "GiftCard", + }, + { + kind: "OBJECT", + name: "GiftCardEvent", + }, + { + kind: "OBJECT", + name: "GiftCardTag", + }, + { + kind: "OBJECT", + name: "Group", + }, + { + kind: "OBJECT", + name: "Invoice", + }, + { + kind: "OBJECT", + name: "Menu", + }, + { + kind: "OBJECT", + name: "MenuItem", + }, + { + kind: "OBJECT", + name: "MenuItemTranslatableContent", + }, + { + kind: "OBJECT", + name: "MenuItemTranslation", + }, + { + kind: "OBJECT", + name: "Order", + }, + { + kind: "OBJECT", + name: "OrderDiscount", + }, + { + kind: "OBJECT", + name: "OrderEvent", + }, + { + kind: "OBJECT", + name: "OrderLine", + }, + { + kind: "OBJECT", + name: "Page", + }, + { + kind: "OBJECT", + name: "PageTranslatableContent", + }, + { + kind: "OBJECT", + name: "PageTranslation", + }, + { + kind: "OBJECT", + name: "PageType", + }, + { + kind: "OBJECT", + name: "Payment", + }, + { + kind: "OBJECT", + name: "Product", + }, + { + kind: "OBJECT", + name: "ProductChannelListing", + }, + { + kind: "OBJECT", + name: "ProductMedia", + }, + { + kind: "OBJECT", + name: "ProductTranslatableContent", + }, + { + kind: "OBJECT", + name: "ProductTranslation", + }, + { + kind: "OBJECT", + name: "ProductType", + }, + { + kind: "OBJECT", + name: "ProductVariant", + }, + { + kind: "OBJECT", + name: "ProductVariantChannelListing", + }, + { + kind: "OBJECT", + name: "ProductVariantTranslatableContent", + }, + { + kind: "OBJECT", + name: "ProductVariantTranslation", + }, + { + kind: "OBJECT", + name: "Sale", + }, + { + kind: "OBJECT", + name: "SaleChannelListing", + }, + { + kind: "OBJECT", + name: "SaleTranslatableContent", + }, + { + kind: "OBJECT", + name: "SaleTranslation", + }, + { + kind: "OBJECT", + name: "ShippingMethod", + }, + { + kind: "OBJECT", + name: "ShippingMethodChannelListing", + }, + { + kind: "OBJECT", + name: "ShippingMethodPostalCodeRule", + }, + { + kind: "OBJECT", + name: "ShippingMethodTranslatableContent", + }, + { + kind: "OBJECT", + name: "ShippingMethodTranslation", + }, + { + kind: "OBJECT", + name: "ShippingMethodType", + }, + { + kind: "OBJECT", + name: "ShippingZone", + }, + { + kind: "OBJECT", + name: "ShopTranslation", + }, + { + kind: "OBJECT", + name: "StaffNotificationRecipient", + }, + { + kind: "OBJECT", + name: "Stock", + }, + { + kind: "OBJECT", + name: "Transaction", + }, + { + kind: "OBJECT", + name: "TransactionEvent", + }, + { + kind: "OBJECT", + name: "TransactionItem", + }, + { + kind: "OBJECT", + name: "User", + }, + { + kind: "OBJECT", + name: "Voucher", + }, + { + kind: "OBJECT", + name: "VoucherChannelListing", + }, + { + kind: "OBJECT", + name: "VoucherTranslatableContent", + }, + { + kind: "OBJECT", + name: "VoucherTranslation", + }, + { + kind: "OBJECT", + name: "Warehouse", + }, + { + kind: "OBJECT", + name: "Webhook", + }, + ], + }, + { + kind: "INTERFACE", + name: "ObjectWithMetadata", + fields: [ + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "metafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "privateMetadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "privateMetafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + ], + interfaces: [], + possibleTypes: [ + { + kind: "OBJECT", + name: "App", + }, + { + kind: "OBJECT", + name: "Attribute", + }, + { + kind: "OBJECT", + name: "Category", + }, + { + kind: "OBJECT", + name: "Checkout", + }, + { + kind: "OBJECT", + name: "Collection", + }, + { + kind: "OBJECT", + name: "DigitalContent", + }, + { + kind: "OBJECT", + name: "Fulfillment", + }, + { + kind: "OBJECT", + name: "GiftCard", + }, + { + kind: "OBJECT", + name: "Invoice", + }, + { + kind: "OBJECT", + name: "Menu", + }, + { + kind: "OBJECT", + name: "MenuItem", + }, + { + kind: "OBJECT", + name: "Order", + }, + { + kind: "OBJECT", + name: "Page", + }, + { + kind: "OBJECT", + name: "PageType", + }, + { + kind: "OBJECT", + name: "Payment", + }, + { + kind: "OBJECT", + name: "Product", + }, + { + kind: "OBJECT", + name: "ProductType", + }, + { + kind: "OBJECT", + name: "ProductVariant", + }, + { + kind: "OBJECT", + name: "Sale", + }, + { + kind: "OBJECT", + name: "ShippingMethod", + }, + { + kind: "OBJECT", + name: "ShippingMethodType", + }, + { + kind: "OBJECT", + name: "ShippingZone", + }, + { + kind: "OBJECT", + name: "TransactionItem", + }, + { + kind: "OBJECT", + name: "User", + }, + { + kind: "OBJECT", + name: "Voucher", + }, + { + kind: "OBJECT", + name: "Warehouse", + }, + ], + }, + { + kind: "OBJECT", + name: "Order", + fields: [ + { + name: "actions", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + args: [], + }, + { + name: "authorizeStatus", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "availableCollectionPoints", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Warehouse", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "availableShippingMethods", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingMethod", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "billingAddress", + type: { + kind: "OBJECT", + name: "Address", + ofType: null, + }, + args: [], + }, + { + name: "canFinalize", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "channel", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Channel", + ofType: null, + }, + }, + args: [], + }, + { + name: "chargeStatus", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "collectionPointName", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "created", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "customerNote", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "deliveryMethod", + type: { + kind: "UNION", + name: "DeliveryMethod", + ofType: null, + }, + args: [], + }, + { + name: "discount", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + { + name: "discountName", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "discounts", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderDiscount", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "displayGrossPrices", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "events", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderEvent", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "fulfillments", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Fulfillment", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "giftCards", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GiftCard", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "invoices", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Invoice", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "isPaid", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "isShippingRequired", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "languageCodeEnum", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "lines", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderLine", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "metafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "number", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "origin", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "original", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "paymentStatus", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "paymentStatusDisplay", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "payments", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Payment", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "privateMetafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "redirectUrl", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "shippingAddress", + type: { + kind: "OBJECT", + name: "Address", + ofType: null, + }, + args: [], + }, + { + name: "shippingMethod", + type: { + kind: "OBJECT", + name: "ShippingMethod", + ofType: null, + }, + args: [], + }, + { + name: "shippingMethodName", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "shippingMethods", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingMethod", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shippingPrice", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TaxedMoney", + ofType: null, + }, + }, + args: [], + }, + { + name: "shippingTaxRate", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "status", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "statusDisplay", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "subtotal", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TaxedMoney", + ofType: null, + }, + }, + args: [], + }, + { + name: "token", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "total", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TaxedMoney", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalAuthorized", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalBalance", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCaptured", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + }, + args: [], + }, + { + name: "trackingClientId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "transactions", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TransactionItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "translatedDiscountName", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "undiscountedTotal", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TaxedMoney", + ofType: null, + }, + }, + args: [], + }, + { + name: "updatedAt", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + { + name: "userEmail", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "voucher", + type: { + kind: "OBJECT", + name: "Voucher", + ofType: null, + }, + args: [], + }, + { + name: "weight", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Weight", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + { + kind: "INTERFACE", + name: "ObjectWithMetadata", + }, + ], + }, + { + kind: "OBJECT", + name: "OrderAddNote", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "event", + type: { + kind: "OBJECT", + name: "OrderEvent", + ofType: null, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderBulkCancel", + fields: [ + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderCancel", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderCancelled", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "OrderCapture", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderConfirm", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderConfirmed", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "OrderCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderCreateFromCheckout", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderCreateFromCheckoutError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderCreateFromCheckoutError", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "lines", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "variants", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderCreated", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "OrderDiscount", + fields: [ + { + name: "amount", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "reason", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "translatedName", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "type", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "value", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "valueType", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "OrderDiscountAdd", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderDiscountDelete", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderDiscountUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderError", + fields: [ + { + name: "addressType", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "orderLines", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + { + name: "variants", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + { + name: "warehouse", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderEvent", + fields: [ + { + name: "amount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "app", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "composedId", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "date", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "discount", + type: { + kind: "OBJECT", + name: "OrderEventDiscountObject", + ofType: null, + }, + args: [], + }, + { + name: "email", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "emailType", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "fulfilledItems", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "FulfillmentLine", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "invoiceNumber", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "lines", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderEventOrderLineObject", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "orderNumber", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "oversoldItems", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + { + name: "paymentGateway", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "paymentId", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "quantity", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "reference", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "relatedOrder", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "shippingCostsIncluded", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "status", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "transactionReference", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "type", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + { + name: "warehouse", + type: { + kind: "OBJECT", + name: "Warehouse", + ofType: null, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "OrderEventCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderEventCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderEventCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderEvent", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderEventDiscountObject", + fields: [ + { + name: "amount", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + { + name: "oldAmount", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + { + name: "oldValue", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "oldValueType", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "reason", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "value", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "valueType", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderEventOrderLineObject", + fields: [ + { + name: "discount", + type: { + kind: "OBJECT", + name: "OrderEventDiscountObject", + ofType: null, + }, + args: [], + }, + { + name: "itemName", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "orderLine", + type: { + kind: "OBJECT", + name: "OrderLine", + ofType: null, + }, + args: [], + }, + { + name: "quantity", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderFulfill", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "fulfillments", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Fulfillment", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderFulfilled", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "OrderFullyPaid", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "OrderLine", + fields: [ + { + name: "allocations", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Allocation", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "digitalContentUrl", + type: { + kind: "OBJECT", + name: "DigitalContentUrl", + ofType: null, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "isShippingRequired", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "productName", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "productSku", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "productVariantId", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "quantity", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "quantityFulfilled", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "quantityToFulfill", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "taxRate", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "thumbnail", + type: { + kind: "OBJECT", + name: "Image", + ofType: null, + }, + args: [ + { + name: "size", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "totalPrice", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TaxedMoney", + ofType: null, + }, + }, + args: [], + }, + { + name: "translatedProductName", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "translatedVariantName", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "undiscountedUnitPrice", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TaxedMoney", + ofType: null, + }, + }, + args: [], + }, + { + name: "unitDiscount", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + }, + args: [], + }, + { + name: "unitDiscountReason", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "unitDiscountType", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "unitDiscountValue", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "unitPrice", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TaxedMoney", + ofType: null, + }, + }, + args: [], + }, + { + name: "variant", + type: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + args: [], + }, + { + name: "variantName", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "OrderLineDelete", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "orderLine", + type: { + kind: "OBJECT", + name: "OrderLine", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderLineDiscountRemove", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "orderLine", + type: { + kind: "OBJECT", + name: "OrderLine", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderLineDiscountUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "orderLine", + type: { + kind: "OBJECT", + name: "OrderLine", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderLineUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "orderLine", + type: { + kind: "OBJECT", + name: "OrderLine", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderLinesCreate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "orderLines", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderLine", + ofType: null, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderMarkAsPaid", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderRefund", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderSettings", + fields: [ + { + name: "automaticallyConfirmAllNewOrders", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "automaticallyFulfillNonShippableGiftCard", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderSettingsError", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderSettingsUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderSettingsError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "orderSettings", + type: { + kind: "OBJECT", + name: "OrderSettings", + ofType: null, + }, + args: [], + }, + { + name: "orderSettingsErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderSettingsError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderUpdateShipping", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "OrderUpdated", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "OrderVoid", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "orderErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "OrderError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "Page", + fields: [ + { + name: "attributes", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "SelectedAttribute", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "content", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "contentJson", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "created", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "isPublished", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "metafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "pageType", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageType", + ofType: null, + }, + }, + args: [], + }, + { + name: "privateMetadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "privateMetafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "publicationDate", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "publishedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "seoDescription", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "seoTitle", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "slug", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "title", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "translation", + type: { + kind: "OBJECT", + name: "PageTranslation", + ofType: null, + }, + args: [ + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + { + kind: "INTERFACE", + name: "ObjectWithMetadata", + }, + ], + }, + { + kind: "OBJECT", + name: "PageAttributeAssign", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageType", + type: { + kind: "OBJECT", + name: "PageType", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PageAttributeUnassign", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageType", + type: { + kind: "OBJECT", + name: "PageType", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PageBulkDelete", + fields: [ + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PageBulkPublish", + fields: [ + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PageCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PageCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Page", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PageCreate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "page", + type: { + kind: "OBJECT", + name: "Page", + ofType: null, + }, + args: [], + }, + { + name: "pageErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PageCreated", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "page", + type: { + kind: "OBJECT", + name: "Page", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "PageDelete", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "page", + type: { + kind: "OBJECT", + name: "Page", + ofType: null, + }, + args: [], + }, + { + name: "pageErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PageDeleted", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "page", + type: { + kind: "OBJECT", + name: "Page", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "PageError", + fields: [ + { + name: "attributes", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "values", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PageInfo", + fields: [ + { + name: "endCursor", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "hasNextPage", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "hasPreviousPage", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "startCursor", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PageReorderAttributeValues", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "page", + type: { + kind: "OBJECT", + name: "Page", + ofType: null, + }, + args: [], + }, + { + name: "pageErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PageTranslatableContent", + fields: [ + { + name: "attributeValues", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AttributeValueTranslatableContent", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "content", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "contentJson", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "page", + type: { + kind: "OBJECT", + name: "Page", + ofType: null, + }, + args: [], + }, + { + name: "seoDescription", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "seoTitle", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "title", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "translation", + type: { + kind: "OBJECT", + name: "PageTranslation", + ofType: null, + }, + args: [ + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "PageTranslate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TranslationError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "page", + type: { + kind: "OBJECT", + name: "PageTranslatableContent", + ofType: null, + }, + args: [], + }, + { + name: "translationErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TranslationError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PageTranslation", + fields: [ + { + name: "content", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "contentJson", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "language", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "LanguageDisplay", + ofType: null, + }, + }, + args: [], + }, + { + name: "seoDescription", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "seoTitle", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "title", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "PageType", + fields: [ + { + name: "attributes", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Attribute", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "availableAttributes", + type: { + kind: "OBJECT", + name: "AttributeCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "hasPages", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "metafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "privateMetadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "privateMetafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "slug", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + { + kind: "INTERFACE", + name: "ObjectWithMetadata", + }, + ], + }, + { + kind: "OBJECT", + name: "PageTypeBulkDelete", + fields: [ + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PageTypeCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageTypeCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PageTypeCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageType", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PageTypeCreate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageType", + type: { + kind: "OBJECT", + name: "PageType", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PageTypeDelete", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageType", + type: { + kind: "OBJECT", + name: "PageType", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PageTypeReorderAttributes", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageType", + type: { + kind: "OBJECT", + name: "PageType", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PageTypeUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageType", + type: { + kind: "OBJECT", + name: "PageType", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PageUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "page", + type: { + kind: "OBJECT", + name: "Page", + ofType: null, + }, + args: [], + }, + { + name: "pageErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PageUpdated", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "page", + type: { + kind: "OBJECT", + name: "Page", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "PasswordChange", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "Payment", + fields: [ + { + name: "actions", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + args: [], + }, + { + name: "availableCaptureAmount", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + { + name: "availableRefundAmount", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + { + name: "capturedAmount", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + { + name: "chargeStatus", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "checkout", + type: { + kind: "OBJECT", + name: "Checkout", + ofType: null, + }, + args: [], + }, + { + name: "created", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "creditCard", + type: { + kind: "OBJECT", + name: "CreditCard", + ofType: null, + }, + args: [], + }, + { + name: "customerIpAddress", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "gateway", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "isActive", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "metafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "modified", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [], + }, + { + name: "paymentMethodType", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "privateMetadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "privateMetafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "token", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "total", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + { + name: "transactions", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Transaction", + ofType: null, + }, + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + { + kind: "INTERFACE", + name: "ObjectWithMetadata", + }, + ], + }, + { + kind: "OBJECT", + name: "PaymentCapture", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PaymentError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "payment", + type: { + kind: "OBJECT", + name: "Payment", + ofType: null, + }, + args: [], + }, + { + name: "paymentErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PaymentError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PaymentCheckBalance", + fields: [ + { + name: "data", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PaymentError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "paymentErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PaymentError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PaymentCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PaymentCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PaymentCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Payment", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PaymentError", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "variants", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PaymentGateway", + fields: [ + { + name: "config", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GatewayConfigLine", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "currencies", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PaymentInitialize", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PaymentError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "initializedPayment", + type: { + kind: "OBJECT", + name: "PaymentInitialized", + ofType: null, + }, + args: [], + }, + { + name: "paymentErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PaymentError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PaymentInitialized", + fields: [ + { + name: "data", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "gateway", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PaymentRefund", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PaymentError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "payment", + type: { + kind: "OBJECT", + name: "Payment", + ofType: null, + }, + args: [], + }, + { + name: "paymentErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PaymentError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PaymentSource", + fields: [ + { + name: "creditCardInfo", + type: { + kind: "OBJECT", + name: "CreditCard", + ofType: null, + }, + args: [], + }, + { + name: "gateway", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "paymentMethodId", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PaymentVoid", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PaymentError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "payment", + type: { + kind: "OBJECT", + name: "Payment", + ofType: null, + }, + args: [], + }, + { + name: "paymentErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PaymentError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "Permission", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PermissionGroupCreate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PermissionGroupError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "group", + type: { + kind: "OBJECT", + name: "Group", + ofType: null, + }, + args: [], + }, + { + name: "permissionGroupErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PermissionGroupError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PermissionGroupDelete", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PermissionGroupError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "group", + type: { + kind: "OBJECT", + name: "Group", + ofType: null, + }, + args: [], + }, + { + name: "permissionGroupErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PermissionGroupError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PermissionGroupError", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "permissions", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + { + name: "users", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PermissionGroupUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PermissionGroupError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "group", + type: { + kind: "OBJECT", + name: "Group", + ofType: null, + }, + args: [], + }, + { + name: "permissionGroupErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PermissionGroupError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "Plugin", + fields: [ + { + name: "channelConfigurations", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PluginConfiguration", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "description", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "globalConfiguration", + type: { + kind: "OBJECT", + name: "PluginConfiguration", + ofType: null, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PluginConfiguration", + fields: [ + { + name: "active", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "channel", + type: { + kind: "OBJECT", + name: "Channel", + ofType: null, + }, + args: [], + }, + { + name: "configuration", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ConfigurationItem", + ofType: null, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PluginCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PluginCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PluginCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Plugin", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PluginError", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PluginUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PluginError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "plugin", + type: { + kind: "OBJECT", + name: "Plugin", + ofType: null, + }, + args: [], + }, + { + name: "pluginsErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PluginError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PreorderData", + fields: [ + { + name: "endDate", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "globalSoldUnits", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "globalThreshold", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "PreorderThreshold", + fields: [ + { + name: "quantity", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "soldUnits", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "Product", + fields: [ + { + name: "attributes", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "SelectedAttribute", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "availableForPurchase", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "availableForPurchaseAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "category", + type: { + kind: "OBJECT", + name: "Category", + ofType: null, + }, + args: [], + }, + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "channelListings", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductChannelListing", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "chargeTaxes", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "collections", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Collection", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "created", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "defaultVariant", + type: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + args: [], + }, + { + name: "description", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "descriptionJson", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "imageById", + type: { + kind: "OBJECT", + name: "ProductImage", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "images", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductImage", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "isAvailable", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "address", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "isAvailableForPurchase", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "media", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductMedia", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "mediaById", + type: { + kind: "OBJECT", + name: "ProductMedia", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "metafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "pricing", + type: { + kind: "OBJECT", + name: "ProductPricingInfo", + ofType: null, + }, + args: [ + { + name: "address", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "privateMetadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "privateMetafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "productType", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductType", + ofType: null, + }, + }, + args: [], + }, + { + name: "rating", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "seoDescription", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "seoTitle", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "slug", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "taxType", + type: { + kind: "OBJECT", + name: "TaxType", + ofType: null, + }, + args: [], + }, + { + name: "thumbnail", + type: { + kind: "OBJECT", + name: "Image", + ofType: null, + }, + args: [ + { + name: "size", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "translation", + type: { + kind: "OBJECT", + name: "ProductTranslation", + ofType: null, + }, + args: [ + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "updatedAt", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "variants", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "weight", + type: { + kind: "OBJECT", + name: "Weight", + ofType: null, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + { + kind: "INTERFACE", + name: "ObjectWithMetadata", + }, + ], + }, + { + kind: "OBJECT", + name: "ProductAttributeAssign", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productType", + type: { + kind: "OBJECT", + name: "ProductType", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductAttributeAssignmentUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productType", + type: { + kind: "OBJECT", + name: "ProductType", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductAttributeUnassign", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productType", + type: { + kind: "OBJECT", + name: "ProductType", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductBulkDelete", + fields: [ + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductChannelListing", + fields: [ + { + name: "availableForPurchase", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "availableForPurchaseAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "channel", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Channel", + ofType: null, + }, + }, + args: [], + }, + { + name: "discountedPrice", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "isAvailableForPurchase", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "isPublished", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "margin", + type: { + kind: "OBJECT", + name: "Margin", + ofType: null, + }, + args: [], + }, + { + name: "pricing", + type: { + kind: "OBJECT", + name: "ProductPricingInfo", + ofType: null, + }, + args: [ + { + name: "address", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "publicationDate", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "publishedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "purchaseCost", + type: { + kind: "OBJECT", + name: "MoneyRange", + ofType: null, + }, + args: [], + }, + { + name: "visibleInListings", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "ProductChannelListingError", + fields: [ + { + name: "attributes", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + { + name: "channels", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "values", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + { + name: "variants", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductChannelListingUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductChannelListingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "product", + type: { + kind: "OBJECT", + name: "Product", + ofType: null, + }, + args: [], + }, + { + name: "productChannelListingErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductChannelListingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Product", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductCreate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "product", + type: { + kind: "OBJECT", + name: "Product", + ofType: null, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductCreated", + fields: [ + { + name: "category", + type: { + kind: "OBJECT", + name: "Category", + ofType: null, + }, + args: [], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "product", + type: { + kind: "OBJECT", + name: "Product", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "ProductDelete", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "product", + type: { + kind: "OBJECT", + name: "Product", + ofType: null, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductDeleted", + fields: [ + { + name: "category", + type: { + kind: "OBJECT", + name: "Category", + ofType: null, + }, + args: [], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "product", + type: { + kind: "OBJECT", + name: "Product", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "ProductError", + fields: [ + { + name: "attributes", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "values", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductImage", + fields: [ + { + name: "alt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "sortOrder", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "url", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [ + { + name: "size", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductMedia", + fields: [ + { + name: "alt", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "oembedData", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "sortOrder", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "type", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "url", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [ + { + name: "size", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "ProductMediaBulkDelete", + fields: [ + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductMediaCreate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "media", + type: { + kind: "OBJECT", + name: "ProductMedia", + ofType: null, + }, + args: [], + }, + { + name: "product", + type: { + kind: "OBJECT", + name: "Product", + ofType: null, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductMediaDelete", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "media", + type: { + kind: "OBJECT", + name: "ProductMedia", + ofType: null, + }, + args: [], + }, + { + name: "product", + type: { + kind: "OBJECT", + name: "Product", + ofType: null, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductMediaReorder", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "media", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductMedia", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "product", + type: { + kind: "OBJECT", + name: "Product", + ofType: null, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductMediaUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "media", + type: { + kind: "OBJECT", + name: "ProductMedia", + ofType: null, + }, + args: [], + }, + { + name: "product", + type: { + kind: "OBJECT", + name: "Product", + ofType: null, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductPricingInfo", + fields: [ + { + name: "discount", + type: { + kind: "OBJECT", + name: "TaxedMoney", + ofType: null, + }, + args: [], + }, + { + name: "discountLocalCurrency", + type: { + kind: "OBJECT", + name: "TaxedMoney", + ofType: null, + }, + args: [], + }, + { + name: "onSale", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "priceRange", + type: { + kind: "OBJECT", + name: "TaxedMoneyRange", + ofType: null, + }, + args: [], + }, + { + name: "priceRangeLocalCurrency", + type: { + kind: "OBJECT", + name: "TaxedMoneyRange", + ofType: null, + }, + args: [], + }, + { + name: "priceRangeUndiscounted", + type: { + kind: "OBJECT", + name: "TaxedMoneyRange", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductReorderAttributeValues", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "product", + type: { + kind: "OBJECT", + name: "Product", + ofType: null, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductTranslatableContent", + fields: [ + { + name: "attributeValues", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AttributeValueTranslatableContent", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "description", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "descriptionJson", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "product", + type: { + kind: "OBJECT", + name: "Product", + ofType: null, + }, + args: [], + }, + { + name: "seoDescription", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "seoTitle", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "translation", + type: { + kind: "OBJECT", + name: "ProductTranslation", + ofType: null, + }, + args: [ + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "ProductTranslate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TranslationError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "product", + type: { + kind: "OBJECT", + name: "Product", + ofType: null, + }, + args: [], + }, + { + name: "translationErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TranslationError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductTranslation", + fields: [ + { + name: "description", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "descriptionJson", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "language", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "LanguageDisplay", + ofType: null, + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "seoDescription", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "seoTitle", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "ProductType", + fields: [ + { + name: "assignedVariantAttributes", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AssignedVariantAttribute", + ofType: null, + }, + }, + }, + args: [ + { + name: "variantSelection", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "availableAttributes", + type: { + kind: "OBJECT", + name: "AttributeCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "hasVariants", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "isDigital", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "isShippingRequired", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "kind", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "metafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "privateMetadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "privateMetafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "productAttributes", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Attribute", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "products", + type: { + kind: "OBJECT", + name: "ProductCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "slug", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "taxType", + type: { + kind: "OBJECT", + name: "TaxType", + ofType: null, + }, + args: [], + }, + { + name: "variantAttributes", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Attribute", + ofType: null, + }, + }, + }, + args: [ + { + name: "variantSelection", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "weight", + type: { + kind: "OBJECT", + name: "Weight", + ofType: null, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + { + kind: "INTERFACE", + name: "ObjectWithMetadata", + }, + ], + }, + { + kind: "OBJECT", + name: "ProductTypeBulkDelete", + fields: [ + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductTypeCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductTypeCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductTypeCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductType", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductTypeCreate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productType", + type: { + kind: "OBJECT", + name: "ProductType", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductTypeDelete", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productType", + type: { + kind: "OBJECT", + name: "ProductType", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductTypeReorderAttributes", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productType", + type: { + kind: "OBJECT", + name: "ProductType", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductTypeUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productType", + type: { + kind: "OBJECT", + name: "ProductType", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "product", + type: { + kind: "OBJECT", + name: "Product", + ofType: null, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductUpdated", + fields: [ + { + name: "category", + type: { + kind: "OBJECT", + name: "Category", + ofType: null, + }, + args: [], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "product", + type: { + kind: "OBJECT", + name: "Product", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "ProductVariant", + fields: [ + { + name: "attributes", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "SelectedAttribute", + ofType: null, + }, + }, + }, + }, + args: [ + { + name: "variantSelection", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "channelListings", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductVariantChannelListing", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "created", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "digitalContent", + type: { + kind: "OBJECT", + name: "DigitalContent", + ofType: null, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "images", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductImage", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "margin", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "media", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductMedia", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "metafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "preorder", + type: { + kind: "OBJECT", + name: "PreorderData", + ofType: null, + }, + args: [], + }, + { + name: "pricing", + type: { + kind: "OBJECT", + name: "VariantPricingInfo", + ofType: null, + }, + args: [ + { + name: "address", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "privateMetadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "privateMetafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "product", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Product", + ofType: null, + }, + }, + args: [], + }, + { + name: "quantityAvailable", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "address", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "countryCode", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "quantityLimitPerCustomer", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "quantityOrdered", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "revenue", + type: { + kind: "OBJECT", + name: "TaxedMoney", + ofType: null, + }, + args: [ + { + name: "period", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "sku", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "stocks", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Stock", + ofType: null, + }, + }, + }, + args: [ + { + name: "address", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "countryCode", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "trackInventory", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "translation", + type: { + kind: "OBJECT", + name: "ProductVariantTranslation", + ofType: null, + }, + args: [ + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "updatedAt", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "weight", + type: { + kind: "OBJECT", + name: "Weight", + ofType: null, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + { + kind: "INTERFACE", + name: "ObjectWithMetadata", + }, + ], + }, + { + kind: "OBJECT", + name: "ProductVariantBackInStock", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "productVariant", + type: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "warehouse", + type: { + kind: "OBJECT", + name: "Warehouse", + ofType: null, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "ProductVariantBulkCreate", + fields: [ + { + name: "bulkProductErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "BulkProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "BulkProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productVariants", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductVariantBulkDelete", + fields: [ + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductVariantChannelListing", + fields: [ + { + name: "channel", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Channel", + ofType: null, + }, + }, + args: [], + }, + { + name: "costPrice", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "margin", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "preorderThreshold", + type: { + kind: "OBJECT", + name: "PreorderThreshold", + ofType: null, + }, + args: [], + }, + { + name: "price", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "ProductVariantChannelListingUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductChannelListingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productChannelListingErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductChannelListingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "variant", + type: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductVariantCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductVariantCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductVariantCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductVariantCreate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productVariant", + type: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductVariantCreated", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "productVariant", + type: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "ProductVariantDelete", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productVariant", + type: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductVariantDeleted", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "productVariant", + type: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "ProductVariantOutOfStock", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "productVariant", + type: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "warehouse", + type: { + kind: "OBJECT", + name: "Warehouse", + ofType: null, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "ProductVariantPreorderDeactivate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productVariant", + type: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductVariantReorder", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "product", + type: { + kind: "OBJECT", + name: "Product", + ofType: null, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductVariantReorderAttributeValues", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productVariant", + type: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductVariantSetDefault", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "product", + type: { + kind: "OBJECT", + name: "Product", + ofType: null, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductVariantStocksCreate", + fields: [ + { + name: "bulkStockErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "BulkStockError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "BulkStockError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productVariant", + type: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductVariantStocksDelete", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "StockError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productVariant", + type: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + args: [], + }, + { + name: "stockErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "StockError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductVariantStocksUpdate", + fields: [ + { + name: "bulkStockErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "BulkStockError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "BulkStockError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productVariant", + type: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductVariantTranslatableContent", + fields: [ + { + name: "attributeValues", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AttributeValueTranslatableContent", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "productVariant", + type: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + args: [], + }, + { + name: "translation", + type: { + kind: "OBJECT", + name: "ProductVariantTranslation", + ofType: null, + }, + args: [ + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "ProductVariantTranslate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TranslationError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productVariant", + type: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + args: [], + }, + { + name: "translationErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TranslationError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductVariantTranslation", + fields: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "language", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "LanguageDisplay", + ofType: null, + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "ProductVariantUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productVariant", + type: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ProductVariantUpdated", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "productVariant", + type: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "Query", + fields: [ + { + name: "_entities", + type: { + kind: "LIST", + ofType: { + kind: "UNION", + name: "_Entity", + ofType: null, + }, + }, + args: [ + { + name: "representations", + type: { + kind: "LIST", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "_service", + type: { + kind: "OBJECT", + name: "_Service", + ofType: null, + }, + args: [], + }, + { + name: "address", + type: { + kind: "OBJECT", + name: "Address", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "addressValidationRules", + type: { + kind: "OBJECT", + name: "AddressValidationData", + ofType: null, + }, + args: [ + { + name: "city", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "cityArea", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "countryArea", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "countryCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "app", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "appExtension", + type: { + kind: "OBJECT", + name: "AppExtension", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "appExtensions", + type: { + kind: "OBJECT", + name: "AppExtensionCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "apps", + type: { + kind: "OBJECT", + name: "AppCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sortBy", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "appsInstallations", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AppInstallation", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "attribute", + type: { + kind: "OBJECT", + name: "Attribute", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "slug", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "attributes", + type: { + kind: "OBJECT", + name: "AttributeCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sortBy", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "categories", + type: { + kind: "OBJECT", + name: "CategoryCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "level", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sortBy", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "category", + type: { + kind: "OBJECT", + name: "Category", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "slug", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "channel", + type: { + kind: "OBJECT", + name: "Channel", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "channels", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Channel", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "checkout", + type: { + kind: "OBJECT", + name: "Checkout", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "token", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "checkoutLines", + type: { + kind: "OBJECT", + name: "CheckoutLineCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "checkouts", + type: { + kind: "OBJECT", + name: "CheckoutCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sortBy", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "collection", + type: { + kind: "OBJECT", + name: "Collection", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "slug", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "collections", + type: { + kind: "OBJECT", + name: "CollectionCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sortBy", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "customers", + type: { + kind: "OBJECT", + name: "UserCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sortBy", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "digitalContent", + type: { + kind: "OBJECT", + name: "DigitalContent", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "digitalContents", + type: { + kind: "OBJECT", + name: "DigitalContentCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "draftOrders", + type: { + kind: "OBJECT", + name: "OrderCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sortBy", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "exportFile", + type: { + kind: "OBJECT", + name: "ExportFile", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "exportFiles", + type: { + kind: "OBJECT", + name: "ExportFileCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sortBy", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "giftCard", + type: { + kind: "OBJECT", + name: "GiftCard", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "giftCardCurrencies", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + args: [], + }, + { + name: "giftCardSettings", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "GiftCardSettings", + ofType: null, + }, + }, + args: [], + }, + { + name: "giftCardTags", + type: { + kind: "OBJECT", + name: "GiftCardTagCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "giftCards", + type: { + kind: "OBJECT", + name: "GiftCardCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sortBy", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "homepageEvents", + type: { + kind: "OBJECT", + name: "OrderEventCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "me", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + { + name: "menu", + type: { + kind: "OBJECT", + name: "Menu", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "name", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "slug", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "menuItem", + type: { + kind: "OBJECT", + name: "MenuItem", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "menuItems", + type: { + kind: "OBJECT", + name: "MenuItemCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sortBy", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "menus", + type: { + kind: "OBJECT", + name: "MenuCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sortBy", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "order", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "orderByToken", + type: { + kind: "OBJECT", + name: "Order", + ofType: null, + }, + args: [ + { + name: "token", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "orderSettings", + type: { + kind: "OBJECT", + name: "OrderSettings", + ofType: null, + }, + args: [], + }, + { + name: "orders", + type: { + kind: "OBJECT", + name: "OrderCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sortBy", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "ordersTotal", + type: { + kind: "OBJECT", + name: "TaxedMoney", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "period", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "page", + type: { + kind: "OBJECT", + name: "Page", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "slug", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "pageType", + type: { + kind: "OBJECT", + name: "PageType", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "pageTypes", + type: { + kind: "OBJECT", + name: "PageTypeCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sortBy", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "pages", + type: { + kind: "OBJECT", + name: "PageCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sortBy", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "payment", + type: { + kind: "OBJECT", + name: "Payment", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "payments", + type: { + kind: "OBJECT", + name: "PaymentCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "permissionGroup", + type: { + kind: "OBJECT", + name: "Group", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "permissionGroups", + type: { + kind: "OBJECT", + name: "GroupCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sortBy", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "plugin", + type: { + kind: "OBJECT", + name: "Plugin", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "plugins", + type: { + kind: "OBJECT", + name: "PluginCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sortBy", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "product", + type: { + kind: "OBJECT", + name: "Product", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "slug", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "productType", + type: { + kind: "OBJECT", + name: "ProductType", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "productTypes", + type: { + kind: "OBJECT", + name: "ProductTypeCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sortBy", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "productVariant", + type: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sku", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "productVariants", + type: { + kind: "OBJECT", + name: "ProductVariantCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "ids", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sortBy", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "products", + type: { + kind: "OBJECT", + name: "ProductCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sortBy", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "reportProductSales", + type: { + kind: "OBJECT", + name: "ProductVariantCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "channel", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "period", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "sale", + type: { + kind: "OBJECT", + name: "Sale", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "sales", + type: { + kind: "OBJECT", + name: "SaleCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "query", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sortBy", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "shippingZone", + type: { + kind: "OBJECT", + name: "ShippingZone", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "shippingZones", + type: { + kind: "OBJECT", + name: "ShippingZoneCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "shop", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Shop", + ofType: null, + }, + }, + args: [], + }, + { + name: "staffUsers", + type: { + kind: "OBJECT", + name: "UserCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sortBy", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "stock", + type: { + kind: "OBJECT", + name: "Stock", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "stocks", + type: { + kind: "OBJECT", + name: "StockCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "taxTypes", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TaxType", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "translation", + type: { + kind: "UNION", + name: "TranslatableItem", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "kind", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "translations", + type: { + kind: "OBJECT", + name: "TranslatableItemConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "kind", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [ + { + name: "email", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "id", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "voucher", + type: { + kind: "OBJECT", + name: "Voucher", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "vouchers", + type: { + kind: "OBJECT", + name: "VoucherCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "query", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sortBy", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "warehouse", + type: { + kind: "OBJECT", + name: "Warehouse", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "warehouses", + type: { + kind: "OBJECT", + name: "WarehouseCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sortBy", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "webhook", + type: { + kind: "OBJECT", + name: "Webhook", + ofType: null, + }, + args: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "webhookEvents", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "WebhookEvent", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "webhookSamplePayload", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "eventType", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ReducedRate", + fields: [ + { + name: "rate", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "rateType", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "RefreshToken", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "token", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "RequestEmailChange", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "RequestPasswordReset", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "Sale", + fields: [ + { + name: "categories", + type: { + kind: "OBJECT", + name: "CategoryCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "channelListings", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "SaleChannelListing", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "collections", + type: { + kind: "OBJECT", + name: "CollectionCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "created", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "currency", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "discountValue", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "endDate", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "metafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "privateMetadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "privateMetafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "products", + type: { + kind: "OBJECT", + name: "ProductCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "startDate", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "translation", + type: { + kind: "OBJECT", + name: "SaleTranslation", + ofType: null, + }, + args: [ + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "type", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "updatedAt", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "variants", + type: { + kind: "OBJECT", + name: "ProductVariantCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + { + kind: "INTERFACE", + name: "ObjectWithMetadata", + }, + ], + }, + { + kind: "OBJECT", + name: "SaleAddCatalogues", + fields: [ + { + name: "discountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "sale", + type: { + kind: "OBJECT", + name: "Sale", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "SaleBulkDelete", + fields: [ + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "discountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "SaleChannelListing", + fields: [ + { + name: "channel", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Channel", + ofType: null, + }, + }, + args: [], + }, + { + name: "currency", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "discountValue", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "SaleChannelListingUpdate", + fields: [ + { + name: "discountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "sale", + type: { + kind: "OBJECT", + name: "Sale", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "SaleCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "SaleCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "SaleCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Sale", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "SaleCreate", + fields: [ + { + name: "discountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "sale", + type: { + kind: "OBJECT", + name: "Sale", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "SaleCreated", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "sale", + type: { + kind: "OBJECT", + name: "Sale", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "SaleDelete", + fields: [ + { + name: "discountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "sale", + type: { + kind: "OBJECT", + name: "Sale", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "SaleDeleted", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "sale", + type: { + kind: "OBJECT", + name: "Sale", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "SaleRemoveCatalogues", + fields: [ + { + name: "discountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "sale", + type: { + kind: "OBJECT", + name: "Sale", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "SaleTranslatableContent", + fields: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "sale", + type: { + kind: "OBJECT", + name: "Sale", + ofType: null, + }, + args: [], + }, + { + name: "translation", + type: { + kind: "OBJECT", + name: "SaleTranslation", + ofType: null, + }, + args: [ + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "SaleTranslate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TranslationError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "sale", + type: { + kind: "OBJECT", + name: "Sale", + ofType: null, + }, + args: [], + }, + { + name: "translationErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TranslationError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "SaleTranslation", + fields: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "language", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "LanguageDisplay", + ofType: null, + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "SaleUpdate", + fields: [ + { + name: "discountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "sale", + type: { + kind: "OBJECT", + name: "Sale", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "SaleUpdated", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "sale", + type: { + kind: "OBJECT", + name: "Sale", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "SelectedAttribute", + fields: [ + { + name: "attribute", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Attribute", + ofType: null, + }, + }, + args: [], + }, + { + name: "values", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AttributeValue", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "SetPassword", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "csrfToken", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "refreshToken", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "token", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ShippingError", + fields: [ + { + name: "channels", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "warehouses", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ShippingMethod", + fields: [ + { + name: "active", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "description", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "maximumDeliveryDays", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "maximumOrderPrice", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + { + name: "maximumOrderWeight", + type: { + kind: "OBJECT", + name: "Weight", + ofType: null, + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "metafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "minimumDeliveryDays", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "minimumOrderPrice", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + { + name: "minimumOrderWeight", + type: { + kind: "OBJECT", + name: "Weight", + ofType: null, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "price", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + }, + args: [], + }, + { + name: "privateMetadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "privateMetafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "translation", + type: { + kind: "OBJECT", + name: "ShippingMethodTranslation", + ofType: null, + }, + args: [ + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "type", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + { + kind: "INTERFACE", + name: "ObjectWithMetadata", + }, + ], + }, + { + kind: "OBJECT", + name: "ShippingMethodChannelListing", + fields: [ + { + name: "channel", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Channel", + ofType: null, + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "maximumOrderPrice", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + { + name: "minimumOrderPrice", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + { + name: "price", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "ShippingMethodChannelListingUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shippingErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shippingMethod", + type: { + kind: "OBJECT", + name: "ShippingMethodType", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ShippingMethodPostalCodeRule", + fields: [ + { + name: "end", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "inclusionType", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "start", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "ShippingMethodTranslatableContent", + fields: [ + { + name: "description", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "shippingMethod", + type: { + kind: "OBJECT", + name: "ShippingMethodType", + ofType: null, + }, + args: [], + }, + { + name: "translation", + type: { + kind: "OBJECT", + name: "ShippingMethodTranslation", + ofType: null, + }, + args: [ + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "ShippingMethodTranslation", + fields: [ + { + name: "description", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "language", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "LanguageDisplay", + ofType: null, + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "ShippingMethodType", + fields: [ + { + name: "channelListings", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingMethodChannelListing", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "description", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "excludedProducts", + type: { + kind: "OBJECT", + name: "ProductCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "maximumDeliveryDays", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "maximumOrderPrice", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + { + name: "maximumOrderWeight", + type: { + kind: "OBJECT", + name: "Weight", + ofType: null, + }, + args: [], + }, + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "metafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "minimumDeliveryDays", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "minimumOrderPrice", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + { + name: "minimumOrderWeight", + type: { + kind: "OBJECT", + name: "Weight", + ofType: null, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "postalCodeRules", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingMethodPostalCodeRule", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "privateMetadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "privateMetafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "translation", + type: { + kind: "OBJECT", + name: "ShippingMethodTranslation", + ofType: null, + }, + args: [ + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "type", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + { + kind: "INTERFACE", + name: "ObjectWithMetadata", + }, + ], + }, + { + kind: "OBJECT", + name: "ShippingPriceBulkDelete", + fields: [ + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shippingErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ShippingPriceCreate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shippingErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shippingMethod", + type: { + kind: "OBJECT", + name: "ShippingMethodType", + ofType: null, + }, + args: [], + }, + { + name: "shippingZone", + type: { + kind: "OBJECT", + name: "ShippingZone", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ShippingPriceCreated", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "shippingMethod", + type: { + kind: "OBJECT", + name: "ShippingMethodType", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "shippingZone", + type: { + kind: "OBJECT", + name: "ShippingZone", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "ShippingPriceDelete", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shippingErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shippingMethod", + type: { + kind: "OBJECT", + name: "ShippingMethodType", + ofType: null, + }, + args: [], + }, + { + name: "shippingZone", + type: { + kind: "OBJECT", + name: "ShippingZone", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ShippingPriceDeleted", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "shippingMethod", + type: { + kind: "OBJECT", + name: "ShippingMethodType", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "shippingZone", + type: { + kind: "OBJECT", + name: "ShippingZone", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "ShippingPriceExcludeProducts", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shippingErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shippingMethod", + type: { + kind: "OBJECT", + name: "ShippingMethodType", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ShippingPriceRemoveProductFromExclude", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shippingErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shippingMethod", + type: { + kind: "OBJECT", + name: "ShippingMethodType", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ShippingPriceTranslate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TranslationError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shippingMethod", + type: { + kind: "OBJECT", + name: "ShippingMethodType", + ofType: null, + }, + args: [], + }, + { + name: "translationErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TranslationError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ShippingPriceUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shippingErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shippingMethod", + type: { + kind: "OBJECT", + name: "ShippingMethodType", + ofType: null, + }, + args: [], + }, + { + name: "shippingZone", + type: { + kind: "OBJECT", + name: "ShippingZone", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ShippingPriceUpdated", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "shippingMethod", + type: { + kind: "OBJECT", + name: "ShippingMethodType", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "shippingZone", + type: { + kind: "OBJECT", + name: "ShippingZone", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "ShippingZone", + fields: [ + { + name: "channels", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Channel", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "countries", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CountryDisplay", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "default", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "description", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "metafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "priceRange", + type: { + kind: "OBJECT", + name: "MoneyRange", + ofType: null, + }, + args: [], + }, + { + name: "privateMetadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "privateMetafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "shippingMethods", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingMethodType", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "warehouses", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Warehouse", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + { + kind: "INTERFACE", + name: "ObjectWithMetadata", + }, + ], + }, + { + kind: "OBJECT", + name: "ShippingZoneBulkDelete", + fields: [ + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shippingErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ShippingZoneCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingZoneCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ShippingZoneCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingZone", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ShippingZoneCreate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shippingErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shippingZone", + type: { + kind: "OBJECT", + name: "ShippingZone", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ShippingZoneCreated", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "shippingZone", + type: { + kind: "OBJECT", + name: "ShippingZone", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "ShippingZoneDelete", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shippingErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shippingZone", + type: { + kind: "OBJECT", + name: "ShippingZone", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ShippingZoneDeleted", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "shippingZone", + type: { + kind: "OBJECT", + name: "ShippingZone", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "ShippingZoneUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shippingErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shippingZone", + type: { + kind: "OBJECT", + name: "ShippingZone", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ShippingZoneUpdated", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "shippingZone", + type: { + kind: "OBJECT", + name: "ShippingZone", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "Shop", + fields: [ + { + name: "automaticFulfillmentDigitalProducts", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "availableExternalAuthentications", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ExternalAuthentication", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "availablePaymentGateways", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PaymentGateway", + ofType: null, + }, + }, + }, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "currency", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "availableShippingMethods", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingMethod", + ofType: null, + }, + }, + }, + args: [ + { + name: "address", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "channel", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "channelCurrencies", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + args: [], + }, + { + name: "chargeTaxesOnShipping", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "companyAddress", + type: { + kind: "OBJECT", + name: "Address", + ofType: null, + }, + args: [], + }, + { + name: "countries", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CountryDisplay", + ofType: null, + }, + }, + }, + }, + args: [ + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "languageCode", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "customerSetPasswordUrl", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "defaultCountry", + type: { + kind: "OBJECT", + name: "CountryDisplay", + ofType: null, + }, + args: [], + }, + { + name: "defaultDigitalMaxDownloads", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "defaultDigitalUrlValidDays", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "defaultMailSenderAddress", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "defaultMailSenderName", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "defaultWeightUnit", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "description", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "displayGrossPrices", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "domain", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Domain", + ofType: null, + }, + }, + args: [], + }, + { + name: "fulfillmentAllowUnpaid", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "fulfillmentAutoApprove", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "headerText", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "includeTaxesInPrices", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "languages", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "LanguageDisplay", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "limitQuantityPerCheckout", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "limits", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "LimitInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "permissions", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Permission", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "phonePrefixes", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + args: [], + }, + { + name: "reserveStockDurationAnonymousUser", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "reserveStockDurationAuthenticatedUser", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "staffNotificationRecipients", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "StaffNotificationRecipient", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "trackInventoryByDefault", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "translation", + type: { + kind: "OBJECT", + name: "ShopTranslation", + ofType: null, + }, + args: [ + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "version", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ShopAddressUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShopError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shop", + type: { + kind: "OBJECT", + name: "Shop", + ofType: null, + }, + args: [], + }, + { + name: "shopErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShopError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ShopDomainUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShopError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shop", + type: { + kind: "OBJECT", + name: "Shop", + ofType: null, + }, + args: [], + }, + { + name: "shopErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShopError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ShopError", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ShopFetchTaxRates", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShopError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shop", + type: { + kind: "OBJECT", + name: "Shop", + ofType: null, + }, + args: [], + }, + { + name: "shopErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShopError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ShopSettingsTranslate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TranslationError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shop", + type: { + kind: "OBJECT", + name: "Shop", + ofType: null, + }, + args: [], + }, + { + name: "translationErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TranslationError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ShopSettingsUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShopError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shop", + type: { + kind: "OBJECT", + name: "Shop", + ofType: null, + }, + args: [], + }, + { + name: "shopErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShopError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "ShopTranslation", + fields: [ + { + name: "description", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "headerText", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "language", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "LanguageDisplay", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "StaffBulkDelete", + fields: [ + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "StaffError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "staffErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "StaffError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "StaffCreate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "StaffError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "staffErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "StaffError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "StaffDelete", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "StaffError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "staffErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "StaffError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "StaffError", + fields: [ + { + name: "addressType", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "groups", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "permissions", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + { + name: "users", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "StaffNotificationRecipient", + fields: [ + { + name: "active", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "email", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "StaffNotificationRecipientCreate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShopError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shopErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShopError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "staffNotificationRecipient", + type: { + kind: "OBJECT", + name: "StaffNotificationRecipient", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "StaffNotificationRecipientDelete", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShopError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shopErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShopError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "staffNotificationRecipient", + type: { + kind: "OBJECT", + name: "StaffNotificationRecipient", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "StaffNotificationRecipientUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShopError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "shopErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShopError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "staffNotificationRecipient", + type: { + kind: "OBJECT", + name: "StaffNotificationRecipient", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "StaffUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "StaffError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "staffErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "StaffError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "Stock", + fields: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "productVariant", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + }, + args: [], + }, + { + name: "quantity", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "quantityAllocated", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "quantityReserved", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "warehouse", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Warehouse", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "StockCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "StockCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "StockCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Stock", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "StockError", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "Subscription", + fields: [ + { + name: "event", + type: { + kind: "INTERFACE", + name: "Event", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "TaxType", + fields: [ + { + name: "description", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "taxCode", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "TaxedMoney", + fields: [ + { + name: "currency", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "gross", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + }, + args: [], + }, + { + name: "net", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + }, + args: [], + }, + { + name: "tax", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "TaxedMoneyRange", + fields: [ + { + name: "start", + type: { + kind: "OBJECT", + name: "TaxedMoney", + ofType: null, + }, + args: [], + }, + { + name: "stop", + type: { + kind: "OBJECT", + name: "TaxedMoney", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "TimePeriod", + fields: [ + { + name: "amount", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "type", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "Transaction", + fields: [ + { + name: "amount", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + { + name: "created", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "error", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "gatewayResponse", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "isSuccess", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "kind", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "payment", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Payment", + ofType: null, + }, + }, + args: [], + }, + { + name: "token", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "TransactionAction", + fields: [ + { + name: "actionType", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "amount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "TransactionActionRequest", + fields: [ + { + name: "action", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TransactionAction", + ofType: null, + }, + }, + args: [], + }, + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "transaction", + type: { + kind: "OBJECT", + name: "TransactionItem", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "TransactionCreate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TransactionCreateError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "transaction", + type: { + kind: "OBJECT", + name: "TransactionItem", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "TransactionCreateError", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "TransactionEvent", + fields: [ + { + name: "createdAt", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "reference", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "status", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "TransactionItem", + fields: [ + { + name: "actions", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + args: [], + }, + { + name: "authorizedAmount", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + }, + args: [], + }, + { + name: "chargedAmount", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + }, + args: [], + }, + { + name: "createdAt", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "events", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TransactionEvent", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "metafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "modifiedAt", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "privateMetadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "privateMetafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "reference", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "refundedAmount", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + }, + args: [], + }, + { + name: "status", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "type", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "voidedAmount", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + { + kind: "INTERFACE", + name: "ObjectWithMetadata", + }, + ], + }, + { + kind: "OBJECT", + name: "TransactionRequestAction", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TransactionRequestActionError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "transaction", + type: { + kind: "OBJECT", + name: "TransactionItem", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "TransactionRequestActionError", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "TransactionUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TransactionUpdateError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "transaction", + type: { + kind: "OBJECT", + name: "TransactionItem", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "TransactionUpdateError", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "UNION", + name: "TranslatableItem", + possibleTypes: [ + { + kind: "OBJECT", + name: "AttributeTranslatableContent", + }, + { + kind: "OBJECT", + name: "AttributeValueTranslatableContent", + }, + { + kind: "OBJECT", + name: "CategoryTranslatableContent", + }, + { + kind: "OBJECT", + name: "CollectionTranslatableContent", + }, + { + kind: "OBJECT", + name: "MenuItemTranslatableContent", + }, + { + kind: "OBJECT", + name: "PageTranslatableContent", + }, + { + kind: "OBJECT", + name: "ProductTranslatableContent", + }, + { + kind: "OBJECT", + name: "ProductVariantTranslatableContent", + }, + { + kind: "OBJECT", + name: "SaleTranslatableContent", + }, + { + kind: "OBJECT", + name: "ShippingMethodTranslatableContent", + }, + { + kind: "OBJECT", + name: "VoucherTranslatableContent", + }, + ], + }, + { + kind: "OBJECT", + name: "TranslatableItemConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TranslatableItemEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "TranslatableItemEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "UNION", + name: "TranslatableItem", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "TranslationCreated", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "translation", + type: { + kind: "UNION", + name: "TranslationTypes", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "TranslationError", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "UNION", + name: "TranslationTypes", + possibleTypes: [ + { + kind: "OBJECT", + name: "AttributeTranslation", + }, + { + kind: "OBJECT", + name: "AttributeValueTranslation", + }, + { + kind: "OBJECT", + name: "CategoryTranslation", + }, + { + kind: "OBJECT", + name: "CollectionTranslation", + }, + { + kind: "OBJECT", + name: "MenuItemTranslation", + }, + { + kind: "OBJECT", + name: "PageTranslation", + }, + { + kind: "OBJECT", + name: "ProductTranslation", + }, + { + kind: "OBJECT", + name: "ProductVariantTranslation", + }, + { + kind: "OBJECT", + name: "SaleTranslation", + }, + { + kind: "OBJECT", + name: "ShippingMethodTranslation", + }, + { + kind: "OBJECT", + name: "VoucherTranslation", + }, + ], + }, + { + kind: "OBJECT", + name: "TranslationUpdated", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "translation", + type: { + kind: "UNION", + name: "TranslationTypes", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "UpdateMetadata", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "item", + type: { + kind: "INTERFACE", + name: "ObjectWithMetadata", + ofType: null, + }, + args: [], + }, + { + name: "metadataErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "UpdatePrivateMetadata", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "item", + type: { + kind: "INTERFACE", + name: "ObjectWithMetadata", + ofType: null, + }, + args: [], + }, + { + name: "metadataErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "UploadError", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "User", + fields: [ + { + name: "addresses", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Address", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "avatar", + type: { + kind: "OBJECT", + name: "Image", + ofType: null, + }, + args: [ + { + name: "size", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "checkout", + type: { + kind: "OBJECT", + name: "Checkout", + ofType: null, + }, + args: [], + }, + { + name: "checkoutIds", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "checkoutTokens", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "dateJoined", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "defaultBillingAddress", + type: { + kind: "OBJECT", + name: "Address", + ofType: null, + }, + args: [], + }, + { + name: "defaultShippingAddress", + type: { + kind: "OBJECT", + name: "Address", + ofType: null, + }, + args: [], + }, + { + name: "editableGroups", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Group", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "email", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "events", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CustomerEvent", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "firstName", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "giftCards", + type: { + kind: "OBJECT", + name: "GiftCardCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "isActive", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "isStaff", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "lastLogin", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "lastName", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "metafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "note", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "orders", + type: { + kind: "OBJECT", + name: "OrderCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "permissionGroups", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Group", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "privateMetadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "privateMetafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "storedPaymentSources", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PaymentSource", + ofType: null, + }, + }, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "updatedAt", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "userPermissions", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "UserPermission", + ofType: null, + }, + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + { + kind: "INTERFACE", + name: "ObjectWithMetadata", + }, + ], + }, + { + kind: "OBJECT", + name: "UserAvatarDelete", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "UserAvatarUpdate", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "UserBulkSetActive", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "UserCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "UserCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "UserCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "UserPermission", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "sourcePermissionGroups", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Group", + ofType: null, + }, + }, + }, + args: [ + { + name: "userId", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "VAT", + fields: [ + { + name: "countryCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "reducedRates", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ReducedRate", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "standardRate", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "VariantMediaAssign", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "media", + type: { + kind: "OBJECT", + name: "ProductMedia", + ofType: null, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productVariant", + type: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "VariantMediaUnassign", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "media", + type: { + kind: "OBJECT", + name: "ProductMedia", + ofType: null, + }, + args: [], + }, + { + name: "productErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ProductError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "productVariant", + type: { + kind: "OBJECT", + name: "ProductVariant", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "VariantPricingInfo", + fields: [ + { + name: "discount", + type: { + kind: "OBJECT", + name: "TaxedMoney", + ofType: null, + }, + args: [], + }, + { + name: "discountLocalCurrency", + type: { + kind: "OBJECT", + name: "TaxedMoney", + ofType: null, + }, + args: [], + }, + { + name: "onSale", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "price", + type: { + kind: "OBJECT", + name: "TaxedMoney", + ofType: null, + }, + args: [], + }, + { + name: "priceLocalCurrency", + type: { + kind: "OBJECT", + name: "TaxedMoney", + ofType: null, + }, + args: [], + }, + { + name: "priceUndiscounted", + type: { + kind: "OBJECT", + name: "TaxedMoney", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "VerifyToken", + fields: [ + { + name: "accountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "AccountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "isValid", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "payload", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "user", + type: { + kind: "OBJECT", + name: "User", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "Voucher", + fields: [ + { + name: "applyOncePerCustomer", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "applyOncePerOrder", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "categories", + type: { + kind: "OBJECT", + name: "CategoryCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "channelListings", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "VoucherChannelListing", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "collections", + type: { + kind: "OBJECT", + name: "CollectionCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "countries", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "CountryDisplay", + ofType: null, + }, + }, + }, + args: [], + }, + { + name: "currency", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "discountValue", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "discountValueType", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "endDate", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "metafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "minCheckoutItemsQuantity", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "minSpent", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + { + name: "name", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "onlyForStaff", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "privateMetadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "privateMetafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "products", + type: { + kind: "OBJECT", + name: "ProductCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "startDate", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "translation", + type: { + kind: "OBJECT", + name: "VoucherTranslation", + ofType: null, + }, + args: [ + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "type", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "usageLimit", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "used", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "variants", + type: { + kind: "OBJECT", + name: "ProductVariantCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + { + kind: "INTERFACE", + name: "ObjectWithMetadata", + }, + ], + }, + { + kind: "OBJECT", + name: "VoucherAddCatalogues", + fields: [ + { + name: "discountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "voucher", + type: { + kind: "OBJECT", + name: "Voucher", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "VoucherBulkDelete", + fields: [ + { + name: "count", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "discountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "VoucherChannelListing", + fields: [ + { + name: "channel", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Channel", + ofType: null, + }, + }, + args: [], + }, + { + name: "currency", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "discountValue", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "minSpent", + type: { + kind: "OBJECT", + name: "Money", + ofType: null, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "VoucherChannelListingUpdate", + fields: [ + { + name: "discountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "voucher", + type: { + kind: "OBJECT", + name: "Voucher", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "VoucherCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "VoucherCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "VoucherCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Voucher", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "VoucherCreate", + fields: [ + { + name: "discountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "voucher", + type: { + kind: "OBJECT", + name: "Voucher", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "VoucherCreated", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "voucher", + type: { + kind: "OBJECT", + name: "Voucher", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "VoucherDelete", + fields: [ + { + name: "discountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "voucher", + type: { + kind: "OBJECT", + name: "Voucher", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "VoucherDeleted", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "voucher", + type: { + kind: "OBJECT", + name: "Voucher", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "VoucherRemoveCatalogues", + fields: [ + { + name: "discountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "voucher", + type: { + kind: "OBJECT", + name: "Voucher", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "VoucherTranslatableContent", + fields: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "translation", + type: { + kind: "OBJECT", + name: "VoucherTranslation", + ofType: null, + }, + args: [ + { + name: "languageCode", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "voucher", + type: { + kind: "OBJECT", + name: "Voucher", + ofType: null, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "VoucherTranslate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TranslationError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "translationErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "TranslationError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "voucher", + type: { + kind: "OBJECT", + name: "Voucher", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "VoucherTranslation", + fields: [ + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "language", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "LanguageDisplay", + ofType: null, + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "VoucherUpdate", + fields: [ + { + name: "discountErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "DiscountError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "voucher", + type: { + kind: "OBJECT", + name: "Voucher", + ofType: null, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "VoucherUpdated", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "voucher", + type: { + kind: "OBJECT", + name: "Voucher", + ofType: null, + }, + args: [ + { + name: "channel", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "Warehouse", + fields: [ + { + name: "address", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Address", + ofType: null, + }, + }, + args: [], + }, + { + name: "clickAndCollectOption", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "companyName", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "email", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "isPrivate", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "metadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "metafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "metafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "privateMetadata", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "MetadataItem", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "privateMetafield", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "key", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + ], + }, + { + name: "privateMetafields", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [ + { + name: "keys", + type: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + }, + }, + ], + }, + { + name: "shippingZones", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "ShippingZoneCountableConnection", + ofType: null, + }, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "slug", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + { + kind: "INTERFACE", + name: "ObjectWithMetadata", + }, + ], + }, + { + kind: "OBJECT", + name: "WarehouseCountableConnection", + fields: [ + { + name: "edges", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "WarehouseCountableEdge", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "pageInfo", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "PageInfo", + ofType: null, + }, + }, + args: [], + }, + { + name: "totalCount", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "WarehouseCountableEdge", + fields: [ + { + name: "cursor", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "node", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "Warehouse", + ofType: null, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "WarehouseCreate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "WarehouseError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "warehouse", + type: { + kind: "OBJECT", + name: "Warehouse", + ofType: null, + }, + args: [], + }, + { + name: "warehouseErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "WarehouseError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "WarehouseCreated", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "warehouse", + type: { + kind: "OBJECT", + name: "Warehouse", + ofType: null, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "WarehouseDelete", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "WarehouseError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "warehouse", + type: { + kind: "OBJECT", + name: "Warehouse", + ofType: null, + }, + args: [], + }, + { + name: "warehouseErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "WarehouseError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "WarehouseDeleted", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "warehouse", + type: { + kind: "OBJECT", + name: "Warehouse", + ofType: null, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "WarehouseError", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "WarehouseShippingZoneAssign", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "WarehouseError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "warehouse", + type: { + kind: "OBJECT", + name: "Warehouse", + ofType: null, + }, + args: [], + }, + { + name: "warehouseErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "WarehouseError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "WarehouseShippingZoneUnassign", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "WarehouseError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "warehouse", + type: { + kind: "OBJECT", + name: "Warehouse", + ofType: null, + }, + args: [], + }, + { + name: "warehouseErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "WarehouseError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "WarehouseUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "WarehouseError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "warehouse", + type: { + kind: "OBJECT", + name: "Warehouse", + ofType: null, + }, + args: [], + }, + { + name: "warehouseErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "WarehouseError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "WarehouseUpdated", + fields: [ + { + name: "issuedAt", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "issuingPrincipal", + type: { + kind: "UNION", + name: "IssuingPrincipal", + ofType: null, + }, + args: [], + }, + { + name: "recipient", + type: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + args: [], + }, + { + name: "version", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "warehouse", + type: { + kind: "OBJECT", + name: "Warehouse", + ofType: null, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Event", + }, + ], + }, + { + kind: "OBJECT", + name: "Webhook", + fields: [ + { + name: "app", + type: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "App", + ofType: null, + }, + }, + args: [], + }, + { + name: "asyncEvents", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "WebhookEventAsync", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "eventDeliveries", + type: { + kind: "OBJECT", + name: "EventDeliveryCountableConnection", + ofType: null, + }, + args: [ + { + name: "after", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "before", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "filter", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "first", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "last", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + { + name: "sortBy", + type: { + kind: "SCALAR", + name: "Any", + }, + }, + ], + }, + { + name: "events", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "WebhookEvent", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "id", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "isActive", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "secretKey", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "subscriptionQuery", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "syncEvents", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "WebhookEventSync", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "targetUrl", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [ + { + kind: "INTERFACE", + name: "Node", + }, + ], + }, + { + kind: "OBJECT", + name: "WebhookCreate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "WebhookError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "webhook", + type: { + kind: "OBJECT", + name: "Webhook", + ofType: null, + }, + args: [], + }, + { + name: "webhookErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "WebhookError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "WebhookDelete", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "WebhookError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "webhook", + type: { + kind: "OBJECT", + name: "Webhook", + ofType: null, + }, + args: [], + }, + { + name: "webhookErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "WebhookError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "WebhookError", + fields: [ + { + name: "code", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "field", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + { + name: "message", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "WebhookEvent", + fields: [ + { + name: "eventType", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "WebhookEventAsync", + fields: [ + { + name: "eventType", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "WebhookEventSync", + fields: [ + { + name: "eventType", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "name", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "WebhookUpdate", + fields: [ + { + name: "errors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "WebhookError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + { + name: "webhook", + type: { + kind: "OBJECT", + name: "Webhook", + ofType: null, + }, + args: [], + }, + { + name: "webhookErrors", + type: { + kind: "NON_NULL", + ofType: { + kind: "LIST", + ofType: { + kind: "NON_NULL", + ofType: { + kind: "OBJECT", + name: "WebhookError", + ofType: null, + }, + }, + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "OBJECT", + name: "Weight", + fields: [ + { + name: "unit", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + { + name: "value", + type: { + kind: "NON_NULL", + ofType: { + kind: "SCALAR", + name: "Any", + }, + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "UNION", + name: "_Entity", + possibleTypes: [ + { + kind: "OBJECT", + name: "Address", + }, + { + kind: "OBJECT", + name: "App", + }, + { + kind: "OBJECT", + name: "Category", + }, + { + kind: "OBJECT", + name: "Collection", + }, + { + kind: "OBJECT", + name: "Group", + }, + { + kind: "OBJECT", + name: "PageType", + }, + { + kind: "OBJECT", + name: "Product", + }, + { + kind: "OBJECT", + name: "ProductMedia", + }, + { + kind: "OBJECT", + name: "ProductType", + }, + { + kind: "OBJECT", + name: "ProductVariant", + }, + { + kind: "OBJECT", + name: "User", + }, + ], + }, + { + kind: "OBJECT", + name: "_Service", + fields: [ + { + name: "sdl", + type: { + kind: "SCALAR", + name: "Any", + }, + args: [], + }, + ], + interfaces: [], + }, + { + kind: "SCALAR", + name: "Any", + }, + ], + directives: [], + }, +} as unknown as IntrospectionQuery; +export const UntypedOrderCreatedWebhookPayloadFragmentDoc = gql` + fragment OrderCreatedWebhookPayload on OrderCreated { + order { + id + number + user { + email + firstName + lastName + } + shippingAddress { + streetAddress1 + city + postalCode + country { + country + } + } + subtotal { + gross { + amount + currency + } + } + shippingPrice { + gross { + amount + currency + } + } + total { + gross { + amount + currency + } + } + } + } +`; +export const UntypedUpdateAppMetadataDocument = gql` + mutation UpdateAppMetadata($id: ID!, $input: [MetadataInput!]!) { + updatePrivateMetadata(id: $id, input: $input) { + item { + privateMetadata { + key + value + } + } + } + } +`; + +export function useUpdateAppMetadataMutation() { + return Urql.useMutation( + UntypedUpdateAppMetadataDocument + ); +} +export const UntypedFetchAppDetailsDocument = gql` + query FetchAppDetails { + app { + id + privateMetadata { + key + value + } + } + } +`; + +export function useFetchAppDetailsQuery( + options?: Omit, "query"> +) { + return Urql.useQuery({ + query: UntypedFetchAppDetailsDocument, + ...options, + }); +} +export const UntypedOrderCreatedDocument = gql` + subscription OrderCreated { + event { + ...OrderCreatedWebhookPayload + } + } + ${UntypedOrderCreatedWebhookPayloadFragmentDoc} +`; + +export function useOrderCreatedSubscription( + options: Omit, "query"> = {}, + handler?: Urql.SubscriptionHandler +) { + return Urql.useSubscription( + { query: UntypedOrderCreatedDocument, ...options }, + handler + ); +} +export const OrderCreatedWebhookPayloadFragmentDoc = { + kind: "Document", + definitions: [ + { + kind: "FragmentDefinition", + name: { kind: "Name", value: "OrderCreatedWebhookPayload" }, + typeCondition: { kind: "NamedType", name: { kind: "Name", value: "OrderCreated" } }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "order" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "id" } }, + { kind: "Field", name: { kind: "Name", value: "number" } }, + { + kind: "Field", + name: { kind: "Name", value: "user" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "email" } }, + { kind: "Field", name: { kind: "Name", value: "firstName" } }, + { kind: "Field", name: { kind: "Name", value: "lastName" } }, + ], + }, + }, + { + kind: "Field", + name: { kind: "Name", value: "shippingAddress" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "streetAddress1" } }, + { kind: "Field", name: { kind: "Name", value: "city" } }, + { kind: "Field", name: { kind: "Name", value: "postalCode" } }, + { + kind: "Field", + name: { kind: "Name", value: "country" }, + selectionSet: { + kind: "SelectionSet", + selections: [{ kind: "Field", name: { kind: "Name", value: "country" } }], + }, + }, + ], + }, + }, + { + kind: "Field", + name: { kind: "Name", value: "subtotal" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "gross" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "amount" } }, + { kind: "Field", name: { kind: "Name", value: "currency" } }, + ], + }, + }, + ], + }, + }, + { + kind: "Field", + name: { kind: "Name", value: "shippingPrice" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "gross" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "amount" } }, + { kind: "Field", name: { kind: "Name", value: "currency" } }, + ], + }, + }, + ], + }, + }, + { + kind: "Field", + name: { kind: "Name", value: "total" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "gross" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "amount" } }, + { kind: "Field", name: { kind: "Name", value: "currency" } }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], +} as unknown as DocumentNode; +export const UpdateAppMetadataDocument = { + kind: "Document", + definitions: [ + { + kind: "OperationDefinition", + operation: "mutation", + name: { kind: "Name", value: "UpdateAppMetadata" }, + variableDefinitions: [ + { + kind: "VariableDefinition", + variable: { kind: "Variable", name: { kind: "Name", value: "id" } }, + type: { + kind: "NonNullType", + type: { kind: "NamedType", name: { kind: "Name", value: "ID" } }, + }, + }, + { + kind: "VariableDefinition", + variable: { kind: "Variable", name: { kind: "Name", value: "input" } }, + type: { + kind: "NonNullType", + type: { + kind: "ListType", + type: { + kind: "NonNullType", + type: { kind: "NamedType", name: { kind: "Name", value: "MetadataInput" } }, + }, + }, + }, + }, + ], + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "updatePrivateMetadata" }, + arguments: [ + { + kind: "Argument", + name: { kind: "Name", value: "id" }, + value: { kind: "Variable", name: { kind: "Name", value: "id" } }, + }, + { + kind: "Argument", + name: { kind: "Name", value: "input" }, + value: { kind: "Variable", name: { kind: "Name", value: "input" } }, + }, + ], + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "item" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "privateMetadata" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "key" } }, + { kind: "Field", name: { kind: "Name", value: "value" } }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], +} as unknown as DocumentNode; +export const FetchAppDetailsDocument = { + kind: "Document", + definitions: [ + { + kind: "OperationDefinition", + operation: "query", + name: { kind: "Name", value: "FetchAppDetails" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "app" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "id" } }, + { + kind: "Field", + name: { kind: "Name", value: "privateMetadata" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "key" } }, + { kind: "Field", name: { kind: "Name", value: "value" } }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], +} as unknown as DocumentNode; +export const OrderCreatedDocument = { + kind: "Document", + definitions: [ + { + kind: "OperationDefinition", + operation: "subscription", + name: { kind: "Name", value: "OrderCreated" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "event" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "FragmentSpread", + name: { kind: "Name", value: "OrderCreatedWebhookPayload" }, + }, + ], + }, + }, + ], + }, + }, + ...OrderCreatedWebhookPayloadFragmentDoc.definitions, + ], +} as unknown as DocumentNode; diff --git a/apps/slack/generated/schema.graphql b/apps/slack/generated/schema.graphql new file mode 100644 index 0000000..6e9dca8 --- /dev/null +++ b/apps/slack/generated/schema.graphql @@ -0,0 +1,29164 @@ +""" +Create a new address for the customer. + +Requires one of the following permissions: AUTHENTICATED_USER. +""" +type AccountAddressCreate { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + address: Address + errors: [AccountError!]! + + """ + A user instance for which the address was created. + """ + user: User +} + +""" +Delete an address of the logged-in user. Requires one of the following permissions: MANAGE_USERS, IS_OWNER. +""" +type AccountAddressDelete { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + address: Address + errors: [AccountError!]! + + """ + A user instance for which the address was deleted. + """ + user: User +} + +""" +Updates an address of the logged-in user. Requires one of the following permissions: MANAGE_USERS, IS_OWNER. +""" +type AccountAddressUpdate { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + address: Address + errors: [AccountError!]! + + """ + A user object for which the address was edited. + """ + user: User +} + +""" +Remove user account. + +Requires one of the following permissions: AUTHENTICATED_USER. +""" +type AccountDelete { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + user: User +} + +type AccountError { + """ + A type of address that causes the error. + """ + addressType: AddressTypeEnum + + """ + The error code. + """ + code: AccountErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String +} + +""" +An enumeration. +""" +enum AccountErrorCode { + ACCOUNT_NOT_CONFIRMED + ACTIVATE_OWN_ACCOUNT + ACTIVATE_SUPERUSER_ACCOUNT + CHANNEL_INACTIVE + DEACTIVATE_OWN_ACCOUNT + DEACTIVATE_SUPERUSER_ACCOUNT + DELETE_NON_STAFF_USER + DELETE_OWN_ACCOUNT + DELETE_STAFF_ACCOUNT + DELETE_SUPERUSER_ACCOUNT + DUPLICATED_INPUT_ITEM + GRAPHQL_ERROR + INACTIVE + INVALID + INVALID_CREDENTIALS + INVALID_PASSWORD + JWT_DECODE_ERROR + JWT_INVALID_CSRF_TOKEN + JWT_INVALID_TOKEN + JWT_MISSING_TOKEN + JWT_SIGNATURE_EXPIRED + LEFT_NOT_MANAGEABLE_PERMISSION + MISSING_CHANNEL_SLUG + NOT_FOUND + OUT_OF_SCOPE_GROUP + OUT_OF_SCOPE_PERMISSION + OUT_OF_SCOPE_USER + PASSWORD_ENTIRELY_NUMERIC + PASSWORD_TOO_COMMON + PASSWORD_TOO_SHORT + PASSWORD_TOO_SIMILAR + REQUIRED + UNIQUE +} + +input AccountInput { + """ + Billing address of the customer. + """ + defaultBillingAddress: AddressInput + + """ + Shipping address of the customer. + """ + defaultShippingAddress: AddressInput + + """ + Given name. + """ + firstName: String + + """ + User language code. + """ + languageCode: LanguageCodeEnum + + """ + Family name. + """ + lastName: String +} + +""" +Register a new user. +""" +type AccountRegister { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + + """ + Informs whether users need to confirm their email address. + """ + requiresConfirmation: Boolean + user: User +} + +input AccountRegisterInput { + """ + Slug of a channel which will be used to notify users. Optional when only one channel exists. + """ + channel: String + + """ + The email address of the user. + """ + email: String! + + """ + Given name. + """ + firstName: String + + """ + User language code. + """ + languageCode: LanguageCodeEnum + + """ + Family name. + """ + lastName: String + + """ + User public metadata. + """ + metadata: [MetadataInput!] + + """ + Password. + """ + password: String! + + """ + Base of frontend URL that will be needed to create confirmation URL. + """ + redirectUrl: String +} + +""" +Sends an email with the account removal link for the logged-in user. + +Requires one of the following permissions: AUTHENTICATED_USER. +""" +type AccountRequestDeletion { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! +} + +""" +Sets a default address for the authenticated user. + +Requires one of the following permissions: AUTHENTICATED_USER. +""" +type AccountSetDefaultAddress { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + + """ + An updated user instance. + """ + user: User +} + +""" +Updates the account of the logged-in user. + +Requires one of the following permissions: AUTHENTICATED_USER. +""" +type AccountUpdate { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + user: User +} + +""" +Represents user address data. +""" +type Address implements Node { + city: String! + cityArea: String! + companyName: String! + + """ + Shop's default country. + """ + country: CountryDisplay! + countryArea: String! + firstName: String! + id: ID! + + """ + Address is user's default billing address. + """ + isDefaultBillingAddress: Boolean + + """ + Address is user's default shipping address. + """ + isDefaultShippingAddress: Boolean + lastName: String! + phone: String + postalCode: String! + streetAddress1: String! + streetAddress2: String! +} + +""" +Creates user address. + +Requires one of the following permissions: MANAGE_USERS. +""" +type AddressCreate { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + address: Address + errors: [AccountError!]! + + """ + A user instance for which the address was created. + """ + user: User +} + +""" +Deletes an address. + +Requires one of the following permissions: MANAGE_USERS. +""" +type AddressDelete { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + address: Address + errors: [AccountError!]! + + """ + A user instance for which the address was deleted. + """ + user: User +} + +input AddressInput { + """ + City. + """ + city: String + + """ + District. + """ + cityArea: String + + """ + Company or organization. + """ + companyName: String + + """ + Country. + """ + country: CountryCode + + """ + State or province. + """ + countryArea: String + + """ + Given name. + """ + firstName: String + + """ + Family name. + """ + lastName: String + + """ + Phone number. + """ + phone: String + + """ + Postal code. + """ + postalCode: String + + """ + Address. + """ + streetAddress1: String + + """ + Address. + """ + streetAddress2: String +} + +""" +Sets a default address for the given user. + +Requires one of the following permissions: MANAGE_USERS. +""" +type AddressSetDefault { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + + """ + An updated user instance. + """ + user: User +} + +""" +An enumeration. +""" +enum AddressTypeEnum { + BILLING + SHIPPING +} + +""" +Updates an address. + +Requires one of the following permissions: MANAGE_USERS. +""" +type AddressUpdate { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + address: Address + errors: [AccountError!]! + + """ + A user object for which the address was edited. + """ + user: User +} + +type AddressValidationData { + addressFormat: String! + addressLatinFormat: String! + allowedFields: [String!]! + cityAreaChoices: [ChoiceValue!]! + cityAreaType: String! + cityChoices: [ChoiceValue!]! + cityType: String! + countryAreaChoices: [ChoiceValue!]! + countryAreaType: String! + countryCode: String! + countryName: String! + postalCodeExamples: [String!]! + postalCodeMatchers: [String!]! + postalCodePrefix: String! + postalCodeType: String! + requiredFields: [String!]! + upperFields: [String!]! +} + +""" +Represents allocation. +""" +type Allocation implements Node { + id: ID! + + """ + Quantity allocated for orders. + + Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. + """ + quantity: Int! + + """ + The warehouse were items were allocated. + + Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. + """ + warehouse: Warehouse! +} + +""" +Represents app data. +""" +type App implements Node & ObjectWithMetadata { + """ + Description of this app. + """ + aboutApp: String + + """ + JWT token used to authenticate by thridparty app. + """ + accessToken: String + + """ + Url to iframe with the app. + """ + appUrl: String + + """ + Url to iframe with the configuration for the app. + """ + configurationUrl: String + + """ + The date and time when the app was created. + """ + created: DateTime + + """ + Description of the data privacy defined for this app. + """ + dataPrivacy: String + + """ + Url to details about the privacy policy on the app owner page. + """ + dataPrivacyUrl: String + + """ + App's dashboard extensions. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + extensions: [AppExtension!]! + + """ + Homepage of the app. + """ + homepageUrl: String + id: ID! + + """ + Determine if app will be set active or not. + """ + isActive: Boolean + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + + """ + Name of the app. + """ + name: String + + """ + List of the app's permissions. + """ + permissions: [Permission!] + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + Support page for the app. + """ + supportUrl: String + + """ + Last 4 characters of the tokens. + + Requires one of the following permissions: MANAGE_APPS, OWNER. + """ + tokens: [AppToken!] + + """ + Type of the app. + """ + type: AppTypeEnum + + """ + Version number of the app. + """ + version: String + + """ + List of webhooks assigned to this app. + + Requires one of the following permissions: MANAGE_APPS, OWNER. + """ + webhooks: [Webhook!] +} + +""" +Activate the app. + +Requires one of the following permissions: MANAGE_APPS. +""" +type AppActivate { + app: App + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AppError!]! +} + +type AppCountableConnection { + edges: [AppCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type AppCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: App! +} + +""" +Creates a new app. Requires the following permissions: AUTHENTICATED_STAFF_USER and MANAGE_APPS. +""" +type AppCreate { + app: App + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + The newly created authentication token. + """ + authToken: String + errors: [AppError!]! +} + +""" +Deactivate the app. + +Requires one of the following permissions: MANAGE_APPS. +""" +type AppDeactivate { + app: App + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AppError!]! +} + +""" +Deletes an app. + +Requires one of the following permissions: MANAGE_APPS. +""" +type AppDelete { + app: App + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AppError!]! +} + +""" +Delete failed installation. + +Requires one of the following permissions: MANAGE_APPS. +""" +type AppDeleteFailedInstallation { + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + appInstallation: AppInstallation + errors: [AppError!]! +} + +type AppDeleted implements Event { + """ + The application the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + app: App + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +type AppError { + """ + The error code. + """ + code: AppErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + List of permissions which causes the error. + """ + permissions: [PermissionEnum!] +} + +""" +An enumeration. +""" +enum AppErrorCode { + FORBIDDEN + GRAPHQL_ERROR + INVALID + INVALID_MANIFEST_FORMAT + INVALID_PERMISSION + INVALID_STATUS + INVALID_URL_FORMAT + MANIFEST_URL_CANT_CONNECT + NOT_FOUND + OUT_OF_SCOPE_APP + OUT_OF_SCOPE_PERMISSION + REQUIRED + UNIQUE +} + +""" +Represents app data. +""" +type AppExtension implements Node { + """ + JWT token used to authenticate by thridparty app extension. + """ + accessToken: String + app: App! + id: ID! + + """ + Label of the extension to show in the dashboard. + """ + label: String! + + """ + Place where given extension will be mounted. + """ + mount: AppExtensionMountEnum! + + """ + List of the app extension's permissions. + """ + permissions: [Permission!]! + + """ + Type of way how app extension will be opened. + """ + target: AppExtensionTargetEnum! + + """ + URL of a view where extension's iframe is placed. + """ + url: String! +} + +type AppExtensionCountableConnection { + edges: [AppExtensionCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type AppExtensionCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: AppExtension! +} + +input AppExtensionFilterInput { + mount: [AppExtensionMountEnum!] + target: AppExtensionTargetEnum +} + +""" +All places where app extension can be mounted. +""" +enum AppExtensionMountEnum { + NAVIGATION_CATALOG + NAVIGATION_CUSTOMERS + NAVIGATION_DISCOUNTS + NAVIGATION_ORDERS + NAVIGATION_PAGES + NAVIGATION_TRANSLATIONS + ORDER_DETAILS_MORE_ACTIONS + ORDER_OVERVIEW_CREATE + ORDER_OVERVIEW_MORE_ACTIONS + PRODUCT_DETAILS_MORE_ACTIONS + PRODUCT_OVERVIEW_CREATE + PRODUCT_OVERVIEW_MORE_ACTIONS +} + +""" +All available ways of opening an app extension. + + POPUP - app's extension will be mounted as a popup window + APP_PAGE - redirect to app's page +""" +enum AppExtensionTargetEnum { + APP_PAGE + POPUP +} + +""" +Fetch and validate manifest. + +Requires one of the following permissions: MANAGE_APPS. +""" +type AppFetchManifest { + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AppError!]! + manifest: Manifest +} + +input AppFilterInput { + isActive: Boolean + search: String + type: AppTypeEnum +} + +input AppInput { + """ + Name of the app. + """ + name: String + + """ + List of permission code names to assign to this app. + """ + permissions: [PermissionEnum!] +} + +""" +Install new app by using app manifest. Requires the following permissions: AUTHENTICATED_STAFF_USER and MANAGE_APPS. +""" +type AppInstall { + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + appInstallation: AppInstallation + errors: [AppError!]! +} + +input AppInstallInput { + """ + Determine if app will be set active or not. + """ + activateAfterInstallation: Boolean = true + + """ + Name of the app to install. + """ + appName: String + + """ + Url to app's manifest in JSON format. + """ + manifestUrl: String + + """ + List of permission code names to assign to this app. + """ + permissions: [PermissionEnum!] +} + +""" +Represents ongoing installation of app. +""" +type AppInstallation implements Job & Node { + appName: String! + + """ + Created date time of job in ISO 8601 format. + """ + createdAt: DateTime! + id: ID! + manifestUrl: String! + + """ + Job message. + """ + message: String + + """ + Job status. + """ + status: JobStatusEnum! + + """ + Date time of job last update in ISO 8601 format. + """ + updatedAt: DateTime! +} + +type AppInstalled implements Event { + """ + The application the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + app: App + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +type AppManifestExtension { + """ + Label of the extension to show in the dashboard. + """ + label: String! + + """ + Place where given extension will be mounted. + """ + mount: AppExtensionMountEnum! + + """ + List of the app extension's permissions. + """ + permissions: [Permission!]! + + """ + Type of way how app extension will be opened. + """ + target: AppExtensionTargetEnum! + + """ + URL of a view where extension's iframe is placed. + """ + url: String! +} + +""" +Retry failed installation of new app. + +Requires one of the following permissions: MANAGE_APPS. +""" +type AppRetryInstall { + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + appInstallation: AppInstallation + errors: [AppError!]! +} + +enum AppSortField { + """ + Sort apps by creation date. + """ + CREATION_DATE + + """ + Sort apps by name. + """ + NAME +} + +input AppSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort apps by the selected field. + """ + field: AppSortField! +} + +type AppStatusChanged implements Event { + """ + The application the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + app: App + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Represents token data. +""" +type AppToken implements Node { + """ + Last 4 characters of the token. + """ + authToken: String + id: ID! + + """ + Name of the authenticated token. + """ + name: String +} + +""" +Creates a new token. + +Requires one of the following permissions: MANAGE_APPS. +""" +type AppTokenCreate { + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + appToken: AppToken + + """ + The newly created authentication token. + """ + authToken: String + errors: [AppError!]! +} + +""" +Deletes an authentication token assigned to app. + +Requires one of the following permissions: MANAGE_APPS. +""" +type AppTokenDelete { + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + appToken: AppToken + errors: [AppError!]! +} + +input AppTokenInput { + """ + ID of app. + """ + app: ID! + + """ + Name of the token. + """ + name: String +} + +""" +Verify provided app token. +""" +type AppTokenVerify { + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AppError!]! + + """ + Determine if token is valid or not. + """ + valid: Boolean! +} + +""" +Enum determining type of your App. +""" +enum AppTypeEnum { + """ + Local Saleor App. The app is fully manageable from dashboard. You can change assigned permissions, add webhooks, or authentication token + """ + LOCAL + + """ + Third party external App. Installation is fully automated. Saleor uses a defined App manifest to gather all required information. + """ + THIRDPARTY +} + +""" +Updates an existing app. + +Requires one of the following permissions: MANAGE_APPS. +""" +type AppUpdate { + app: App + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AppError!]! +} + +type AppUpdated implements Event { + """ + The application the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + app: App + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +An enumeration. +""" +enum AreaUnitsEnum { + SQ_CM + SQ_FT + SQ_INCH + SQ_KM + SQ_M + SQ_YD +} + +""" +Assigns storefront's navigation menus. + +Requires one of the following permissions: MANAGE_MENUS, MANAGE_SETTINGS. +""" +type AssignNavigation { + errors: [MenuError!]! + + """ + Assigned navigation menu. + """ + menu: Menu + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Represents assigned attribute to variant with variant selection attached. + +Added in Saleor 3.1. +""" +type AssignedVariantAttribute { + """ + Attribute assigned to variant. + """ + attribute: Attribute! + + """ + Determines, whether assigned attribute is allowed for variant selection. Supported variant types for variant selection are: ['dropdown', 'boolean', 'swatch', 'numeric'] + """ + variantSelection: Boolean! +} + +""" +Custom attribute of a product. Attributes can be assigned to products and variants at the product type level. +""" +type Attribute implements Node & ObjectWithMetadata { + """ + Whether the attribute can be displayed in the admin product list. Requires one of the following permissions: MANAGE_PAGES, MANAGE_PAGE_TYPES_AND_ATTRIBUTES, MANAGE_PRODUCTS, MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + availableInGrid: Boolean! + + """ + List of attribute's values. + """ + choices( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Filtering options for attribute choices. + """ + filter: AttributeValueFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + + """ + Sort attribute choices. + """ + sortBy: AttributeChoicesSortingInput + ): AttributeValueCountableConnection + + """ + The entity type which can be used as a reference. + """ + entityType: AttributeEntityTypeEnum + + """ + Whether the attribute can be filtered in dashboard. Requires one of the following permissions: MANAGE_PAGES, MANAGE_PAGE_TYPES_AND_ATTRIBUTES, MANAGE_PRODUCTS, MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + filterableInDashboard: Boolean! + + """ + Whether the attribute can be filtered in storefront. Requires one of the following permissions: MANAGE_PAGES, MANAGE_PAGE_TYPES_AND_ATTRIBUTES, MANAGE_PRODUCTS, MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + filterableInStorefront: Boolean! + id: ID! + + """ + The input type to use for entering attribute values in the dashboard. + """ + inputType: AttributeInputTypeEnum + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + + """ + Name of an attribute displayed in the interface. + """ + name: String + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + productTypes( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ProductTypeCountableConnection! + productVariantTypes( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ProductTypeCountableConnection! + + """ + Internal representation of an attribute name. + """ + slug: String + + """ + The position of the attribute in the storefront navigation (0 by default). Requires one of the following permissions: MANAGE_PAGES, MANAGE_PAGE_TYPES_AND_ATTRIBUTES, MANAGE_PRODUCTS, MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + storefrontSearchPosition: Int! + + """ + Returns translated attribute fields for the given language code. + """ + translation( + """ + A language code to return the translation for attribute. + """ + languageCode: LanguageCodeEnum! + ): AttributeTranslation + + """ + The attribute type. + """ + type: AttributeTypeEnum + + """ + The unit of attribute values. + """ + unit: MeasurementUnitsEnum + + """ + Whether the attribute requires values to be passed or not. Requires one of the following permissions: MANAGE_PAGES, MANAGE_PAGE_TYPES_AND_ATTRIBUTES, MANAGE_PRODUCTS, MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + valueRequired: Boolean! + + """ + Whether the attribute should be visible or not in storefront. Requires one of the following permissions: MANAGE_PAGES, MANAGE_PAGE_TYPES_AND_ATTRIBUTES, MANAGE_PRODUCTS, MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + visibleInStorefront: Boolean! + + """ + Flag indicating that attribute has predefined choices. + """ + withChoices: Boolean! +} + +""" +Deletes attributes. + +Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. +""" +type AttributeBulkDelete { + attributeErrors: [AttributeError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + Returns how many objects were affected. + """ + count: Int! + errors: [AttributeError!]! +} + +enum AttributeChoicesSortField { + """ + Sort attribute choice by name. + """ + NAME + + """ + Sort attribute choice by slug. + """ + SLUG +} + +input AttributeChoicesSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort attribute choices by the selected field. + """ + field: AttributeChoicesSortField! +} + +type AttributeCountableConnection { + edges: [AttributeCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type AttributeCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Attribute! +} + +""" +Creates an attribute. +""" +type AttributeCreate { + attribute: Attribute + attributeErrors: [AttributeError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AttributeError!]! +} + +input AttributeCreateInput { + """ + Whether the attribute can be displayed in the admin product list. + """ + availableInGrid: Boolean + + """ + The entity type which can be used as a reference. + """ + entityType: AttributeEntityTypeEnum + + """ + Whether the attribute can be filtered in dashboard. + """ + filterableInDashboard: Boolean + + """ + Whether the attribute can be filtered in storefront. + """ + filterableInStorefront: Boolean + + """ + The input type to use for entering attribute values in the dashboard. + """ + inputType: AttributeInputTypeEnum + + """ + Whether the attribute is for variants only. + """ + isVariantOnly: Boolean + + """ + Name of an attribute displayed in the interface. + """ + name: String! + + """ + Internal representation of an attribute name. + """ + slug: String + + """ + The position of the attribute in the storefront navigation (0 by default). + """ + storefrontSearchPosition: Int + + """ + The attribute type. + """ + type: AttributeTypeEnum! + + """ + The unit of attribute values. + """ + unit: MeasurementUnitsEnum + + """ + Whether the attribute requires values to be passed or not. + """ + valueRequired: Boolean + + """ + List of attribute's values. + """ + values: [AttributeValueCreateInput!] + + """ + Whether the attribute should be visible or not in storefront. + """ + visibleInStorefront: Boolean +} + +""" +Deletes an attribute. + +Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. +""" +type AttributeDelete { + attribute: Attribute + attributeErrors: [AttributeError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AttributeError!]! +} + +""" +An enumeration. +""" +enum AttributeEntityTypeEnum { + PAGE + PRODUCT +} + +type AttributeError { + """ + The error code. + """ + code: AttributeErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String +} + +""" +An enumeration. +""" +enum AttributeErrorCode { + ALREADY_EXISTS + GRAPHQL_ERROR + INVALID + NOT_FOUND + REQUIRED + UNIQUE +} + +input AttributeFilterInput { + availableInGrid: Boolean + + """ + Specifies the channel by which the data should be filtered. + + DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. + """ + channel: String + filterableInDashboard: Boolean + filterableInStorefront: Boolean + ids: [ID!] + inCategory: ID + inCollection: ID + isVariantOnly: Boolean + metadata: [MetadataFilter!] + search: String + type: AttributeTypeEnum + valueRequired: Boolean + visibleInStorefront: Boolean +} + +input AttributeInput { + """ + The boolean value of the attribute. + """ + boolean: Boolean + + """ + The date range that the returned values should be in. In case of date/time attributes, the UTC midnight of the given date is used. + """ + date: DateRangeInput + + """ + The date/time range that the returned values should be in. + """ + dateTime: DateTimeRangeInput + + """ + Internal representation of an attribute name. + """ + slug: String! + + """ + Internal representation of a value (unique per attribute). + """ + values: [String!] + + """ + The range that the returned values should be in. + """ + valuesRange: IntRangeInput +} + +""" +An enumeration. +""" +enum AttributeInputTypeEnum { + BOOLEAN + DATE + DATE_TIME + DROPDOWN + FILE + MULTISELECT + NUMERIC + REFERENCE + RICH_TEXT + SWATCH +} + +""" +Reorder the values of an attribute. + +Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. +""" +type AttributeReorderValues { + """ + Attribute from which values are reordered. + """ + attribute: Attribute + attributeErrors: [AttributeError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AttributeError!]! +} + +enum AttributeSortField { + """ + Sort attributes based on whether they can be displayed or not in a product grid. + """ + AVAILABLE_IN_GRID + + """ + Sort attributes by the filterable in dashboard flag + """ + FILTERABLE_IN_DASHBOARD + + """ + Sort attributes by the filterable in storefront flag + """ + FILTERABLE_IN_STOREFRONT + + """ + Sort attributes by the variant only flag + """ + IS_VARIANT_ONLY + + """ + Sort attributes by name + """ + NAME + + """ + Sort attributes by slug + """ + SLUG + + """ + Sort attributes by their position in storefront + """ + STOREFRONT_SEARCH_POSITION + + """ + Sort attributes by the value required flag + """ + VALUE_REQUIRED + + """ + Sort attributes by visibility in the storefront + """ + VISIBLE_IN_STOREFRONT +} + +input AttributeSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort attributes by the selected field. + """ + field: AttributeSortField! +} + +type AttributeTranslatableContent implements Node { + """ + Custom attribute of a product. + """ + attribute: Attribute + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) + id: ID! + name: String! + + """ + Returns translated attribute fields for the given language code. + """ + translation( + """ + A language code to return the translation for attribute. + """ + languageCode: LanguageCodeEnum! + ): AttributeTranslation +} + +""" +Creates/updates translations for an attribute. + +Requires one of the following permissions: MANAGE_TRANSLATIONS. +""" +type AttributeTranslate { + attribute: Attribute + errors: [TranslationError!]! + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type AttributeTranslation implements Node { + id: ID! + + """ + Translation language. + """ + language: LanguageDisplay! + name: String! +} + +""" +An enumeration. +""" +enum AttributeTypeEnum { + PAGE_TYPE + PRODUCT_TYPE +} + +""" +Updates attribute. + +Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. +""" +type AttributeUpdate { + attribute: Attribute + attributeErrors: [AttributeError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AttributeError!]! +} + +input AttributeUpdateInput { + """ + New values to be created for this attribute. + """ + addValues: [AttributeValueUpdateInput!] + + """ + Whether the attribute can be displayed in the admin product list. + """ + availableInGrid: Boolean + + """ + Whether the attribute can be filtered in dashboard. + """ + filterableInDashboard: Boolean + + """ + Whether the attribute can be filtered in storefront. + """ + filterableInStorefront: Boolean + + """ + Whether the attribute is for variants only. + """ + isVariantOnly: Boolean + + """ + Name of an attribute displayed in the interface. + """ + name: String + + """ + IDs of values to be removed from this attribute. + """ + removeValues: [ID!] + + """ + Internal representation of an attribute name. + """ + slug: String + + """ + The position of the attribute in the storefront navigation (0 by default). + """ + storefrontSearchPosition: Int + + """ + The unit of attribute values. + """ + unit: MeasurementUnitsEnum + + """ + Whether the attribute requires values to be passed or not. + """ + valueRequired: Boolean + + """ + Whether the attribute should be visible or not in storefront. + """ + visibleInStorefront: Boolean +} + +""" +Represents a value of an attribute. +""" +type AttributeValue implements Node { + """ + Represents the boolean value of the attribute value. + """ + boolean: Boolean + + """ + Represents the date value of the attribute value. + """ + date: Date + + """ + Represents the date/time value of the attribute value. + """ + dateTime: DateTime + + """ + Represents file URL and content type (if attribute value is a file). + """ + file: File + id: ID! + + """ + The input type to use for entering attribute values in the dashboard. + """ + inputType: AttributeInputTypeEnum + + """ + Name of a value displayed in the interface. + """ + name: String + + """ + The ID of the attribute reference. + """ + reference: ID + + """ + Represents the text of the attribute value, includes formatting. + + Rich text format. For reference see https://editorjs.io/ + """ + richText: JSONString + + """ + Internal representation of a value (unique per attribute). + """ + slug: String + + """ + Returns translated attribute value fields for the given language code. + """ + translation( + """ + A language code to return the translation for attribute value. + """ + languageCode: LanguageCodeEnum! + ): AttributeValueTranslation + + """ + Represent value of the attribute value (e.g. color values for swatch attributes). + """ + value: String +} + +""" +Deletes values of attributes. + +Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. +""" +type AttributeValueBulkDelete { + attributeErrors: [AttributeError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + Returns how many objects were affected. + """ + count: Int! + errors: [AttributeError!]! +} + +type AttributeValueCountableConnection { + edges: [AttributeValueCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type AttributeValueCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: AttributeValue! +} + +""" +Creates a value for an attribute. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type AttributeValueCreate { + """ + The updated attribute. + """ + attribute: Attribute + attributeErrors: [AttributeError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + attributeValue: AttributeValue + errors: [AttributeError!]! +} + +input AttributeValueCreateInput { + """ + File content type. + """ + contentType: String + + """ + URL of the file attribute. Every time, a new value is created. + """ + fileUrl: String + + """ + Name of a value displayed in the interface. + """ + name: String! + + """ + Represents the text of the attribute value, includes formatting. + + Rich text format. For reference see https://editorjs.io/ + """ + richText: JSONString + + """ + Represent value of the attribute value (e.g. color values for swatch attributes). + """ + value: String +} + +""" +Deletes a value of an attribute. + +Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. +""" +type AttributeValueDelete { + """ + The updated attribute. + """ + attribute: Attribute + attributeErrors: [AttributeError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + attributeValue: AttributeValue + errors: [AttributeError!]! +} + +input AttributeValueFilterInput { + ids: [ID!] + search: String +} + +input AttributeValueInput { + """ + Represents the boolean value of the attribute value. + """ + boolean: Boolean + + """ + File content type. + """ + contentType: String + + """ + Represents the date value of the attribute value. + """ + date: Date + + """ + Represents the date/time value of the attribute value. + """ + dateTime: DateTime + + """ + URL of the file attribute. Every time, a new value is created. + """ + file: String + + """ + ID of the selected attribute. + """ + id: ID + + """ + List of entity IDs that will be used as references. + """ + references: [ID!] + + """ + Text content in JSON format. + """ + richText: JSONString + + """ + The value or slug of an attribute to resolve. If the passed value is non-existent, it will be created. + """ + values: [String!] +} + +type AttributeValueTranslatableContent implements Node { + """ + Represents a value of an attribute. + """ + attributeValue: AttributeValue + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) + id: ID! + name: String! + + """ + Attribute value. + + Rich text format. For reference see https://editorjs.io/ + """ + richText: JSONString + + """ + Returns translated attribute value fields for the given language code. + """ + translation( + """ + A language code to return the translation for attribute value. + """ + languageCode: LanguageCodeEnum! + ): AttributeValueTranslation +} + +""" +Creates/updates translations for an attribute value. + +Requires one of the following permissions: MANAGE_TRANSLATIONS. +""" +type AttributeValueTranslate { + attributeValue: AttributeValue + errors: [TranslationError!]! + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type AttributeValueTranslation implements Node { + id: ID! + + """ + Translation language. + """ + language: LanguageDisplay! + name: String! + + """ + Attribute value. + + Rich text format. For reference see https://editorjs.io/ + """ + richText: JSONString +} + +input AttributeValueTranslationInput { + name: String + + """ + Translated text. + + Rich text format. For reference see https://editorjs.io/ + """ + richText: JSONString +} + +""" +Updates value of an attribute. + +Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. +""" +type AttributeValueUpdate { + """ + The updated attribute. + """ + attribute: Attribute + attributeErrors: [AttributeError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + attributeValue: AttributeValue + errors: [AttributeError!]! +} + +input AttributeValueUpdateInput { + """ + File content type. + """ + contentType: String + + """ + URL of the file attribute. Every time, a new value is created. + """ + fileUrl: String + + """ + Name of a value displayed in the interface. + """ + name: String + + """ + Represents the text of the attribute value, includes formatting. + + Rich text format. For reference see https://editorjs.io/ + """ + richText: JSONString + + """ + Represent value of the attribute value (e.g. color values for swatch attributes). + """ + value: String +} + +input BulkAttributeValueInput { + """ + The boolean value of an attribute to resolve. If the passed value is non-existent, it will be created. + """ + boolean: Boolean + + """ + ID of the selected attribute. + """ + id: ID + + """ + The value or slug of an attribute to resolve. If the passed value is non-existent, it will be created. + """ + values: [String!] +} + +type BulkProductError { + """ + List of attributes IDs which causes the error. + """ + attributes: [ID!] + + """ + List of channel IDs which causes the error. + """ + channels: [ID!] + + """ + The error code. + """ + code: ProductErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + Index of an input list item that caused the error. + """ + index: Int + + """ + The error message. + """ + message: String + + """ + List of attribute values IDs which causes the error. + """ + values: [ID!] + + """ + List of warehouse IDs which causes the error. + """ + warehouses: [ID!] +} + +type BulkStockError { + """ + List of attributes IDs which causes the error. + """ + attributes: [ID!] + + """ + The error code. + """ + code: ProductErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + Index of an input list item that caused the error. + """ + index: Int + + """ + The error message. + """ + message: String + + """ + List of attribute values IDs which causes the error. + """ + values: [ID!] +} + +input CardInput { + """ + Payment method nonce, a token returned by the appropriate provider's SDK. + """ + code: String! + + """ + Card security code. + """ + cvc: String + + """ + Information about currency and amount. + """ + money: MoneyInput! +} + +input CatalogueInput { + """ + Categories related to the discount. + """ + categories: [ID!] + + """ + Collections related to the discount. + """ + collections: [ID!] + + """ + Products related to the discount. + """ + products: [ID!] + + """ + Product variant related to the discount. + + Added in Saleor 3.1. + """ + variants: [ID!] +} + +""" +Represents a single category of products. Categories allow to organize products in a tree-hierarchies which can be used for navigation in the storefront. +""" +type Category implements Node & ObjectWithMetadata { + """ + List of ancestors of the category. + """ + ancestors( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): CategoryCountableConnection + backgroundImage( + """ + Size of the image. + """ + size: Int + ): Image + + """ + List of children of the category. + """ + children( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): CategoryCountableConnection + + """ + Description of the category. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Description of the category. + + Rich text format. For reference see https://editorjs.io/ + """ + descriptionJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `description` field instead." + ) + id: ID! + level: Int! + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + name: String! + parent: Category + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of products in the category. Requires the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. + """ + products( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ProductCountableConnection + seoDescription: String + seoTitle: String + slug: String! + + """ + Returns translated category fields for the given language code. + """ + translation( + """ + A language code to return the translation for category. + """ + languageCode: LanguageCodeEnum! + ): CategoryTranslation +} + +""" +Deletes categories. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type CategoryBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + errors: [ProductError!]! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type CategoryCountableConnection { + edges: [CategoryCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type CategoryCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Category! +} + +""" +Creates a new category. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type CategoryCreate { + category: Category + errors: [ProductError!]! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type CategoryCreated implements Event { + """ + The category the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + category: Category + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Deletes a category. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type CategoryDelete { + category: Category + errors: [ProductError!]! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type CategoryDeleted implements Event { + """ + The category the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + category: Category + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +input CategoryFilterInput { + ids: [ID!] + metadata: [MetadataFilter!] + search: String +} + +input CategoryInput { + """ + Background image file. + """ + backgroundImage: Upload + + """ + Alt text for a product media. + """ + backgroundImageAlt: String + + """ + Category description. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Category name. + """ + name: String + + """ + Search engine optimization fields. + """ + seo: SeoInput + + """ + Category slug. + """ + slug: String +} + +enum CategorySortField { + """ + Sort categories by name. + """ + NAME + + """ + Sort categories by product count. + """ + PRODUCT_COUNT + + """ + Sort categories by subcategory count. + """ + SUBCATEGORY_COUNT +} + +input CategorySortingInput { + """ + Specifies the channel in which to sort the data. + + DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. + """ + channel: String + + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort categories by the selected field. + """ + field: CategorySortField! +} + +type CategoryTranslatableContent implements Node { + """ + Represents a single category of products. + """ + category: Category + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) + + """ + Description of the category. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Description of the category. + + Rich text format. For reference see https://editorjs.io/ + """ + descriptionJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `description` field instead." + ) + id: ID! + name: String! + seoDescription: String + seoTitle: String + + """ + Returns translated category fields for the given language code. + """ + translation( + """ + A language code to return the translation for category. + """ + languageCode: LanguageCodeEnum! + ): CategoryTranslation +} + +""" +Creates/updates translations for a category. + +Requires one of the following permissions: MANAGE_TRANSLATIONS. +""" +type CategoryTranslate { + category: Category + errors: [TranslationError!]! + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type CategoryTranslation implements Node { + """ + Translated description of the category. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Translated description of the category. + + Rich text format. For reference see https://editorjs.io/ + """ + descriptionJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `description` field instead." + ) + id: ID! + + """ + Translation language. + """ + language: LanguageDisplay! + name: String + seoDescription: String + seoTitle: String +} + +""" +Updates a category. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type CategoryUpdate { + category: Category + errors: [ProductError!]! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type CategoryUpdated implements Event { + """ + The category the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + category: Category + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Represents channel. +""" +type Channel implements Node { + currencyCode: String! + + """ + Default country for the channel. Default country can be used in checkout to determine the stock quantities or calculate taxes when the country was not explicitly provided. + + Added in Saleor 3.1. + """ + defaultCountry: CountryDisplay! + + """ + Whether a channel has associated orders. + + Requires one of the following permissions: MANAGE_CHANNELS. + """ + hasOrders: Boolean! + id: ID! + isActive: Boolean! + name: String! + slug: String! +} + +""" +Activate a channel. + +Requires one of the following permissions: MANAGE_CHANNELS. +""" +type ChannelActivate { + """ + Activated channel. + """ + channel: Channel + channelErrors: [ChannelError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ChannelError!]! +} + +""" +Creates new channel. + +Requires one of the following permissions: MANAGE_CHANNELS. +""" +type ChannelCreate { + channel: Channel + channelErrors: [ChannelError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ChannelError!]! +} + +input ChannelCreateInput { + """ + List of shipping zones to assign to the channel. + """ + addShippingZones: [ID!] + + """ + Currency of the channel. + """ + currencyCode: String! + + """ + Default country for the channel. Default country can be used in checkout to determine the stock quantities or calculate taxes when the country was not explicitly provided. + + Added in Saleor 3.1. + """ + defaultCountry: CountryCode! + + """ + isActive flag. + """ + isActive: Boolean + + """ + Name of the channel. + """ + name: String! + + """ + Slug of the channel. + """ + slug: String! +} + +type ChannelCreated implements Event { + """ + The channel the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + channel: Channel + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Deactivate a channel. + +Requires one of the following permissions: MANAGE_CHANNELS. +""" +type ChannelDeactivate { + """ + Deactivated channel. + """ + channel: Channel + channelErrors: [ChannelError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ChannelError!]! +} + +""" +Delete a channel. Orders associated with the deleted channel will be moved to the target channel. Checkouts, product availability, and pricing will be removed. + +Requires one of the following permissions: MANAGE_CHANNELS. +""" +type ChannelDelete { + channel: Channel + channelErrors: [ChannelError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ChannelError!]! +} + +input ChannelDeleteInput { + """ + ID of channel to migrate orders from origin channel. + """ + channelId: ID! +} + +type ChannelDeleted implements Event { + """ + The channel the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + channel: Channel + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +type ChannelError { + """ + The error code. + """ + code: ChannelErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + List of shipping zone IDs which causes the error. + """ + shippingZones: [ID!] +} + +""" +An enumeration. +""" +enum ChannelErrorCode { + ALREADY_EXISTS + CHANNELS_CURRENCY_MUST_BE_THE_SAME + CHANNEL_WITH_ORDERS + DUPLICATED_INPUT_ITEM + GRAPHQL_ERROR + INVALID + NOT_FOUND + REQUIRED + UNIQUE +} + +type ChannelStatusChanged implements Event { + """ + The channel the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + channel: Channel + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Update a channel. + +Requires one of the following permissions: MANAGE_CHANNELS. +""" +type ChannelUpdate { + channel: Channel + channelErrors: [ChannelError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ChannelError!]! +} + +input ChannelUpdateInput { + """ + List of shipping zones to assign to the channel. + """ + addShippingZones: [ID!] + + """ + Default country for the channel. Default country can be used in checkout to determine the stock quantities or calculate taxes when the country was not explicitly provided. + + Added in Saleor 3.1. + """ + defaultCountry: CountryCode + + """ + isActive flag. + """ + isActive: Boolean + + """ + Name of the channel. + """ + name: String + + """ + List of shipping zones to unassign from the channel. + """ + removeShippingZones: [ID!] + + """ + Slug of the channel. + """ + slug: String +} + +type ChannelUpdated implements Event { + """ + The channel the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + channel: Channel + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Checkout object. +""" +type Checkout implements Node & ObjectWithMetadata { + """ + Collection points that can be used for this order. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + availableCollectionPoints: [Warehouse!]! + + """ + List of available payment gateways. + """ + availablePaymentGateways: [PaymentGateway!]! + + """ + Shipping methods that can be used with this checkout. + """ + availableShippingMethods: [ShippingMethod!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `shippingMethods` instead.") + billingAddress: Address + channel: Channel! + created: DateTime! + + """ + The delivery method selected for this checkout. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + deliveryMethod: DeliveryMethod + discount: Money + discountName: String + + """ + Email of a customer. + """ + email: String + + """ + List of gift cards associated with this checkout. + """ + giftCards: [GiftCard!]! + id: ID! + + """ + Returns True, if checkout requires shipping. + """ + isShippingRequired: Boolean! + + """ + Checkout language code. + """ + languageCode: LanguageCodeEnum! + lastChange: DateTime! + + """ + A list of checkout lines, each containing information about an item in the checkout. + """ + lines: [CheckoutLine!]! + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + note: String! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + The number of items purchased. + """ + quantity: Int! + shippingAddress: Address + + """ + The shipping method related with checkout. + """ + shippingMethod: ShippingMethod + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `deliveryMethod` instead.") + + """ + Shipping methods that can be used with this checkout. + """ + shippingMethods: [ShippingMethod!]! + + """ + The price of the shipping, with all the taxes included. + """ + shippingPrice: TaxedMoney! + + """ + Date when oldest stock reservation for this checkout expires or null if no stock is reserved. + + Added in Saleor 3.1. + """ + stockReservationExpires: DateTime + + """ + The price of the checkout before shipping, with taxes included. + """ + subtotalPrice: TaxedMoney! + + """ + The checkout's token. + """ + token: UUID! + + """ + The sum of the the checkout line prices, with all the taxes,shipping costs, and discounts included. + """ + totalPrice: TaxedMoney! + + """ + List of transactions for the checkout. Requires one of the following permissions: MANAGE_CHECKOUTS, HANDLE_PAYMENTS. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + transactions: [TransactionItem!] + translatedDiscountName: String + user: User + voucherCode: String +} + +""" +Adds a gift card or a voucher to a checkout. +""" +type CheckoutAddPromoCode { + """ + The checkout with the added gift card or voucher. + """ + checkout: Checkout + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CheckoutError!]! +} + +""" +Update billing address in the existing checkout. +""" +type CheckoutBillingAddressUpdate { + """ + An updated checkout. + """ + checkout: Checkout + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CheckoutError!]! +} + +""" +Completes the checkout. As a result a new order is created and a payment charge is made. This action requires a successful payment before it can be performed. In case additional confirmation step as 3D secure is required confirmationNeeded flag will be set to True and no order created until payment is confirmed with second call of this mutation. +""" +type CheckoutComplete { + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + Confirmation data used to process additional authorization steps. + """ + confirmationData: JSONString + + """ + Set to true if payment needs to be confirmed before checkout is complete. + """ + confirmationNeeded: Boolean! + errors: [CheckoutError!]! + + """ + Placed order. + """ + order: Order +} + +type CheckoutCountableConnection { + edges: [CheckoutCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type CheckoutCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Checkout! +} + +""" +Create a new checkout. +""" +type CheckoutCreate { + checkout: Checkout + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + Whether the checkout was created or the current active one was returned. Refer to checkoutLinesAdd and checkoutLinesUpdate to merge a cart with an active checkout. + """ + created: Boolean + @deprecated(reason: "This field will be removed in Saleor 4.0. Always returns `true`.") + errors: [CheckoutError!]! +} + +input CheckoutCreateInput { + """ + Billing address of the customer. + """ + billingAddress: AddressInput + + """ + Slug of a channel in which to create a checkout. + """ + channel: String + + """ + The customer's email address. + """ + email: String + + """ + Checkout language code. + """ + languageCode: LanguageCodeEnum + + """ + A list of checkout lines, each containing information about an item in the checkout. + """ + lines: [CheckoutLineInput!]! + + """ + The mailing address to where the checkout will be shipped. Note: the address will be ignored if the checkout doesn't contain shippable items. + """ + shippingAddress: AddressInput +} + +type CheckoutCreated implements Event { + """ + The checkout the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + checkout: Checkout + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Sets the customer as the owner of the checkout. + +Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_USER. +""" +type CheckoutCustomerAttach { + """ + An updated checkout. + """ + checkout: Checkout + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CheckoutError!]! +} + +""" +Removes the user assigned as the owner of the checkout. + +Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_USER. +""" +type CheckoutCustomerDetach { + """ + An updated checkout. + """ + checkout: Checkout + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CheckoutError!]! +} + +""" +Updates the delivery method (shipping method or pick up point) of the checkout. + +Added in Saleor 3.1. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. +""" +type CheckoutDeliveryMethodUpdate { + """ + An updated checkout. + """ + checkout: Checkout + errors: [CheckoutError!]! +} + +""" +Updates email address in the existing checkout object. +""" +type CheckoutEmailUpdate { + """ + An updated checkout. + """ + checkout: Checkout + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CheckoutError!]! +} + +type CheckoutError { + """ + A type of address that causes the error. + """ + addressType: AddressTypeEnum + + """ + The error code. + """ + code: CheckoutErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + List of line Ids which cause the error. + """ + lines: [ID!] + + """ + The error message. + """ + message: String + + """ + List of varint IDs which causes the error. + """ + variants: [ID!] +} + +""" +An enumeration. +""" +enum CheckoutErrorCode { + BILLING_ADDRESS_NOT_SET + CHANNEL_INACTIVE + CHECKOUT_NOT_FULLY_PAID + DELIVERY_METHOD_NOT_APPLICABLE + EMAIL_NOT_SET + GIFT_CARD_NOT_APPLICABLE + GRAPHQL_ERROR + INSUFFICIENT_STOCK + INVALID + INVALID_SHIPPING_METHOD + MISSING_CHANNEL_SLUG + NOT_FOUND + NO_LINES + PAYMENT_ERROR + PRODUCT_NOT_PUBLISHED + PRODUCT_UNAVAILABLE_FOR_PURCHASE + QUANTITY_GREATER_THAN_LIMIT + REQUIRED + SHIPPING_ADDRESS_NOT_SET + SHIPPING_METHOD_NOT_APPLICABLE + SHIPPING_METHOD_NOT_SET + SHIPPING_NOT_REQUIRED + TAX_ERROR + UNAVAILABLE_VARIANT_IN_CHANNEL + UNIQUE + VOUCHER_NOT_APPLICABLE + ZERO_QUANTITY +} + +input CheckoutFilterInput { + channels: [ID!] + created: DateRangeInput + customer: String + metadata: [MetadataFilter!] + search: String +} + +""" +Update language code in the existing checkout. +""" +type CheckoutLanguageCodeUpdate { + """ + An updated checkout. + """ + checkout: Checkout + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CheckoutError!]! +} + +""" +Represents an item in the checkout. +""" +type CheckoutLine implements Node { + id: ID! + quantity: Int! + + """ + Indicates whether the item need to be delivered. + """ + requiresShipping: Boolean! + + """ + The sum of the checkout line price, taxes and discounts. + """ + totalPrice: TaxedMoney! + + """ + The sum of the checkout line price, without discounts. + """ + undiscountedTotalPrice: Money! + + """ + The unit price of the checkout line, without discounts. + """ + undiscountedUnitPrice: Money! + + """ + The unit price of the checkout line, with taxes and discounts. + """ + unitPrice: TaxedMoney! + variant: ProductVariant! +} + +type CheckoutLineCountableConnection { + edges: [CheckoutLineCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type CheckoutLineCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: CheckoutLine! +} + +""" +Deletes a CheckoutLine. +""" +type CheckoutLineDelete { + """ + An updated checkout. + """ + checkout: Checkout + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CheckoutError!]! +} + +input CheckoutLineInput { + """ + Custom price of the item. Can be set only by apps with `HANDLE_CHECKOUTS` permission. When the line with the same variant will be provided multiple times, the last price will be used. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + price: PositiveDecimal + + """ + The number of items purchased. + """ + quantity: Int! + + """ + ID of the product variant. + """ + variantId: ID! +} + +input CheckoutLineUpdateInput { + """ + Custom price of the item. Can be set only by apps with `HANDLE_CHECKOUTS` permission. When the line with the same variant will be provided multiple times, the last price will be used. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + price: PositiveDecimal + + """ + The number of items purchased. Optional for apps, required for any other users. + """ + quantity: Int + + """ + ID of the product variant. + """ + variantId: ID! +} + +""" +Adds a checkout line to the existing checkout.If line was already in checkout, its quantity will be increased. +""" +type CheckoutLinesAdd { + """ + An updated checkout. + """ + checkout: Checkout + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CheckoutError!]! +} + +""" +Deletes checkout lines. +""" +type CheckoutLinesDelete { + """ + An updated checkout. + """ + checkout: Checkout + errors: [CheckoutError!]! +} + +""" +Updates checkout line in the existing checkout. +""" +type CheckoutLinesUpdate { + """ + An updated checkout. + """ + checkout: Checkout + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CheckoutError!]! +} + +""" +Create a new payment for given checkout. +""" +type CheckoutPaymentCreate { + """ + Related checkout object. + """ + checkout: Checkout + errors: [PaymentError!]! + + """ + A newly created payment. + """ + payment: Payment + paymentErrors: [PaymentError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Remove a gift card or a voucher from a checkout. +""" +type CheckoutRemovePromoCode { + """ + The checkout with the removed gift card or voucher. + """ + checkout: Checkout + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CheckoutError!]! +} + +""" +Update shipping address in the existing checkout. +""" +type CheckoutShippingAddressUpdate { + """ + An updated checkout. + """ + checkout: Checkout + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CheckoutError!]! +} + +""" +Updates the shipping method of the checkout. +""" +type CheckoutShippingMethodUpdate { + """ + An updated checkout. + """ + checkout: Checkout + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CheckoutError!]! +} + +enum CheckoutSortField { + """ + Sort checkouts by creation date. + """ + CREATION_DATE + + """ + Sort checkouts by customer. + """ + CUSTOMER + + """ + Sort checkouts by payment. + """ + PAYMENT +} + +input CheckoutSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort checkouts by the selected field. + """ + field: CheckoutSortField! +} + +type CheckoutUpdated implements Event { + """ + The checkout the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + checkout: Checkout + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +type ChoiceValue { + raw: String + verbose: String +} + +""" +Represents a collection of products. +""" +type Collection implements Node & ObjectWithMetadata { + backgroundImage( + """ + Size of the image. + """ + size: Int + ): Image + + """ + Channel given to retrieve this collection. Also used by federation gateway to resolve this object in a federated query. + """ + channel: String + + """ + List of channels in which the collection is available. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + channelListings: [CollectionChannelListing!] + + """ + Description of the collection. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Description of the collection. + + Rich text format. For reference see https://editorjs.io/ + """ + descriptionJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `description` field instead." + ) + id: ID! + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + name: String! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of products in this collection. + """ + products( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Filtering options for products. + """ + filter: ProductFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + + """ + Sort products. + """ + sortBy: ProductOrder + ): ProductCountableConnection + seoDescription: String + seoTitle: String + slug: String! + + """ + Returns translated collection fields for the given language code. + """ + translation( + """ + A language code to return the translation for collection. + """ + languageCode: LanguageCodeEnum! + ): CollectionTranslation +} + +""" +Adds products to a collection. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type CollectionAddProducts { + """ + Collection to which products will be added. + """ + collection: Collection + collectionErrors: [CollectionError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CollectionError!]! +} + +""" +Deletes collections. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type CollectionBulkDelete { + collectionErrors: [CollectionError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + Returns how many objects were affected. + """ + count: Int! + errors: [CollectionError!]! +} + +""" +Represents collection channel listing. +""" +type CollectionChannelListing implements Node { + channel: Channel! + id: ID! + isPublished: Boolean! + publicationDate: Date + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `publishedAt` field to fetch the publication date." + ) + + """ + The collection publication date. + + Added in Saleor 3.3. + """ + publishedAt: DateTime +} + +type CollectionChannelListingError { + """ + List of attributes IDs which causes the error. + """ + attributes: [ID!] + + """ + List of channels IDs which causes the error. + """ + channels: [ID!] + + """ + The error code. + """ + code: ProductErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + List of attribute values IDs which causes the error. + """ + values: [ID!] +} + +""" +Manage collection's availability in channels. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type CollectionChannelListingUpdate { + """ + An updated collection instance. + """ + collection: Collection + collectionChannelListingErrors: [CollectionChannelListingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CollectionChannelListingError!]! +} + +input CollectionChannelListingUpdateInput { + """ + List of channels to which the collection should be assigned. + """ + addChannels: [PublishableChannelListingInput!] + + """ + List of channels from which the collection should be unassigned. + """ + removeChannels: [ID!] +} + +type CollectionCountableConnection { + edges: [CollectionCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type CollectionCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Collection! +} + +""" +Creates a new collection. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type CollectionCreate { + collection: Collection + collectionErrors: [CollectionError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CollectionError!]! +} + +input CollectionCreateInput { + """ + Background image file. + """ + backgroundImage: Upload + + """ + Alt text for an image. + """ + backgroundImageAlt: String + + """ + Description of the collection. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Informs whether a collection is published. + """ + isPublished: Boolean + + """ + Name of the collection. + """ + name: String + + """ + List of products to be added to the collection. + """ + products: [ID!] + + """ + Publication date. ISO 8601 standard. + + DEPRECATED: this field will be removed in Saleor 4.0. + """ + publicationDate: Date + + """ + Search engine optimization fields. + """ + seo: SeoInput + + """ + Slug of the collection. + """ + slug: String +} + +type CollectionCreated implements Event { + """ + The collection the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + collection( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Collection + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Deletes a collection. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type CollectionDelete { + collection: Collection + collectionErrors: [CollectionError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CollectionError!]! +} + +type CollectionDeleted implements Event { + """ + The collection the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + collection( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Collection + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +type CollectionError { + """ + The error code. + """ + code: CollectionErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + List of products IDs which causes the error. + """ + products: [ID!] +} + +""" +An enumeration. +""" +enum CollectionErrorCode { + CANNOT_MANAGE_PRODUCT_WITHOUT_VARIANT + DUPLICATED_INPUT_ITEM + GRAPHQL_ERROR + INVALID + NOT_FOUND + REQUIRED + UNIQUE +} + +input CollectionFilterInput { + """ + Specifies the channel by which the data should be filtered. + + DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. + """ + channel: String + ids: [ID!] + metadata: [MetadataFilter!] + published: CollectionPublished + search: String +} + +input CollectionInput { + """ + Background image file. + """ + backgroundImage: Upload + + """ + Alt text for an image. + """ + backgroundImageAlt: String + + """ + Description of the collection. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Informs whether a collection is published. + """ + isPublished: Boolean + + """ + Name of the collection. + """ + name: String + + """ + Publication date. ISO 8601 standard. + + DEPRECATED: this field will be removed in Saleor 4.0. + """ + publicationDate: Date + + """ + Search engine optimization fields. + """ + seo: SeoInput + + """ + Slug of the collection. + """ + slug: String +} + +enum CollectionPublished { + HIDDEN + PUBLISHED +} + +""" +Remove products from a collection. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type CollectionRemoveProducts { + """ + Collection from which products will be removed. + """ + collection: Collection + collectionErrors: [CollectionError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CollectionError!]! +} + +""" +Reorder the products of a collection. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type CollectionReorderProducts { + """ + Collection from which products are reordered. + """ + collection: Collection + collectionErrors: [CollectionError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CollectionError!]! +} + +enum CollectionSortField { + """ + Sort collections by availability. + + This option requires a channel filter to work as the values can vary between channels. + """ + AVAILABILITY + + """ + Sort collections by name. + """ + NAME + + """ + Sort collections by product count. + """ + PRODUCT_COUNT + + """ + Sort collections by publication date. + + This option requires a channel filter to work as the values can vary between channels. + """ + PUBLICATION_DATE + + """ + Sort collections by publication date. + + This option requires a channel filter to work as the values can vary between channels. + """ + PUBLISHED_AT +} + +input CollectionSortingInput { + """ + Specifies the channel in which to sort the data. + + DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. + """ + channel: String + + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort collections by the selected field. + """ + field: CollectionSortField! +} + +type CollectionTranslatableContent implements Node { + """ + Represents a collection of products. + """ + collection: Collection + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) + + """ + Description of the collection. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Description of the collection. + + Rich text format. For reference see https://editorjs.io/ + """ + descriptionJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `description` field instead." + ) + id: ID! + name: String! + seoDescription: String + seoTitle: String + + """ + Returns translated collection fields for the given language code. + """ + translation( + """ + A language code to return the translation for collection. + """ + languageCode: LanguageCodeEnum! + ): CollectionTranslation +} + +""" +Creates/updates translations for a collection. + +Requires one of the following permissions: MANAGE_TRANSLATIONS. +""" +type CollectionTranslate { + collection: Collection + errors: [TranslationError!]! + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type CollectionTranslation implements Node { + """ + Translated description of the collection. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Translated description of the collection. + + Rich text format. For reference see https://editorjs.io/ + """ + descriptionJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `description` field instead." + ) + id: ID! + + """ + Translation language. + """ + language: LanguageDisplay! + name: String + seoDescription: String + seoTitle: String +} + +""" +Updates a collection. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type CollectionUpdate { + collection: Collection + collectionErrors: [CollectionError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CollectionError!]! +} + +type CollectionUpdated implements Event { + """ + The collection the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + collection( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Collection + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Stores information about a single configuration field. +""" +type ConfigurationItem { + """ + Help text for the field. + """ + helpText: String + + """ + Label for the field. + """ + label: String + + """ + Name of the field. + """ + name: String! + + """ + Type of the field. + """ + type: ConfigurationTypeFieldEnum + + """ + Current value of the field. + """ + value: String +} + +input ConfigurationItemInput { + """ + Name of the field to update. + """ + name: String! + + """ + Value of the given field to update. + """ + value: String +} + +""" +An enumeration. +""" +enum ConfigurationTypeFieldEnum { + BOOLEAN + MULTILINE + OUTPUT + PASSWORD + SECRET + SECRETMULTILINE + STRING +} + +""" +Confirm user account with token sent by email during registration. +""" +type ConfirmAccount { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + + """ + An activated user account. + """ + user: User +} + +""" +Confirm the email change of the logged-in user. + +Requires one of the following permissions: AUTHENTICATED_USER. +""" +type ConfirmEmailChange { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + + """ + A user instance with a new email. + """ + user: User +} + +""" +An enumeration. +""" +enum CountryCode { + AD + AE + AF + AG + AI + AL + AM + AO + AQ + AR + AS + AT + AU + AW + AX + AZ + BA + BB + BD + BE + BF + BG + BH + BI + BJ + BL + BM + BN + BO + BQ + BR + BS + BT + BV + BW + BY + BZ + CA + CC + CD + CF + CG + CH + CI + CK + CL + CM + CN + CO + CR + CU + CV + CW + CX + CY + CZ + DE + DJ + DK + DM + DO + DZ + EC + EE + EG + EH + ER + ES + ET + EU + FI + FJ + FK + FM + FO + FR + GA + GB + GD + GE + GF + GG + GH + GI + GL + GM + GN + GP + GQ + GR + GS + GT + GU + GW + GY + HK + HM + HN + HR + HT + HU + ID + IE + IL + IM + IN + IO + IQ + IR + IS + IT + JE + JM + JO + JP + KE + KG + KH + KI + KM + KN + KP + KR + KW + KY + KZ + LA + LB + LC + LI + LK + LR + LS + LT + LU + LV + LY + MA + MC + MD + ME + MF + MG + MH + MK + ML + MM + MN + MO + MP + MQ + MR + MS + MT + MU + MV + MW + MX + MY + MZ + NA + NC + NE + NF + NG + NI + NL + NO + NP + NR + NU + NZ + OM + PA + PE + PF + PG + PH + PK + PL + PM + PN + PR + PS + PT + PW + PY + QA + RE + RO + RS + RU + RW + SA + SB + SC + SD + SE + SG + SH + SI + SJ + SK + SL + SM + SN + SO + SR + SS + ST + SV + SX + SY + SZ + TC + TD + TF + TG + TH + TJ + TK + TL + TM + TN + TO + TR + TT + TV + TW + TZ + UA + UG + UM + US + UY + UZ + VA + VC + VE + VG + VI + VN + VU + WF + WS + YE + YT + ZA + ZM + ZW +} + +type CountryDisplay { + """ + Country code. + """ + code: String! + + """ + Country name. + """ + country: String! + + """ + Country tax. + """ + vat: VAT +} + +input CountryFilterInput { + """ + Boolean for filtering countries by having shipping zone assigned.If 'true', return countries with shipping zone assigned.If 'false', return countries without any shipping zone assigned.If the argument is not provided (null), return all countries. + """ + attachedToShippingZones: Boolean +} + +""" +Create JWT token. +""" +type CreateToken { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + CSRF token required to re-generate access token. + """ + csrfToken: String + errors: [AccountError!]! + + """ + JWT refresh token, required to re-generate access token. + """ + refreshToken: String + + """ + JWT token, required to authenticate. + """ + token: String + + """ + A user instance. + """ + user: User +} + +type CreditCard { + """ + Card brand. + """ + brand: String! + + """ + Two-digit number representing the card’s expiration month. + """ + expMonth: Int + + """ + Four-digit number representing the card’s expiration year. + """ + expYear: Int + + """ + First 4 digits of the card number. + """ + firstDigits: String + + """ + Last 4 digits of the card number. + """ + lastDigits: String! +} + +""" +Deletes customers. + +Requires one of the following permissions: MANAGE_USERS. +""" +type CustomerBulkDelete { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + Returns how many objects were affected. + """ + count: Int! + errors: [AccountError!]! +} + +""" +Creates a new customer. + +Requires one of the following permissions: MANAGE_USERS. +""" +type CustomerCreate { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + user: User +} + +type CustomerCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The user the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + user: User + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Deletes a customer. + +Requires one of the following permissions: MANAGE_USERS. +""" +type CustomerDelete { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + user: User +} + +""" +History log of the customer. +""" +type CustomerEvent implements Node { + """ + App that performed the action. + """ + app: App + + """ + Number of objects concerned by the event. + """ + count: Int + + """ + Date when event happened at in ISO 8601 format. + """ + date: DateTime + id: ID! + + """ + Content of the event. + """ + message: String + + """ + The concerned order. + """ + order: Order + + """ + The concerned order line. + """ + orderLine: OrderLine + + """ + Customer event type. + """ + type: CustomerEventsEnum + + """ + User who performed the action. + """ + user: User +} + +""" +An enumeration. +""" +enum CustomerEventsEnum { + ACCOUNT_CREATED + CUSTOMER_DELETED + DIGITAL_LINK_DOWNLOADED + EMAIL_ASSIGNED + EMAIL_CHANGED + EMAIL_CHANGED_REQUEST + NAME_ASSIGNED + NOTE_ADDED + NOTE_ADDED_TO_ORDER + PASSWORD_CHANGED + PASSWORD_RESET + PASSWORD_RESET_LINK_SENT + PLACED_ORDER +} + +input CustomerFilterInput { + dateJoined: DateRangeInput + metadata: [MetadataFilter!] + numberOfOrders: IntRangeInput + placedOrders: DateRangeInput + search: String + updatedAt: DateTimeRangeInput +} + +input CustomerInput { + """ + Billing address of the customer. + """ + defaultBillingAddress: AddressInput + + """ + Shipping address of the customer. + """ + defaultShippingAddress: AddressInput + + """ + The unique email address of the user. + """ + email: String + + """ + Given name. + """ + firstName: String + + """ + User account is active. + """ + isActive: Boolean + + """ + User language code. + """ + languageCode: LanguageCodeEnum + + """ + Family name. + """ + lastName: String + + """ + A note about the user. + """ + note: String +} + +""" +Updates an existing customer. + +Requires one of the following permissions: MANAGE_USERS. +""" +type CustomerUpdate { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + user: User +} + +type CustomerUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The user the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + user: User + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +The `Date` scalar type represents a Date +value as specified by +[iso8601](https://en.wikipedia.org/wiki/ISO_8601). +""" +scalar Date + +input DateRangeInput { + """ + Start date. + """ + gte: Date + + """ + End date. + """ + lte: Date +} + +""" +The `DateTime` scalar type represents a DateTime +value as specified by +[iso8601](https://en.wikipedia.org/wiki/ISO_8601). +""" +scalar DateTime + +input DateTimeRangeInput { + """ + Start date. + """ + gte: DateTime + + """ + End date. + """ + lte: DateTime +} + +""" +Deactivate all JWT tokens of the currently authenticated user. + +Requires one of the following permissions: AUTHENTICATED_USER. +""" +type DeactivateAllUserTokens { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! +} + +""" +Delete metadata of an object. To use it, you need to have access to the modified object. +""" +type DeleteMetadata { + errors: [MetadataError!]! + item: ObjectWithMetadata + metadataErrors: [MetadataError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Delete object's private metadata. To use it, you need to be an authenticated staff user or an app and have access to the modified object. +""" +type DeletePrivateMetadata { + errors: [MetadataError!]! + item: ObjectWithMetadata + metadataErrors: [MetadataError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Represents a delivery method chosen for the checkout. `Warehouse` type is used when checkout is marked as "click and collect" and `ShippingMethod` otherwise. + +Added in Saleor 3.1. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. +""" +union DeliveryMethod = ShippingMethod | Warehouse + +type DigitalContent implements Node & ObjectWithMetadata { + automaticFulfillment: Boolean! + contentFile: String! + id: ID! + maxDownloads: Int + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + Product variant assigned to digital content. + """ + productVariant: ProductVariant! + urlValidDays: Int + + """ + List of URLs for the digital variant. + """ + urls: [DigitalContentUrl!] + useDefaultSettings: Boolean! +} + +type DigitalContentCountableConnection { + edges: [DigitalContentCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type DigitalContentCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: DigitalContent! +} + +""" +Create new digital content. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type DigitalContentCreate { + content: DigitalContent + errors: [ProductError!]! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + variant: ProductVariant +} + +""" +Remove digital content assigned to given variant. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type DigitalContentDelete { + errors: [ProductError!]! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + variant: ProductVariant +} + +input DigitalContentInput { + """ + Overwrite default automatic_fulfillment setting for variant. + """ + automaticFulfillment: Boolean + + """ + Determines how many times a download link can be accessed by a customer. + """ + maxDownloads: Int + + """ + Determines for how many days a download link is active since it was generated. + """ + urlValidDays: Int + + """ + Use default digital content settings for this product. + """ + useDefaultSettings: Boolean! +} + +""" +Update digital content. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type DigitalContentUpdate { + content: DigitalContent + errors: [ProductError!]! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + variant: ProductVariant +} + +input DigitalContentUploadInput { + """ + Overwrite default automatic_fulfillment setting for variant. + """ + automaticFulfillment: Boolean + + """ + Represents an file in a multipart request. + """ + contentFile: Upload! + + """ + Determines how many times a download link can be accessed by a customer. + """ + maxDownloads: Int + + """ + Determines for how many days a download link is active since it was generated. + """ + urlValidDays: Int + + """ + Use default digital content settings for this product. + """ + useDefaultSettings: Boolean! +} + +type DigitalContentUrl implements Node { + content: DigitalContent! + created: DateTime! + downloadNum: Int! + id: ID! + + """ + UUID of digital content. + """ + token: UUID! + + """ + URL for digital content. + """ + url: String +} + +""" +Generate new URL to digital content. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type DigitalContentUrlCreate { + digitalContentUrl: DigitalContentUrl + errors: [ProductError!]! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input DigitalContentUrlCreateInput { + """ + Digital content ID which URL will belong to. + """ + content: ID! +} + +type DiscountError { + """ + List of channels IDs which causes the error. + """ + channels: [ID!] + + """ + The error code. + """ + code: DiscountErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + List of products IDs which causes the error. + """ + products: [ID!] +} + +""" +An enumeration. +""" +enum DiscountErrorCode { + ALREADY_EXISTS + CANNOT_MANAGE_PRODUCT_WITHOUT_VARIANT + DUPLICATED_INPUT_ITEM + GRAPHQL_ERROR + INVALID + NOT_FOUND + REQUIRED + UNIQUE +} + +enum DiscountStatusEnum { + ACTIVE + EXPIRED + SCHEDULED +} + +enum DiscountValueTypeEnum { + FIXED + PERCENTAGE +} + +""" +An enumeration. +""" +enum DistanceUnitsEnum { + CM + FT + INCH + KM + M + YD +} + +""" +Represents shop's domain. +""" +type Domain { + """ + The host name of the domain. + """ + host: String! + + """ + Inform if SSL is enabled. + """ + sslEnabled: Boolean! + + """ + Shop's absolute URL. + """ + url: String! +} + +""" +Deletes draft orders. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type DraftOrderBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + errors: [OrderError!]! + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Completes creating an order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type DraftOrderComplete { + errors: [OrderError!]! + + """ + Completed order. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Creates a new draft order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type DraftOrderCreate { + errors: [OrderError!]! + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input DraftOrderCreateInput { + """ + Billing address of the customer. + """ + billingAddress: AddressInput + + """ + ID of the channel associated with the order. + """ + channelId: ID + + """ + A note from a customer. Visible by customers in the order summary. + """ + customerNote: String + + """ + Discount amount for the order. + """ + discount: PositiveDecimal + + """ + Variant line input consisting of variant ID and quantity of products. + """ + lines: [OrderLineCreateInput!] + + """ + URL of a view where users should be redirected to see the order details. URL in RFC 1808 format. + """ + redirectUrl: String + + """ + Shipping address of the customer. + """ + shippingAddress: AddressInput + + """ + ID of a selected shipping method. + """ + shippingMethod: ID + + """ + Customer associated with the draft order. + """ + user: ID + + """ + Email address of the customer. + """ + userEmail: String + + """ + ID of the voucher associated with the order. + """ + voucher: ID +} + +type DraftOrderCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The order the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + order: Order + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Deletes a draft order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type DraftOrderDelete { + errors: [OrderError!]! + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type DraftOrderDeleted implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The order the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + order: Order + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +input DraftOrderInput { + """ + Billing address of the customer. + """ + billingAddress: AddressInput + + """ + ID of the channel associated with the order. + """ + channelId: ID + + """ + A note from a customer. Visible by customers in the order summary. + """ + customerNote: String + + """ + Discount amount for the order. + """ + discount: PositiveDecimal + + """ + URL of a view where users should be redirected to see the order details. URL in RFC 1808 format. + """ + redirectUrl: String + + """ + Shipping address of the customer. + """ + shippingAddress: AddressInput + + """ + ID of a selected shipping method. + """ + shippingMethod: ID + + """ + Customer associated with the draft order. + """ + user: ID + + """ + Email address of the customer. + """ + userEmail: String + + """ + ID of the voucher associated with the order. + """ + voucher: ID +} + +""" +Deletes order lines. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type DraftOrderLinesBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + errors: [OrderError!]! + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Updates a draft order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type DraftOrderUpdate { + errors: [OrderError!]! + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type DraftOrderUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The order the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + order: Order + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +interface Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Event delivery. +""" +type EventDelivery implements Node { + """ + Event delivery attempts. + """ + attempts( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + + """ + Event delivery sorter + """ + sortBy: EventDeliveryAttemptSortingInput + ): EventDeliveryAttemptCountableConnection + createdAt: DateTime! + + """ + Webhook event type. + """ + eventType: WebhookEventTypeEnum! + id: ID! + + """ + Event payload. + """ + payload: String + + """ + Event delivery status. + """ + status: EventDeliveryStatusEnum! +} + +""" +Event delivery attempts. +""" +type EventDeliveryAttempt implements Node { + """ + Event delivery creation date and time. + """ + createdAt: DateTime! + + """ + Delivery attempt duration. + """ + duration: Float + id: ID! + + """ + Request headers for delivery attempt. + """ + requestHeaders: String + + """ + Delivery attempt response content. + """ + response: String + + """ + Response headers for delivery attempt. + """ + responseHeaders: String + + """ + Delivery attempt response status code. + """ + responseStatusCode: Int + + """ + Event delivery status. + """ + status: EventDeliveryStatusEnum! + + """ + Task id for delivery attempt. + """ + taskId: String +} + +type EventDeliveryAttemptCountableConnection { + edges: [EventDeliveryAttemptCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type EventDeliveryAttemptCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: EventDeliveryAttempt! +} + +enum EventDeliveryAttemptSortField { + """ + Sort event delivery attempts by created at. + """ + CREATED_AT +} + +input EventDeliveryAttemptSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort attempts by the selected field. + """ + field: EventDeliveryAttemptSortField! +} + +type EventDeliveryCountableConnection { + edges: [EventDeliveryCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type EventDeliveryCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: EventDelivery! +} + +input EventDeliveryFilterInput { + eventType: WebhookEventTypeEnum + status: EventDeliveryStatusEnum +} + +""" +Retries event delivery. + +Requires one of the following permissions: MANAGE_APPS. +""" +type EventDeliveryRetry { + """ + Event delivery. + """ + delivery: EventDelivery + errors: [WebhookError!]! +} + +enum EventDeliverySortField { + """ + Sort event deliveries by created at. + """ + CREATED_AT +} + +input EventDeliverySortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort deliveries by the selected field. + """ + field: EventDeliverySortField! +} + +enum EventDeliveryStatusEnum { + FAILED + PENDING + SUCCESS +} + +type ExportError { + """ + The error code. + """ + code: ExportErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String +} + +""" +An enumeration. +""" +enum ExportErrorCode { + GRAPHQL_ERROR + INVALID + NOT_FOUND + REQUIRED +} + +""" +History log of export file. +""" +type ExportEvent implements Node { + """ + App which performed the action. Requires one of the following permissions: OWNER, MANAGE_APPS. + """ + app: App + + """ + Date when event happened at in ISO 8601 format. + """ + date: DateTime! + + """ + The ID of the object. + """ + id: ID! + + """ + Content of the event. + """ + message: String! + + """ + Export event type. + """ + type: ExportEventsEnum! + + """ + User who performed the action. Requires one of the following permissions: OWNER, MANAGE_STAFF. + """ + user: User +} + +""" +An enumeration. +""" +enum ExportEventsEnum { + EXPORTED_FILE_SENT + EXPORT_DELETED + EXPORT_FAILED + EXPORT_FAILED_INFO_SENT + EXPORT_PENDING + EXPORT_SUCCESS +} + +""" +Represents a job data of exported file. +""" +type ExportFile implements Job & Node { + app: App + + """ + Created date time of job in ISO 8601 format. + """ + createdAt: DateTime! + + """ + List of events associated with the export. + """ + events: [ExportEvent!] + id: ID! + + """ + Job message. + """ + message: String + + """ + Job status. + """ + status: JobStatusEnum! + + """ + Date time of job last update in ISO 8601 format. + """ + updatedAt: DateTime! + + """ + The URL of field to download. + """ + url: String + user: User +} + +type ExportFileCountableConnection { + edges: [ExportFileCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type ExportFileCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ExportFile! +} + +input ExportFileFilterInput { + app: String + createdAt: DateTimeRangeInput + status: JobStatusEnum + updatedAt: DateTimeRangeInput + user: String +} + +enum ExportFileSortField { + CREATED_AT + LAST_MODIFIED_AT + STATUS + UPDATED_AT +} + +input ExportFileSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort export file by the selected field. + """ + field: ExportFileSortField! +} + +""" +Export gift cards to csv file. + +Added in Saleor 3.1. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. + +Requires one of the following permissions: MANAGE_GIFT_CARD. +""" +type ExportGiftCards { + errors: [ExportError!]! + + """ + The newly created export file job which is responsible for export data. + """ + exportFile: ExportFile +} + +input ExportGiftCardsInput { + """ + Type of exported file. + """ + fileType: FileTypesEnum! + + """ + Filtering options for gift cards. + """ + filter: GiftCardFilterInput + + """ + List of gift cards IDs to export. + """ + ids: [ID!] + + """ + Determine which gift cards should be exported. + """ + scope: ExportScope! +} + +input ExportInfoInput { + """ + List of attribute ids witch should be exported. + """ + attributes: [ID!] + + """ + List of channels ids which should be exported. + """ + channels: [ID!] + + """ + List of product fields witch should be exported. + """ + fields: [ProductFieldEnum!] + + """ + List of warehouse ids witch should be exported. + """ + warehouses: [ID!] +} + +""" +Export products to csv file. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ExportProducts { + errors: [ExportError!]! + exportErrors: [ExportError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + The newly created export file job which is responsible for export data. + """ + exportFile: ExportFile +} + +input ExportProductsInput { + """ + Input with info about fields which should be exported. + """ + exportInfo: ExportInfoInput + + """ + Type of exported file. + """ + fileType: FileTypesEnum! + + """ + Filtering options for products. + """ + filter: ProductFilterInput + + """ + List of products IDs to export. + """ + ids: [ID!] + + """ + Determine which products should be exported. + """ + scope: ExportScope! +} + +enum ExportScope { + """ + Export all products. + """ + ALL + + """ + Export the filtered products. + """ + FILTER + + """ + Export products with given ids. + """ + IDS +} + +type ExternalAuthentication { + """ + ID of external authentication plugin. + """ + id: String! + + """ + Name of external authentication plugin. + """ + name: String +} + +""" +Prepare external authentication url for user by custom plugin. +""" +type ExternalAuthenticationUrl { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + The data returned by authentication plugin. + """ + authenticationData: JSONString + errors: [AccountError!]! +} + +""" +Logout user by custom plugin. +""" +type ExternalLogout { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + + """ + The data returned by authentication plugin. + """ + logoutData: JSONString +} + +type ExternalNotificationError { + """ + The error code. + """ + code: ExternalNotificationErrorCodes! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String +} + +""" +An enumeration. +""" +enum ExternalNotificationErrorCodes { + CHANNEL_INACTIVE + INVALID_MODEL_TYPE + NOT_FOUND + REQUIRED +} + +""" +Trigger sending a notification with the notify plugin method. Serializes nodes provided as ids parameter and includes this data in the notification payload. + +Added in Saleor 3.1. +""" +type ExternalNotificationTrigger { + errors: [ExternalNotificationError!]! +} + +input ExternalNotificationTriggerInput { + """ + External event type. This field is passed to a plugin as an event type. + """ + externalEventType: String! + + """ + Additional payload that will be merged with the one based on the bussines object ID. + """ + extraPayload: JSONString + + """ + The list of customers or orders node IDs that will be serialized and included in the notification payload. + """ + ids: [ID!]! +} + +""" +Obtain external access tokens for user by custom plugin. +""" +type ExternalObtainAccessTokens { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + CSRF token required to re-generate external access token. + """ + csrfToken: String + errors: [AccountError!]! + + """ + The refresh token, required to re-generate external access token. + """ + refreshToken: String + + """ + The token, required to authenticate. + """ + token: String + + """ + A user instance. + """ + user: User +} + +""" +Refresh user's access by custom plugin. +""" +type ExternalRefresh { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + CSRF token required to re-generate external access token. + """ + csrfToken: String + errors: [AccountError!]! + + """ + The refresh token, required to re-generate external access token. + """ + refreshToken: String + + """ + The token, required to authenticate. + """ + token: String + + """ + A user instance. + """ + user: User +} + +""" +Verify external authentication data by plugin. +""" +type ExternalVerify { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + + """ + Determine if authentication data is valid or not. + """ + isValid: Boolean! + + """ + User assigned to data. + """ + user: User + + """ + External data. + """ + verifyData: JSONString +} + +type File { + """ + Content type of the file. + """ + contentType: String + + """ + The URL of the file. + """ + url: String! +} + +""" +An enumeration. +""" +enum FileTypesEnum { + CSV + XLSX +} + +""" +Upload a file. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + +Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER. +""" +type FileUpload { + errors: [UploadError!]! + uploadErrors: [UploadError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + uploadedFile: File +} + +""" +Represents order fulfillment. +""" +type Fulfillment implements Node & ObjectWithMetadata { + created: DateTime! + fulfillmentOrder: Int! + id: ID! + + """ + List of lines for the fulfillment. + """ + lines: [FulfillmentLine!] + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + status: FulfillmentStatus! + + """ + User-friendly fulfillment status. + """ + statusDisplay: String + trackingNumber: String! + + """ + Warehouse from fulfillment was fulfilled. + """ + warehouse: Warehouse +} + +""" +Approve existing fulfillment. + +Added in Saleor 3.1. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type FulfillmentApprove { + errors: [OrderError!]! + + """ + An approved fulfillment. + """ + fulfillment: Fulfillment + + """ + Order which fulfillment was approved. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Cancels existing fulfillment and optionally restocks items. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type FulfillmentCancel { + errors: [OrderError!]! + + """ + A canceled fulfillment. + """ + fulfillment: Fulfillment + + """ + Order which fulfillment was cancelled. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input FulfillmentCancelInput { + """ + ID of a warehouse where items will be restocked. Optional when fulfillment is in WAITING_FOR_APPROVAL state. + """ + warehouseId: ID +} + +type FulfillmentCanceled implements Event { + """ + The fulfillment the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + fulfillment: Fulfillment + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The order the fulfillment belongs to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + order: Order + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +type FulfillmentCreated implements Event { + """ + The fulfillment the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + fulfillment: Fulfillment + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The order the fulfillment belongs to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + order: Order + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Represents line of the fulfillment. +""" +type FulfillmentLine implements Node { + id: ID! + orderLine: OrderLine + quantity: Int! +} + +""" +Refund products. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type FulfillmentRefundProducts { + errors: [OrderError!]! + + """ + A refunded fulfillment. + """ + fulfillment: Fulfillment + + """ + Order which fulfillment was refunded. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Return products. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type FulfillmentReturnProducts { + errors: [OrderError!]! + + """ + Order which fulfillment was returned. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + A replace fulfillment. + """ + replaceFulfillment: Fulfillment + + """ + A draft order which was created for products with replace flag. + """ + replaceOrder: Order + + """ + A return fulfillment. + """ + returnFulfillment: Fulfillment +} + +""" +An enumeration. +""" +enum FulfillmentStatus { + CANCELED + FULFILLED + REFUNDED + REFUNDED_AND_RETURNED + REPLACED + RETURNED + WAITING_FOR_APPROVAL +} + +""" +Updates a fulfillment for an order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type FulfillmentUpdateTracking { + errors: [OrderError!]! + + """ + A fulfillment with updated tracking. + """ + fulfillment: Fulfillment + + """ + Order for which fulfillment was updated. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input FulfillmentUpdateTrackingInput { + """ + If true, send an email notification to the customer. + """ + notifyCustomer: Boolean = false + + """ + Fulfillment tracking number. + """ + trackingNumber: String +} + +""" +Payment gateway client configuration key and value pair. +""" +type GatewayConfigLine { + """ + Gateway config key. + """ + field: String! + + """ + Gateway config value for key. + """ + value: String +} + +""" +The `GenericScalar` scalar type represents a generic +GraphQL scalar value that could be: +String, Boolean, Int, Float, List or Object. +""" +scalar GenericScalar + +""" +A gift card is a prepaid electronic payment card accepted in stores. They can be used during checkout by providing a valid gift card codes. +""" +type GiftCard implements Node & ObjectWithMetadata { + """ + App which created the gift card. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_APPS, OWNER. + """ + app: App + + """ + Slug of the channel where the gift card was bought. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + boughtInChannel: String + + """ + Gift card code. Can be fetched by a staff member with MANAGE_GIFT_CARD when gift card wasn't yet used and by the gift card owner. + """ + code: String! + created: DateTime! + + """ + The user who bought or issued a gift card. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + createdBy: User + + """ + Email address of the user who bought or issued gift card. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_USERS, OWNER. + """ + createdByEmail: String + currentBalance: Money + + """ + Code in format which allows displaying in a user interface. + """ + displayCode: String! + + """ + End date of gift card. + """ + endDate: DateTime + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `expiryDate` field instead.") + + """ + List of events associated with the gift card. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + events( + """ + Filtering options for gift card events. + """ + filter: GiftCardEventFilterInput + ): [GiftCardEvent!]! + expiryDate: Date + id: ID! + initialBalance: Money + isActive: Boolean! + + """ + Last 4 characters of gift card code. + """ + last4CodeChars: String! + lastUsedOn: DateTime + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + Related gift card product. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + product: Product + + """ + Start date of gift card. + """ + startDate: DateTime @deprecated(reason: "This field will be removed in Saleor 4.0.") + + """ + The gift card tag. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + tags: [GiftCardTag!]! + + """ + The customer who used a gift card. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + usedBy: User + + """ + Email address of the customer who used a gift card. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + usedByEmail: String + + """ + The customer who bought a gift card. + """ + user: User + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `createdBy` field instead.") +} + +""" +Activate a gift card. + +Requires one of the following permissions: MANAGE_GIFT_CARD. +""" +type GiftCardActivate { + errors: [GiftCardError!]! + + """ + Activated gift card. + """ + giftCard: GiftCard + giftCardErrors: [GiftCardError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Adds note to the gift card. + +Added in Saleor 3.1. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. + +Requires one of the following permissions: MANAGE_GIFT_CARD. +""" +type GiftCardAddNote { + errors: [GiftCardError!]! + + """ + Gift card note created. + """ + event: GiftCardEvent + + """ + Gift card with the note added. + """ + giftCard: GiftCard +} + +input GiftCardAddNoteInput { + """ + Note message. + """ + message: String! +} + +""" +Activate gift cards. + +Added in Saleor 3.1. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. + +Requires one of the following permissions: MANAGE_GIFT_CARD. +""" +type GiftCardBulkActivate { + """ + Returns how many objects were affected. + """ + count: Int! + errors: [GiftCardError!]! +} + +""" +Create gift cards. + +Added in Saleor 3.1. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. + +Requires one of the following permissions: MANAGE_GIFT_CARD. +""" +type GiftCardBulkCreate { + """ + Returns how many objects were created. + """ + count: Int! + errors: [GiftCardError!]! + + """ + List of created gift cards. + """ + giftCards: [GiftCard!]! +} + +input GiftCardBulkCreateInput { + """ + Balance of the gift card. + """ + balance: PriceInput! + + """ + The number of cards to issue. + """ + count: Int! + + """ + The gift card expiry date. + """ + expiryDate: Date + + """ + Determine if gift card is active. + """ + isActive: Boolean! + + """ + The gift card tags. + """ + tags: [String!] +} + +""" +Deactivate gift cards. + +Added in Saleor 3.1. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. + +Requires one of the following permissions: MANAGE_GIFT_CARD. +""" +type GiftCardBulkDeactivate { + """ + Returns how many objects were affected. + """ + count: Int! + errors: [GiftCardError!]! +} + +""" +Delete gift cards. + +Added in Saleor 3.1. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. + +Requires one of the following permissions: MANAGE_GIFT_CARD. +""" +type GiftCardBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + errors: [GiftCardError!]! +} + +type GiftCardCountableConnection { + edges: [GiftCardCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type GiftCardCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: GiftCard! +} + +""" +Creates a new gift card. + +Requires one of the following permissions: MANAGE_GIFT_CARD. +""" +type GiftCardCreate { + errors: [GiftCardError!]! + giftCard: GiftCard + giftCardErrors: [GiftCardError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input GiftCardCreateInput { + """ + The gift card tags to add. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + addTags: [String!] + + """ + Balance of the gift card. + """ + balance: PriceInput! + + """ + Slug of a channel from which the email should be sent. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + channel: String + + """ + Code to use the gift card. + + DEPRECATED: this field will be removed in Saleor 4.0. The code is now auto generated. + """ + code: String + + """ + End date of the gift card in ISO 8601 format. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `expiryDate` from `expirySettings` instead. + """ + endDate: Date + + """ + The gift card expiry date. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + expiryDate: Date + + """ + Determine if gift card is active. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + isActive: Boolean! + + """ + The gift card note from the staff member. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + note: String + + """ + Start date of the gift card in ISO 8601 format. + + DEPRECATED: this field will be removed in Saleor 4.0. + """ + startDate: Date + + """ + Email of the customer to whom gift card will be sent. + """ + userEmail: String +} + +type GiftCardCreated implements Event { + """ + The gift card the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + giftCard: GiftCard + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Deactivate a gift card. + +Requires one of the following permissions: MANAGE_GIFT_CARD. +""" +type GiftCardDeactivate { + errors: [GiftCardError!]! + + """ + Deactivated gift card. + """ + giftCard: GiftCard + giftCardErrors: [GiftCardError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Delete gift card. + +Added in Saleor 3.1. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. + +Requires one of the following permissions: MANAGE_GIFT_CARD. +""" +type GiftCardDelete { + errors: [GiftCardError!]! + giftCard: GiftCard + giftCardErrors: [GiftCardError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type GiftCardDeleted implements Event { + """ + The gift card the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + giftCard: GiftCard + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +type GiftCardError { + """ + The error code. + """ + code: GiftCardErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + List of tag values that cause the error. + """ + tags: [String!] +} + +""" +An enumeration. +""" +enum GiftCardErrorCode { + ALREADY_EXISTS + DUPLICATED_INPUT_ITEM + EXPIRED_GIFT_CARD + GRAPHQL_ERROR + INVALID + NOT_FOUND + REQUIRED + UNIQUE +} + +""" +History log of the gift card. + +Added in Saleor 3.1. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. +""" +type GiftCardEvent implements Node { + """ + App that performed the action. Requires one of the following permissions: MANAGE_APPS, OWNER. + """ + app: App + + """ + The gift card balance. + """ + balance: GiftCardEventBalance + + """ + Date when event happened at in ISO 8601 format. + """ + date: DateTime + + """ + Email of the customer. + """ + email: String + + """ + The gift card expiry date. + """ + expiryDate: Date + id: ID! + + """ + Content of the event. + """ + message: String + + """ + Previous gift card expiry date. + """ + oldExpiryDate: Date + + """ + The list of old gift card tags. + """ + oldTags: [String!] + + """ + The order ID where gift card was used or bought. + """ + orderId: ID + + """ + User-friendly number of an order where gift card was used or bought. + """ + orderNumber: String + + """ + The list of gift card tags. + """ + tags: [String!] + + """ + Gift card event type. + """ + type: GiftCardEventsEnum + + """ + User who performed the action. Requires one of the following permissions: MANAGE_USERS, MANAGE_STAFF, OWNER. + """ + user: User +} + +type GiftCardEventBalance { + """ + Current balance of the gift card. + """ + currentBalance: Money! + + """ + Initial balance of the gift card. + """ + initialBalance: Money + + """ + Previous current balance of the gift card. + """ + oldCurrentBalance: Money + + """ + Previous initial balance of the gift card. + """ + oldInitialBalance: Money +} + +input GiftCardEventFilterInput { + orders: [ID!] + type: GiftCardEventsEnum +} + +""" +An enumeration. +""" +enum GiftCardEventsEnum { + ACTIVATED + BALANCE_RESET + BOUGHT + DEACTIVATED + EXPIRY_DATE_UPDATED + ISSUED + NOTE_ADDED + RESENT + SENT_TO_CUSTOMER + TAGS_UPDATED + UPDATED + USED_IN_ORDER +} + +input GiftCardFilterInput { + code: String + currency: String + currentBalance: PriceRangeInput + initialBalance: PriceRangeInput + isActive: Boolean + metadata: [MetadataFilter!] + products: [ID!] + tags: [String!] + used: Boolean + usedBy: [ID!] +} + +""" +Resend a gift card. + +Added in Saleor 3.1. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. + +Requires one of the following permissions: MANAGE_GIFT_CARD. +""" +type GiftCardResend { + errors: [GiftCardError!]! + + """ + Gift card which has been sent. + """ + giftCard: GiftCard +} + +input GiftCardResendInput { + """ + Slug of a channel from which the email should be sent. + """ + channel: String! + + """ + Email to which gift card should be send. + """ + email: String + + """ + ID of a gift card to resend. + """ + id: ID! +} + +""" +Gift card related settings from site settings. +""" +type GiftCardSettings { + """ + The gift card expiry period settings. + """ + expiryPeriod: TimePeriod + + """ + The gift card expiry type settings. + """ + expiryType: GiftCardSettingsExpiryTypeEnum! +} + +type GiftCardSettingsError { + """ + The error code. + """ + code: GiftCardSettingsErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String +} + +""" +An enumeration. +""" +enum GiftCardSettingsErrorCode { + GRAPHQL_ERROR + INVALID + REQUIRED +} + +""" +An enumeration. +""" +enum GiftCardSettingsExpiryTypeEnum { + EXPIRY_PERIOD + NEVER_EXPIRE +} + +""" +Update gift card settings. + +Requires one of the following permissions: MANAGE_GIFT_CARD. +""" +type GiftCardSettingsUpdate { + errors: [GiftCardSettingsError!]! + + """ + Gift card settings. + """ + giftCardSettings: GiftCardSettings +} + +input GiftCardSettingsUpdateInput { + """ + Defines gift card expiry period. + """ + expiryPeriod: TimePeriodInputType + + """ + Defines gift card default expiry settings. + """ + expiryType: GiftCardSettingsExpiryTypeEnum +} + +enum GiftCardSortField { + """ + Sort orders by current balance. + """ + CURRENT_BALANCE + + """ + Sort orders by product. + """ + PRODUCT + + """ + Sort orders by used by. + """ + USED_BY +} + +input GiftCardSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort gift cards by the selected field. + """ + field: GiftCardSortField! +} + +type GiftCardStatusChanged implements Event { + """ + The gift card the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + giftCard: GiftCard + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +The gift card tag. + +Added in Saleor 3.1. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. +""" +type GiftCardTag implements Node { + id: ID! + name: String! +} + +type GiftCardTagCountableConnection { + edges: [GiftCardTagCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type GiftCardTagCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: GiftCardTag! +} + +input GiftCardTagFilterInput { + search: String +} + +""" +Update a gift card. + +Requires one of the following permissions: MANAGE_GIFT_CARD. +""" +type GiftCardUpdate { + errors: [GiftCardError!]! + giftCard: GiftCard + giftCardErrors: [GiftCardError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input GiftCardUpdateInput { + """ + The gift card tags to add. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + addTags: [String!] + + """ + The gift card balance amount. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + balanceAmount: PositiveDecimal + + """ + End date of the gift card in ISO 8601 format. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `expiryDate` from `expirySettings` instead. + """ + endDate: Date + + """ + The gift card expiry date. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + expiryDate: Date + + """ + The gift card tags to remove. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + removeTags: [String!] + + """ + Start date of the gift card in ISO 8601 format. + + DEPRECATED: this field will be removed in Saleor 4.0. + """ + startDate: Date +} + +type GiftCardUpdated implements Event { + """ + The gift card the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + giftCard: GiftCard + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Represents permission group data. +""" +type Group implements Node { + id: ID! + name: String! + + """ + List of group permissions + """ + permissions: [Permission!] + + """ + True, if the currently authenticated user has rights to manage a group. + """ + userCanManage: Boolean! + + """ + List of group users + + Requires one of the following permissions: MANAGE_STAFF. + """ + users: [User!] +} + +type GroupCountableConnection { + edges: [GroupCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type GroupCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Group! +} + +""" +Represents an image. +""" +type Image { + """ + Alt text for an image. + """ + alt: String + + """ + The URL of the image. + """ + url: String! +} + +input IntRangeInput { + """ + Value greater than or equal to. + """ + gte: Int + + """ + Value less than or equal to. + """ + lte: Int +} + +""" +Represents an Invoice. +""" +type Invoice implements Job & Node & ObjectWithMetadata { + createdAt: DateTime! + externalUrl: String + + """ + The ID of the object. + """ + id: ID! + message: String + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + number: String + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + Job status. + """ + status: JobStatusEnum! + updatedAt: DateTime! + + """ + URL to download an invoice. + """ + url: String +} + +""" +Creates a ready to send invoice. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type InvoiceCreate { + errors: [InvoiceError!]! + invoice: Invoice + invoiceErrors: [InvoiceError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input InvoiceCreateInput { + """ + Invoice number. + """ + number: String! + + """ + URL of an invoice to download. + """ + url: String! +} + +""" +Deletes an invoice. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type InvoiceDelete { + errors: [InvoiceError!]! + invoice: Invoice + invoiceErrors: [InvoiceError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type InvoiceDeleted implements Event { + """ + The invoice the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + invoice: Invoice + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +type InvoiceError { + """ + The error code. + """ + code: InvoiceErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String +} + +""" +An enumeration. +""" +enum InvoiceErrorCode { + EMAIL_NOT_SET + INVALID_STATUS + NOT_FOUND + NOT_READY + NO_INVOICE_PLUGIN + NUMBER_NOT_SET + REQUIRED + URL_NOT_SET +} + +""" +Request an invoice for the order using plugin. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type InvoiceRequest { + errors: [InvoiceError!]! + invoice: Invoice + invoiceErrors: [InvoiceError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + Order related to an invoice. + """ + order: Order +} + +""" +Requests deletion of an invoice. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type InvoiceRequestDelete { + errors: [InvoiceError!]! + invoice: Invoice + invoiceErrors: [InvoiceError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type InvoiceRequested implements Event { + """ + The invoice the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + invoice: Invoice + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Send an invoice notification to the customer. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type InvoiceSendNotification { + errors: [InvoiceError!]! + invoice: Invoice + invoiceErrors: [InvoiceError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type InvoiceSent implements Event { + """ + The invoice the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + invoice: Invoice + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Updates an invoice. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type InvoiceUpdate { + errors: [InvoiceError!]! + invoice: Invoice + invoiceErrors: [InvoiceError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +union IssuingPrincipal = App | User + +scalar JSONString + +interface Job { + """ + Created date time of job in ISO 8601 format. + """ + createdAt: DateTime! + + """ + Job message. + """ + message: String + + """ + Job status. + """ + status: JobStatusEnum! + + """ + Date time of job last update in ISO 8601 format. + """ + updatedAt: DateTime! +} + +""" +An enumeration. +""" +enum JobStatusEnum { + DELETED + FAILED + PENDING + SUCCESS +} + +""" +An enumeration. +""" +enum LanguageCodeEnum { + AF + AF_NA + AF_ZA + AGQ + AGQ_CM + AK + AK_GH + AM + AM_ET + AR + AR_AE + AR_BH + AR_DJ + AR_DZ + AR_EG + AR_EH + AR_ER + AR_IL + AR_IQ + AR_JO + AR_KM + AR_KW + AR_LB + AR_LY + AR_MA + AR_MR + AR_OM + AR_PS + AR_QA + AR_SA + AR_SD + AR_SO + AR_SS + AR_SY + AR_TD + AR_TN + AR_YE + AS + ASA + ASA_TZ + AST + AST_ES + AS_IN + AZ + AZ_CYRL + AZ_CYRL_AZ + AZ_LATN + AZ_LATN_AZ + BAS + BAS_CM + BE + BEM + BEM_ZM + BEZ + BEZ_TZ + BE_BY + BG + BG_BG + BM + BM_ML + BN + BN_BD + BN_IN + BO + BO_CN + BO_IN + BR + BRX + BRX_IN + BR_FR + BS + BS_CYRL + BS_CYRL_BA + BS_LATN + BS_LATN_BA + CA + CA_AD + CA_ES + CA_ES_VALENCIA + CA_FR + CA_IT + CCP + CCP_BD + CCP_IN + CE + CEB + CEB_PH + CE_RU + CGG + CGG_UG + CHR + CHR_US + CKB + CKB_IQ + CKB_IR + CS + CS_CZ + CU + CU_RU + CY + CY_GB + DA + DAV + DAV_KE + DA_DK + DA_GL + DE + DE_AT + DE_BE + DE_CH + DE_DE + DE_IT + DE_LI + DE_LU + DJE + DJE_NE + DSB + DSB_DE + DUA + DUA_CM + DYO + DYO_SN + DZ + DZ_BT + EBU + EBU_KE + EE + EE_GH + EE_TG + EL + EL_CY + EL_GR + EN + EN_AE + EN_AG + EN_AI + EN_AS + EN_AT + EN_AU + EN_BB + EN_BE + EN_BI + EN_BM + EN_BS + EN_BW + EN_BZ + EN_CA + EN_CC + EN_CH + EN_CK + EN_CM + EN_CX + EN_CY + EN_DE + EN_DG + EN_DK + EN_DM + EN_ER + EN_FI + EN_FJ + EN_FK + EN_FM + EN_GB + EN_GD + EN_GG + EN_GH + EN_GI + EN_GM + EN_GU + EN_GY + EN_HK + EN_IE + EN_IL + EN_IM + EN_IN + EN_IO + EN_JE + EN_JM + EN_KE + EN_KI + EN_KN + EN_KY + EN_LC + EN_LR + EN_LS + EN_MG + EN_MH + EN_MO + EN_MP + EN_MS + EN_MT + EN_MU + EN_MW + EN_MY + EN_NA + EN_NF + EN_NG + EN_NL + EN_NR + EN_NU + EN_NZ + EN_PG + EN_PH + EN_PK + EN_PN + EN_PR + EN_PW + EN_RW + EN_SB + EN_SC + EN_SD + EN_SE + EN_SG + EN_SH + EN_SI + EN_SL + EN_SS + EN_SX + EN_SZ + EN_TC + EN_TK + EN_TO + EN_TT + EN_TV + EN_TZ + EN_UG + EN_UM + EN_US + EN_VC + EN_VG + EN_VI + EN_VU + EN_WS + EN_ZA + EN_ZM + EN_ZW + EO + ES + ES_AR + ES_BO + ES_BR + ES_BZ + ES_CL + ES_CO + ES_CR + ES_CU + ES_DO + ES_EA + ES_EC + ES_ES + ES_GQ + ES_GT + ES_HN + ES_IC + ES_MX + ES_NI + ES_PA + ES_PE + ES_PH + ES_PR + ES_PY + ES_SV + ES_US + ES_UY + ES_VE + ET + ET_EE + EU + EU_ES + EWO + EWO_CM + FA + FA_AF + FA_IR + FF + FF_ADLM + FF_ADLM_BF + FF_ADLM_CM + FF_ADLM_GH + FF_ADLM_GM + FF_ADLM_GN + FF_ADLM_GW + FF_ADLM_LR + FF_ADLM_MR + FF_ADLM_NE + FF_ADLM_NG + FF_ADLM_SL + FF_ADLM_SN + FF_LATN + FF_LATN_BF + FF_LATN_CM + FF_LATN_GH + FF_LATN_GM + FF_LATN_GN + FF_LATN_GW + FF_LATN_LR + FF_LATN_MR + FF_LATN_NE + FF_LATN_NG + FF_LATN_SL + FF_LATN_SN + FI + FIL + FIL_PH + FI_FI + FO + FO_DK + FO_FO + FR + FR_BE + FR_BF + FR_BI + FR_BJ + FR_BL + FR_CA + FR_CD + FR_CF + FR_CG + FR_CH + FR_CI + FR_CM + FR_DJ + FR_DZ + FR_FR + FR_GA + FR_GF + FR_GN + FR_GP + FR_GQ + FR_HT + FR_KM + FR_LU + FR_MA + FR_MC + FR_MF + FR_MG + FR_ML + FR_MQ + FR_MR + FR_MU + FR_NC + FR_NE + FR_PF + FR_PM + FR_RE + FR_RW + FR_SC + FR_SN + FR_SY + FR_TD + FR_TG + FR_TN + FR_VU + FR_WF + FR_YT + FUR + FUR_IT + FY + FY_NL + GA + GA_GB + GA_IE + GD + GD_GB + GL + GL_ES + GSW + GSW_CH + GSW_FR + GSW_LI + GU + GUZ + GUZ_KE + GU_IN + GV + GV_IM + HA + HAW + HAW_US + HA_GH + HA_NE + HA_NG + HE + HE_IL + HI + HI_IN + HR + HR_BA + HR_HR + HSB + HSB_DE + HU + HU_HU + HY + HY_AM + IA + ID + ID_ID + IG + IG_NG + II + II_CN + IS + IS_IS + IT + IT_CH + IT_IT + IT_SM + IT_VA + JA + JA_JP + JGO + JGO_CM + JMC + JMC_TZ + JV + JV_ID + KA + KAB + KAB_DZ + KAM + KAM_KE + KA_GE + KDE + KDE_TZ + KEA + KEA_CV + KHQ + KHQ_ML + KI + KI_KE + KK + KKJ + KKJ_CM + KK_KZ + KL + KLN + KLN_KE + KL_GL + KM + KM_KH + KN + KN_IN + KO + KOK + KOK_IN + KO_KP + KO_KR + KS + KSB + KSB_TZ + KSF + KSF_CM + KSH + KSH_DE + KS_ARAB + KS_ARAB_IN + KU + KU_TR + KW + KW_GB + KY + KY_KG + LAG + LAG_TZ + LB + LB_LU + LG + LG_UG + LKT + LKT_US + LN + LN_AO + LN_CD + LN_CF + LN_CG + LO + LO_LA + LRC + LRC_IQ + LRC_IR + LT + LT_LT + LU + LUO + LUO_KE + LUY + LUY_KE + LU_CD + LV + LV_LV + MAI + MAI_IN + MAS + MAS_KE + MAS_TZ + MER + MER_KE + MFE + MFE_MU + MG + MGH + MGH_MZ + MGO + MGO_CM + MG_MG + MI + MI_NZ + MK + MK_MK + ML + ML_IN + MN + MNI + MNI_BENG + MNI_BENG_IN + MN_MN + MR + MR_IN + MS + MS_BN + MS_ID + MS_MY + MS_SG + MT + MT_MT + MUA + MUA_CM + MY + MY_MM + MZN + MZN_IR + NAQ + NAQ_NA + NB + NB_NO + NB_SJ + ND + NDS + NDS_DE + NDS_NL + ND_ZW + NE + NE_IN + NE_NP + NL + NL_AW + NL_BE + NL_BQ + NL_CW + NL_NL + NL_SR + NL_SX + NMG + NMG_CM + NN + NNH + NNH_CM + NN_NO + NUS + NUS_SS + NYN + NYN_UG + OM + OM_ET + OM_KE + OR + OR_IN + OS + OS_GE + OS_RU + PA + PA_ARAB + PA_ARAB_PK + PA_GURU + PA_GURU_IN + PCM + PCM_NG + PL + PL_PL + PRG + PS + PS_AF + PS_PK + PT + PT_AO + PT_BR + PT_CH + PT_CV + PT_GQ + PT_GW + PT_LU + PT_MO + PT_MZ + PT_PT + PT_ST + PT_TL + QU + QU_BO + QU_EC + QU_PE + RM + RM_CH + RN + RN_BI + RO + ROF + ROF_TZ + RO_MD + RO_RO + RU + RU_BY + RU_KG + RU_KZ + RU_MD + RU_RU + RU_UA + RW + RWK + RWK_TZ + RW_RW + SAH + SAH_RU + SAQ + SAQ_KE + SAT + SAT_OLCK + SAT_OLCK_IN + SBP + SBP_TZ + SD + SD_ARAB + SD_ARAB_PK + SD_DEVA + SD_DEVA_IN + SE + SEH + SEH_MZ + SES + SES_ML + SE_FI + SE_NO + SE_SE + SG + SG_CF + SHI + SHI_LATN + SHI_LATN_MA + SHI_TFNG + SHI_TFNG_MA + SI + SI_LK + SK + SK_SK + SL + SL_SI + SMN + SMN_FI + SN + SN_ZW + SO + SO_DJ + SO_ET + SO_KE + SO_SO + SQ + SQ_AL + SQ_MK + SQ_XK + SR + SR_CYRL + SR_CYRL_BA + SR_CYRL_ME + SR_CYRL_RS + SR_CYRL_XK + SR_LATN + SR_LATN_BA + SR_LATN_ME + SR_LATN_RS + SR_LATN_XK + SU + SU_LATN + SU_LATN_ID + SV + SV_AX + SV_FI + SV_SE + SW + SW_CD + SW_KE + SW_TZ + SW_UG + TA + TA_IN + TA_LK + TA_MY + TA_SG + TE + TEO + TEO_KE + TEO_UG + TE_IN + TG + TG_TJ + TH + TH_TH + TI + TI_ER + TI_ET + TK + TK_TM + TO + TO_TO + TR + TR_CY + TR_TR + TT + TT_RU + TWQ + TWQ_NE + TZM + TZM_MA + UG + UG_CN + UK + UK_UA + UR + UR_IN + UR_PK + UZ + UZ_ARAB + UZ_ARAB_AF + UZ_CYRL + UZ_CYRL_UZ + UZ_LATN + UZ_LATN_UZ + VAI + VAI_LATN + VAI_LATN_LR + VAI_VAII + VAI_VAII_LR + VI + VI_VN + VO + VUN + VUN_TZ + WAE + WAE_CH + WO + WO_SN + XH + XH_ZA + XOG + XOG_UG + YAV + YAV_CM + YI + YO + YO_BJ + YO_NG + YUE + YUE_HANS + YUE_HANS_CN + YUE_HANT + YUE_HANT_HK + ZGH + ZGH_MA + ZH + ZH_HANS + ZH_HANS_CN + ZH_HANS_HK + ZH_HANS_MO + ZH_HANS_SG + ZH_HANT + ZH_HANT_HK + ZH_HANT_MO + ZH_HANT_TW + ZU + ZU_ZA +} + +type LanguageDisplay { + """ + ISO 639 representation of the language name. + """ + code: LanguageCodeEnum! + + """ + Full name of the language. + """ + language: String! +} + +type LimitInfo { + """ + Defines the allowed maximum resource usage, null means unlimited. + """ + allowedUsage: Limits! + + """ + Defines the current resource usage. + """ + currentUsage: Limits! +} + +type Limits { + channels: Int + orders: Int + productVariants: Int + staffUsers: Int + warehouses: Int +} + +""" +The manifest definition. +""" +type Manifest { + about: String + appUrl: String + configurationUrl: String + dataPrivacy: String + dataPrivacyUrl: String + extensions: [AppManifestExtension!]! + homepageUrl: String + identifier: String! + name: String! + permissions: [Permission!] + supportUrl: String + tokenTargetUrl: String + version: String! +} + +type Margin { + start: Int + stop: Int +} + +""" +An enumeration. +""" +enum MeasurementUnitsEnum { + ACRE_FT + ACRE_IN + CM + CUBIC_CENTIMETER + CUBIC_DECIMETER + CUBIC_FOOT + CUBIC_INCH + CUBIC_METER + CUBIC_MILLIMETER + CUBIC_YARD + FL_OZ + FT + G + INCH + KG + KM + LB + LITER + M + OZ + PINT + QT + SQ_CM + SQ_FT + SQ_INCH + SQ_KM + SQ_M + SQ_YD + TONNE + YD +} + +""" +Represents a single menu - an object that is used to help navigate through the store. +""" +type Menu implements Node & ObjectWithMetadata { + id: ID! + items: [MenuItem!] + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + name: String! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + slug: String! +} + +""" +Deletes menus. + +Requires one of the following permissions: MANAGE_MENUS. +""" +type MenuBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + errors: [MenuError!]! + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type MenuCountableConnection { + edges: [MenuCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type MenuCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Menu! +} + +""" +Creates a new Menu. + +Requires one of the following permissions: MANAGE_MENUS. +""" +type MenuCreate { + errors: [MenuError!]! + menu: Menu + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input MenuCreateInput { + """ + List of menu items. + """ + items: [MenuItemInput!] + + """ + Name of the menu. + """ + name: String! + + """ + Slug of the menu. Will be generated if not provided. + """ + slug: String +} + +type MenuCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The menu the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + menu( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Menu + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Deletes a menu. + +Requires one of the following permissions: MANAGE_MENUS. +""" +type MenuDelete { + errors: [MenuError!]! + menu: Menu + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type MenuDeleted implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The menu the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + menu( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Menu + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +type MenuError { + """ + The error code. + """ + code: MenuErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String +} + +""" +An enumeration. +""" +enum MenuErrorCode { + CANNOT_ASSIGN_NODE + GRAPHQL_ERROR + INVALID + INVALID_MENU_ITEM + NOT_FOUND + NO_MENU_ITEM_PROVIDED + REQUIRED + TOO_MANY_MENU_ITEMS + UNIQUE +} + +input MenuFilterInput { + metadata: [MetadataFilter!] + search: String + slug: [String!] +} + +input MenuInput { + """ + Name of the menu. + """ + name: String + + """ + Slug of the menu. + """ + slug: String +} + +""" +Represents a single item of the related menu. Can store categories, collection or pages. +""" +type MenuItem implements Node & ObjectWithMetadata { + category: Category + children: [MenuItem!] + + """ + A collection associated with this menu item. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. + """ + collection: Collection + id: ID! + level: Int! + menu: Menu! + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + name: String! + + """ + A page associated with this menu item. Requires one of the following permissions to include unpublished items: MANAGE_PAGES. + """ + page: Page + parent: MenuItem + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + Returns translated menu item fields for the given language code. + """ + translation( + """ + A language code to return the translation for menu item. + """ + languageCode: LanguageCodeEnum! + ): MenuItemTranslation + + """ + URL to the menu item. + """ + url: String +} + +""" +Deletes menu items. + +Requires one of the following permissions: MANAGE_MENUS. +""" +type MenuItemBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + errors: [MenuError!]! + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type MenuItemCountableConnection { + edges: [MenuItemCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type MenuItemCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: MenuItem! +} + +""" +Creates a new menu item. + +Requires one of the following permissions: MANAGE_MENUS. +""" +type MenuItemCreate { + errors: [MenuError!]! + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + menuItem: MenuItem +} + +input MenuItemCreateInput { + """ + Category to which item points. + """ + category: ID + + """ + Collection to which item points. + """ + collection: ID + + """ + Menu to which item belongs. + """ + menu: ID! + + """ + Name of the menu item. + """ + name: String! + + """ + Page to which item points. + """ + page: ID + + """ + ID of the parent menu. If empty, menu will be top level menu. + """ + parent: ID + + """ + URL of the pointed item. + """ + url: String +} + +type MenuItemCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The menu item the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + menuItem( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): MenuItem + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Deletes a menu item. + +Requires one of the following permissions: MANAGE_MENUS. +""" +type MenuItemDelete { + errors: [MenuError!]! + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + menuItem: MenuItem +} + +type MenuItemDeleted implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The menu item the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + menuItem( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): MenuItem + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +input MenuItemFilterInput { + metadata: [MetadataFilter!] + search: String +} + +input MenuItemInput { + """ + Category to which item points. + """ + category: ID + + """ + Collection to which item points. + """ + collection: ID + + """ + Name of the menu item. + """ + name: String + + """ + Page to which item points. + """ + page: ID + + """ + URL of the pointed item. + """ + url: String +} + +""" +Moves items of menus. + +Requires one of the following permissions: MANAGE_MENUS. +""" +type MenuItemMove { + errors: [MenuError!]! + + """ + Assigned menu to move within. + """ + menu: Menu + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input MenuItemMoveInput { + """ + The menu item ID to move. + """ + itemId: ID! + + """ + ID of the parent menu. If empty, menu will be top level menu. + """ + parentId: ID + + """ + The new relative sorting position of the item (from -inf to +inf). 1 moves the item one position forward, -1 moves the item one position backward, 0 leaves the item unchanged. + """ + sortOrder: Int +} + +input MenuItemSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort menu items by the selected field. + """ + field: MenuItemsSortField! +} + +type MenuItemTranslatableContent implements Node { + id: ID! + + """ + Represents a single item of the related menu. Can store categories, collection or pages. + """ + menuItem: MenuItem + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) + name: String! + + """ + Returns translated menu item fields for the given language code. + """ + translation( + """ + A language code to return the translation for menu item. + """ + languageCode: LanguageCodeEnum! + ): MenuItemTranslation +} + +""" +Creates/updates translations for a menu item. + +Requires one of the following permissions: MANAGE_TRANSLATIONS. +""" +type MenuItemTranslate { + errors: [TranslationError!]! + menuItem: MenuItem + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type MenuItemTranslation implements Node { + id: ID! + + """ + Translation language. + """ + language: LanguageDisplay! + name: String! +} + +""" +Updates a menu item. + +Requires one of the following permissions: MANAGE_MENUS. +""" +type MenuItemUpdate { + errors: [MenuError!]! + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + menuItem: MenuItem +} + +type MenuItemUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The menu item the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + menuItem( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): MenuItem + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +enum MenuItemsSortField { + """ + Sort menu items by name. + """ + NAME +} + +enum MenuSortField { + """ + Sort menus by items count. + """ + ITEMS_COUNT + + """ + Sort menus by name. + """ + NAME +} + +input MenuSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort menus by the selected field. + """ + field: MenuSortField! +} + +""" +Updates a menu. + +Requires one of the following permissions: MANAGE_MENUS. +""" +type MenuUpdate { + errors: [MenuError!]! + menu: Menu + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type MenuUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The menu the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + menu( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Menu + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Metadata is a map of key-value pairs, both keys and values are `String`. + +Example: +``` +{ + "key1": "value1", + "key2": "value2" +} +``` +""" +scalar Metadata + +type MetadataError { + """ + The error code. + """ + code: MetadataErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String +} + +""" +An enumeration. +""" +enum MetadataErrorCode { + GRAPHQL_ERROR + INVALID + NOT_FOUND + NOT_UPDATED + REQUIRED +} + +input MetadataFilter { + """ + Key of a metadata item. + """ + key: String! + + """ + Value of a metadata item. + """ + value: String +} + +input MetadataInput { + """ + Key of a metadata item. + """ + key: String! + + """ + Value of a metadata item. + """ + value: String! +} + +type MetadataItem { + """ + Key of a metadata item. + """ + key: String! + + """ + Value of a metadata item. + """ + value: String! +} + +""" +Represents amount of money in specific currency. +""" +type Money { + """ + Amount of money. + """ + amount: Float! + + """ + Currency code. + """ + currency: String! +} + +input MoneyInput { + """ + Amount of money. + """ + amount: PositiveDecimal! + + """ + Currency code. + """ + currency: String! +} + +""" +Represents a range of amounts of money. +""" +type MoneyRange { + """ + Lower bound of a price range. + """ + start: Money + + """ + Upper bound of a price range. + """ + stop: Money +} + +input MoveProductInput { + """ + The ID of the product to move. + """ + productId: ID! + + """ + The relative sorting position of the product (from -inf to +inf) starting from the first given product's actual position.1 moves the item one position forward, -1 moves the item one position backward, 0 leaves the item unchanged. + """ + sortOrder: Int +} + +type Mutation { + """ + Create a new address for the customer. + + Requires one of the following permissions: AUTHENTICATED_USER. + """ + accountAddressCreate( + """ + Fields required to create address. + """ + input: AddressInput! + + """ + A type of address. If provided, the new address will be automatically assigned as the customer's default address of that type. + """ + type: AddressTypeEnum + ): AccountAddressCreate + + """ + Delete an address of the logged-in user. Requires one of the following permissions: MANAGE_USERS, IS_OWNER. + """ + accountAddressDelete( + """ + ID of the address to delete. + """ + id: ID! + ): AccountAddressDelete + + """ + Updates an address of the logged-in user. Requires one of the following permissions: MANAGE_USERS, IS_OWNER. + """ + accountAddressUpdate( + """ + ID of the address to update. + """ + id: ID! + + """ + Fields required to update the address. + """ + input: AddressInput! + ): AccountAddressUpdate + + """ + Remove user account. + + Requires one of the following permissions: AUTHENTICATED_USER. + """ + accountDelete( + """ + A one-time token required to remove account. Sent by email using AccountRequestDeletion mutation. + """ + token: String! + ): AccountDelete + + """ + Register a new user. + """ + accountRegister( + """ + Fields required to create a user. + """ + input: AccountRegisterInput! + ): AccountRegister + + """ + Sends an email with the account removal link for the logged-in user. + + Requires one of the following permissions: AUTHENTICATED_USER. + """ + accountRequestDeletion( + """ + Slug of a channel which will be used to notify users. Optional when only one channel exists. + """ + channel: String + + """ + URL of a view where users should be redirected to delete their account. URL in RFC 1808 format. + """ + redirectUrl: String! + ): AccountRequestDeletion + + """ + Sets a default address for the authenticated user. + + Requires one of the following permissions: AUTHENTICATED_USER. + """ + accountSetDefaultAddress( + """ + ID of the address to set as default. + """ + id: ID! + + """ + The type of address. + """ + type: AddressTypeEnum! + ): AccountSetDefaultAddress + + """ + Updates the account of the logged-in user. + + Requires one of the following permissions: AUTHENTICATED_USER. + """ + accountUpdate( + """ + Fields required to update the account of the logged-in user. + """ + input: AccountInput! + ): AccountUpdate + + """ + Creates user address. + + Requires one of the following permissions: MANAGE_USERS. + """ + addressCreate( + """ + Fields required to create address. + """ + input: AddressInput! + + """ + ID of a user to create address for. + """ + userId: ID! + ): AddressCreate + + """ + Deletes an address. + + Requires one of the following permissions: MANAGE_USERS. + """ + addressDelete( + """ + ID of the address to delete. + """ + id: ID! + ): AddressDelete + + """ + Sets a default address for the given user. + + Requires one of the following permissions: MANAGE_USERS. + """ + addressSetDefault( + """ + ID of the address. + """ + addressId: ID! + + """ + The type of address. + """ + type: AddressTypeEnum! + + """ + ID of the user to change the address for. + """ + userId: ID! + ): AddressSetDefault + + """ + Updates an address. + + Requires one of the following permissions: MANAGE_USERS. + """ + addressUpdate( + """ + ID of the address to update. + """ + id: ID! + + """ + Fields required to update the address. + """ + input: AddressInput! + ): AddressUpdate + + """ + Activate the app. + + Requires one of the following permissions: MANAGE_APPS. + """ + appActivate( + """ + ID of app to activate. + """ + id: ID! + ): AppActivate + + """ + Creates a new app. Requires the following permissions: AUTHENTICATED_STAFF_USER and MANAGE_APPS. + """ + appCreate( + """ + Fields required to create a new app. + """ + input: AppInput! + ): AppCreate + + """ + Deactivate the app. + + Requires one of the following permissions: MANAGE_APPS. + """ + appDeactivate( + """ + ID of app to deactivate. + """ + id: ID! + ): AppDeactivate + + """ + Deletes an app. + + Requires one of the following permissions: MANAGE_APPS. + """ + appDelete( + """ + ID of an app to delete. + """ + id: ID! + ): AppDelete + + """ + Delete failed installation. + + Requires one of the following permissions: MANAGE_APPS. + """ + appDeleteFailedInstallation( + """ + ID of failed installation to delete. + """ + id: ID! + ): AppDeleteFailedInstallation + + """ + Fetch and validate manifest. + + Requires one of the following permissions: MANAGE_APPS. + """ + appFetchManifest(manifestUrl: String!): AppFetchManifest + + """ + Install new app by using app manifest. Requires the following permissions: AUTHENTICATED_STAFF_USER and MANAGE_APPS. + """ + appInstall( + """ + Fields required to install a new app. + """ + input: AppInstallInput! + ): AppInstall + + """ + Retry failed installation of new app. + + Requires one of the following permissions: MANAGE_APPS. + """ + appRetryInstall( + """ + Determine if app will be set active or not. + """ + activateAfterInstallation: Boolean = true + + """ + ID of failed installation. + """ + id: ID! + ): AppRetryInstall + + """ + Creates a new token. + + Requires one of the following permissions: MANAGE_APPS. + """ + appTokenCreate( + """ + Fields required to create a new auth token. + """ + input: AppTokenInput! + ): AppTokenCreate + + """ + Deletes an authentication token assigned to app. + + Requires one of the following permissions: MANAGE_APPS. + """ + appTokenDelete( + """ + ID of an auth token to delete. + """ + id: ID! + ): AppTokenDelete + + """ + Verify provided app token. + """ + appTokenVerify( + """ + App token to verify. + """ + token: String! + ): AppTokenVerify + + """ + Updates an existing app. + + Requires one of the following permissions: MANAGE_APPS. + """ + appUpdate( + """ + ID of an app to update. + """ + id: ID! + + """ + Fields required to update an existing app. + """ + input: AppInput! + ): AppUpdate + + """ + Assigns storefront's navigation menus. + + Requires one of the following permissions: MANAGE_MENUS, MANAGE_SETTINGS. + """ + assignNavigation( + """ + ID of the menu. + """ + menu: ID + + """ + Type of the navigation bar to assign the menu to. + """ + navigationType: NavigationType! + ): AssignNavigation + + """ + Add shipping zone to given warehouse. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + assignWarehouseShippingZone( + """ + ID of a warehouse to update. + """ + id: ID! + + """ + List of shipping zone IDs. + """ + shippingZoneIds: [ID!]! + ): WarehouseShippingZoneAssign + + """ + Deletes attributes. + + Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + """ + attributeBulkDelete( + """ + List of attribute IDs to delete. + """ + ids: [ID!]! + ): AttributeBulkDelete + + """ + Creates an attribute. + """ + attributeCreate( + """ + Fields required to create an attribute. + """ + input: AttributeCreateInput! + ): AttributeCreate + + """ + Deletes an attribute. + + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + attributeDelete( + """ + ID of an attribute to delete. + """ + id: ID! + ): AttributeDelete + + """ + Reorder the values of an attribute. + + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + attributeReorderValues( + """ + ID of an attribute. + """ + attributeId: ID! + + """ + The list of reordering operations for given attribute values. + """ + moves: [ReorderInput!]! + ): AttributeReorderValues + + """ + Creates/updates translations for an attribute. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + attributeTranslate( + """ + Attribute ID or AttributeTranslatableContent ID. + """ + id: ID! + input: NameTranslationInput! + + """ + Translation language code. + """ + languageCode: LanguageCodeEnum! + ): AttributeTranslate + + """ + Updates attribute. + + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + attributeUpdate( + """ + ID of an attribute to update. + """ + id: ID! + + """ + Fields required to update an attribute. + """ + input: AttributeUpdateInput! + ): AttributeUpdate + + """ + Deletes values of attributes. + + Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + """ + attributeValueBulkDelete( + """ + List of attribute value IDs to delete. + """ + ids: [ID!]! + ): AttributeValueBulkDelete + + """ + Creates a value for an attribute. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + attributeValueCreate( + """ + Attribute to which value will be assigned. + """ + attribute: ID! + + """ + Fields required to create an AttributeValue. + """ + input: AttributeValueCreateInput! + ): AttributeValueCreate + + """ + Deletes a value of an attribute. + + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + attributeValueDelete( + """ + ID of a value to delete. + """ + id: ID! + ): AttributeValueDelete + + """ + Creates/updates translations for an attribute value. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + attributeValueTranslate( + """ + AttributeValue ID or AttributeValueTranslatableContent ID. + """ + id: ID! + input: AttributeValueTranslationInput! + + """ + Translation language code. + """ + languageCode: LanguageCodeEnum! + ): AttributeValueTranslate + + """ + Updates value of an attribute. + + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + attributeValueUpdate( + """ + ID of an AttributeValue to update. + """ + id: ID! + + """ + Fields required to update an AttributeValue. + """ + input: AttributeValueUpdateInput! + ): AttributeValueUpdate + + """ + Deletes categories. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + categoryBulkDelete( + """ + List of category IDs to delete. + """ + ids: [ID!]! + ): CategoryBulkDelete + + """ + Creates a new category. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + categoryCreate( + """ + Fields required to create a category. + """ + input: CategoryInput! + + """ + ID of the parent category. If empty, category will be top level category. + """ + parent: ID + ): CategoryCreate + + """ + Deletes a category. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + categoryDelete( + """ + ID of a category to delete. + """ + id: ID! + ): CategoryDelete + + """ + Creates/updates translations for a category. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + categoryTranslate( + """ + Category ID or CategoryTranslatableContent ID. + """ + id: ID! + input: TranslationInput! + + """ + Translation language code. + """ + languageCode: LanguageCodeEnum! + ): CategoryTranslate + + """ + Updates a category. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + categoryUpdate( + """ + ID of a category to update. + """ + id: ID! + + """ + Fields required to update a category. + """ + input: CategoryInput! + ): CategoryUpdate + + """ + Activate a channel. + + Requires one of the following permissions: MANAGE_CHANNELS. + """ + channelActivate( + """ + ID of the channel to activate. + """ + id: ID! + ): ChannelActivate + + """ + Creates new channel. + + Requires one of the following permissions: MANAGE_CHANNELS. + """ + channelCreate( + """ + Fields required to create channel. + """ + input: ChannelCreateInput! + ): ChannelCreate + + """ + Deactivate a channel. + + Requires one of the following permissions: MANAGE_CHANNELS. + """ + channelDeactivate( + """ + ID of the channel to deactivate. + """ + id: ID! + ): ChannelDeactivate + + """ + Delete a channel. Orders associated with the deleted channel will be moved to the target channel. Checkouts, product availability, and pricing will be removed. + + Requires one of the following permissions: MANAGE_CHANNELS. + """ + channelDelete( + """ + ID of a channel to delete. + """ + id: ID! + + """ + Fields required to delete a channel. + """ + input: ChannelDeleteInput + ): ChannelDelete + + """ + Update a channel. + + Requires one of the following permissions: MANAGE_CHANNELS. + """ + channelUpdate( + """ + ID of a channel to update. + """ + id: ID! + + """ + Fields required to update a channel. + """ + input: ChannelUpdateInput! + ): ChannelUpdate + + """ + Adds a gift card or a voucher to a checkout. + """ + checkoutAddPromoCode( + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + Gift card code or voucher code. + """ + promoCode: String! + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutAddPromoCode + + """ + Update billing address in the existing checkout. + """ + checkoutBillingAddressUpdate( + """ + The billing address of the checkout. + """ + billingAddress: AddressInput! + + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutBillingAddressUpdate + + """ + Completes the checkout. As a result a new order is created and a payment charge is made. This action requires a successful payment before it can be performed. In case additional confirmation step as 3D secure is required confirmationNeeded flag will be set to True and no order created until payment is confirmed with second call of this mutation. + """ + checkoutComplete( + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + Client-side generated data required to finalize the payment. + """ + paymentData: JSONString + + """ + URL of a view where users should be redirected to see the order details. URL in RFC 1808 format. + """ + redirectUrl: String + + """ + Determines whether to store the payment source for future usage. + + DEPRECATED: this field will be removed in Saleor 4.0. Use checkoutPaymentCreate for this action. + """ + storeSource: Boolean = false + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutComplete + + """ + Create a new checkout. + """ + checkoutCreate( + """ + Fields required to create checkout. + """ + input: CheckoutCreateInput! + ): CheckoutCreate + + """ + Sets the customer as the owner of the checkout. + + Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_USER. + """ + checkoutCustomerAttach( + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + ID of customer to attach to checkout. Can be used to attach customer to checkout by staff or app. Requires IMPERSONATE_USER permission. + """ + customerId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutCustomerAttach + + """ + Removes the user assigned as the owner of the checkout. + + Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_USER. + """ + checkoutCustomerDetach( + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutCustomerDetach + + """ + Updates the delivery method (shipping method or pick up point) of the checkout. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + checkoutDeliveryMethodUpdate( + """ + Delivery Method ID (`Warehouse` ID or `ShippingMethod` ID). + """ + deliveryMethodId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutDeliveryMethodUpdate + + """ + Updates email address in the existing checkout object. + """ + checkoutEmailUpdate( + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + email. + """ + email: String! + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutEmailUpdate + + """ + Update language code in the existing checkout. + """ + checkoutLanguageCodeUpdate( + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + New language code. + """ + languageCode: LanguageCodeEnum! + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutLanguageCodeUpdate + + """ + Deletes a CheckoutLine. + """ + checkoutLineDelete( + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + ID of the checkout line to delete. + """ + lineId: ID + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutLineDelete + @deprecated( + reason: "DEPRECATED: Will be removed in Saleor 4.0. Use `checkoutLinesDelete` instead." + ) + + """ + Adds a checkout line to the existing checkout.If line was already in checkout, its quantity will be increased. + """ + checkoutLinesAdd( + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + A list of checkout lines, each containing information about an item in the checkout. + """ + lines: [CheckoutLineInput!]! + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutLinesAdd + + """ + Deletes checkout lines. + """ + checkoutLinesDelete( + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + A list of checkout lines. + """ + linesIds: [ID!]! + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutLinesDelete + + """ + Updates checkout line in the existing checkout. + """ + checkoutLinesUpdate( + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + A list of checkout lines, each containing information about an item in the checkout. + """ + lines: [CheckoutLineUpdateInput!]! + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutLinesUpdate + + """ + Create a new payment for given checkout. + """ + checkoutPaymentCreate( + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + Data required to create a new payment. + """ + input: PaymentInput! + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutPaymentCreate + + """ + Remove a gift card or a voucher from a checkout. + """ + checkoutRemovePromoCode( + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + Gift card code or voucher code. + """ + promoCode: String + + """ + Gift card or voucher ID. + """ + promoCodeId: ID + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutRemovePromoCode + + """ + Update shipping address in the existing checkout. + """ + checkoutShippingAddressUpdate( + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + The mailing address to where the checkout will be shipped. + """ + shippingAddress: AddressInput! + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutShippingAddressUpdate + + """ + Updates the shipping method of the checkout. + """ + checkoutShippingMethodUpdate( + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + Shipping method. + """ + shippingMethodId: ID! + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutShippingMethodUpdate + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use `checkoutDeliveryMethodUpdate` instead." + ) + + """ + Adds products to a collection. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + collectionAddProducts( + """ + ID of a collection. + """ + collectionId: ID! + + """ + List of product IDs. + """ + products: [ID!]! + ): CollectionAddProducts + + """ + Deletes collections. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + collectionBulkDelete( + """ + List of collection IDs to delete. + """ + ids: [ID!]! + ): CollectionBulkDelete + + """ + Manage collection's availability in channels. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + collectionChannelListingUpdate( + """ + ID of a collection to update. + """ + id: ID! + + """ + Fields required to create or update collection channel listings. + """ + input: CollectionChannelListingUpdateInput! + ): CollectionChannelListingUpdate + + """ + Creates a new collection. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + collectionCreate( + """ + Fields required to create a collection. + """ + input: CollectionCreateInput! + ): CollectionCreate + + """ + Deletes a collection. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + collectionDelete( + """ + ID of a collection to delete. + """ + id: ID! + ): CollectionDelete + + """ + Remove products from a collection. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + collectionRemoveProducts( + """ + ID of a collection. + """ + collectionId: ID! + + """ + List of product IDs. + """ + products: [ID!]! + ): CollectionRemoveProducts + + """ + Reorder the products of a collection. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + collectionReorderProducts( + """ + ID of a collection. + """ + collectionId: ID! + + """ + The collection products position operations. + """ + moves: [MoveProductInput!]! + ): CollectionReorderProducts + + """ + Creates/updates translations for a collection. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + collectionTranslate( + """ + Collection ID or CollectionTranslatableContent ID. + """ + id: ID! + input: TranslationInput! + + """ + Translation language code. + """ + languageCode: LanguageCodeEnum! + ): CollectionTranslate + + """ + Updates a collection. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + collectionUpdate( + """ + ID of a collection to update. + """ + id: ID! + + """ + Fields required to update a collection. + """ + input: CollectionInput! + ): CollectionUpdate + + """ + Confirm user account with token sent by email during registration. + """ + confirmAccount( + """ + E-mail of the user performing account confirmation. + """ + email: String! + + """ + A one-time token required to confirm the account. + """ + token: String! + ): ConfirmAccount + + """ + Confirm the email change of the logged-in user. + + Requires one of the following permissions: AUTHENTICATED_USER. + """ + confirmEmailChange( + """ + Slug of a channel which will be used to notify users. Optional when only one channel exists. + """ + channel: String + + """ + A one-time token required to change the email. + """ + token: String! + ): ConfirmEmailChange + + """ + Creates new warehouse. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + createWarehouse( + """ + Fields required to create warehouse. + """ + input: WarehouseCreateInput! + ): WarehouseCreate + + """ + Deletes customers. + + Requires one of the following permissions: MANAGE_USERS. + """ + customerBulkDelete( + """ + List of user IDs to delete. + """ + ids: [ID!]! + ): CustomerBulkDelete + + """ + Creates a new customer. + + Requires one of the following permissions: MANAGE_USERS. + """ + customerCreate( + """ + Fields required to create a customer. + """ + input: UserCreateInput! + ): CustomerCreate + + """ + Deletes a customer. + + Requires one of the following permissions: MANAGE_USERS. + """ + customerDelete( + """ + ID of a customer to delete. + """ + id: ID! + ): CustomerDelete + + """ + Updates an existing customer. + + Requires one of the following permissions: MANAGE_USERS. + """ + customerUpdate( + """ + ID of a customer to update. + """ + id: ID! + + """ + Fields required to update a customer. + """ + input: CustomerInput! + ): CustomerUpdate + + """ + Delete metadata of an object. To use it, you need to have access to the modified object. + """ + deleteMetadata( + """ + ID or token (for Order and Checkout) of an object to update. + """ + id: ID! + + """ + Metadata keys to delete. + """ + keys: [String!]! + ): DeleteMetadata + + """ + Delete object's private metadata. To use it, you need to be an authenticated staff user or an app and have access to the modified object. + """ + deletePrivateMetadata( + """ + ID or token (for Order and Checkout) of an object to update. + """ + id: ID! + + """ + Metadata keys to delete. + """ + keys: [String!]! + ): DeletePrivateMetadata + + """ + Deletes selected warehouse. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + deleteWarehouse( + """ + ID of a warehouse to delete. + """ + id: ID! + ): WarehouseDelete + + """ + Create new digital content. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + digitalContentCreate( + """ + Fields required to create a digital content. + """ + input: DigitalContentUploadInput! + + """ + ID of a product variant to upload digital content. + """ + variantId: ID! + ): DigitalContentCreate + + """ + Remove digital content assigned to given variant. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + digitalContentDelete( + """ + ID of a product variant with digital content to remove. + """ + variantId: ID! + ): DigitalContentDelete + + """ + Update digital content. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + digitalContentUpdate( + """ + Fields required to update a digital content. + """ + input: DigitalContentInput! + + """ + ID of a product variant with digital content to update. + """ + variantId: ID! + ): DigitalContentUpdate + + """ + Generate new URL to digital content. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + digitalContentUrlCreate( + """ + Fields required to create a new url. + """ + input: DigitalContentUrlCreateInput! + ): DigitalContentUrlCreate + + """ + Deletes draft orders. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + draftOrderBulkDelete( + """ + List of draft order IDs to delete. + """ + ids: [ID!]! + ): DraftOrderBulkDelete + + """ + Completes creating an order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + draftOrderComplete( + """ + ID of the order that will be completed. + """ + id: ID! + ): DraftOrderComplete + + """ + Creates a new draft order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + draftOrderCreate( + """ + Fields required to create an order. + """ + input: DraftOrderCreateInput! + ): DraftOrderCreate + + """ + Deletes a draft order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + draftOrderDelete( + """ + ID of a draft order to delete. + """ + id: ID! + ): DraftOrderDelete + + """ + Deletes order lines. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + draftOrderLinesBulkDelete( + """ + List of order lines IDs to delete. + """ + ids: [ID!]! + ): DraftOrderLinesBulkDelete @deprecated(reason: "This field will be removed in Saleor 4.0.") + + """ + Updates a draft order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + draftOrderUpdate( + """ + ID of a draft order to update. + """ + id: ID! + + """ + Fields required to update an order. + """ + input: DraftOrderInput! + ): DraftOrderUpdate + + """ + Retries event delivery. + + Requires one of the following permissions: MANAGE_APPS. + """ + eventDeliveryRetry( + """ + ID of the event delivery to retry. + """ + id: ID! + ): EventDeliveryRetry + + """ + Export gift cards to csv file. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + exportGiftCards( + """ + Fields required to export gift cards data. + """ + input: ExportGiftCardsInput! + ): ExportGiftCards + + """ + Export products to csv file. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + exportProducts( + """ + Fields required to export product data. + """ + input: ExportProductsInput! + ): ExportProducts + + """ + Prepare external authentication url for user by custom plugin. + """ + externalAuthenticationUrl( + """ + The data required by plugin to create external authentication url. + """ + input: JSONString! + + """ + The ID of the authentication plugin. + """ + pluginId: String! + ): ExternalAuthenticationUrl + + """ + Logout user by custom plugin. + """ + externalLogout( + """ + The data required by plugin to proceed the logout process. + """ + input: JSONString! + + """ + The ID of the authentication plugin. + """ + pluginId: String! + ): ExternalLogout + + """ + Trigger sending a notification with the notify plugin method. Serializes nodes provided as ids parameter and includes this data in the notification payload. + + Added in Saleor 3.1. + """ + externalNotificationTrigger( + """ + Channel slug. Saleor will send a notification within a provided channel. Please, make sure that necessary plugins are active. + """ + channel: String! + + """ + Input for External Notification Trigger. + """ + input: ExternalNotificationTriggerInput! + + """ + The ID of notification plugin. + """ + pluginId: String + ): ExternalNotificationTrigger + + """ + Obtain external access tokens for user by custom plugin. + """ + externalObtainAccessTokens( + """ + The data required by plugin to create authentication data. + """ + input: JSONString! + + """ + The ID of the authentication plugin. + """ + pluginId: String! + ): ExternalObtainAccessTokens + + """ + Refresh user's access by custom plugin. + """ + externalRefresh( + """ + The data required by plugin to proceed the refresh process. + """ + input: JSONString! + + """ + The ID of the authentication plugin. + """ + pluginId: String! + ): ExternalRefresh + + """ + Verify external authentication data by plugin. + """ + externalVerify( + """ + The data required by plugin to proceed the verification. + """ + input: JSONString! + + """ + The ID of the authentication plugin. + """ + pluginId: String! + ): ExternalVerify + + """ + Upload a file. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + + Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER. + """ + fileUpload( + """ + Represents a file in a multipart request. + """ + file: Upload! + ): FileUpload + + """ + Activate a gift card. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardActivate( + """ + ID of a gift card to activate. + """ + id: ID! + ): GiftCardActivate + + """ + Adds note to the gift card. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardAddNote( + """ + ID of the gift card to add a note for. + """ + id: ID! + + """ + Fields required to create a note for the gift card. + """ + input: GiftCardAddNoteInput! + ): GiftCardAddNote + + """ + Activate gift cards. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardBulkActivate( + """ + List of gift card IDs to activate. + """ + ids: [ID!]! + ): GiftCardBulkActivate + + """ + Create gift cards. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardBulkCreate( + """ + Fields required to create gift cards. + """ + input: GiftCardBulkCreateInput! + ): GiftCardBulkCreate + + """ + Deactivate gift cards. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardBulkDeactivate( + """ + List of gift card IDs to deactivate. + """ + ids: [ID!]! + ): GiftCardBulkDeactivate + + """ + Delete gift cards. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardBulkDelete( + """ + List of gift card IDs to delete. + """ + ids: [ID!]! + ): GiftCardBulkDelete + + """ + Creates a new gift card. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardCreate( + """ + Fields required to create a gift card. + """ + input: GiftCardCreateInput! + ): GiftCardCreate + + """ + Deactivate a gift card. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardDeactivate( + """ + ID of a gift card to deactivate. + """ + id: ID! + ): GiftCardDeactivate + + """ + Delete gift card. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardDelete( + """ + ID of the gift card to delete. + """ + id: ID! + ): GiftCardDelete + + """ + Resend a gift card. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardResend( + """ + Fields required to resend a gift card. + """ + input: GiftCardResendInput! + ): GiftCardResend + + """ + Update gift card settings. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardSettingsUpdate( + """ + Fields required to update gift card settings. + """ + input: GiftCardSettingsUpdateInput! + ): GiftCardSettingsUpdate + + """ + Update a gift card. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardUpdate( + """ + ID of a gift card to update. + """ + id: ID! + + """ + Fields required to update a gift card. + """ + input: GiftCardUpdateInput! + ): GiftCardUpdate + + """ + Creates a ready to send invoice. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + invoiceCreate( + """ + Fields required when creating an invoice. + """ + input: InvoiceCreateInput! + + """ + ID of the order related to invoice. + """ + orderId: ID! + ): InvoiceCreate + + """ + Deletes an invoice. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + invoiceDelete( + """ + ID of an invoice to delete. + """ + id: ID! + ): InvoiceDelete + + """ + Request an invoice for the order using plugin. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + invoiceRequest( + """ + Invoice number, if not provided it will be generated. + """ + number: String + + """ + ID of the order related to invoice. + """ + orderId: ID! + ): InvoiceRequest + + """ + Requests deletion of an invoice. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + invoiceRequestDelete( + """ + ID of an invoice to request the deletion. + """ + id: ID! + ): InvoiceRequestDelete + + """ + Send an invoice notification to the customer. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + invoiceSendNotification( + """ + ID of an invoice to be sent. + """ + id: ID! + ): InvoiceSendNotification + + """ + Updates an invoice. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + invoiceUpdate( + """ + ID of an invoice to update. + """ + id: ID! + + """ + Fields to use when updating an invoice. + """ + input: UpdateInvoiceInput! + ): InvoiceUpdate + + """ + Deletes menus. + + Requires one of the following permissions: MANAGE_MENUS. + """ + menuBulkDelete( + """ + List of menu IDs to delete. + """ + ids: [ID!]! + ): MenuBulkDelete + + """ + Creates a new Menu. + + Requires one of the following permissions: MANAGE_MENUS. + """ + menuCreate( + """ + Fields required to create a menu. + """ + input: MenuCreateInput! + ): MenuCreate + + """ + Deletes a menu. + + Requires one of the following permissions: MANAGE_MENUS. + """ + menuDelete( + """ + ID of a menu to delete. + """ + id: ID! + ): MenuDelete + + """ + Deletes menu items. + + Requires one of the following permissions: MANAGE_MENUS. + """ + menuItemBulkDelete( + """ + List of menu item IDs to delete. + """ + ids: [ID!]! + ): MenuItemBulkDelete + + """ + Creates a new menu item. + + Requires one of the following permissions: MANAGE_MENUS. + """ + menuItemCreate( + """ + Fields required to update a menu item. Only one of `url`, `category`, `page`, `collection` is allowed per item. + """ + input: MenuItemCreateInput! + ): MenuItemCreate + + """ + Deletes a menu item. + + Requires one of the following permissions: MANAGE_MENUS. + """ + menuItemDelete( + """ + ID of a menu item to delete. + """ + id: ID! + ): MenuItemDelete + + """ + Moves items of menus. + + Requires one of the following permissions: MANAGE_MENUS. + """ + menuItemMove( + """ + ID of the menu. + """ + menu: ID! + + """ + The menu position data. + """ + moves: [MenuItemMoveInput!]! + ): MenuItemMove + + """ + Creates/updates translations for a menu item. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + menuItemTranslate( + """ + MenuItem ID or MenuItemTranslatableContent ID. + """ + id: ID! + input: NameTranslationInput! + + """ + Translation language code. + """ + languageCode: LanguageCodeEnum! + ): MenuItemTranslate + + """ + Updates a menu item. + + Requires one of the following permissions: MANAGE_MENUS. + """ + menuItemUpdate( + """ + ID of a menu item to update. + """ + id: ID! + + """ + Fields required to update a menu item. Only one of `url`, `category`, `page`, `collection` is allowed per item. + """ + input: MenuItemInput! + ): MenuItemUpdate + + """ + Updates a menu. + + Requires one of the following permissions: MANAGE_MENUS. + """ + menuUpdate( + """ + ID of a menu to update. + """ + id: ID! + + """ + Fields required to update a menu. + """ + input: MenuInput! + ): MenuUpdate + + """ + Adds note to the order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderAddNote( + """ + Fields required to create a note for the order. + """ + input: OrderAddNoteInput! + + """ + ID of the order to add a note for. + """ + order: ID! + ): OrderAddNote + + """ + Cancels orders. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderBulkCancel( + """ + List of orders IDs to cancel. + """ + ids: [ID!]! + ): OrderBulkCancel + + """ + Cancel an order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderCancel( + """ + ID of the order to cancel. + """ + id: ID! + ): OrderCancel + + """ + Capture an order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderCapture( + """ + Amount of money to capture. + """ + amount: PositiveDecimal! + + """ + ID of the order to capture. + """ + id: ID! + ): OrderCapture + + """ + Confirms an unconfirmed order by changing status to unfulfilled. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderConfirm( + """ + ID of an order to confirm. + """ + id: ID! + ): OrderConfirm + + """ + Create new order from existing checkout. Requires the following permissions: AUTHENTICATED_APP and HANDLE_CHECKOUTS. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + orderCreateFromCheckout( + """ + ID of a checkout that will be converted to an order. + """ + id: ID! + + """ + Determines if checkout should be removed after creating an order. Default true. + """ + removeCheckout: Boolean = true + ): OrderCreateFromCheckout + + """ + Adds discount to the order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderDiscountAdd( + """ + Fields required to create a discount for the order. + """ + input: OrderDiscountCommonInput! + + """ + ID of an order to discount. + """ + orderId: ID! + ): OrderDiscountAdd + + """ + Remove discount from the order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderDiscountDelete( + """ + ID of a discount to remove. + """ + discountId: ID! + ): OrderDiscountDelete + + """ + Update discount for the order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderDiscountUpdate( + """ + ID of a discount to update. + """ + discountId: ID! + + """ + Fields required to update a discount for the order. + """ + input: OrderDiscountCommonInput! + ): OrderDiscountUpdate + + """ + Creates new fulfillments for an order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderFulfill( + """ + Fields required to create a fulfillment. + """ + input: OrderFulfillInput! + + """ + ID of the order to be fulfilled. + """ + order: ID + ): OrderFulfill + + """ + Approve existing fulfillment. + + Added in Saleor 3.1. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderFulfillmentApprove( + """ + True if stock could be exceeded. + """ + allowStockToBeExceeded: Boolean = false + + """ + ID of a fulfillment to approve. + """ + id: ID! + + """ + True if confirmation email should be send. + """ + notifyCustomer: Boolean! + ): FulfillmentApprove + + """ + Cancels existing fulfillment and optionally restocks items. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderFulfillmentCancel( + """ + ID of a fulfillment to cancel. + """ + id: ID! + + """ + Fields required to cancel a fulfillment. + """ + input: FulfillmentCancelInput + ): FulfillmentCancel + + """ + Refund products. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderFulfillmentRefundProducts( + """ + Fields required to create an refund fulfillment. + """ + input: OrderRefundProductsInput! + + """ + ID of the order to be refunded. + """ + order: ID! + ): FulfillmentRefundProducts + + """ + Return products. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderFulfillmentReturnProducts( + """ + Fields required to return products. + """ + input: OrderReturnProductsInput! + + """ + ID of the order to be returned. + """ + order: ID! + ): FulfillmentReturnProducts + + """ + Updates a fulfillment for an order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderFulfillmentUpdateTracking( + """ + ID of a fulfillment to update. + """ + id: ID! + + """ + Fields required to update a fulfillment. + """ + input: FulfillmentUpdateTrackingInput! + ): FulfillmentUpdateTracking + + """ + Deletes an order line from an order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderLineDelete( + """ + ID of the order line to delete. + """ + id: ID! + ): OrderLineDelete + + """ + Remove discount applied to the order line. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderLineDiscountRemove( + """ + ID of a order line to remove its discount + """ + orderLineId: ID! + ): OrderLineDiscountRemove + + """ + Update discount for the order line. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderLineDiscountUpdate( + """ + Fields required to update price for the order line. + """ + input: OrderDiscountCommonInput! + + """ + ID of a order line to update price + """ + orderLineId: ID! + ): OrderLineDiscountUpdate + + """ + Updates an order line of an order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderLineUpdate( + """ + ID of the order line to update. + """ + id: ID! + + """ + Fields required to update an order line. + """ + input: OrderLineInput! + ): OrderLineUpdate + + """ + Create order lines for an order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderLinesCreate( + """ + ID of the order to add the lines to. + """ + id: ID! + + """ + Fields required to add order lines. + """ + input: [OrderLineCreateInput!]! + ): OrderLinesCreate + + """ + Mark order as manually paid. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderMarkAsPaid( + """ + ID of the order to mark paid. + """ + id: ID! + + """ + The external transaction reference. + """ + transactionReference: String + ): OrderMarkAsPaid + + """ + Refund an order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderRefund( + """ + Amount of money to refund. + """ + amount: PositiveDecimal! + + """ + ID of the order to refund. + """ + id: ID! + ): OrderRefund + + """ + Update shop order settings. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderSettingsUpdate( + """ + Fields required to update shop order settings. + """ + input: OrderSettingsUpdateInput! + ): OrderSettingsUpdate + + """ + Updates an order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderUpdate( + """ + ID of an order to update. + """ + id: ID! + + """ + Fields required to update an order. + """ + input: OrderUpdateInput! + ): OrderUpdate + + """ + Updates a shipping method of the order. Requires shipping method ID to update, when null is passed then currently assigned shipping method is removed. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderUpdateShipping( + """ + Fields required to change shipping method of the order. + """ + input: OrderUpdateShippingInput! + + """ + ID of the order to update a shipping method. + """ + order: ID! + ): OrderUpdateShipping + + """ + Void an order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderVoid( + """ + ID of the order to void. + """ + id: ID! + ): OrderVoid + + """ + Assign attributes to a given page type. + + Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + """ + pageAttributeAssign( + """ + The IDs of the attributes to assign. + """ + attributeIds: [ID!]! + + """ + ID of the page type to assign the attributes into. + """ + pageTypeId: ID! + ): PageAttributeAssign + + """ + Unassign attributes from a given page type. + + Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + """ + pageAttributeUnassign( + """ + The IDs of the attributes to unassign. + """ + attributeIds: [ID!]! + + """ + ID of the page type from which the attributes should be unassign. + """ + pageTypeId: ID! + ): PageAttributeUnassign + + """ + Deletes pages. + + Requires one of the following permissions: MANAGE_PAGES. + """ + pageBulkDelete( + """ + List of page IDs to delete. + """ + ids: [ID!]! + ): PageBulkDelete + + """ + Publish pages. + + Requires one of the following permissions: MANAGE_PAGES. + """ + pageBulkPublish( + """ + List of page IDs to (un)publish. + """ + ids: [ID!]! + + """ + Determine if pages will be published or not. + """ + isPublished: Boolean! + ): PageBulkPublish + + """ + Creates a new page. + + Requires one of the following permissions: MANAGE_PAGES. + """ + pageCreate( + """ + Fields required to create a page. + """ + input: PageCreateInput! + ): PageCreate + + """ + Deletes a page. + + Requires one of the following permissions: MANAGE_PAGES. + """ + pageDelete( + """ + ID of a page to delete. + """ + id: ID! + ): PageDelete + + """ + Reorder page attribute values. + + Requires one of the following permissions: MANAGE_PAGES. + """ + pageReorderAttributeValues( + """ + ID of an attribute. + """ + attributeId: ID! + + """ + The list of reordering operations for given attribute values. + """ + moves: [ReorderInput!]! + + """ + ID of a page. + """ + pageId: ID! + ): PageReorderAttributeValues + + """ + Creates/updates translations for a page. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + pageTranslate( + """ + Page ID or PageTranslatableContent ID. + """ + id: ID! + input: PageTranslationInput! + + """ + Translation language code. + """ + languageCode: LanguageCodeEnum! + ): PageTranslate + + """ + Delete page types. + + Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + """ + pageTypeBulkDelete( + """ + List of page type IDs to delete + """ + ids: [ID!]! + ): PageTypeBulkDelete + + """ + Create a new page type. + + Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + """ + pageTypeCreate( + """ + Fields required to create page type. + """ + input: PageTypeCreateInput! + ): PageTypeCreate + + """ + Delete a page type. + + Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + """ + pageTypeDelete( + """ + ID of the page type to delete. + """ + id: ID! + ): PageTypeDelete + + """ + Reorder the attributes of a page type. + + Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + """ + pageTypeReorderAttributes( + """ + The list of attribute reordering operations. + """ + moves: [ReorderInput!]! + + """ + ID of a page type. + """ + pageTypeId: ID! + ): PageTypeReorderAttributes + + """ + Update page type. + + Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + """ + pageTypeUpdate( + """ + ID of the page type to update. + """ + id: ID + + """ + Fields required to update page type. + """ + input: PageTypeUpdateInput! + ): PageTypeUpdate + + """ + Updates an existing page. + + Requires one of the following permissions: MANAGE_PAGES. + """ + pageUpdate( + """ + ID of a page to update. + """ + id: ID! + + """ + Fields required to update a page. + """ + input: PageInput! + ): PageUpdate + + """ + Change the password of the logged in user. + + Requires one of the following permissions: AUTHENTICATED_USER. + """ + passwordChange( + """ + New user password. + """ + newPassword: String! + + """ + Current user password. + """ + oldPassword: String! + ): PasswordChange + + """ + Captures the authorized payment amount. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + paymentCapture( + """ + Transaction amount. + """ + amount: PositiveDecimal + + """ + Payment ID. + """ + paymentId: ID! + ): PaymentCapture + + """ + Check payment balance. + """ + paymentCheckBalance( + """ + Fields required to check payment balance. + """ + input: PaymentCheckBalanceInput! + ): PaymentCheckBalance + + """ + Initializes payment process when it is required by gateway. + """ + paymentInitialize( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + A gateway name used to initialize the payment. + """ + gateway: String! + + """ + Client-side generated data required to initialize the payment. + """ + paymentData: JSONString + ): PaymentInitialize + + """ + Refunds the captured payment amount. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + paymentRefund( + """ + Transaction amount. + """ + amount: PositiveDecimal + + """ + Payment ID. + """ + paymentId: ID! + ): PaymentRefund + + """ + Voids the authorized payment. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + paymentVoid( + """ + Payment ID. + """ + paymentId: ID! + ): PaymentVoid + + """ + Create new permission group. + + Requires one of the following permissions: MANAGE_STAFF. + """ + permissionGroupCreate( + """ + Input fields to create permission group. + """ + input: PermissionGroupCreateInput! + ): PermissionGroupCreate + + """ + Delete permission group. + + Requires one of the following permissions: MANAGE_STAFF. + """ + permissionGroupDelete( + """ + ID of the group to delete. + """ + id: ID! + ): PermissionGroupDelete + + """ + Update permission group. + + Requires one of the following permissions: MANAGE_STAFF. + """ + permissionGroupUpdate( + """ + ID of the group to update. + """ + id: ID! + + """ + Input fields to create permission group. + """ + input: PermissionGroupUpdateInput! + ): PermissionGroupUpdate + + """ + Update plugin configuration. + + Requires one of the following permissions: MANAGE_PLUGINS. + """ + pluginUpdate( + """ + ID of a channel for which the data should be modified. + """ + channelId: ID + + """ + ID of plugin to update. + """ + id: ID! + + """ + Fields required to update a plugin configuration. + """ + input: PluginUpdateInput! + ): PluginUpdate + + """ + Assign attributes to a given product type. + + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + productAttributeAssign( + """ + The operations to perform. + """ + operations: [ProductAttributeAssignInput!]! + + """ + ID of the product type to assign the attributes into. + """ + productTypeId: ID! + ): ProductAttributeAssign + + """ + Update attributes assigned to product variant for given product type. + + Added in Saleor 3.1. + + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + productAttributeAssignmentUpdate( + """ + The operations to perform. + """ + operations: [ProductAttributeAssignmentUpdateInput!]! + + """ + ID of the product type to assign the attributes into. + """ + productTypeId: ID! + ): ProductAttributeAssignmentUpdate + + """ + Un-assign attributes from a given product type. + + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + productAttributeUnassign( + """ + The IDs of the attributes to unassign. + """ + attributeIds: [ID!]! + + """ + ID of the product type from which the attributes should be unassigned. + """ + productTypeId: ID! + ): ProductAttributeUnassign + + """ + Deletes products. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productBulkDelete( + """ + List of product IDs to delete. + """ + ids: [ID!]! + ): ProductBulkDelete + + """ + Manage product's availability in channels. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productChannelListingUpdate( + """ + ID of a product to update. + """ + id: ID! + + """ + Fields required to create or update product channel listings. + """ + input: ProductChannelListingUpdateInput! + ): ProductChannelListingUpdate + + """ + Creates a new product. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productCreate( + """ + Fields required to create a product. + """ + input: ProductCreateInput! + ): ProductCreate + + """ + Deletes a product. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productDelete( + """ + ID of a product to delete. + """ + id: ID! + ): ProductDelete + + """ + Deletes product media. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productMediaBulkDelete( + """ + List of product media IDs to delete. + """ + ids: [ID!]! + ): ProductMediaBulkDelete + + """ + Create a media object (image or video URL) associated with product. For image, this mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productMediaCreate( + """ + Fields required to create a product media. + """ + input: ProductMediaCreateInput! + ): ProductMediaCreate + + """ + Deletes a product media. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productMediaDelete( + """ + ID of a product media to delete. + """ + id: ID! + ): ProductMediaDelete + + """ + Changes ordering of the product media. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productMediaReorder( + """ + IDs of a product media in the desired order. + """ + mediaIds: [ID!]! + + """ + ID of product that media order will be altered. + """ + productId: ID! + ): ProductMediaReorder + + """ + Updates a product media. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productMediaUpdate( + """ + ID of a product media to update. + """ + id: ID! + + """ + Fields required to update a product media. + """ + input: ProductMediaUpdateInput! + ): ProductMediaUpdate + + """ + Reorder product attribute values. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productReorderAttributeValues( + """ + ID of an attribute. + """ + attributeId: ID! + + """ + The list of reordering operations for given attribute values. + """ + moves: [ReorderInput!]! + + """ + ID of a product. + """ + productId: ID! + ): ProductReorderAttributeValues + + """ + Creates/updates translations for a product. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + productTranslate( + """ + Product ID or ProductTranslatableContent ID. + """ + id: ID! + input: TranslationInput! + + """ + Translation language code. + """ + languageCode: LanguageCodeEnum! + ): ProductTranslate + + """ + Deletes product types. + + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + productTypeBulkDelete( + """ + List of product type IDs to delete. + """ + ids: [ID!]! + ): ProductTypeBulkDelete + + """ + Creates a new product type. + + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + productTypeCreate( + """ + Fields required to create a product type. + """ + input: ProductTypeInput! + ): ProductTypeCreate + + """ + Deletes a product type. + + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + productTypeDelete( + """ + ID of a product type to delete. + """ + id: ID! + ): ProductTypeDelete + + """ + Reorder the attributes of a product type. + + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + productTypeReorderAttributes( + """ + The list of attribute reordering operations. + """ + moves: [ReorderInput!]! + + """ + ID of a product type. + """ + productTypeId: ID! + + """ + The attribute type to reorder. + """ + type: ProductAttributeType! + ): ProductTypeReorderAttributes + + """ + Updates an existing product type. + + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + productTypeUpdate( + """ + ID of a product type to update. + """ + id: ID! + + """ + Fields required to update a product type. + """ + input: ProductTypeInput! + ): ProductTypeUpdate + + """ + Updates an existing product. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productUpdate( + """ + ID of a product to update. + """ + id: ID! + + """ + Fields required to update a product. + """ + input: ProductInput! + ): ProductUpdate + + """ + Creates product variants for a given product. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productVariantBulkCreate( + """ + ID of the product to create the variants for. + """ + product: ID! + + """ + Input list of product variants to create. + """ + variants: [ProductVariantBulkCreateInput!]! + ): ProductVariantBulkCreate + + """ + Deletes product variants. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productVariantBulkDelete( + """ + List of product variant IDs to delete. + """ + ids: [ID!]! + ): ProductVariantBulkDelete + + """ + Manage product variant prices in channels. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productVariantChannelListingUpdate( + """ + ID of a product variant to update. + """ + id: ID! + + """ + List of fields required to create or upgrade product variant channel listings. + """ + input: [ProductVariantChannelListingAddInput!]! + ): ProductVariantChannelListingUpdate + + """ + Creates a new variant for a product. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productVariantCreate( + """ + Fields required to create a product variant. + """ + input: ProductVariantCreateInput! + ): ProductVariantCreate + + """ + Deletes a product variant. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productVariantDelete( + """ + ID of a product variant to delete. + """ + id: ID! + ): ProductVariantDelete + + """ + Deactivates product variant preorder. It changes all preorder allocation into regular allocation. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productVariantPreorderDeactivate( + """ + ID of a variant which preorder should be deactivated. + """ + id: ID! + ): ProductVariantPreorderDeactivate + + """ + Reorder the variants of a product. Mutation updates updated_at on product and triggers PRODUCT_UPDATED webhook. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productVariantReorder( + """ + The list of variant reordering operations. + """ + moves: [ReorderInput!]! + + """ + Id of product that variants order will be altered. + """ + productId: ID! + ): ProductVariantReorder + + """ + Reorder product variant attribute values. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productVariantReorderAttributeValues( + """ + ID of an attribute. + """ + attributeId: ID! + + """ + The list of reordering operations for given attribute values. + """ + moves: [ReorderInput!]! + + """ + ID of a product variant. + """ + variantId: ID! + ): ProductVariantReorderAttributeValues + + """ + Set default variant for a product. Mutation triggers PRODUCT_UPDATED webhook. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productVariantSetDefault( + """ + Id of a product that will have the default variant set. + """ + productId: ID! + + """ + Id of a variant that will be set as default. + """ + variantId: ID! + ): ProductVariantSetDefault + + """ + Creates stocks for product variant. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productVariantStocksCreate( + """ + Input list of stocks to create. + """ + stocks: [StockInput!]! + + """ + ID of a product variant for which stocks will be created. + """ + variantId: ID! + ): ProductVariantStocksCreate + + """ + Delete stocks from product variant. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productVariantStocksDelete( + """ + ID of product variant for which stocks will be deleted. + """ + variantId: ID! + warehouseIds: [ID!] + ): ProductVariantStocksDelete + + """ + Update stocks for product variant. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productVariantStocksUpdate( + """ + Input list of stocks to create. + """ + stocks: [StockInput!]! + + """ + ID of a product variant for which stocks will be created. + """ + variantId: ID! + ): ProductVariantStocksUpdate + + """ + Creates/updates translations for a product variant. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + productVariantTranslate( + """ + ProductVariant ID or ProductVariantTranslatableContent ID. + """ + id: ID! + input: NameTranslationInput! + + """ + Translation language code. + """ + languageCode: LanguageCodeEnum! + ): ProductVariantTranslate + + """ + Updates an existing variant for product. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productVariantUpdate( + """ + ID of a product variant to update. + """ + id: ID! + + """ + Fields required to update a product variant. + """ + input: ProductVariantInput! + ): ProductVariantUpdate + + """ + Request email change of the logged in user. + + Requires one of the following permissions: AUTHENTICATED_USER. + """ + requestEmailChange( + """ + Slug of a channel which will be used to notify users. Optional when only one channel exists. + """ + channel: String + + """ + New user email. + """ + newEmail: String! + + """ + User password. + """ + password: String! + + """ + URL of a view where users should be redirected to update the email address. URL in RFC 1808 format. + """ + redirectUrl: String! + ): RequestEmailChange + + """ + Sends an email with the account password modification link. + """ + requestPasswordReset( + """ + Slug of a channel which will be used for notify user. Optional when only one channel exists. + """ + channel: String + + """ + Email of the user that will be used for password recovery. + """ + email: String! + + """ + URL of a view where users should be redirected to reset the password. URL in RFC 1808 format. + """ + redirectUrl: String! + ): RequestPasswordReset + + """ + Deletes sales. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + saleBulkDelete( + """ + List of sale IDs to delete. + """ + ids: [ID!]! + ): SaleBulkDelete + + """ + Adds products, categories, collections to a voucher. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + saleCataloguesAdd( + """ + ID of a sale. + """ + id: ID! + + """ + Fields required to modify catalogue IDs of sale. + """ + input: CatalogueInput! + ): SaleAddCatalogues + + """ + Removes products, categories, collections from a sale. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + saleCataloguesRemove( + """ + ID of a sale. + """ + id: ID! + + """ + Fields required to modify catalogue IDs of sale. + """ + input: CatalogueInput! + ): SaleRemoveCatalogues + + """ + Manage sale's availability in channels. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + saleChannelListingUpdate( + """ + ID of a sale to update. + """ + id: ID! + + """ + Fields required to update sale channel listings. + """ + input: SaleChannelListingInput! + ): SaleChannelListingUpdate + + """ + Creates a new sale. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + saleCreate( + """ + Fields required to create a sale. + """ + input: SaleInput! + ): SaleCreate + + """ + Deletes a sale. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + saleDelete( + """ + ID of a sale to delete. + """ + id: ID! + ): SaleDelete + + """ + Creates/updates translations for a sale. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + saleTranslate( + """ + Sale ID or SaleTranslatableContent ID. + """ + id: ID! + input: NameTranslationInput! + + """ + Translation language code. + """ + languageCode: LanguageCodeEnum! + ): SaleTranslate + + """ + Updates a sale. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + saleUpdate( + """ + ID of a sale to update. + """ + id: ID! + + """ + Fields required to update a sale. + """ + input: SaleInput! + ): SaleUpdate + + """ + Sets the user's password from the token sent by email using the RequestPasswordReset mutation. + """ + setPassword( + """ + Email of a user. + """ + email: String! + + """ + Password of a user. + """ + password: String! + + """ + A one-time token required to set the password. + """ + token: String! + ): SetPassword + + """ + Manage shipping method's availability in channels. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingMethodChannelListingUpdate( + """ + ID of a shipping method to update. + """ + id: ID! + + """ + Fields required to update shipping method channel listings. + """ + input: ShippingMethodChannelListingInput! + ): ShippingMethodChannelListingUpdate + + """ + Deletes shipping prices. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingPriceBulkDelete( + """ + List of shipping price IDs to delete. + """ + ids: [ID!]! + ): ShippingPriceBulkDelete + + """ + Creates a new shipping price. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingPriceCreate( + """ + Fields required to create a shipping price. + """ + input: ShippingPriceInput! + ): ShippingPriceCreate + + """ + Deletes a shipping price. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingPriceDelete( + """ + ID of a shipping price to delete. + """ + id: ID! + ): ShippingPriceDelete + + """ + Exclude products from shipping price. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingPriceExcludeProducts( + """ + ID of a shipping price. + """ + id: ID! + + """ + Exclude products input. + """ + input: ShippingPriceExcludeProductsInput! + ): ShippingPriceExcludeProducts + + """ + Remove product from excluded list for shipping price. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingPriceRemoveProductFromExclude( + """ + ID of a shipping price. + """ + id: ID! + + """ + List of products which will be removed from excluded list. + """ + products: [ID!]! + ): ShippingPriceRemoveProductFromExclude + + """ + Creates/updates translations for a shipping method. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + shippingPriceTranslate( + """ + ShippingMethodType ID or ShippingMethodTranslatableContent ID. + """ + id: ID! + input: ShippingPriceTranslationInput! + + """ + Translation language code. + """ + languageCode: LanguageCodeEnum! + ): ShippingPriceTranslate + + """ + Updates a new shipping price. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingPriceUpdate( + """ + ID of a shipping price to update. + """ + id: ID! + + """ + Fields required to update a shipping price. + """ + input: ShippingPriceInput! + ): ShippingPriceUpdate + + """ + Deletes shipping zones. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingZoneBulkDelete( + """ + List of shipping zone IDs to delete. + """ + ids: [ID!]! + ): ShippingZoneBulkDelete + + """ + Creates a new shipping zone. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingZoneCreate( + """ + Fields required to create a shipping zone. + """ + input: ShippingZoneCreateInput! + ): ShippingZoneCreate + + """ + Deletes a shipping zone. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingZoneDelete( + """ + ID of a shipping zone to delete. + """ + id: ID! + ): ShippingZoneDelete + + """ + Updates a new shipping zone. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingZoneUpdate( + """ + ID of a shipping zone to update. + """ + id: ID! + + """ + Fields required to update a shipping zone. + """ + input: ShippingZoneUpdateInput! + ): ShippingZoneUpdate + + """ + Update the shop's address. If the `null` value is passed, the currently selected address will be deleted. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + shopAddressUpdate( + """ + Fields required to update shop address. + """ + input: AddressInput + ): ShopAddressUpdate + + """ + Updates site domain of the shop. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + shopDomainUpdate( + """ + Fields required to update site. + """ + input: SiteDomainInput + ): ShopDomainUpdate + + """ + Fetch tax rates. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + shopFetchTaxRates: ShopFetchTaxRates + + """ + Creates/updates translations for shop settings. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + shopSettingsTranslate( + """ + Fields required to update shop settings translations. + """ + input: ShopSettingsTranslationInput! + + """ + Translation language code. + """ + languageCode: LanguageCodeEnum! + ): ShopSettingsTranslate + + """ + Updates shop settings. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + shopSettingsUpdate( + """ + Fields required to update shop settings. + """ + input: ShopSettingsInput! + ): ShopSettingsUpdate + + """ + Deletes staff users. + + Requires one of the following permissions: MANAGE_STAFF. + """ + staffBulkDelete( + """ + List of user IDs to delete. + """ + ids: [ID!]! + ): StaffBulkDelete + + """ + Creates a new staff user. + + Requires one of the following permissions: MANAGE_STAFF. + """ + staffCreate( + """ + Fields required to create a staff user. + """ + input: StaffCreateInput! + ): StaffCreate + + """ + Deletes a staff user. + + Requires one of the following permissions: MANAGE_STAFF. + """ + staffDelete( + """ + ID of a staff user to delete. + """ + id: ID! + ): StaffDelete + + """ + Creates a new staff notification recipient. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + staffNotificationRecipientCreate( + """ + Fields required to create a staff notification recipient. + """ + input: StaffNotificationRecipientInput! + ): StaffNotificationRecipientCreate + + """ + Delete staff notification recipient. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + staffNotificationRecipientDelete( + """ + ID of a staff notification recipient to delete. + """ + id: ID! + ): StaffNotificationRecipientDelete + + """ + Updates a staff notification recipient. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + staffNotificationRecipientUpdate( + """ + ID of a staff notification recipient to update. + """ + id: ID! + + """ + Fields required to update a staff notification recipient. + """ + input: StaffNotificationRecipientInput! + ): StaffNotificationRecipientUpdate + + """ + Updates an existing staff user. + + Requires one of the following permissions: MANAGE_STAFF. + """ + staffUpdate( + """ + ID of a staff user to update. + """ + id: ID! + + """ + Fields required to update a staff user. + """ + input: StaffUpdateInput! + ): StaffUpdate + + """ + Create JWT token. + """ + tokenCreate( + """ + Email of a user. + """ + email: String! + + """ + Password of a user. + """ + password: String! + ): CreateToken + + """ + Refresh JWT token. Mutation tries to take refreshToken from the input.If it fails it will try to take refreshToken from the http-only cookie -refreshToken. csrfToken is required when refreshToken is provided as a cookie. + """ + tokenRefresh( + """ + CSRF token required to refresh token. This argument is required when refreshToken is provided as a cookie. + """ + csrfToken: String + + """ + Refresh token. + """ + refreshToken: String + ): RefreshToken + + """ + Verify JWT token. + """ + tokenVerify( + """ + JWT token to validate. + """ + token: String! + ): VerifyToken + + """ + Deactivate all JWT tokens of the currently authenticated user. + + Requires one of the following permissions: AUTHENTICATED_USER. + """ + tokensDeactivateAll: DeactivateAllUserTokens + + """ + Create transaction for checkout or order. Requires the following permissions: AUTHENTICATED_APP and HANDLE_PAYMENTS. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + transactionCreate( + """ + The ID of the checkout or order. + """ + id: ID! + + """ + Input data required to create a new transaction object. + """ + transaction: TransactionCreateInput! + + """ + Data that defines a transaction event. + """ + transactionEvent: TransactionEventInput + ): TransactionCreate + + """ + Request an action for payment transaction. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: HANDLE_PAYMENTS, MANAGE_ORDERS. + """ + transactionRequestAction( + """ + Determines the action type. + """ + actionType: TransactionActionEnum! + + """ + Transaction request amount. If empty for refund or capture, maximal possible amount will be used. + """ + amount: PositiveDecimal + + """ + The ID of the transaction. + """ + id: ID! + ): TransactionRequestAction + + """ + Create transaction for checkout or order. Requires the following permissions: AUTHENTICATED_APP and HANDLE_PAYMENTS. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + transactionUpdate( + """ + The ID of the transaction. + """ + id: ID! + + """ + Input data required to create a new transaction object. + """ + transaction: TransactionUpdateInput + + """ + Data that defines a transaction transaction. + """ + transactionEvent: TransactionEventInput + ): TransactionUpdate + + """ + Remove shipping zone from given warehouse. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + unassignWarehouseShippingZone( + """ + ID of a warehouse to update. + """ + id: ID! + + """ + List of shipping zone IDs. + """ + shippingZoneIds: [ID!]! + ): WarehouseShippingZoneUnassign + + """ + Updates metadata of an object. To use it, you need to have access to the modified object. + """ + updateMetadata( + """ + ID or token (for Order and Checkout) of an object to update. + """ + id: ID! + + """ + Fields required to update the object's metadata. + """ + input: [MetadataInput!]! + ): UpdateMetadata + + """ + Updates private metadata of an object. To use it, you need to be an authenticated staff user or an app and have access to the modified object. + """ + updatePrivateMetadata( + """ + ID or token (for Order and Checkout) of an object to update. + """ + id: ID! + + """ + Fields required to update the object's metadata. + """ + input: [MetadataInput!]! + ): UpdatePrivateMetadata + + """ + Updates given warehouse. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + updateWarehouse( + """ + ID of a warehouse to update. + """ + id: ID! + + """ + Fields required to update warehouse. + """ + input: WarehouseUpdateInput! + ): WarehouseUpdate + + """ + Deletes a user avatar. Only for staff members. + + Requires one of the following permissions: AUTHENTICATED_STAFF_USER. + """ + userAvatarDelete: UserAvatarDelete + + """ + Create a user avatar. Only for staff members. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + + Requires one of the following permissions: AUTHENTICATED_STAFF_USER. + """ + userAvatarUpdate( + """ + Represents an image file in a multipart request. + """ + image: Upload! + ): UserAvatarUpdate + + """ + Activate or deactivate users. + + Requires one of the following permissions: MANAGE_USERS. + """ + userBulkSetActive( + """ + List of user IDs to (de)activate). + """ + ids: [ID!]! + + """ + Determine if users will be set active or not. + """ + isActive: Boolean! + ): UserBulkSetActive + + """ + Assign an media to a product variant. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + variantMediaAssign( + """ + ID of a product media to assign to a variant. + """ + mediaId: ID! + + """ + ID of a product variant. + """ + variantId: ID! + ): VariantMediaAssign + + """ + Unassign an media from a product variant. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + variantMediaUnassign( + """ + ID of a product media to unassign from a variant. + """ + mediaId: ID! + + """ + ID of a product variant. + """ + variantId: ID! + ): VariantMediaUnassign + + """ + Deletes vouchers. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + voucherBulkDelete( + """ + List of voucher IDs to delete. + """ + ids: [ID!]! + ): VoucherBulkDelete + + """ + Adds products, categories, collections to a voucher. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + voucherCataloguesAdd( + """ + ID of a voucher. + """ + id: ID! + + """ + Fields required to modify catalogue IDs of voucher. + """ + input: CatalogueInput! + ): VoucherAddCatalogues + + """ + Removes products, categories, collections from a voucher. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + voucherCataloguesRemove( + """ + ID of a voucher. + """ + id: ID! + + """ + Fields required to modify catalogue IDs of voucher. + """ + input: CatalogueInput! + ): VoucherRemoveCatalogues + + """ + Manage voucher's availability in channels. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + voucherChannelListingUpdate( + """ + ID of a voucher to update. + """ + id: ID! + + """ + Fields required to update voucher channel listings. + """ + input: VoucherChannelListingInput! + ): VoucherChannelListingUpdate + + """ + Creates a new voucher. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + voucherCreate( + """ + Fields required to create a voucher. + """ + input: VoucherInput! + ): VoucherCreate + + """ + Deletes a voucher. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + voucherDelete( + """ + ID of a voucher to delete. + """ + id: ID! + ): VoucherDelete + + """ + Creates/updates translations for a voucher. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + voucherTranslate( + """ + Voucher ID or VoucherTranslatableContent ID. + """ + id: ID! + input: NameTranslationInput! + + """ + Translation language code. + """ + languageCode: LanguageCodeEnum! + ): VoucherTranslate + + """ + Updates a voucher. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + voucherUpdate( + """ + ID of a voucher to update. + """ + id: ID! + + """ + Fields required to update a voucher. + """ + input: VoucherInput! + ): VoucherUpdate + + """ + Creates a new webhook subscription. + + Requires one of the following permissions: MANAGE_APPS, AUTHENTICATED_APP. + """ + webhookCreate( + """ + Fields required to create a webhook. + """ + input: WebhookCreateInput! + ): WebhookCreate + + """ + Deletes a webhook subscription. + + Requires one of the following permissions: MANAGE_APPS, AUTHENTICATED_APP. + """ + webhookDelete( + """ + ID of a webhook to delete. + """ + id: ID! + ): WebhookDelete + + """ + Updates a webhook subscription. + + Requires one of the following permissions: MANAGE_APPS. + """ + webhookUpdate( + """ + ID of a webhook to update. + """ + id: ID! + + """ + Fields required to update a webhook. + """ + input: WebhookUpdateInput! + ): WebhookUpdate +} + +input NameTranslationInput { + name: String +} + +enum NavigationType { + """ + Main storefront navigation. + """ + MAIN + + """ + Secondary storefront navigation. + """ + SECONDARY +} + +""" +An object with an ID +""" +interface Node { + """ + The ID of the object. + """ + id: ID! +} + +interface ObjectWithMetadata { + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata +} + +""" +Represents an order in the shop. +""" +type Order implements Node & ObjectWithMetadata { + """ + List of actions that can be performed in the current state of an order. + """ + actions: [OrderAction!]! + + """ + The authorize status of the order. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + authorizeStatus: OrderAuthorizeStatusEnum! + + """ + Collection points that can be used for this order. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + availableCollectionPoints: [Warehouse!]! + + """ + Shipping methods that can be used with this order. + """ + availableShippingMethods: [ShippingMethod!] + @deprecated(reason: "Use `shippingMethods`, this field will be removed in 4.0") + + """ + Billing address. The full data can be access for orders created in Saleor 3.2 and later, for other orders requires one of the following permissions: MANAGE_ORDERS, OWNER. + """ + billingAddress: Address + + """ + Informs whether a draft order can be finalized(turned into a regular order). + """ + canFinalize: Boolean! + channel: Channel! + + """ + The charge status of the order. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + chargeStatus: OrderChargeStatusEnum! + collectionPointName: String + created: DateTime! + customerNote: String! + + """ + The delivery method selected for this checkout. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + deliveryMethod: DeliveryMethod + + """ + Returns applied discount. + """ + discount: Money + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `discounts` field instead." + ) + + """ + Discount name. + """ + discountName: String + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `discounts` field instead." + ) + + """ + List of all discounts assigned to the order. + """ + discounts: [OrderDiscount!]! + displayGrossPrices: Boolean! + + """ + List of errors that occurred during order validation. + """ + errors: [OrderError!]! + + """ + List of events associated with the order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + events: [OrderEvent!]! + + """ + List of shipments for the order. + """ + fulfillments: [Fulfillment!]! + + """ + List of user gift cards. + """ + giftCards: [GiftCard!]! + id: ID! + + """ + List of order invoices. Can be fetched for orders created in Saleor 3.2 and later, for other orders requires one of the following permissions: MANAGE_ORDERS, OWNER. + """ + invoices: [Invoice!]! + + """ + Informs if an order is fully paid. + """ + isPaid: Boolean! + + """ + Returns True, if order requires shipping. + """ + isShippingRequired: Boolean! + languageCode: String! + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `languageCodeEnum` field to fetch the language code. " + ) + + """ + Order language code. + """ + languageCodeEnum: LanguageCodeEnum! + + """ + List of order lines. + """ + lines: [OrderLine!]! + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + + """ + User-friendly number of an order. + """ + number: String! + + """ + The order origin. + """ + origin: OrderOriginEnum! + + """ + The ID of the order that was the base for this order. + """ + original: ID + + """ + Internal payment status. + """ + paymentStatus: PaymentChargeStatusEnum! + + """ + User-friendly payment status. + """ + paymentStatusDisplay: String! + + """ + List of payments for the order. + """ + payments: [Payment!]! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + redirectUrl: String + + """ + Shipping address. The full data can be access for orders created in Saleor 3.2 and later, for other orders requires one of the following permissions: MANAGE_ORDERS, OWNER. + """ + shippingAddress: Address + + """ + Shipping method for this order. + """ + shippingMethod: ShippingMethod + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `deliveryMethod` instead.") + shippingMethodName: String + + """ + Shipping methods related to this order. + """ + shippingMethods: [ShippingMethod!]! + + """ + Total price of shipping. + """ + shippingPrice: TaxedMoney! + shippingTaxRate: Float! + status: OrderStatus! + + """ + User-friendly order status. + """ + statusDisplay: String! + + """ + The sum of line prices not including shipping. + """ + subtotal: TaxedMoney! + token: String! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `id` instead.") + + """ + Total amount of the order. + """ + total: TaxedMoney! + + """ + Amount authorized for the order. + """ + totalAuthorized: Money! + + """ + The difference between the paid and the order total amount. + """ + totalBalance: Money! + + """ + Amount captured by payment. + """ + totalCaptured: Money! + trackingClientId: String! + + """ + List of transactions for the order. Requires one of the following permissions: MANAGE_ORDERS, HANDLE_PAYMENTS. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + transactions: [TransactionItem!]! + + """ + Translated discount name. + """ + translatedDiscountName: String + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `discounts` field instead. " + ) + + """ + Undiscounted total amount of the order. + """ + undiscountedTotal: TaxedMoney! + updatedAt: DateTime! + + """ + User who placed the order. This field is set only for orders placed by authenticated users. Can be fetched for orders created in Saleor 3.2 and later, for other orders requires one of the following permissions: MANAGE_USERS, MANAGE_ORDERS, OWNER. + """ + user: User + + """ + Email address of the customer. The full data can be access for orders created in Saleor 3.2 and later, for other orders requires one of the following permissions: MANAGE_ORDERS, OWNER. + """ + userEmail: String + voucher: Voucher + weight: Weight! +} + +enum OrderAction { + """ + Represents the capture action. + """ + CAPTURE + + """ + Represents a mark-as-paid action. + """ + MARK_AS_PAID + + """ + Represents a refund action. + """ + REFUND + + """ + Represents a void action. + """ + VOID +} + +""" +Adds note to the order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderAddNote { + errors: [OrderError!]! + + """ + Order note created. + """ + event: OrderEvent + + """ + Order with the note added. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input OrderAddNoteInput { + """ + Note message. + """ + message: String! +} + +""" +Determine a current authorize status for order. + + We treat the order as fully authorized when the sum of authorized and charged funds + cover the order.total. + We treat the order as partially authorized when the sum of authorized and charged + funds covers only part of the order.total + We treat the order as not authorized when the sum of authorized and charged funds is + 0. + + NONE - the funds are not authorized + PARTIAL - the funds that are authorized or charged don't cover fully the order's + total + FULL - the funds that are authorized or charged fully cover the order's total +""" +enum OrderAuthorizeStatusEnum { + FULL + NONE + PARTIAL +} + +""" +Cancels orders. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderBulkCancel { + """ + Returns how many objects were affected. + """ + count: Int! + errors: [OrderError!]! + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Cancel an order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderCancel { + errors: [OrderError!]! + + """ + Canceled order. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type OrderCancelled implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The order the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + order: Order + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Capture an order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderCapture { + errors: [OrderError!]! + + """ + Captured order. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Determine the current charge status for the order. + + We treat the order as overcharged when the charged amount is bigger that order.total + We treat the order as fully charged when the charged amount is equal to order.total. + We treat the order as partially charged when the charged amount covers only part of + the order.total + + NONE - the funds are not charged. + PARTIAL - the funds that are charged don't cover the order's total + FULL - the funds that are charged fully cover the order's total + OVERCHARGED - the charged funds are bigger than order's total +""" +enum OrderChargeStatusEnum { + FULL + NONE + OVERCHARGED + PARTIAL +} + +""" +Confirms an unconfirmed order by changing status to unfulfilled. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderConfirm { + errors: [OrderError!]! + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type OrderConfirmed implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The order the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + order: Order + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +type OrderCountableConnection { + edges: [OrderCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type OrderCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Order! +} + +""" +Create new order from existing checkout. Requires the following permissions: AUTHENTICATED_APP and HANDLE_CHECKOUTS. + +Added in Saleor 3.2. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. +""" +type OrderCreateFromCheckout { + errors: [OrderCreateFromCheckoutError!]! + + """ + Placed order. + """ + order: Order +} + +type OrderCreateFromCheckoutError { + """ + The error code. + """ + code: OrderCreateFromCheckoutErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + List of line Ids which cause the error. + """ + lines: [ID!] + + """ + The error message. + """ + message: String + + """ + List of variant IDs which causes the error. + """ + variants: [ID!] +} + +""" +An enumeration. +""" +enum OrderCreateFromCheckoutErrorCode { + BILLING_ADDRESS_NOT_SET + CHANNEL_INACTIVE + CHECKOUT_NOT_FOUND + EMAIL_NOT_SET + GIFT_CARD_NOT_APPLICABLE + GRAPHQL_ERROR + INSUFFICIENT_STOCK + INVALID_SHIPPING_METHOD + NO_LINES + SHIPPING_ADDRESS_NOT_SET + SHIPPING_METHOD_NOT_SET + TAX_ERROR + UNAVAILABLE_VARIANT_IN_CHANNEL + VOUCHER_NOT_APPLICABLE +} + +type OrderCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The order the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + order: Order + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +enum OrderDirection { + """ + Specifies an ascending sort order. + """ + ASC + + """ + Specifies a descending sort order. + """ + DESC +} + +""" +Contains all details related to the applied discount to the order. +""" +type OrderDiscount implements Node { + """ + Returns amount of discount. + """ + amount: Money! + id: ID! + name: String + + """ + Explanation for the applied discount. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + reason: String + translatedName: String + type: OrderDiscountType! + + """ + Value of the discount. Can store fixed value or percent value + """ + value: PositiveDecimal! + + """ + Type of the discount: fixed or percent + """ + valueType: DiscountValueTypeEnum! +} + +""" +Adds discount to the order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderDiscountAdd { + errors: [OrderError!]! + + """ + Order which has been discounted. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input OrderDiscountCommonInput { + """ + Explanation for the applied discount. + """ + reason: String + + """ + Value of the discount. Can store fixed value or percent value + """ + value: PositiveDecimal! + + """ + Type of the discount: fixed or percent + """ + valueType: DiscountValueTypeEnum! +} + +""" +Remove discount from the order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderDiscountDelete { + errors: [OrderError!]! + + """ + Order which has removed discount. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +An enumeration. +""" +enum OrderDiscountType { + MANUAL + VOUCHER +} + +""" +Update discount for the order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderDiscountUpdate { + errors: [OrderError!]! + + """ + Order which has been discounted. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input OrderDraftFilterInput { + channels: [ID!] + created: DateRangeInput + customer: String + metadata: [MetadataFilter!] + search: String +} + +type OrderError { + """ + A type of address that causes the error. + """ + addressType: AddressTypeEnum + + """ + The error code. + """ + code: OrderErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + List of order line IDs that cause the error. + """ + orderLines: [ID!] + + """ + List of product variants that are associated with the error + """ + variants: [ID!] + + """ + Warehouse ID which causes the error. + """ + warehouse: ID +} + +""" +An enumeration. +""" +enum OrderErrorCode { + BILLING_ADDRESS_NOT_SET + CANNOT_CANCEL_FULFILLMENT + CANNOT_CANCEL_ORDER + CANNOT_DELETE + CANNOT_DISCOUNT + CANNOT_FULFILL_UNPAID_ORDER + CANNOT_REFUND + CAPTURE_INACTIVE_PAYMENT + CHANNEL_INACTIVE + DUPLICATED_INPUT_ITEM + FULFILL_ORDER_LINE + GIFT_CARD_LINE + GRAPHQL_ERROR + INSUFFICIENT_STOCK + INVALID + INVALID_QUANTITY + MISSING_TRANSACTION_ACTION_REQUEST_WEBHOOK + NOT_AVAILABLE_IN_CHANNEL + NOT_EDITABLE + NOT_FOUND + ORDER_NO_SHIPPING_ADDRESS + PAYMENT_ERROR + PAYMENT_MISSING + PRODUCT_NOT_PUBLISHED + PRODUCT_UNAVAILABLE_FOR_PURCHASE + REQUIRED + SHIPPING_METHOD_NOT_APPLICABLE + SHIPPING_METHOD_REQUIRED + TAX_ERROR + UNIQUE + VOID_INACTIVE_PAYMENT + ZERO_QUANTITY +} + +""" +History log of the order. +""" +type OrderEvent implements Node { + """ + Amount of money. + """ + amount: Float + + """ + App that performed the action. Requires of of the following permissions: MANAGE_APPS, MANAGE_ORDERS, OWNER. + """ + app: App + + """ + Composed ID of the Fulfillment. + """ + composedId: String + + """ + Date when event happened at in ISO 8601 format. + """ + date: DateTime + + """ + The discount applied to the order. + """ + discount: OrderEventDiscountObject + + """ + Email of the customer. + """ + email: String + + """ + Type of an email sent to the customer. + """ + emailType: OrderEventsEmailsEnum + + """ + The lines fulfilled. + """ + fulfilledItems: [FulfillmentLine!] + id: ID! + + """ + Number of an invoice related to the order. + """ + invoiceNumber: String + + """ + The concerned lines. + """ + lines: [OrderEventOrderLineObject!] + + """ + Content of the event. + """ + message: String + + """ + User-friendly number of an order. + """ + orderNumber: String + + """ + List of oversold lines names. + """ + oversoldItems: [String!] + + """ + The payment gateway of the payment. + """ + paymentGateway: String + + """ + The payment reference from the payment provider. + """ + paymentId: String + + """ + Number of items. + """ + quantity: Int + + """ + The reference of payment's transaction. + """ + reference: String + + """ + The order which is related to this order. + """ + relatedOrder: Order + + """ + Define if shipping costs were included to the refund. + """ + shippingCostsIncluded: Boolean + + """ + The status of payment's transaction. + """ + status: TransactionStatus + + """ + The transaction reference of captured payment. + """ + transactionReference: String + + """ + Order event type. + """ + type: OrderEventsEnum + + """ + User who performed the action. + """ + user: User + + """ + The warehouse were items were restocked. + """ + warehouse: Warehouse +} + +type OrderEventCountableConnection { + edges: [OrderEventCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type OrderEventCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: OrderEvent! +} + +type OrderEventDiscountObject { + """ + Returns amount of discount. + """ + amount: Money + + """ + Returns amount of discount. + """ + oldAmount: Money + + """ + Value of the discount. Can store fixed value or percent value. + """ + oldValue: PositiveDecimal + + """ + Type of the discount: fixed or percent. + """ + oldValueType: DiscountValueTypeEnum + + """ + Explanation for the applied discount. + """ + reason: String + + """ + Value of the discount. Can store fixed value or percent value. + """ + value: PositiveDecimal! + + """ + Type of the discount: fixed or percent. + """ + valueType: DiscountValueTypeEnum! +} + +type OrderEventOrderLineObject { + """ + The discount applied to the order line. + """ + discount: OrderEventDiscountObject + + """ + The variant name. + """ + itemName: String + + """ + The order line. + """ + orderLine: OrderLine + + """ + The variant quantity. + """ + quantity: Int +} + +""" +An enumeration. +""" +enum OrderEventsEmailsEnum { + CONFIRMED + DIGITAL_LINKS + FULFILLMENT_CONFIRMATION + ORDER_CANCEL + ORDER_CONFIRMATION + ORDER_REFUND + PAYMENT_CONFIRMATION + SHIPPING_CONFIRMATION + TRACKING_UPDATED +} + +""" +An enumeration. +""" +enum OrderEventsEnum { + ADDED_PRODUCTS + CANCELED + CONFIRMED + DRAFT_CREATED + DRAFT_CREATED_FROM_REPLACE + EMAIL_SENT + EXTERNAL_SERVICE_NOTIFICATION + FULFILLMENT_AWAITS_APPROVAL + FULFILLMENT_CANCELED + FULFILLMENT_FULFILLED_ITEMS + FULFILLMENT_REFUNDED + FULFILLMENT_REPLACED + FULFILLMENT_RESTOCKED_ITEMS + FULFILLMENT_RETURNED + INVOICE_GENERATED + INVOICE_REQUESTED + INVOICE_SENT + INVOICE_UPDATED + NOTE_ADDED + ORDER_DISCOUNT_ADDED + ORDER_DISCOUNT_AUTOMATICALLY_UPDATED + ORDER_DISCOUNT_DELETED + ORDER_DISCOUNT_UPDATED + ORDER_FULLY_PAID + ORDER_LINE_DISCOUNT_REMOVED + ORDER_LINE_DISCOUNT_UPDATED + ORDER_LINE_PRODUCT_DELETED + ORDER_LINE_VARIANT_DELETED + ORDER_MARKED_AS_PAID + ORDER_REPLACEMENT_CREATED + OTHER + OVERSOLD_ITEMS + PAYMENT_AUTHORIZED + PAYMENT_CAPTURED + PAYMENT_FAILED + PAYMENT_REFUNDED + PAYMENT_VOIDED + PLACED + PLACED_FROM_DRAFT + REMOVED_PRODUCTS + TRACKING_UPDATED + TRANSACTION_CAPTURE_REQUESTED + TRANSACTION_EVENT + TRANSACTION_REFUND_REQUESTED + TRANSACTION_VOID_REQUESTED + UPDATED_ADDRESS +} + +input OrderFilterInput { + authorizeStatus: [OrderAuthorizeStatusEnum!] + channels: [ID!] + chargeStatus: [OrderChargeStatusEnum!] + created: DateRangeInput + customer: String + giftCardBought: Boolean + giftCardUsed: Boolean + ids: [ID!] + isClickAndCollect: Boolean + isPreorder: Boolean + metadata: [MetadataFilter!] + numbers: [String!] + paymentStatus: [PaymentChargeStatusEnum!] + search: String + status: [OrderStatusFilter!] + updatedAt: DateTimeRangeInput +} + +""" +Creates new fulfillments for an order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderFulfill { + errors: [OrderError!]! + + """ + List of created fulfillments. + """ + fulfillments: [Fulfillment!] + + """ + Fulfilled order. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input OrderFulfillInput { + """ + If true, then allow proceed fulfillment when stock is exceeded. + """ + allowStockToBeExceeded: Boolean = false + + """ + List of items informing how to fulfill the order. + """ + lines: [OrderFulfillLineInput!]! + + """ + If true, send an email notification to the customer. + """ + notifyCustomer: Boolean +} + +input OrderFulfillLineInput { + """ + The ID of the order line. + """ + orderLineId: ID + + """ + List of stock items to create. + """ + stocks: [OrderFulfillStockInput!]! +} + +input OrderFulfillStockInput { + """ + The number of line items to be fulfilled from given warehouse. + """ + quantity: Int! + + """ + ID of the warehouse from which the item will be fulfilled. + """ + warehouse: ID! +} + +type OrderFulfilled implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The order the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + order: Order + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +type OrderFullyPaid implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The order the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + order: Order + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Represents order line of particular order. +""" +type OrderLine implements Node { + """ + List of allocations across warehouses. + + Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. + """ + allocations: [Allocation!] + digitalContentUrl: DigitalContentUrl + id: ID! + isShippingRequired: Boolean! + productName: String! + productSku: String + productVariantId: String + quantity: Int! + quantityFulfilled: Int! + + """ + A quantity of items remaining to be fulfilled. + + Added in Saleor 3.1. + """ + quantityToFulfill: Int! + taxRate: Float! + + """ + The main thumbnail for the ordered product. + """ + thumbnail( + """ + Size of thumbnail. + """ + size: Int + ): Image + + """ + Price of the order line. + """ + totalPrice: TaxedMoney! + + """ + Product name in the customer's language + """ + translatedProductName: String! + + """ + Variant name in the customer's language + """ + translatedVariantName: String! + + """ + Price of the single item in the order line without applied an order line discount. + """ + undiscountedUnitPrice: TaxedMoney! + + """ + The discount applied to the single order line. + """ + unitDiscount: Money! + unitDiscountReason: String + + """ + Type of the discount: fixed or percent + """ + unitDiscountType: DiscountValueTypeEnum + + """ + Value of the discount. Can store fixed value or percent value + """ + unitDiscountValue: PositiveDecimal! + + """ + Price of the single item in the order line. + """ + unitPrice: TaxedMoney! + + """ + A purchased product variant. Note: this field may be null if the variant has been removed from stock at all. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. + """ + variant: ProductVariant + variantName: String! +} + +input OrderLineCreateInput { + """ + Number of variant items ordered. + """ + quantity: Int! + + """ + Product variant ID. + """ + variantId: ID! +} + +""" +Deletes an order line from an order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderLineDelete { + errors: [OrderError!]! + + """ + A related order. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + An order line that was deleted. + """ + orderLine: OrderLine +} + +""" +Remove discount applied to the order line. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderLineDiscountRemove { + errors: [OrderError!]! + + """ + Order which is related to line which has removed discount. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + Order line which has removed discount. + """ + orderLine: OrderLine +} + +""" +Update discount for the order line. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderLineDiscountUpdate { + errors: [OrderError!]! + + """ + Order which is related to the discounted line. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + Order line which has been discounted. + """ + orderLine: OrderLine +} + +input OrderLineInput { + """ + Number of variant items ordered. + """ + quantity: Int! +} + +""" +Updates an order line of an order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderLineUpdate { + errors: [OrderError!]! + + """ + Related order. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + orderLine: OrderLine +} + +""" +Create order lines for an order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderLinesCreate { + errors: [OrderError!]! + + """ + Related order. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + List of added order lines. + """ + orderLines: [OrderLine!] +} + +""" +Mark order as manually paid. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderMarkAsPaid { + errors: [OrderError!]! + + """ + Order marked as paid. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +An enumeration. +""" +enum OrderOriginEnum { + CHECKOUT + DRAFT + REISSUE +} + +""" +Refund an order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderRefund { + errors: [OrderError!]! + + """ + A refunded order. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input OrderRefundFulfillmentLineInput { + """ + The ID of the fulfillment line to refund. + """ + fulfillmentLineId: ID! + + """ + The number of items to be refunded. + """ + quantity: Int! +} + +input OrderRefundLineInput { + """ + The ID of the order line to refund. + """ + orderLineId: ID! + + """ + The number of items to be refunded. + """ + quantity: Int! +} + +input OrderRefundProductsInput { + """ + The total amount of refund when the value is provided manually. + """ + amountToRefund: PositiveDecimal + + """ + List of fulfilled lines to refund. + """ + fulfillmentLines: [OrderRefundFulfillmentLineInput!] + + """ + If true, Saleor will refund shipping costs. If amountToRefund is providedincludeShippingCosts will be ignored. + """ + includeShippingCosts: Boolean = false + + """ + List of unfulfilled lines to refund. + """ + orderLines: [OrderRefundLineInput!] +} + +input OrderReturnFulfillmentLineInput { + """ + The ID of the fulfillment line to return. + """ + fulfillmentLineId: ID! + + """ + The number of items to be returned. + """ + quantity: Int! + + """ + Determines, if the line should be added to replace order. + """ + replace: Boolean = false +} + +input OrderReturnLineInput { + """ + The ID of the order line to return. + """ + orderLineId: ID! + + """ + The number of items to be returned. + """ + quantity: Int! + + """ + Determines, if the line should be added to replace order. + """ + replace: Boolean = false +} + +input OrderReturnProductsInput { + """ + The total amount of refund when the value is provided manually. + """ + amountToRefund: PositiveDecimal + + """ + List of fulfilled lines to return. + """ + fulfillmentLines: [OrderReturnFulfillmentLineInput!] + + """ + If true, Saleor will refund shipping costs. If amountToRefund is providedincludeShippingCosts will be ignored. + """ + includeShippingCosts: Boolean = false + + """ + List of unfulfilled lines to return. + """ + orderLines: [OrderReturnLineInput!] + + """ + If true, Saleor will call refund action for all lines. + """ + refund: Boolean = false +} + +""" +Order related settings from site settings. +""" +type OrderSettings { + automaticallyConfirmAllNewOrders: Boolean! + automaticallyFulfillNonShippableGiftCard: Boolean! +} + +type OrderSettingsError { + """ + The error code. + """ + code: OrderSettingsErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String +} + +""" +An enumeration. +""" +enum OrderSettingsErrorCode { + INVALID +} + +""" +Update shop order settings. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderSettingsUpdate { + errors: [OrderSettingsError!]! + + """ + Order settings. + """ + orderSettings: OrderSettings + orderSettingsErrors: [OrderSettingsError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input OrderSettingsUpdateInput { + """ + When disabled, all new orders from checkout will be marked as unconfirmed. When enabled orders from checkout will become unfulfilled immediately. + """ + automaticallyConfirmAllNewOrders: Boolean + + """ + When enabled, all non-shippable gift card orders will be fulfilled automatically. + """ + automaticallyFulfillNonShippableGiftCard: Boolean +} + +enum OrderSortField { + """ + Sort orders by creation date. + + DEPRECATED: this field will be removed in Saleor 4.0. + """ + CREATED_AT + + """ + Sort orders by creation date. + + DEPRECATED: this field will be removed in Saleor 4.0. + """ + CREATION_DATE + + """ + Sort orders by customer. + """ + CUSTOMER + + """ + Sort orders by fulfillment status. + """ + FULFILLMENT_STATUS + + """ + Sort orders by last modified at. + """ + LAST_MODIFIED_AT + + """ + Sort orders by number. + """ + NUMBER + + """ + Sort orders by payment. + """ + PAYMENT +} + +input OrderSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort orders by the selected field. + """ + field: OrderSortField! +} + +""" +An enumeration. +""" +enum OrderStatus { + CANCELED + DRAFT + FULFILLED + PARTIALLY_FULFILLED + PARTIALLY_RETURNED + RETURNED + UNCONFIRMED + UNFULFILLED +} + +enum OrderStatusFilter { + CANCELED + FULFILLED + PARTIALLY_FULFILLED + READY_TO_CAPTURE + READY_TO_FULFILL + UNCONFIRMED + UNFULFILLED +} + +""" +Updates an order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderUpdate { + errors: [OrderError!]! + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input OrderUpdateInput { + """ + Billing address of the customer. + """ + billingAddress: AddressInput + + """ + Shipping address of the customer. + """ + shippingAddress: AddressInput + + """ + Email address of the customer. + """ + userEmail: String +} + +""" +Updates a shipping method of the order. Requires shipping method ID to update, when null is passed then currently assigned shipping method is removed. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderUpdateShipping { + errors: [OrderError!]! + + """ + Order with updated shipping method. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input OrderUpdateShippingInput { + """ + ID of the selected shipping method, pass null to remove currently assigned shipping method. + """ + shippingMethod: ID +} + +type OrderUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The order the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + order: Order + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Void an order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderVoid { + errors: [OrderError!]! + + """ + A voided order. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +A static page that can be manually added by a shop operator through the dashboard. +""" +type Page implements Node & ObjectWithMetadata { + """ + List of attributes assigned to this product. + """ + attributes: [SelectedAttribute!]! + + """ + Content of the page. + + Rich text format. For reference see https://editorjs.io/ + """ + content: JSONString + + """ + Content of the page. + + Rich text format. For reference see https://editorjs.io/ + """ + contentJson: JSONString! + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `content` field instead." + ) + created: DateTime! + id: ID! + isPublished: Boolean! + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + pageType: PageType! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + publicationDate: Date + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `publishedAt` field to fetch the publication date." + ) + + """ + The page publication date. + + Added in Saleor 3.3. + """ + publishedAt: DateTime + seoDescription: String + seoTitle: String + slug: String! + title: String! + + """ + Returns translated page fields for the given language code. + """ + translation( + """ + A language code to return the translation for page. + """ + languageCode: LanguageCodeEnum! + ): PageTranslation +} + +""" +Assign attributes to a given page type. + +Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. +""" +type PageAttributeAssign { + errors: [PageError!]! + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + The updated page type. + """ + pageType: PageType +} + +""" +Unassign attributes from a given page type. + +Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. +""" +type PageAttributeUnassign { + errors: [PageError!]! + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + The updated page type. + """ + pageType: PageType +} + +""" +Deletes pages. + +Requires one of the following permissions: MANAGE_PAGES. +""" +type PageBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + errors: [PageError!]! + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Publish pages. + +Requires one of the following permissions: MANAGE_PAGES. +""" +type PageBulkPublish { + """ + Returns how many objects were affected. + """ + count: Int! + errors: [PageError!]! + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type PageCountableConnection { + edges: [PageCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type PageCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Page! +} + +""" +Creates a new page. + +Requires one of the following permissions: MANAGE_PAGES. +""" +type PageCreate { + errors: [PageError!]! + page: Page + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input PageCreateInput { + """ + List of attributes. + """ + attributes: [AttributeValueInput!] + + """ + Page content. + + Rich text format. For reference see https://editorjs.io/ + """ + content: JSONString + + """ + Determines if page is visible in the storefront. + """ + isPublished: Boolean + + """ + ID of the page type that page belongs to. + """ + pageType: ID! + + """ + Publication date. ISO 8601 standard. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `publishedAt` field instead. + """ + publicationDate: String + + """ + Publication date time. ISO 8601 standard. + + Added in Saleor 3.3. + """ + publishedAt: DateTime + + """ + Search engine optimization fields. + """ + seo: SeoInput + + """ + Page internal name. + """ + slug: String + + """ + Page title. + """ + title: String +} + +type PageCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The page the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + page: Page + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Deletes a page. + +Requires one of the following permissions: MANAGE_PAGES. +""" +type PageDelete { + errors: [PageError!]! + page: Page + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type PageDeleted implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The page the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + page: Page + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +type PageError { + """ + List of attributes IDs which causes the error. + """ + attributes: [ID!] + + """ + The error code. + """ + code: PageErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + List of attribute values IDs which causes the error. + """ + values: [ID!] +} + +""" +An enumeration. +""" +enum PageErrorCode { + ATTRIBUTE_ALREADY_ASSIGNED + DUPLICATED_INPUT_ITEM + GRAPHQL_ERROR + INVALID + NOT_FOUND + REQUIRED + UNIQUE +} + +input PageFilterInput { + ids: [ID!] + metadata: [MetadataFilter!] + pageTypes: [ID!] + search: String +} + +""" +The Relay compliant `PageInfo` type, containing data necessary to paginate this connection. +""" +type PageInfo { + """ + When paginating forwards, the cursor to continue. + """ + endCursor: String + + """ + When paginating forwards, are there more items? + """ + hasNextPage: Boolean! + + """ + When paginating backwards, are there more items? + """ + hasPreviousPage: Boolean! + + """ + When paginating backwards, the cursor to continue. + """ + startCursor: String +} + +input PageInput { + """ + List of attributes. + """ + attributes: [AttributeValueInput!] + + """ + Page content. + + Rich text format. For reference see https://editorjs.io/ + """ + content: JSONString + + """ + Determines if page is visible in the storefront. + """ + isPublished: Boolean + + """ + Publication date. ISO 8601 standard. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `publishedAt` field instead. + """ + publicationDate: String + + """ + Publication date time. ISO 8601 standard. + + Added in Saleor 3.3. + """ + publishedAt: DateTime + + """ + Search engine optimization fields. + """ + seo: SeoInput + + """ + Page internal name. + """ + slug: String + + """ + Page title. + """ + title: String +} + +""" +Reorder page attribute values. + +Requires one of the following permissions: MANAGE_PAGES. +""" +type PageReorderAttributeValues { + errors: [PageError!]! + + """ + Page from which attribute values are reordered. + """ + page: Page + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +enum PageSortField { + """ + Sort pages by creation date. + """ + CREATION_DATE + + """ + Sort pages by publication date. + + DEPRECATED: this field will be removed in Saleor 4.0. + """ + PUBLICATION_DATE + + """ + Sort pages by publication date. + + DEPRECATED: this field will be removed in Saleor 4.0. + """ + PUBLISHED_AT + + """ + Sort pages by slug. + """ + SLUG + + """ + Sort pages by title. + """ + TITLE + + """ + Sort pages by visibility. + """ + VISIBILITY +} + +input PageSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort pages by the selected field. + """ + field: PageSortField! +} + +type PageTranslatableContent implements Node { + """ + List of page content attribute values that can be translated. + """ + attributeValues: [AttributeValueTranslatableContent!]! + + """ + Content of the page. + + Rich text format. For reference see https://editorjs.io/ + """ + content: JSONString + + """ + Content of the page. + + Rich text format. For reference see https://editorjs.io/ + """ + contentJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `content` field instead." + ) + id: ID! + + """ + A static page that can be manually added by a shop operator through the dashboard. + """ + page: Page + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) + seoDescription: String + seoTitle: String + title: String! + + """ + Returns translated page fields for the given language code. + """ + translation( + """ + A language code to return the translation for page. + """ + languageCode: LanguageCodeEnum! + ): PageTranslation +} + +""" +Creates/updates translations for a page. + +Requires one of the following permissions: MANAGE_TRANSLATIONS. +""" +type PageTranslate { + errors: [TranslationError!]! + page: PageTranslatableContent + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type PageTranslation implements Node { + """ + Translated content of the page. + + Rich text format. For reference see https://editorjs.io/ + """ + content: JSONString + + """ + Translated description of the page. + + Rich text format. For reference see https://editorjs.io/ + """ + contentJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `content` field instead." + ) + id: ID! + + """ + Translation language. + """ + language: LanguageDisplay! + seoDescription: String + seoTitle: String + title: String +} + +input PageTranslationInput { + """ + Translated page content. + + Rich text format. For reference see https://editorjs.io/ + """ + content: JSONString + seoDescription: String + seoTitle: String + title: String +} + +""" +Represents a type of page. It defines what attributes are available to pages of this type. +""" +type PageType implements Node & ObjectWithMetadata { + """ + Page attributes of that page type. + """ + attributes: [Attribute!] + + """ + Attributes that can be assigned to the page type. + + Requires one of the following permissions: MANAGE_PAGES. + """ + availableAttributes( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + filter: AttributeFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): AttributeCountableConnection + + """ + Whether page type has pages assigned. + + Requires one of the following permissions: MANAGE_PAGES. + """ + hasPages: Boolean + id: ID! + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + name: String! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + slug: String! +} + +""" +Delete page types. + +Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. +""" +type PageTypeBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + errors: [PageError!]! + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type PageTypeCountableConnection { + edges: [PageTypeCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type PageTypeCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: PageType! +} + +""" +Create a new page type. + +Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. +""" +type PageTypeCreate { + errors: [PageError!]! + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + pageType: PageType +} + +input PageTypeCreateInput { + """ + List of attribute IDs to be assigned to the page type. + """ + addAttributes: [ID!] + + """ + Name of the page type. + """ + name: String + + """ + Page type slug. + """ + slug: String +} + +""" +Delete a page type. + +Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. +""" +type PageTypeDelete { + errors: [PageError!]! + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + pageType: PageType +} + +input PageTypeFilterInput { + search: String +} + +""" +Reorder the attributes of a page type. + +Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. +""" +type PageTypeReorderAttributes { + errors: [PageError!]! + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + Page type from which attributes are reordered. + """ + pageType: PageType +} + +enum PageTypeSortField { + """ + Sort page types by name. + """ + NAME + + """ + Sort page types by slug. + """ + SLUG +} + +input PageTypeSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort page types by the selected field. + """ + field: PageTypeSortField! +} + +""" +Update page type. + +Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. +""" +type PageTypeUpdate { + errors: [PageError!]! + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + pageType: PageType +} + +input PageTypeUpdateInput { + """ + List of attribute IDs to be assigned to the page type. + """ + addAttributes: [ID!] + + """ + Name of the page type. + """ + name: String + + """ + List of attribute IDs to be assigned to the page type. + """ + removeAttributes: [ID!] + + """ + Page type slug. + """ + slug: String +} + +""" +Updates an existing page. + +Requires one of the following permissions: MANAGE_PAGES. +""" +type PageUpdate { + errors: [PageError!]! + page: Page + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type PageUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The page the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + page: Page + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Change the password of the logged in user. + +Requires one of the following permissions: AUTHENTICATED_USER. +""" +type PasswordChange { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + + """ + A user instance with a new password. + """ + user: User +} + +""" +Represents a payment of a given type. +""" +type Payment implements Node & ObjectWithMetadata { + """ + List of actions that can be performed in the current state of a payment. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + actions: [OrderAction!]! + + """ + Maximum amount of money that can be captured. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + availableCaptureAmount: Money + + """ + Maximum amount of money that can be refunded. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + availableRefundAmount: Money + + """ + Total amount captured for this payment. + """ + capturedAmount: Money + + """ + Internal payment status. + """ + chargeStatus: PaymentChargeStatusEnum! + checkout: Checkout + created: DateTime! + + """ + The details of the card used for this payment. + """ + creditCard: CreditCard + + """ + IP address of the user who created the payment. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + customerIpAddress: String + gateway: String! + id: ID! + isActive: Boolean! + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + modified: DateTime! + order: Order + paymentMethodType: String! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + token: String! + + """ + Total amount of the payment. + """ + total: Money + + """ + List of all transactions within this payment. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + transactions: [Transaction!] +} + +""" +Captures the authorized payment amount. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type PaymentCapture { + errors: [PaymentError!]! + + """ + Updated payment. + """ + payment: Payment + paymentErrors: [PaymentError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +An enumeration. +""" +enum PaymentChargeStatusEnum { + CANCELLED + FULLY_CHARGED + FULLY_REFUNDED + NOT_CHARGED + PARTIALLY_CHARGED + PARTIALLY_REFUNDED + PENDING + REFUSED +} + +""" +Check payment balance. +""" +type PaymentCheckBalance { + """ + Response from the gateway. + """ + data: JSONString + errors: [PaymentError!]! + paymentErrors: [PaymentError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input PaymentCheckBalanceInput { + """ + Information about card. + """ + card: CardInput! + + """ + Slug of a channel for which the data should be returned. + """ + channel: String! + + """ + An ID of a payment gateway to check. + """ + gatewayId: String! + + """ + Payment method name. + """ + method: String! +} + +type PaymentCountableConnection { + edges: [PaymentCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type PaymentCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Payment! +} + +type PaymentError { + """ + The error code. + """ + code: PaymentErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + List of varint IDs which causes the error. + """ + variants: [ID!] +} + +""" +An enumeration. +""" +enum PaymentErrorCode { + BALANCE_CHECK_ERROR + BILLING_ADDRESS_NOT_SET + CHANNEL_INACTIVE + CHECKOUT_EMAIL_NOT_SET + GRAPHQL_ERROR + INVALID + INVALID_SHIPPING_METHOD + NOT_FOUND + NOT_SUPPORTED_GATEWAY + NO_CHECKOUT_LINES + PARTIAL_PAYMENT_NOT_ALLOWED + PAYMENT_ERROR + REQUIRED + SHIPPING_ADDRESS_NOT_SET + SHIPPING_METHOD_NOT_SET + UNAVAILABLE_VARIANT_IN_CHANNEL + UNIQUE +} + +input PaymentFilterInput { + checkouts: [ID!] +} + +""" +Available payment gateway backend with configuration necessary to setup client. +""" +type PaymentGateway { + """ + Payment gateway client configuration. + """ + config: [GatewayConfigLine!]! + + """ + Payment gateway supported currencies. + """ + currencies: [String!]! + + """ + Payment gateway ID. + """ + id: ID! + + """ + Payment gateway name. + """ + name: String! +} + +""" +Initializes payment process when it is required by gateway. +""" +type PaymentInitialize { + errors: [PaymentError!]! + initializedPayment: PaymentInitialized + paymentErrors: [PaymentError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Server-side data generated by a payment gateway. Optional step when the payment provider requires an additional action to initialize payment session. +""" +type PaymentInitialized { + """ + Initialized data by gateway. + """ + data: JSONString + + """ + ID of a payment gateway. + """ + gateway: String! + + """ + Payment gateway name. + """ + name: String! +} + +input PaymentInput { + """ + Total amount of the transaction, including all taxes and discounts. If no amount is provided, the checkout total will be used. + """ + amount: PositiveDecimal + + """ + A gateway to use with that payment. + """ + gateway: String! + + """ + User public metadata. + + Added in Saleor 3.1. + """ + metadata: [MetadataInput!] + + """ + URL of a storefront view where user should be redirected after requiring additional actions. Payment with additional actions will not be finished if this field is not provided. + """ + returnUrl: String + + """ + Payment store type. + + Added in Saleor 3.1. + """ + storePaymentMethod: StorePaymentMethodEnum = NONE + + """ + Client-side generated payment token, representing customer's billing data in a secure manner. + """ + token: String +} + +""" +Refunds the captured payment amount. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type PaymentRefund { + errors: [PaymentError!]! + + """ + Updated payment. + """ + payment: Payment + paymentErrors: [PaymentError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Represents a payment source stored for user in payment gateway, such as credit card. +""" +type PaymentSource { + """ + Stored credit card details if available. + """ + creditCardInfo: CreditCard + + """ + Payment gateway name. + """ + gateway: String! + + """ + List of public metadata items. + + Added in Saleor 3.1. + + Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + ID of stored payment method. + """ + paymentMethodId: String +} + +""" +Voids the authorized payment. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type PaymentVoid { + errors: [PaymentError!]! + + """ + Updated payment. + """ + payment: Payment + paymentErrors: [PaymentError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Represents a permission object in a friendly form. +""" +type Permission { + """ + Internal code for permission. + """ + code: PermissionEnum! + + """ + Describe action(s) allowed to do by permission. + """ + name: String! +} + +""" +An enumeration. +""" +enum PermissionEnum { + HANDLE_CHECKOUTS + HANDLE_PAYMENTS + IMPERSONATE_USER + MANAGE_APPS + MANAGE_CHANNELS + MANAGE_CHECKOUTS + MANAGE_DISCOUNTS + MANAGE_GIFT_CARD + MANAGE_MENUS + MANAGE_OBSERVABILITY + MANAGE_ORDERS + MANAGE_PAGES + MANAGE_PAGE_TYPES_AND_ATTRIBUTES + MANAGE_PLUGINS + MANAGE_PRODUCTS + MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES + MANAGE_SETTINGS + MANAGE_SHIPPING + MANAGE_STAFF + MANAGE_TRANSLATIONS + MANAGE_USERS +} + +""" +Create new permission group. + +Requires one of the following permissions: MANAGE_STAFF. +""" +type PermissionGroupCreate { + errors: [PermissionGroupError!]! + group: Group + permissionGroupErrors: [PermissionGroupError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input PermissionGroupCreateInput { + """ + List of permission code names to assign to this group. + """ + addPermissions: [PermissionEnum!] + + """ + List of users to assign to this group. + """ + addUsers: [ID!] + + """ + Group name. + """ + name: String! +} + +""" +Delete permission group. + +Requires one of the following permissions: MANAGE_STAFF. +""" +type PermissionGroupDelete { + errors: [PermissionGroupError!]! + group: Group + permissionGroupErrors: [PermissionGroupError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type PermissionGroupError { + """ + The error code. + """ + code: PermissionGroupErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + List of permissions which causes the error. + """ + permissions: [PermissionEnum!] + + """ + List of user IDs which causes the error. + """ + users: [ID!] +} + +""" +An enumeration. +""" +enum PermissionGroupErrorCode { + ASSIGN_NON_STAFF_MEMBER + CANNOT_REMOVE_FROM_LAST_GROUP + DUPLICATED_INPUT_ITEM + LEFT_NOT_MANAGEABLE_PERMISSION + OUT_OF_SCOPE_PERMISSION + OUT_OF_SCOPE_USER + REQUIRED + UNIQUE +} + +input PermissionGroupFilterInput { + ids: [ID!] + search: String +} + +enum PermissionGroupSortField { + """ + Sort permission group accounts by name. + """ + NAME +} + +input PermissionGroupSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort permission group by the selected field. + """ + field: PermissionGroupSortField! +} + +""" +Update permission group. + +Requires one of the following permissions: MANAGE_STAFF. +""" +type PermissionGroupUpdate { + errors: [PermissionGroupError!]! + group: Group + permissionGroupErrors: [PermissionGroupError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input PermissionGroupUpdateInput { + """ + List of permission code names to assign to this group. + """ + addPermissions: [PermissionEnum!] + + """ + List of users to assign to this group. + """ + addUsers: [ID!] + + """ + Group name. + """ + name: String + + """ + List of permission code names to unassign from this group. + """ + removePermissions: [PermissionEnum!] + + """ + List of users to unassign from this group. + """ + removeUsers: [ID!] +} + +""" +Plugin. +""" +type Plugin { + """ + Channel-specific plugin configuration. + """ + channelConfigurations: [PluginConfiguration!]! + + """ + Description of the plugin. + """ + description: String! + + """ + Global configuration of the plugin (not channel-specific). + """ + globalConfiguration: PluginConfiguration + + """ + Identifier of the plugin. + """ + id: ID! + + """ + Name of the plugin. + """ + name: String! +} + +""" +Stores information about a configuration of plugin. +""" +type PluginConfiguration { + """ + Determines if plugin is active or not. + """ + active: Boolean! + + """ + The channel to which the plugin configuration is assigned to. + """ + channel: Channel + + """ + Configuration of the plugin. + """ + configuration: [ConfigurationItem!] +} + +enum PluginConfigurationType { + GLOBAL + PER_CHANNEL +} + +type PluginCountableConnection { + edges: [PluginCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type PluginCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Plugin! +} + +type PluginError { + """ + The error code. + """ + code: PluginErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String +} + +""" +An enumeration. +""" +enum PluginErrorCode { + GRAPHQL_ERROR + INVALID + NOT_FOUND + PLUGIN_MISCONFIGURED + REQUIRED + UNIQUE +} + +input PluginFilterInput { + search: String + statusInChannels: PluginStatusInChannelsInput + type: PluginConfigurationType +} + +enum PluginSortField { + IS_ACTIVE + NAME +} + +input PluginSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort plugins by the selected field. + """ + field: PluginSortField! +} + +input PluginStatusInChannelsInput { + active: Boolean! + channels: [ID!]! +} + +""" +Update plugin configuration. + +Requires one of the following permissions: MANAGE_PLUGINS. +""" +type PluginUpdate { + errors: [PluginError!]! + plugin: Plugin + pluginsErrors: [PluginError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input PluginUpdateInput { + """ + Indicates whether the plugin should be enabled. + """ + active: Boolean + + """ + Configuration of the plugin. + """ + configuration: [ConfigurationItemInput!] +} + +""" +Positive Decimal scalar implementation. + +Should be used in places where value must be positive. +""" +scalar PositiveDecimal + +""" +An enumeration. +""" +enum PostalCodeRuleInclusionTypeEnum { + EXCLUDE + INCLUDE +} + +""" +Represents preorder settings for product variant. +""" +type PreorderData { + """ + Preorder end date. + """ + endDate: DateTime + + """ + Total number of sold product variant during preorder. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + globalSoldUnits: Int! + + """ + The global preorder threshold for product variant. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + globalThreshold: Int +} + +input PreorderSettingsInput { + """ + The end date for preorder. + """ + endDate: DateTime + + """ + The global threshold for preorder variant. + """ + globalThreshold: Int +} + +""" +Represents preorder variant data for channel. +""" +type PreorderThreshold { + """ + Preorder threshold for product variant in this channel. + """ + quantity: Int + + """ + Number of sold product variant in this channel. + """ + soldUnits: Int! +} + +input PriceInput { + """ + Amount of money. + """ + amount: PositiveDecimal! + + """ + Currency code. + """ + currency: String! +} + +input PriceRangeInput { + """ + Price greater than or equal to. + """ + gte: Float + + """ + Price less than or equal to. + """ + lte: Float +} + +""" +Represents an individual item for sale in the storefront. +""" +type Product implements Node & ObjectWithMetadata { + """ + List of attributes assigned to this product. + """ + attributes: [SelectedAttribute!]! + + """ + Date when product is available for purchase. + """ + availableForPurchase: Date + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `availableForPurchaseAt` field to fetch the available for purchase date." + ) + + """ + Date when product is available for purchase. + """ + availableForPurchaseAt: DateTime + category: Category + + """ + Channel given to retrieve this product. Also used by federation gateway to resolve this object in a federated query. + """ + channel: String + + """ + List of availability in channels for the product. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + channelListings: [ProductChannelListing!] + chargeTaxes: Boolean! + + """ + List of collections for the product. Requires the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. + """ + collections: [Collection!] + created: DateTime! + defaultVariant: ProductVariant + + """ + Description of the product. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Description of the product. + + Rich text format. For reference see https://editorjs.io/ + """ + descriptionJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `description` field instead." + ) + id: ID! + + """ + Get a single product image by ID. + """ + imageById( + """ + ID of a product image. + """ + id: ID + ): ProductImage + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `mediaById` field instead." + ) + + """ + List of images for the product. + """ + images: [ProductImage!] + @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `media` field instead.") + + """ + Whether the product is in stock and visible or not. + """ + isAvailable( + """ + Destination address used to find warehouses where stock availability for this product is checked. If address is empty, uses `Shop.companyAddress` or fallbacks to server's `settings.DEFAULT_COUNTRY` configuration. + """ + address: AddressInput + ): Boolean + + """ + Whether the product is available for purchase. + """ + isAvailableForPurchase: Boolean + + """ + List of media for the product. + """ + media: [ProductMedia!] + + """ + Get a single product media by ID. + """ + mediaById( + """ + ID of a product media. + """ + id: ID + ): ProductMedia + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + name: String! + + """ + Lists the storefront product's pricing, the current price and discounts, only meant for displaying. + """ + pricing( + """ + Destination address used to find warehouses where stock availability for this product is checked. If address is empty, uses `Shop.companyAddress` or fallbacks to server's `settings.DEFAULT_COUNTRY` configuration. + """ + address: AddressInput + ): ProductPricingInfo + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + productType: ProductType! + rating: Float + seoDescription: String + seoTitle: String + slug: String! + + """ + A type of tax. Assigned by enabled tax gateway + """ + taxType: TaxType + + """ + The main thumbnail for a product. + """ + thumbnail( + """ + Size of thumbnail. + """ + size: Int + ): Image + + """ + Returns translated product fields for the given language code. + """ + translation( + """ + A language code to return the translation for product. + """ + languageCode: LanguageCodeEnum! + ): ProductTranslation + updatedAt: DateTime! + + """ + List of variants for the product. Requires the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. + """ + variants: [ProductVariant!] + weight: Weight +} + +""" +Assign attributes to a given product type. + +Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. +""" +type ProductAttributeAssign { + errors: [ProductError!]! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + The updated product type. + """ + productType: ProductType +} + +input ProductAttributeAssignInput { + """ + The ID of the attribute to assign. + """ + id: ID! + + """ + The attribute type to be assigned as. + """ + type: ProductAttributeType! + + """ + Whether attribute is allowed in variant selection. Allowed types are: ['dropdown', 'boolean', 'swatch', 'numeric']. + + Added in Saleor 3.1. + """ + variantSelection: Boolean +} + +""" +Update attributes assigned to product variant for given product type. + +Added in Saleor 3.1. + +Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. +""" +type ProductAttributeAssignmentUpdate { + errors: [ProductError!]! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + The updated product type. + """ + productType: ProductType +} + +input ProductAttributeAssignmentUpdateInput { + """ + The ID of the attribute to assign. + """ + id: ID! + + """ + Whether attribute is allowed in variant selection. Allowed types are: ['dropdown', 'boolean', 'swatch', 'numeric']. + + Added in Saleor 3.1. + """ + variantSelection: Boolean! +} + +enum ProductAttributeType { + PRODUCT + VARIANT +} + +""" +Un-assign attributes from a given product type. + +Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. +""" +type ProductAttributeUnassign { + errors: [ProductError!]! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + The updated product type. + """ + productType: ProductType +} + +""" +Deletes products. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + errors: [ProductError!]! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Represents product channel listing. +""" +type ProductChannelListing implements Node { + availableForPurchase: Date + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `availableForPurchaseAt` field to fetch the available for purchase date." + ) + + """ + The product available for purchase date time. + + Added in Saleor 3.3. + """ + availableForPurchaseAt: DateTime + channel: Channel! + + """ + The price of the cheapest variant (including discounts). + """ + discountedPrice: Money + id: ID! + + """ + Whether the product is available for purchase. + """ + isAvailableForPurchase: Boolean + isPublished: Boolean! + + """ + Range of margin percentage value. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + margin: Margin + + """ + Lists the storefront product's pricing, the current price and discounts, only meant for displaying. + """ + pricing( + """ + Destination address used to find warehouses where stock availability for this product is checked. If address is empty, uses `Shop.companyAddress` or fallbacks to server's `settings.DEFAULT_COUNTRY` configuration. + """ + address: AddressInput + ): ProductPricingInfo + publicationDate: Date + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `publishedAt` field to fetch the publication date." + ) + + """ + The product publication date time. + + Added in Saleor 3.3. + """ + publishedAt: DateTime + + """ + Purchase cost of product. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + purchaseCost: MoneyRange + visibleInListings: Boolean! +} + +input ProductChannelListingAddInput { + """ + List of variants to which the channel should be assigned. + """ + addVariants: [ID!] + + """ + A start date time from which a product will be available for purchase. When not set and `isAvailable` is set to True, the current day is assumed. + + Added in Saleor 3.3. + """ + availableForPurchaseAt: DateTime + + """ + A start date from which a product will be available for purchase. When not set and isAvailable is set to True, the current day is assumed. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `availableForPurchaseAt` field instead. + """ + availableForPurchaseDate: Date + + """ + ID of a channel. + """ + channelId: ID! + + """ + Determine if product should be available for purchase. + """ + isAvailableForPurchase: Boolean + + """ + Determines if object is visible to customers. + """ + isPublished: Boolean + + """ + Publication date. ISO 8601 standard. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `publishedAt` field instead. + """ + publicationDate: Date + + """ + Publication date time. ISO 8601 standard. + + Added in Saleor 3.3. + """ + publishedAt: DateTime + + """ + List of variants from which the channel should be unassigned. + """ + removeVariants: [ID!] + + """ + Determines if product is visible in product listings (doesn't apply to product collections). + """ + visibleInListings: Boolean +} + +type ProductChannelListingError { + """ + List of attributes IDs which causes the error. + """ + attributes: [ID!] + + """ + List of channels IDs which causes the error. + """ + channels: [ID!] + + """ + The error code. + """ + code: ProductErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + List of attribute values IDs which causes the error. + """ + values: [ID!] + + """ + List of variants IDs which causes the error. + """ + variants: [ID!] +} + +""" +Manage product's availability in channels. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductChannelListingUpdate { + errors: [ProductChannelListingError!]! + + """ + An updated product instance. + """ + product: Product + productChannelListingErrors: [ProductChannelListingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input ProductChannelListingUpdateInput { + """ + List of channels from which the product should be unassigned. + """ + removeChannels: [ID!] + + """ + List of channels to which the product should be assigned or updated. + """ + updateChannels: [ProductChannelListingAddInput!] +} + +type ProductCountableConnection { + edges: [ProductCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type ProductCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Product! +} + +""" +Creates a new product. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductCreate { + errors: [ProductError!]! + product: Product + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input ProductCreateInput { + """ + List of attributes. + """ + attributes: [AttributeValueInput!] + + """ + ID of the product's category. + """ + category: ID + + """ + Determine if taxes are being charged for the product. + """ + chargeTaxes: Boolean + + """ + List of IDs of collections that the product belongs to. + """ + collections: [ID!] + + """ + Product description. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Product name. + """ + name: String + + """ + ID of the type that product belongs to. + """ + productType: ID! + + """ + Defines the product rating value. + """ + rating: Float + + """ + Search engine optimization fields. + """ + seo: SeoInput + + """ + Product slug. + """ + slug: String + + """ + Tax rate for enabled tax gateway. + """ + taxCode: String + + """ + Weight of the Product. + """ + weight: WeightScalar +} + +type ProductCreated implements Event { + """ + The category of the product. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + category: Category + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The product the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + product( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Product + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Deletes a product. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductDelete { + errors: [ProductError!]! + product: Product + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type ProductDeleted implements Event { + """ + The category of the product. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + category: Category + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The product the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + product( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Product + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +type ProductError { + """ + List of attributes IDs which causes the error. + """ + attributes: [ID!] + + """ + The error code. + """ + code: ProductErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + List of attribute values IDs which causes the error. + """ + values: [ID!] +} + +""" +An enumeration. +""" +enum ProductErrorCode { + ALREADY_EXISTS + ATTRIBUTE_ALREADY_ASSIGNED + ATTRIBUTE_CANNOT_BE_ASSIGNED + ATTRIBUTE_VARIANTS_DISABLED + CANNOT_MANAGE_PRODUCT_WITHOUT_VARIANT + DUPLICATED_INPUT_ITEM + GRAPHQL_ERROR + INVALID + MEDIA_ALREADY_ASSIGNED + NOT_FOUND + NOT_PRODUCTS_IMAGE + NOT_PRODUCTS_VARIANT + PREORDER_VARIANT_CANNOT_BE_DEACTIVATED + PRODUCT_NOT_ASSIGNED_TO_CHANNEL + PRODUCT_WITHOUT_CATEGORY + REQUIRED + UNIQUE + UNSUPPORTED_MEDIA_PROVIDER + VARIANT_NO_DIGITAL_CONTENT +} + +enum ProductFieldEnum { + CATEGORY + CHARGE_TAXES + COLLECTIONS + DESCRIPTION + NAME + PRODUCT_MEDIA + PRODUCT_TYPE + PRODUCT_WEIGHT + VARIANT_ID + VARIANT_MEDIA + VARIANT_SKU + VARIANT_WEIGHT +} + +input ProductFilterInput { + attributes: [AttributeInput!] + categories: [ID!] + + """ + Specifies the channel by which the data should be filtered. + + DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. + """ + channel: String + collections: [ID!] + giftCard: Boolean + hasCategory: Boolean + hasPreorderedVariants: Boolean + ids: [ID!] + isPublished: Boolean + metadata: [MetadataFilter!] + minimalPrice: PriceRangeInput + price: PriceRangeInput + productTypes: [ID!] + search: String + stockAvailability: StockAvailability + stocks: ProductStockFilterInput + updatedAt: DateTimeRangeInput +} + +""" +Represents a product image. +""" +type ProductImage { + """ + The alt text of the image. + """ + alt: String + + """ + The ID of the image. + """ + id: ID! + + """ + The new relative sorting position of the item (from -inf to +inf). 1 moves the item one position forward, -1 moves the item one position backward, 0 leaves the item unchanged. + """ + sortOrder: Int + + """ + The URL of the image. + """ + url( + """ + Size of the image. + """ + size: Int + ): String! +} + +input ProductInput { + """ + List of attributes. + """ + attributes: [AttributeValueInput!] + + """ + ID of the product's category. + """ + category: ID + + """ + Determine if taxes are being charged for the product. + """ + chargeTaxes: Boolean + + """ + List of IDs of collections that the product belongs to. + """ + collections: [ID!] + + """ + Product description. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Product name. + """ + name: String + + """ + Defines the product rating value. + """ + rating: Float + + """ + Search engine optimization fields. + """ + seo: SeoInput + + """ + Product slug. + """ + slug: String + + """ + Tax rate for enabled tax gateway. + """ + taxCode: String + + """ + Weight of the Product. + """ + weight: WeightScalar +} + +""" +Represents a product media. +""" +type ProductMedia implements Node { + alt: String! + id: ID! + oembedData: JSONString! + sortOrder: Int + type: ProductMediaType! + + """ + The URL of the media. + """ + url( + """ + Size of the image. + """ + size: Int + ): String! +} + +""" +Deletes product media. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductMediaBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + errors: [ProductError!]! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Create a media object (image or video URL) associated with product. For image, this mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductMediaCreate { + errors: [ProductError!]! + media: ProductMedia + product: Product + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input ProductMediaCreateInput { + """ + Alt text for a product media. + """ + alt: String + + """ + Represents an image file in a multipart request. + """ + image: Upload + + """ + Represents an URL to an external media. + """ + mediaUrl: String + + """ + ID of an product. + """ + product: ID! +} + +""" +Deletes a product media. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductMediaDelete { + errors: [ProductError!]! + media: ProductMedia + product: Product + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Changes ordering of the product media. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductMediaReorder { + errors: [ProductError!]! + media: [ProductMedia!] + product: Product + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +An enumeration. +""" +enum ProductMediaType { + IMAGE + VIDEO +} + +""" +Updates a product media. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductMediaUpdate { + errors: [ProductError!]! + media: ProductMedia + product: Product + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input ProductMediaUpdateInput { + """ + Alt text for a product media. + """ + alt: String +} + +input ProductOrder { + """ + Sort product by the selected attribute's values. + Note: this doesn't take translations into account yet. + """ + attributeId: ID + + """ + Specifies the channel in which to sort the data. + + DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. + """ + channel: String + + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort products by the selected field. + """ + field: ProductOrderField +} + +enum ProductOrderField { + """ + Sort products by collection. Note: This option is available only for the `Collection.products` query. + + This option requires a channel filter to work as the values can vary between channels. + """ + COLLECTION + + """ + Sort products by update date. + """ + DATE + + """ + Sort products by update date. + """ + LAST_MODIFIED + + """ + Sort products by update date. + """ + LAST_MODIFIED_AT + + """ + Sort products by a minimal price of a product's variant. + + This option requires a channel filter to work as the values can vary between channels. + """ + MINIMAL_PRICE + + """ + Sort products by name. + """ + NAME + + """ + Sort products by price. + + This option requires a channel filter to work as the values can vary between channels. + """ + PRICE + + """ + Sort products by publication date. + + This option requires a channel filter to work as the values can vary between channels. + """ + PUBLICATION_DATE + + """ + Sort products by publication status. + + This option requires a channel filter to work as the values can vary between channels. + """ + PUBLISHED + + """ + Sort products by publication date. + + This option requires a channel filter to work as the values can vary between channels. + """ + PUBLISHED_AT + + """ + Sort products by rank. Note: This option is available only with the `search` filter. + """ + RANK + + """ + Sort products by rating. + """ + RATING + + """ + Sort products by type. + """ + TYPE +} + +""" +Represents availability of a product in the storefront. +""" +type ProductPricingInfo { + """ + The discount amount if in sale (null otherwise). + """ + discount: TaxedMoney + + """ + The discount amount in the local currency. + """ + discountLocalCurrency: TaxedMoney + + """ + Whether it is in sale or not. + """ + onSale: Boolean + + """ + The discounted price range of the product variants. + """ + priceRange: TaxedMoneyRange + + """ + The discounted price range of the product variants in the local currency. + """ + priceRangeLocalCurrency: TaxedMoneyRange + + """ + The undiscounted price range of the product variants. + """ + priceRangeUndiscounted: TaxedMoneyRange +} + +""" +Reorder product attribute values. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductReorderAttributeValues { + errors: [ProductError!]! + + """ + Product from which attribute values are reordered. + """ + product: Product + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input ProductStockFilterInput { + quantity: IntRangeInput + warehouseIds: [ID!] +} + +type ProductTranslatableContent implements Node { + """ + List of product attribute values that can be translated. + """ + attributeValues: [AttributeValueTranslatableContent!]! + + """ + Description of the product. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Description of the product. + + Rich text format. For reference see https://editorjs.io/ + """ + descriptionJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `description` field instead." + ) + id: ID! + name: String! + + """ + Represents an individual item for sale in the storefront. + """ + product: Product + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) + seoDescription: String + seoTitle: String + + """ + Returns translated product fields for the given language code. + """ + translation( + """ + A language code to return the translation for product. + """ + languageCode: LanguageCodeEnum! + ): ProductTranslation +} + +""" +Creates/updates translations for a product. + +Requires one of the following permissions: MANAGE_TRANSLATIONS. +""" +type ProductTranslate { + errors: [TranslationError!]! + product: Product + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type ProductTranslation implements Node { + """ + Translated description of the product. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Translated description of the product. + + Rich text format. For reference see https://editorjs.io/ + """ + descriptionJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `description` field instead." + ) + id: ID! + + """ + Translation language. + """ + language: LanguageDisplay! + name: String + seoDescription: String + seoTitle: String +} + +""" +Represents a type of product. It defines what attributes are available to products of this type. +""" +type ProductType implements Node & ObjectWithMetadata { + """ + Variant attributes of that product type with attached variant selection. + + Added in Saleor 3.1. + """ + assignedVariantAttributes( + """ + Define scope of returned attributes. + """ + variantSelection: VariantAttributeScope + ): [AssignedVariantAttribute!] + + """ + List of attributes which can be assigned to this product type. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + availableAttributes( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + filter: AttributeFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): AttributeCountableConnection + hasVariants: Boolean! + id: ID! + isDigital: Boolean! + isShippingRequired: Boolean! + + """ + The product type kind. + """ + kind: ProductTypeKindEnum! + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + name: String! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + Product attributes of that product type. + """ + productAttributes: [Attribute!] + + """ + List of products of this type. + """ + products( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ProductCountableConnection + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the top-level `products` query with the `productTypes` filter." + ) + slug: String! + + """ + A type of tax. Assigned by enabled tax gateway + """ + taxType: TaxType + + """ + Variant attributes of that product type. + """ + variantAttributes( + """ + Define scope of returned attributes. + """ + variantSelection: VariantAttributeScope + ): [Attribute!] + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use `assignedVariantAttributes` instead." + ) + weight: Weight +} + +""" +Deletes product types. + +Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. +""" +type ProductTypeBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + errors: [ProductError!]! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +enum ProductTypeConfigurable { + CONFIGURABLE + SIMPLE +} + +type ProductTypeCountableConnection { + edges: [ProductTypeCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type ProductTypeCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ProductType! +} + +""" +Creates a new product type. + +Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. +""" +type ProductTypeCreate { + errors: [ProductError!]! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productType: ProductType +} + +""" +Deletes a product type. + +Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. +""" +type ProductTypeDelete { + errors: [ProductError!]! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productType: ProductType +} + +enum ProductTypeEnum { + DIGITAL + SHIPPABLE +} + +input ProductTypeFilterInput { + configurable: ProductTypeConfigurable + ids: [ID!] + kind: ProductTypeKindEnum + metadata: [MetadataFilter!] + productType: ProductTypeEnum + search: String +} + +input ProductTypeInput { + """ + Determines if product of this type has multiple variants. This option mainly simplifies product management in the dashboard. There is always at least one variant created under the hood. + """ + hasVariants: Boolean + + """ + Determines if products are digital. + """ + isDigital: Boolean + + """ + Determines if shipping is required for products of this variant. + """ + isShippingRequired: Boolean + + """ + The product type kind. + """ + kind: ProductTypeKindEnum + + """ + Name of the product type. + """ + name: String + + """ + List of attributes shared among all product variants. + """ + productAttributes: [ID!] + + """ + Product type slug. + """ + slug: String + + """ + Tax rate for enabled tax gateway. + """ + taxCode: String + + """ + List of attributes used to distinguish between different variants of a product. + """ + variantAttributes: [ID!] + + """ + Weight of the ProductType items. + """ + weight: WeightScalar +} + +""" +An enumeration. +""" +enum ProductTypeKindEnum { + GIFT_CARD + NORMAL +} + +""" +Reorder the attributes of a product type. + +Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. +""" +type ProductTypeReorderAttributes { + errors: [ProductError!]! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + Product type from which attributes are reordered. + """ + productType: ProductType +} + +enum ProductTypeSortField { + """ + Sort products by type. + """ + DIGITAL + + """ + Sort products by name. + """ + NAME + + """ + Sort products by shipping. + """ + SHIPPING_REQUIRED +} + +input ProductTypeSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort product types by the selected field. + """ + field: ProductTypeSortField! +} + +""" +Updates an existing product type. + +Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. +""" +type ProductTypeUpdate { + errors: [ProductError!]! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productType: ProductType +} + +""" +Updates an existing product. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductUpdate { + errors: [ProductError!]! + product: Product + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type ProductUpdated implements Event { + """ + The category of the product. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + category: Category + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The product the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + product( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Product + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Represents a version of a product such as different size or color. +""" +type ProductVariant implements Node & ObjectWithMetadata { + """ + List of attributes assigned to this variant. + """ + attributes( + """ + Define scope of returned attributes. + """ + variantSelection: VariantAttributeScope + ): [SelectedAttribute!]! + + """ + Channel given to retrieve this product variant. Also used by federation gateway to resolve this object in a federated query. + """ + channel: String + + """ + List of price information in channels for the product. + + Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER. + """ + channelListings: [ProductVariantChannelListing!] + created: DateTime! + + """ + Digital content for the product variant. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + digitalContent: DigitalContent + id: ID! + + """ + List of images for the product variant. + """ + images: [ProductImage!] + @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `media` field instead.") + + """ + Gross margin percentage value. + """ + margin: Int + + """ + List of media for the product variant. + """ + media: [ProductMedia!] + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + name: String! + + """ + Preorder data for product variant. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + preorder: PreorderData + + """ + Lists the storefront variant's pricing, the current price and discounts, only meant for displaying. + """ + pricing( + """ + Destination address used to find warehouses where stock availability for this product is checked. If address is empty, uses `Shop.companyAddress` or fallbacks to server's `settings.DEFAULT_COUNTRY` configuration. + """ + address: AddressInput + ): VariantPricingInfo + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + product: Product! + + """ + Quantity of a product available for sale in one checkout. Field value will be `null` when no `limitQuantityPerCheckout` in global settings has been set, and `productVariant` stocks are not tracked. + """ + quantityAvailable( + """ + Destination address used to find warehouses where stock availability for this product is checked. If address is empty, uses `Shop.companyAddress` or fallbacks to server's `settings.DEFAULT_COUNTRY` configuration. + """ + address: AddressInput + + """ + Two-letter ISO 3166-1 country code. When provided, the exact quantity from a warehouse operating in shipping zones that contain this country will be returned. Otherwise, it will return the maximum quantity from all shipping zones. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `address` argument instead. + """ + countryCode: CountryCode + ): Int + quantityLimitPerCustomer: Int + + """ + Total quantity ordered. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + quantityOrdered: Int + + """ + Total revenue generated by a variant in given period of time. Note: this field should be queried using `reportProductSales` query as it uses optimizations suitable for such calculations. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + revenue(period: ReportingPeriod): TaxedMoney + sku: String + + """ + Stocks for the product variant. + + Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. + """ + stocks( + """ + Destination address used to find warehouses where stock availability for this product is checked. If address is empty, uses `Shop.companyAddress` or fallbacks to server's `settings.DEFAULT_COUNTRY` configuration. + """ + address: AddressInput + + """ + Two-letter ISO 3166-1 country code. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `address` argument instead. + """ + countryCode: CountryCode + ): [Stock!] + trackInventory: Boolean! + + """ + Returns translated product variant fields for the given language code. + """ + translation( + """ + A language code to return the translation for product variant. + """ + languageCode: LanguageCodeEnum! + ): ProductVariantTranslation + updatedAt: DateTime! + weight: Weight +} + +type ProductVariantBackInStock implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The product variant the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + productVariant( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ProductVariant + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String + + """ + Look up a warehouse. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + warehouse: Warehouse +} + +""" +Creates product variants for a given product. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductVariantBulkCreate { + bulkProductErrors: [BulkProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + Returns how many objects were created. + """ + count: Int! + errors: [BulkProductError!]! + + """ + List of the created variants. + """ + productVariants: [ProductVariant!]! +} + +input ProductVariantBulkCreateInput { + """ + List of attributes specific to this variant. + """ + attributes: [BulkAttributeValueInput!]! + + """ + List of prices assigned to channels. + """ + channelListings: [ProductVariantChannelListingAddInput!] + + """ + Determines if variant is in preorder. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + preorder: PreorderSettingsInput + + """ + Determines maximum quantity of `ProductVariant`,that can be bought in a single checkout. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + quantityLimitPerCustomer: Int + + """ + Stock keeping unit. + """ + sku: String + + """ + Stocks of a product available for sale. + """ + stocks: [StockInput!] + + """ + Determines if the inventory of this variant should be tracked. If false, the quantity won't change when customers buy this item. + """ + trackInventory: Boolean + + """ + Weight of the Product Variant. + """ + weight: WeightScalar +} + +""" +Deletes product variants. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductVariantBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + errors: [ProductError!]! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Represents product varaint channel listing. +""" +type ProductVariantChannelListing implements Node { + channel: Channel! + + """ + Cost price of the variant. + """ + costPrice: Money + id: ID! + + """ + Gross margin percentage value. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + margin: Int + + """ + Preorder variant data. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + preorderThreshold: PreorderThreshold + price: Money +} + +input ProductVariantChannelListingAddInput { + """ + ID of a channel. + """ + channelId: ID! + + """ + Cost price of the variant in channel. + """ + costPrice: PositiveDecimal + + """ + The threshold for preorder variant in channel. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + preorderThreshold: Int + + """ + Price of the particular variant in channel. + """ + price: PositiveDecimal! +} + +""" +Manage product variant prices in channels. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductVariantChannelListingUpdate { + errors: [ProductChannelListingError!]! + productChannelListingErrors: [ProductChannelListingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + An updated product variant instance. + """ + variant: ProductVariant +} + +type ProductVariantCountableConnection { + edges: [ProductVariantCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type ProductVariantCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ProductVariant! +} + +""" +Creates a new variant for a product. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductVariantCreate { + errors: [ProductError!]! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productVariant: ProductVariant +} + +input ProductVariantCreateInput { + """ + List of attributes specific to this variant. + """ + attributes: [AttributeValueInput!]! + + """ + Determines if variant is in preorder. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + preorder: PreorderSettingsInput + + """ + Product ID of which type is the variant. + """ + product: ID! + + """ + Determines maximum quantity of `ProductVariant`,that can be bought in a single checkout. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + quantityLimitPerCustomer: Int + + """ + Stock keeping unit. + """ + sku: String + + """ + Stocks of a product available for sale. + """ + stocks: [StockInput!] + + """ + Determines if the inventory of this variant should be tracked. If false, the quantity won't change when customers buy this item. + """ + trackInventory: Boolean + + """ + Weight of the Product Variant. + """ + weight: WeightScalar +} + +type ProductVariantCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The product variant the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + productVariant( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ProductVariant + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Deletes a product variant. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductVariantDelete { + errors: [ProductError!]! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productVariant: ProductVariant +} + +type ProductVariantDeleted implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The product variant the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + productVariant( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ProductVariant + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +input ProductVariantFilterInput { + isPreorder: Boolean + metadata: [MetadataFilter!] + search: String + sku: [String!] + updatedAt: DateTimeRangeInput +} + +input ProductVariantInput { + """ + List of attributes specific to this variant. + """ + attributes: [AttributeValueInput!] + + """ + Determines if variant is in preorder. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + preorder: PreorderSettingsInput + + """ + Determines maximum quantity of `ProductVariant`,that can be bought in a single checkout. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + quantityLimitPerCustomer: Int + + """ + Stock keeping unit. + """ + sku: String + + """ + Determines if the inventory of this variant should be tracked. If false, the quantity won't change when customers buy this item. + """ + trackInventory: Boolean + + """ + Weight of the Product Variant. + """ + weight: WeightScalar +} + +type ProductVariantOutOfStock implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The product variant the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + productVariant( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ProductVariant + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String + + """ + Look up a warehouse. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + warehouse: Warehouse +} + +""" +Deactivates product variant preorder. It changes all preorder allocation into regular allocation. + +Added in Saleor 3.1. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductVariantPreorderDeactivate { + errors: [ProductError!]! + + """ + Product variant with ended preorder. + """ + productVariant: ProductVariant +} + +""" +Reorder the variants of a product. Mutation updates updated_at on product and triggers PRODUCT_UPDATED webhook. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductVariantReorder { + errors: [ProductError!]! + product: Product + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Reorder product variant attribute values. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductVariantReorderAttributeValues { + errors: [ProductError!]! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + Product variant from which attribute values are reordered. + """ + productVariant: ProductVariant +} + +""" +Set default variant for a product. Mutation triggers PRODUCT_UPDATED webhook. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductVariantSetDefault { + errors: [ProductError!]! + product: Product + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +enum ProductVariantSortField { + """ + Sort products variants by last modified at. + """ + LAST_MODIFIED_AT +} + +input ProductVariantSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort productVariants by the selected field. + """ + field: ProductVariantSortField! +} + +""" +Creates stocks for product variant. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductVariantStocksCreate { + bulkStockErrors: [BulkStockError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [BulkStockError!]! + + """ + Updated product variant. + """ + productVariant: ProductVariant +} + +""" +Delete stocks from product variant. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductVariantStocksDelete { + errors: [StockError!]! + + """ + Updated product variant. + """ + productVariant: ProductVariant + stockErrors: [StockError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Update stocks for product variant. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductVariantStocksUpdate { + bulkStockErrors: [BulkStockError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [BulkStockError!]! + + """ + Updated product variant. + """ + productVariant: ProductVariant +} + +type ProductVariantTranslatableContent implements Node { + """ + List of product variant attribute values that can be translated. + """ + attributeValues: [AttributeValueTranslatableContent!]! + id: ID! + name: String! + + """ + Represents a version of a product such as different size or color. + """ + productVariant: ProductVariant + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) + + """ + Returns translated product variant fields for the given language code. + """ + translation( + """ + A language code to return the translation for product variant. + """ + languageCode: LanguageCodeEnum! + ): ProductVariantTranslation +} + +""" +Creates/updates translations for a product variant. + +Requires one of the following permissions: MANAGE_TRANSLATIONS. +""" +type ProductVariantTranslate { + errors: [TranslationError!]! + productVariant: ProductVariant + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type ProductVariantTranslation implements Node { + id: ID! + + """ + Translation language. + """ + language: LanguageDisplay! + name: String! +} + +""" +Updates an existing variant for product. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductVariantUpdate { + errors: [ProductError!]! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productVariant: ProductVariant +} + +type ProductVariantUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The product variant the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + productVariant( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ProductVariant + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String +} + +input PublishableChannelListingInput { + """ + ID of a channel. + """ + channelId: ID! + + """ + Determines if object is visible to customers. + """ + isPublished: Boolean + + """ + Publication date. ISO 8601 standard. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `publishedAt` field instead. + """ + publicationDate: Date + + """ + Publication date time. ISO 8601 standard. + + Added in Saleor 3.3. + """ + publishedAt: DateTime +} + +type Query { + _entities(representations: [_Any]): [_Entity] + _service: _Service + + """ + Look up an address by ID. + """ + address( + """ + ID of an address. + """ + id: ID! + ): Address + + """ + Returns address validation rules. + """ + addressValidationRules( + """ + City or a town name. + """ + city: String + + """ + Sublocality like a district. + """ + cityArea: String + + """ + Designation of a region, province or state. + """ + countryArea: String + + """ + Two-letter ISO 3166-1 country code. + """ + countryCode: CountryCode! + ): AddressValidationData + + """ + Look up an app by ID. If ID is not provided, return the currently authenticated app. + + Requires one of the following permissions: AUTHENTICATED_STAFF_USER AUTHENTICATED_APP. The authenticated app has access to its resources. Fetching different apps requires MANAGE_APPS permission. + """ + app( + """ + ID of the app. + """ + id: ID + ): App + + """ + Look up an app extension by ID. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP. + """ + appExtension( + """ + ID of the app extension. + """ + id: ID! + ): AppExtension + + """ + List of all extensions. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP. + """ + appExtensions( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Filtering options for apps extensions. + """ + filter: AppExtensionFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): AppExtensionCountableConnection + + """ + List of the apps. + + Requires one of the following permissions: AUTHENTICATED_STAFF_USER, MANAGE_APPS. + """ + apps( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Filtering options for apps. + """ + filter: AppFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + + """ + Sort apps. + """ + sortBy: AppSortingInput + ): AppCountableConnection + + """ + List of all apps installations + + Requires one of the following permissions: MANAGE_APPS. + """ + appsInstallations: [AppInstallation!]! + + """ + Look up an attribute by ID. + """ + attribute( + """ + ID of the attribute. + """ + id: ID + + """ + Slug of the attribute. + """ + slug: String + ): Attribute + + """ + List of the shop's attributes. + """ + attributes( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + Filtering options for attributes. + """ + filter: AttributeFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + + """ + Sorting options for attributes. + """ + sortBy: AttributeSortingInput + ): AttributeCountableConnection + + """ + List of the shop's categories. + """ + categories( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Filtering options for categories. + """ + filter: CategoryFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + + """ + Filter categories by the nesting level in the category tree. + """ + level: Int + + """ + Sort categories. + """ + sortBy: CategorySortingInput + ): CategoryCountableConnection + + """ + Look up a category by ID or slug. + """ + category( + """ + ID of the category. + """ + id: ID + + """ + Slug of the category + """ + slug: String + ): Category + + """ + Look up a channel by ID. + + Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER. + """ + channel( + """ + ID of the channel. + """ + id: ID + ): Channel + + """ + List of all channels. + + Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER. + """ + channels: [Channel!] + + """ + Look up a checkout by token and slug of channel. + """ + checkout( + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + The checkout's token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): Checkout + + """ + List of checkout lines. + + Requires one of the following permissions: MANAGE_CHECKOUTS. + """ + checkoutLines( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): CheckoutLineCountableConnection + + """ + List of checkouts. + + Requires one of the following permissions: MANAGE_CHECKOUTS. + """ + checkouts( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + Filtering options for checkouts. + + Added in Saleor 3.1. + """ + filter: CheckoutFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + + """ + Sort checkouts. + + Added in Saleor 3.1. + """ + sortBy: CheckoutSortingInput + ): CheckoutCountableConnection + + """ + Look up a collection by ID. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. + """ + collection( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + ID of the collection. + """ + id: ID + + """ + Slug of the category + """ + slug: String + ): Collection + + """ + List of the shop's collections. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. + """ + collections( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + Filtering options for collections. + """ + filter: CollectionFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + + """ + Sort collections. + """ + sortBy: CollectionSortingInput + ): CollectionCountableConnection + + """ + List of the shop's customers. + + Requires one of the following permissions: MANAGE_ORDERS, MANAGE_USERS. + """ + customers( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Filtering options for customers. + """ + filter: CustomerFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + + """ + Sort customers. + """ + sortBy: UserSortingInput + ): UserCountableConnection + + """ + Look up digital content by ID. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + digitalContent( + """ + ID of the digital content. + """ + id: ID! + ): DigitalContent + + """ + List of digital content. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + digitalContents( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): DigitalContentCountableConnection + + """ + List of draft orders. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + draftOrders( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Filtering options for draft orders. + """ + filter: OrderDraftFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + + """ + Sort draft orders. + """ + sortBy: OrderSortingInput + ): OrderCountableConnection + + """ + Look up a export file by ID. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + exportFile( + """ + ID of the export file job. + """ + id: ID! + ): ExportFile + + """ + List of export files. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + exportFiles( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Filtering options for export files. + """ + filter: ExportFileFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + + """ + Sort export files. + """ + sortBy: ExportFileSortingInput + ): ExportFileCountableConnection + + """ + Look up a gift card by ID. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCard( + """ + ID of the gift card. + """ + id: ID! + ): GiftCard + + """ + List of gift card currencies. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardCurrencies: [String!]! + + """ + Gift card related settings from site settings. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardSettings: GiftCardSettings! + + """ + List of gift card tags. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardTags( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Filtering options for gift card tags. + """ + filter: GiftCardTagFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): GiftCardTagCountableConnection + + """ + List of gift cards. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCards( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Filtering options for gift cards. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + filter: GiftCardFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + + """ + Sort gift cards. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + sortBy: GiftCardSortingInput + ): GiftCardCountableConnection + + """ + List of activity events to display on homepage (at the moment it only contains order-events). + + Requires one of the following permissions: MANAGE_ORDERS. + """ + homepageEvents( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): OrderEventCountableConnection + + """ + Return the currently authenticated user. + """ + me: User + + """ + Look up a navigation menu by ID or name. + """ + menu( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + ID of the menu. + """ + id: ID + + """ + The menu's name. + """ + name: String + + """ + The menu's slug. + """ + slug: String + ): Menu + + """ + Look up a menu item by ID. + """ + menuItem( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + ID of the menu item. + """ + id: ID! + ): MenuItem + + """ + List of the storefronts's menu items. + """ + menuItems( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + Filtering options for menu items. + """ + filter: MenuItemFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + + """ + Sort menus items. + """ + sortBy: MenuItemSortingInput + ): MenuItemCountableConnection + + """ + List of the storefront's menus. + """ + menus( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + Filtering options for menus. + """ + filter: MenuFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + + """ + Sort menus. + """ + sortBy: MenuSortingInput + ): MenuCountableConnection + + """ + Look up an order by ID. + """ + order( + """ + ID of an order. + """ + id: ID! + ): Order + + """ + Look up an order by token. + """ + orderByToken( + """ + The order's token. + """ + token: UUID! + ): Order @deprecated(reason: "This field will be removed in Saleor 4.0.") + + """ + Order related settings from site settings. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderSettings: OrderSettings + + """ + List of orders. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orders( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + Filtering options for orders. + """ + filter: OrderFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + + """ + Sort orders. + """ + sortBy: OrderSortingInput + ): OrderCountableConnection + + """ + Return the total sales amount from a specific period. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + ordersTotal( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + A period of time. + """ + period: ReportingPeriod + ): TaxedMoney + + """ + Look up a page by ID or slug. + """ + page( + """ + ID of the page. + """ + id: ID + + """ + The slug of the page. + """ + slug: String + ): Page + + """ + Look up a page type by ID. + """ + pageType( + """ + ID of the page type. + """ + id: ID! + ): PageType + + """ + List of the page types. + """ + pageTypes( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Filtering options for page types. + """ + filter: PageTypeFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + + """ + Sort page types. + """ + sortBy: PageTypeSortingInput + ): PageTypeCountableConnection + + """ + List of the shop's pages. + """ + pages( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Filtering options for pages. + """ + filter: PageFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + + """ + Sort pages. + """ + sortBy: PageSortingInput + ): PageCountableConnection + + """ + Look up a payment by ID. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + payment( + """ + ID of the payment. + """ + id: ID! + ): Payment + + """ + List of payments. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + payments( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Filtering options for payments. + """ + filter: PaymentFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): PaymentCountableConnection + + """ + Look up permission group by ID. + + Requires one of the following permissions: MANAGE_STAFF. + """ + permissionGroup( + """ + ID of the group. + """ + id: ID! + ): Group + + """ + List of permission groups. + + Requires one of the following permissions: MANAGE_STAFF. + """ + permissionGroups( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Filtering options for permission groups. + """ + filter: PermissionGroupFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + + """ + Sort permission groups. + """ + sortBy: PermissionGroupSortingInput + ): GroupCountableConnection + + """ + Look up a plugin by ID. + + Requires one of the following permissions: MANAGE_PLUGINS. + """ + plugin( + """ + ID of the plugin. + """ + id: ID! + ): Plugin + + """ + List of plugins. + + Requires one of the following permissions: MANAGE_PLUGINS. + """ + plugins( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Filtering options for plugins. + """ + filter: PluginFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + + """ + Sort plugins. + """ + sortBy: PluginSortingInput + ): PluginCountableConnection + + """ + Look up a product by ID. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. + """ + product( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + ID of the product. + """ + id: ID + + """ + Slug of the product. + """ + slug: String + ): Product + + """ + Look up a product type by ID. + """ + productType( + """ + ID of the product type. + """ + id: ID! + ): ProductType + + """ + List of the shop's product types. + """ + productTypes( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Filtering options for product types. + """ + filter: ProductTypeFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + + """ + Sort product types. + """ + sortBy: ProductTypeSortingInput + ): ProductTypeCountableConnection + + """ + Look up a product variant by ID or SKU. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. + """ + productVariant( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + ID of the product variant. + """ + id: ID + + """ + Sku of the product variant. + """ + sku: String + ): ProductVariant + + """ + List of product variants. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. + """ + productVariants( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + Filtering options for product variant. + """ + filter: ProductVariantFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Filter product variants by given IDs. + """ + ids: [ID!] + + """ + Return the last n elements from the list. + """ + last: Int + + """ + Sort products variants. + """ + sortBy: ProductVariantSortingInput + ): ProductVariantCountableConnection + + """ + List of the shop's products. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. + """ + products( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + Filtering options for products. + """ + filter: ProductFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + + """ + Sort products. + """ + sortBy: ProductOrder + ): ProductCountableConnection + + """ + List of top selling products. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + reportProductSales( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Slug of a channel for which the data should be returned. + """ + channel: String! + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + + """ + Span of time. + """ + period: ReportingPeriod! + ): ProductVariantCountableConnection + + """ + Look up a sale by ID. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + sale( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + ID of the sale. + """ + id: ID! + ): Sale + + """ + List of the shop's sales. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + sales( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + Filtering options for sales. + """ + filter: SaleFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + + """ + Search sales by name, value or type. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `filter.search` input instead. + """ + query: String + + """ + Sort sales. + """ + sortBy: SaleSortingInput + ): SaleCountableConnection + + """ + Look up a shipping zone by ID. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingZone( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + ID of the shipping zone. + """ + id: ID! + ): ShippingZone + + """ + List of the shop's shipping zones. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingZones( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + Filtering options for shipping zones. + """ + filter: ShippingZoneFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ShippingZoneCountableConnection + + """ + Return information about the shop. + """ + shop: Shop! + + """ + List of the shop's staff users. + + Requires one of the following permissions: MANAGE_STAFF. + """ + staffUsers( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Filtering options for staff users. + """ + filter: StaffUserInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + + """ + Sort staff users. + """ + sortBy: UserSortingInput + ): UserCountableConnection + + """ + Look up a stock by ID + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + stock( + """ + ID of an warehouse + """ + id: ID! + ): Stock + + """ + List of stocks. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + stocks( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + filter: StockFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): StockCountableConnection + + """ + List of all tax rates available from tax gateway. + """ + taxTypes: [TaxType!] + + """ + Lookup a translatable item by ID. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + translation( + """ + ID of the object to retrieve. + """ + id: ID! + + """ + Kind of the object to retrieve. + """ + kind: TranslatableKinds! + ): TranslatableItem + + """ + Returns a list of all translatable items of a given kind. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + translations( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Kind of objects to retrieve. + """ + kind: TranslatableKinds! + + """ + Return the last n elements from the list. + """ + last: Int + ): TranslatableItemConnection + + """ + Look up a user by ID or email address. + + Requires one of the following permissions: MANAGE_STAFF, MANAGE_USERS, MANAGE_ORDERS. + """ + user( + """ + Email address of the user. + """ + email: String + + """ + ID of the user. + """ + id: ID + ): User + + """ + Look up a voucher by ID. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + voucher( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + ID of the voucher. + """ + id: ID! + ): Voucher + + """ + List of the shop's vouchers. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + vouchers( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + Filtering options for vouchers. + """ + filter: VoucherFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + + """ + Search vouchers by name or code. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `filter.search` input instead. + """ + query: String + + """ + Sort voucher. + """ + sortBy: VoucherSortingInput + ): VoucherCountableConnection + + """ + Look up a warehouse by ID. + + Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS, MANAGE_SHIPPING. + """ + warehouse( + """ + ID of an warehouse + """ + id: ID! + ): Warehouse + + """ + List of warehouses. + + Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS, MANAGE_SHIPPING. + """ + warehouses( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + filter: WarehouseFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + sortBy: WarehouseSortingInput + ): WarehouseCountableConnection + + """ + Look up a webhook by ID. Requires one of the following permissions: MANAGE_APPS, OWNER. + """ + webhook( + """ + ID of the webhook. + """ + id: ID! + ): Webhook + + """ + List of all available webhook events. + + Requires one of the following permissions: MANAGE_APPS. + """ + webhookEvents: [WebhookEvent!] + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use `WebhookEventTypeAsyncEnum` and `WebhookEventTypeSyncEnum` to get available event types." + ) + + """ + Retrieve a sample payload for a given webhook event based on real data. It can be useful for some integrations where sample payload is required. + """ + webhookSamplePayload( + """ + Name of the requested event type. + """ + eventType: WebhookSampleEventTypeEnum! + ): JSONString +} + +""" +Represents a reduced VAT rate for a particular type of goods. +""" +type ReducedRate { + """ + Reduced VAT rate in percent. + """ + rate: Float! + + """ + A type of goods. + """ + rateType: String! +} + +""" +Refresh JWT token. Mutation tries to take refreshToken from the input.If it fails it will try to take refreshToken from the http-only cookie -refreshToken. csrfToken is required when refreshToken is provided as a cookie. +""" +type RefreshToken { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + + """ + JWT token, required to authenticate. + """ + token: String + + """ + A user instance. + """ + user: User +} + +input ReorderInput { + """ + The ID of the item to move. + """ + id: ID! + + """ + The new relative sorting position of the item (from -inf to +inf). 1 moves the item one position forward, -1 moves the item one position backward, 0 leaves the item unchanged. + """ + sortOrder: Int +} + +enum ReportingPeriod { + THIS_MONTH + TODAY +} + +""" +Request email change of the logged in user. + +Requires one of the following permissions: AUTHENTICATED_USER. +""" +type RequestEmailChange { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + + """ + A user instance. + """ + user: User +} + +""" +Sends an email with the account password modification link. +""" +type RequestPasswordReset { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! +} + +""" +Sales allow creating discounts for categories, collections or products and are visible to all the customers. +""" +type Sale implements Node & ObjectWithMetadata { + """ + List of categories this sale applies to. + """ + categories( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): CategoryCountableConnection + + """ + List of channels available for the sale. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + channelListings: [SaleChannelListing!] + + """ + List of collections this sale applies to. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + collections( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): CollectionCountableConnection + created: DateTime! + + """ + Currency code for sale. + """ + currency: String + + """ + Sale value. + """ + discountValue: Float + endDate: DateTime + id: ID! + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + name: String! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of products this sale applies to. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + products( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ProductCountableConnection + startDate: DateTime! + + """ + Returns translated sale fields for the given language code. + """ + translation( + """ + A language code to return the translation for sale. + """ + languageCode: LanguageCodeEnum! + ): SaleTranslation + type: SaleType! + updatedAt: DateTime! + + """ + List of product variants this sale applies to. + + Added in Saleor 3.1. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + variants( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ProductVariantCountableConnection +} + +""" +Adds products, categories, collections to a voucher. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type SaleAddCatalogues { + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! + + """ + Sale of which catalogue IDs will be modified. + """ + sale: Sale +} + +""" +Deletes sales. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type SaleBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! +} + +""" +Represents sale channel listing. +""" +type SaleChannelListing implements Node { + channel: Channel! + currency: String! + discountValue: Float! + id: ID! +} + +input SaleChannelListingAddInput { + """ + ID of a channel. + """ + channelId: ID! + + """ + The value of the discount. + """ + discountValue: PositiveDecimal! +} + +input SaleChannelListingInput { + """ + List of channels to which the sale should be assigned. + """ + addChannels: [SaleChannelListingAddInput!] + + """ + List of channels from which the sale should be unassigned. + """ + removeChannels: [ID!] +} + +""" +Manage sale's availability in channels. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type SaleChannelListingUpdate { + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! + + """ + An updated sale instance. + """ + sale: Sale +} + +type SaleCountableConnection { + edges: [SaleCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type SaleCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Sale! +} + +""" +Creates a new sale. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type SaleCreate { + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! + sale: Sale +} + +type SaleCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The sale the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + sale( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Sale + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Deletes a sale. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type SaleDelete { + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! + sale: Sale +} + +type SaleDeleted implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The sale the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + sale( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Sale + + """ + Saleor version that triggered the event. + """ + version: String +} + +input SaleFilterInput { + metadata: [MetadataFilter!] + saleType: DiscountValueTypeEnum + search: String + started: DateTimeRangeInput + status: [DiscountStatusEnum!] + updatedAt: DateTimeRangeInput +} + +input SaleInput { + """ + Categories related to the discount. + """ + categories: [ID!] + + """ + Collections related to the discount. + """ + collections: [ID!] + + """ + End date of the voucher in ISO 8601 format. + """ + endDate: DateTime + + """ + Voucher name. + """ + name: String + + """ + Products related to the discount. + """ + products: [ID!] + + """ + Start date of the voucher in ISO 8601 format. + """ + startDate: DateTime + + """ + Fixed or percentage. + """ + type: DiscountValueTypeEnum + + """ + Value of the voucher. + """ + value: PositiveDecimal + variants: [ID!] +} + +""" +Removes products, categories, collections from a sale. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type SaleRemoveCatalogues { + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! + + """ + Sale of which catalogue IDs will be modified. + """ + sale: Sale +} + +enum SaleSortField { + """ + Sort sales by created at. + """ + CREATED_AT + + """ + Sort sales by end date. + """ + END_DATE + + """ + Sort sales by last modified at. + """ + LAST_MODIFIED_AT + + """ + Sort sales by name. + """ + NAME + + """ + Sort sales by start date. + """ + START_DATE + + """ + Sort sales by type. + """ + TYPE + + """ + Sort sales by value. + + This option requires a channel filter to work as the values can vary between channels. + """ + VALUE +} + +input SaleSortingInput { + """ + Specifies the channel in which to sort the data. + + DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. + """ + channel: String + + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort sales by the selected field. + """ + field: SaleSortField! +} + +type SaleTranslatableContent implements Node { + id: ID! + name: String! + + """ + Sales allow creating discounts for categories, collections or products and are visible to all the customers. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + sale: Sale + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) + + """ + Returns translated sale fields for the given language code. + """ + translation( + """ + A language code to return the translation for sale. + """ + languageCode: LanguageCodeEnum! + ): SaleTranslation +} + +""" +Creates/updates translations for a sale. + +Requires one of the following permissions: MANAGE_TRANSLATIONS. +""" +type SaleTranslate { + errors: [TranslationError!]! + sale: Sale + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type SaleTranslation implements Node { + id: ID! + + """ + Translation language. + """ + language: LanguageDisplay! + name: String +} + +enum SaleType { + FIXED + PERCENTAGE +} + +""" +Updates a sale. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type SaleUpdate { + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! + sale: Sale +} + +type SaleUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The sale the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + sale( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Sale + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Represents a custom attribute. +""" +type SelectedAttribute { + """ + Name of an attribute displayed in the interface. + """ + attribute: Attribute! + + """ + Values of an attribute. + """ + values: [AttributeValue!]! +} + +input SeoInput { + """ + SEO description. + """ + description: String + + """ + SEO title. + """ + title: String +} + +""" +Sets the user's password from the token sent by email using the RequestPasswordReset mutation. +""" +type SetPassword { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + CSRF token required to re-generate access token. + """ + csrfToken: String + errors: [AccountError!]! + + """ + JWT refresh token, required to re-generate access token. + """ + refreshToken: String + + """ + JWT token, required to authenticate. + """ + token: String + + """ + A user instance. + """ + user: User +} + +type ShippingError { + """ + List of channels IDs which causes the error. + """ + channels: [ID!] + + """ + The error code. + """ + code: ShippingErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + List of warehouse IDs which causes the error. + """ + warehouses: [ID!] +} + +""" +An enumeration. +""" +enum ShippingErrorCode { + ALREADY_EXISTS + DUPLICATED_INPUT_ITEM + GRAPHQL_ERROR + INVALID + MAX_LESS_THAN_MIN + NOT_FOUND + REQUIRED + UNIQUE +} + +""" +Shipping methods that can be used as means of shipping for orders and checkouts. +""" +type ShippingMethod implements Node & ObjectWithMetadata { + """ + Describes if this shipping method is active and can be selected. + """ + active: Boolean! + + """ + Shipping method description. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Unique ID of ShippingMethod available for Order. + """ + id: ID! + + """ + Maximum delivery days for this shipping method. + """ + maximumDeliveryDays: Int + + """ + Maximum order price for this shipping method. + """ + maximumOrderPrice: Money + + """ + Maximum order weight for this shipping method. + """ + maximumOrderWeight: Weight @deprecated(reason: "This field will be removed in Saleor 4.0.") + + """ + Message connected to this shipping method. + """ + message: String + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + + """ + Minimum delivery days for this shipping method. + """ + minimumDeliveryDays: Int + + """ + Minimal order price for this shipping method. + """ + minimumOrderPrice: Money + + """ + Minimum order weight for this shipping method. + """ + minimumOrderWeight: Weight @deprecated(reason: "This field will be removed in Saleor 4.0.") + + """ + Shipping method name. + """ + name: String! + + """ + The price of selected shipping method. + """ + price: Money! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + Returns translated shipping method fields for the given language code. + """ + translation( + """ + A language code to return the translation for shipping method. + """ + languageCode: LanguageCodeEnum! + ): ShippingMethodTranslation + + """ + Type of the shipping method. + """ + type: ShippingMethodTypeEnum @deprecated(reason: "This field will be removed in Saleor 4.0.") +} + +""" +Represents shipping method channel listing. +""" +type ShippingMethodChannelListing implements Node { + channel: Channel! + id: ID! + maximumOrderPrice: Money + minimumOrderPrice: Money + price: Money +} + +input ShippingMethodChannelListingAddInput { + """ + ID of a channel. + """ + channelId: ID! + + """ + Maximum order price to use this shipping method. + """ + maximumOrderPrice: PositiveDecimal + + """ + Minimum order price to use this shipping method. + """ + minimumOrderPrice: PositiveDecimal + + """ + Shipping price of the shipping method in this channel. + """ + price: PositiveDecimal +} + +input ShippingMethodChannelListingInput { + """ + List of channels to which the shipping method should be assigned. + """ + addChannels: [ShippingMethodChannelListingAddInput!] + + """ + List of channels from which the shipping method should be unassigned. + """ + removeChannels: [ID!] +} + +""" +Manage shipping method's availability in channels. + +Requires one of the following permissions: MANAGE_SHIPPING. +""" +type ShippingMethodChannelListingUpdate { + errors: [ShippingError!]! + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + An updated shipping method instance. + """ + shippingMethod: ShippingMethodType +} + +""" +Represents shipping method postal code rule. +""" +type ShippingMethodPostalCodeRule implements Node { + """ + End address range. + """ + end: String + + """ + The ID of the object. + """ + id: ID! + + """ + Inclusion type of the postal code rule. + """ + inclusionType: PostalCodeRuleInclusionTypeEnum + + """ + Start address range. + """ + start: String +} + +type ShippingMethodTranslatableContent implements Node { + """ + Description of the shipping method. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + id: ID! + name: String! + + """ + Shipping method are the methods you'll use to get customer's orders to them. They are directly exposed to the customers. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingMethod: ShippingMethodType + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) + + """ + Returns translated shipping method fields for the given language code. + """ + translation( + """ + A language code to return the translation for shipping method. + """ + languageCode: LanguageCodeEnum! + ): ShippingMethodTranslation +} + +type ShippingMethodTranslation implements Node { + """ + Translated description of the shipping method. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + id: ID! + + """ + Translation language. + """ + language: LanguageDisplay! + name: String +} + +""" +Shipping method are the methods you'll use to get customer's orders to them. They are directly exposed to the customers. +""" +type ShippingMethodType implements Node & ObjectWithMetadata { + """ + List of channels available for the method. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + channelListings: [ShippingMethodChannelListing!] + + """ + Shipping method description. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + List of excluded products for the shipping method. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + excludedProducts( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ProductCountableConnection + + """ + Shipping method ID. + """ + id: ID! + + """ + Maximum number of days for delivery. + """ + maximumDeliveryDays: Int + + """ + The price of the cheapest variant (including discounts). + """ + maximumOrderPrice: Money + + """ + Maximum order weight to use this shipping method. + """ + maximumOrderWeight: Weight + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + + """ + Minimal number of days for delivery. + """ + minimumDeliveryDays: Int + + """ + The price of the cheapest variant (including discounts). + """ + minimumOrderPrice: Money + + """ + Minimum order weight to use this shipping method. + """ + minimumOrderWeight: Weight + + """ + Shipping method name. + """ + name: String! + + """ + Postal code ranges rule of exclusion or inclusion of the shipping method. + """ + postalCodeRules: [ShippingMethodPostalCodeRule!] + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + Returns translated shipping method fields for the given language code. + """ + translation( + """ + A language code to return the translation for shipping method. + """ + languageCode: LanguageCodeEnum! + ): ShippingMethodTranslation + + """ + Type of the shipping method. + """ + type: ShippingMethodTypeEnum +} + +""" +An enumeration. +""" +enum ShippingMethodTypeEnum { + PRICE + WEIGHT +} + +input ShippingPostalCodeRulesCreateInputRange { + """ + End range of the postal code. + """ + end: String + + """ + Start range of the postal code. + """ + start: String! +} + +""" +Deletes shipping prices. + +Requires one of the following permissions: MANAGE_SHIPPING. +""" +type ShippingPriceBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + errors: [ShippingError!]! + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Creates a new shipping price. + +Requires one of the following permissions: MANAGE_SHIPPING. +""" +type ShippingPriceCreate { + errors: [ShippingError!]! + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + shippingMethod: ShippingMethodType + + """ + A shipping zone to which the shipping method belongs. + """ + shippingZone: ShippingZone +} + +type ShippingPriceCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The shipping method the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + shippingMethod( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ShippingMethodType + + """ + The shipping zone the shipping method belongs to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + shippingZone( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ShippingZone + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Deletes a shipping price. + +Requires one of the following permissions: MANAGE_SHIPPING. +""" +type ShippingPriceDelete { + errors: [ShippingError!]! + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + A shipping method to delete. + """ + shippingMethod: ShippingMethodType + + """ + A shipping zone to which the shipping method belongs. + """ + shippingZone: ShippingZone +} + +type ShippingPriceDeleted implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The shipping method the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + shippingMethod( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ShippingMethodType + + """ + The shipping zone the shipping method belongs to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + shippingZone( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ShippingZone + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Exclude products from shipping price. + +Requires one of the following permissions: MANAGE_SHIPPING. +""" +type ShippingPriceExcludeProducts { + errors: [ShippingError!]! + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + A shipping method with new list of excluded products. + """ + shippingMethod: ShippingMethodType +} + +input ShippingPriceExcludeProductsInput { + """ + List of products which will be excluded. + """ + products: [ID!]! +} + +input ShippingPriceInput { + """ + Postal code rules to add. + """ + addPostalCodeRules: [ShippingPostalCodeRulesCreateInputRange!] + + """ + Postal code rules to delete. + """ + deletePostalCodeRules: [ID!] + + """ + Shipping method description. + """ + description: JSONString + + """ + Inclusion type for currently assigned postal code rules. + """ + inclusionType: PostalCodeRuleInclusionTypeEnum + + """ + Maximum number of days for delivery. + """ + maximumDeliveryDays: Int + + """ + Maximum order weight to use this shipping method. + """ + maximumOrderWeight: WeightScalar + + """ + Minimal number of days for delivery. + """ + minimumDeliveryDays: Int + + """ + Minimum order weight to use this shipping method. + """ + minimumOrderWeight: WeightScalar + + """ + Name of the shipping method. + """ + name: String + + """ + Shipping zone this method belongs to. + """ + shippingZone: ID + + """ + Shipping type: price or weight based. + """ + type: ShippingMethodTypeEnum +} + +""" +Remove product from excluded list for shipping price. + +Requires one of the following permissions: MANAGE_SHIPPING. +""" +type ShippingPriceRemoveProductFromExclude { + errors: [ShippingError!]! + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + A shipping method with new list of excluded products. + """ + shippingMethod: ShippingMethodType +} + +""" +Creates/updates translations for a shipping method. + +Requires one of the following permissions: MANAGE_TRANSLATIONS. +""" +type ShippingPriceTranslate { + errors: [TranslationError!]! + shippingMethod: ShippingMethodType + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input ShippingPriceTranslationInput { + """ + Translated shipping method description. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + name: String +} + +""" +Updates a new shipping price. + +Requires one of the following permissions: MANAGE_SHIPPING. +""" +type ShippingPriceUpdate { + errors: [ShippingError!]! + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + shippingMethod: ShippingMethodType + + """ + A shipping zone to which the shipping method belongs. + """ + shippingZone: ShippingZone +} + +type ShippingPriceUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The shipping method the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + shippingMethod( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ShippingMethodType + + """ + The shipping zone the shipping method belongs to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + shippingZone( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ShippingZone + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Represents a shipping zone in the shop. Zones are the concept used only for grouping shipping methods in the dashboard, and are never exposed to the customers directly. +""" +type ShippingZone implements Node & ObjectWithMetadata { + """ + List of channels for shipping zone. + """ + channels: [Channel!]! + + """ + List of countries available for the method. + """ + countries: [CountryDisplay!]! + default: Boolean! + + """ + Description of a shipping zone. + """ + description: String + id: ID! + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + name: String! + + """ + Lowest and highest prices for the shipping. + """ + priceRange: MoneyRange + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of shipping methods available for orders shipped to countries within this shipping zone. + """ + shippingMethods: [ShippingMethodType!] + + """ + List of warehouses for shipping zone. + """ + warehouses: [Warehouse!]! +} + +""" +Deletes shipping zones. + +Requires one of the following permissions: MANAGE_SHIPPING. +""" +type ShippingZoneBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + errors: [ShippingError!]! + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type ShippingZoneCountableConnection { + edges: [ShippingZoneCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type ShippingZoneCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ShippingZone! +} + +""" +Creates a new shipping zone. + +Requires one of the following permissions: MANAGE_SHIPPING. +""" +type ShippingZoneCreate { + errors: [ShippingError!]! + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + shippingZone: ShippingZone +} + +input ShippingZoneCreateInput { + """ + List of channels to assign to the shipping zone. + """ + addChannels: [ID!] + + """ + List of warehouses to assign to a shipping zone + """ + addWarehouses: [ID!] + + """ + List of countries in this shipping zone. + """ + countries: [String!] + + """ + Default shipping zone will be used for countries not covered by other zones. + """ + default: Boolean + + """ + Description of the shipping zone. + """ + description: String + + """ + Shipping zone's name. Visible only to the staff. + """ + name: String +} + +type ShippingZoneCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The shipping zone the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + shippingZone( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ShippingZone + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Deletes a shipping zone. + +Requires one of the following permissions: MANAGE_SHIPPING. +""" +type ShippingZoneDelete { + errors: [ShippingError!]! + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + shippingZone: ShippingZone +} + +type ShippingZoneDeleted implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The shipping zone the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + shippingZone( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ShippingZone + + """ + Saleor version that triggered the event. + """ + version: String +} + +input ShippingZoneFilterInput { + channels: [ID!] + search: String +} + +""" +Updates a new shipping zone. + +Requires one of the following permissions: MANAGE_SHIPPING. +""" +type ShippingZoneUpdate { + errors: [ShippingError!]! + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + shippingZone: ShippingZone +} + +input ShippingZoneUpdateInput { + """ + List of channels to assign to the shipping zone. + """ + addChannels: [ID!] + + """ + List of warehouses to assign to a shipping zone + """ + addWarehouses: [ID!] + + """ + List of countries in this shipping zone. + """ + countries: [String!] + + """ + Default shipping zone will be used for countries not covered by other zones. + """ + default: Boolean + + """ + Description of the shipping zone. + """ + description: String + + """ + Shipping zone's name. Visible only to the staff. + """ + name: String + + """ + List of channels to unassign from the shipping zone. + """ + removeChannels: [ID!] + + """ + List of warehouses to unassign from a shipping zone + """ + removeWarehouses: [ID!] +} + +type ShippingZoneUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The shipping zone the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + shippingZone( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ShippingZone + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Represents a shop resource containing general shop data and configuration. +""" +type Shop { + """ + Enable automatic fulfillment for all digital products. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + automaticFulfillmentDigitalProducts: Boolean + + """ + List of available external authentications. + """ + availableExternalAuthentications: [ExternalAuthentication!]! + + """ + List of available payment gateways. + """ + availablePaymentGateways( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + A currency for which gateways will be returned. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `channel` argument instead. + """ + currency: String + ): [PaymentGateway!]! + + """ + Shipping methods that are available for the shop. + """ + availableShippingMethods( + """ + Address for which available shipping methods should be returned. + """ + address: AddressInput + + """ + Slug of a channel for which the data should be returned. + """ + channel: String! + ): [ShippingMethod!] + + """ + List of all currencies supported by shop's channels. + + Added in Saleor 3.1. + + Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP. + """ + channelCurrencies: [String!]! + + """ + Charge taxes on shipping. + """ + chargeTaxesOnShipping: Boolean! + + """ + Company address. + """ + companyAddress: Address + + """ + List of countries available in the shop. + """ + countries( + """ + Filtering options for countries + """ + filter: CountryFilterInput + + """ + A language code to return the translation for. + + DEPRECATED: this field will be removed in Saleor 4.0. + """ + languageCode: LanguageCodeEnum + ): [CountryDisplay!]! + + """ + URL of a view where customers can set their password. + """ + customerSetPasswordUrl: String + + """ + Shop's default country. + """ + defaultCountry: CountryDisplay + + """ + Default number of max downloads per digital content URL. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + defaultDigitalMaxDownloads: Int + + """ + Default number of days which digital content URL will be valid. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + defaultDigitalUrlValidDays: Int + + """ + Default shop's email sender's address. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + defaultMailSenderAddress: String + + """ + Default shop's email sender's name. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + defaultMailSenderName: String + + """ + Default weight unit. + """ + defaultWeightUnit: WeightUnitsEnum + + """ + Shop's description. + """ + description: String + + """ + Display prices with tax in store. + """ + displayGrossPrices: Boolean! + + """ + Shop's domain data. + """ + domain: Domain! + + """ + Allow to approve fulfillments which are unpaid. + + Added in Saleor 3.1. + """ + fulfillmentAllowUnpaid: Boolean! + + """ + Automatically approve all new fulfillments. + + Added in Saleor 3.1. + """ + fulfillmentAutoApprove: Boolean! + + """ + Header text. + """ + headerText: String + + """ + Include taxes in prices. + """ + includeTaxesInPrices: Boolean! + + """ + List of the shops's supported languages. + """ + languages: [LanguageDisplay!]! + + """ + Default number of maximum line quantity in single checkout (per single checkout line). + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + limitQuantityPerCheckout: Int + + """ + Resource limitations and current usage if any set for a shop + + Requires one of the following permissions: AUTHENTICATED_STAFF_USER. + """ + limits: LimitInfo! + + """ + Shop's name. + """ + name: String! + + """ + List of available permissions. + """ + permissions: [Permission!]! + + """ + List of possible phone prefixes. + """ + phonePrefixes: [String!]! + + """ + Default number of minutes stock will be reserved for anonymous checkout or null when stock reservation is disabled. + + Added in Saleor 3.1. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + reserveStockDurationAnonymousUser: Int + + """ + Default number of minutes stock will be reserved for authenticated checkout or null when stock reservation is disabled. + + Added in Saleor 3.1. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + reserveStockDurationAuthenticatedUser: Int + + """ + List of staff notification recipients. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + staffNotificationRecipients: [StaffNotificationRecipient!] + + """ + Enable inventory tracking. + """ + trackInventoryByDefault: Boolean + + """ + Returns translated shop fields for the given language code. + """ + translation( + """ + A language code to return the translation for shop. + """ + languageCode: LanguageCodeEnum! + ): ShopTranslation + + """ + Saleor API version. + + Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP. + """ + version: String! +} + +""" +Update the shop's address. If the `null` value is passed, the currently selected address will be deleted. + +Requires one of the following permissions: MANAGE_SETTINGS. +""" +type ShopAddressUpdate { + errors: [ShopError!]! + + """ + Updated shop. + """ + shop: Shop + shopErrors: [ShopError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Updates site domain of the shop. + +Requires one of the following permissions: MANAGE_SETTINGS. +""" +type ShopDomainUpdate { + errors: [ShopError!]! + + """ + Updated shop. + """ + shop: Shop + shopErrors: [ShopError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type ShopError { + """ + The error code. + """ + code: ShopErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String +} + +""" +An enumeration. +""" +enum ShopErrorCode { + ALREADY_EXISTS + CANNOT_FETCH_TAX_RATES + GRAPHQL_ERROR + INVALID + NOT_FOUND + REQUIRED + UNIQUE +} + +""" +Fetch tax rates. + +Requires one of the following permissions: MANAGE_SETTINGS. +""" +type ShopFetchTaxRates { + errors: [ShopError!]! + + """ + Updated shop. + """ + shop: Shop + shopErrors: [ShopError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input ShopSettingsInput { + """ + Enable automatic fulfillment for all digital products. + """ + automaticFulfillmentDigitalProducts: Boolean + + """ + Charge taxes on shipping. + """ + chargeTaxesOnShipping: Boolean + + """ + URL of a view where customers can set their password. + """ + customerSetPasswordUrl: String + + """ + Default number of max downloads per digital content URL. + """ + defaultDigitalMaxDownloads: Int + + """ + Default number of days which digital content URL will be valid. + """ + defaultDigitalUrlValidDays: Int + + """ + Default email sender's address. + """ + defaultMailSenderAddress: String + + """ + Default email sender's name. + """ + defaultMailSenderName: String + + """ + Default weight unit. + """ + defaultWeightUnit: WeightUnitsEnum + + """ + SEO description. + """ + description: String + + """ + Display prices with tax in store. + """ + displayGrossPrices: Boolean + + """ + Enable ability to approve fulfillments which are unpaid. + + Added in Saleor 3.1. + """ + fulfillmentAllowUnpaid: Boolean + + """ + Enable automatic approval of all new fulfillments. + + Added in Saleor 3.1. + """ + fulfillmentAutoApprove: Boolean + + """ + Header text. + """ + headerText: String + + """ + Include taxes in prices. + """ + includeTaxesInPrices: Boolean + + """ + Default number of maximum line quantity in single checkout. Minimum possible value is 1, default value is 50. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + limitQuantityPerCheckout: Int + + """ + Default number of minutes stock will be reserved for anonymous checkout. Enter 0 or null to disable. + + Added in Saleor 3.1. + """ + reserveStockDurationAnonymousUser: Int + + """ + Default number of minutes stock will be reserved for authenticated checkout. Enter 0 or null to disable. + + Added in Saleor 3.1. + """ + reserveStockDurationAuthenticatedUser: Int + + """ + Enable inventory tracking. + """ + trackInventoryByDefault: Boolean +} + +""" +Creates/updates translations for shop settings. + +Requires one of the following permissions: MANAGE_TRANSLATIONS. +""" +type ShopSettingsTranslate { + errors: [TranslationError!]! + + """ + Updated shop settings. + """ + shop: Shop + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input ShopSettingsTranslationInput { + description: String + headerText: String +} + +""" +Updates shop settings. + +Requires one of the following permissions: MANAGE_SETTINGS. +""" +type ShopSettingsUpdate { + errors: [ShopError!]! + + """ + Updated shop. + """ + shop: Shop + shopErrors: [ShopError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type ShopTranslation implements Node { + description: String! + headerText: String! + id: ID! + + """ + Translation language. + """ + language: LanguageDisplay! +} + +input SiteDomainInput { + """ + Domain name for shop. + """ + domain: String + + """ + Shop site name. + """ + name: String +} + +""" +Deletes staff users. + +Requires one of the following permissions: MANAGE_STAFF. +""" +type StaffBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + errors: [StaffError!]! + staffErrors: [StaffError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Creates a new staff user. + +Requires one of the following permissions: MANAGE_STAFF. +""" +type StaffCreate { + errors: [StaffError!]! + staffErrors: [StaffError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + user: User +} + +input StaffCreateInput { + """ + List of permission group IDs to which user should be assigned. + """ + addGroups: [ID!] + + """ + The unique email address of the user. + """ + email: String + + """ + Given name. + """ + firstName: String + + """ + User account is active. + """ + isActive: Boolean + + """ + Family name. + """ + lastName: String + + """ + A note about the user. + """ + note: String + + """ + URL of a view where users should be redirected to set the password. URL in RFC 1808 format. + """ + redirectUrl: String +} + +""" +Deletes a staff user. + +Requires one of the following permissions: MANAGE_STAFF. +""" +type StaffDelete { + errors: [StaffError!]! + staffErrors: [StaffError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + user: User +} + +type StaffError { + """ + A type of address that causes the error. + """ + addressType: AddressTypeEnum + + """ + The error code. + """ + code: AccountErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + List of permission group IDs which cause the error. + """ + groups: [ID!] + + """ + The error message. + """ + message: String + + """ + List of permissions which causes the error. + """ + permissions: [PermissionEnum!] + + """ + List of user IDs which causes the error. + """ + users: [ID!] +} + +enum StaffMemberStatus { + """ + User account has been activated. + """ + ACTIVE + + """ + User account has not been activated yet. + """ + DEACTIVATED +} + +""" +Represents a recipient of email notifications send by Saleor, such as notifications about new orders. Notifications can be assigned to staff users or arbitrary email addresses. +""" +type StaffNotificationRecipient implements Node { + """ + Determines if a notification active. + """ + active: Boolean + + """ + Returns email address of a user subscribed to email notifications. + """ + email: String + id: ID! + + """ + Returns a user subscribed to email notifications. + """ + user: User +} + +""" +Creates a new staff notification recipient. + +Requires one of the following permissions: MANAGE_SETTINGS. +""" +type StaffNotificationRecipientCreate { + errors: [ShopError!]! + shopErrors: [ShopError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + staffNotificationRecipient: StaffNotificationRecipient +} + +""" +Delete staff notification recipient. + +Requires one of the following permissions: MANAGE_SETTINGS. +""" +type StaffNotificationRecipientDelete { + errors: [ShopError!]! + shopErrors: [ShopError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + staffNotificationRecipient: StaffNotificationRecipient +} + +input StaffNotificationRecipientInput { + """ + Determines if a notification active. + """ + active: Boolean + + """ + Email address of a user subscribed to email notifications. + """ + email: String + + """ + The ID of the user subscribed to email notifications.. + """ + user: ID +} + +""" +Updates a staff notification recipient. + +Requires one of the following permissions: MANAGE_SETTINGS. +""" +type StaffNotificationRecipientUpdate { + errors: [ShopError!]! + shopErrors: [ShopError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + staffNotificationRecipient: StaffNotificationRecipient +} + +""" +Updates an existing staff user. + +Requires one of the following permissions: MANAGE_STAFF. +""" +type StaffUpdate { + errors: [StaffError!]! + staffErrors: [StaffError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + user: User +} + +input StaffUpdateInput { + """ + List of permission group IDs to which user should be assigned. + """ + addGroups: [ID!] + + """ + The unique email address of the user. + """ + email: String + + """ + Given name. + """ + firstName: String + + """ + User account is active. + """ + isActive: Boolean + + """ + Family name. + """ + lastName: String + + """ + A note about the user. + """ + note: String + + """ + List of permission group IDs from which user should be unassigned. + """ + removeGroups: [ID!] +} + +input StaffUserInput { + ids: [ID!] + search: String + status: StaffMemberStatus +} + +""" +Represents stock. +""" +type Stock implements Node { + id: ID! + productVariant: ProductVariant! + + """ + Quantity of a product in the warehouse's possession, including the allocated stock that is waiting for shipment. + + Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. + """ + quantity: Int! + + """ + Quantity allocated for orders. + + Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. + """ + quantityAllocated: Int! + + """ + Quantity reserved for checkouts. + + Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. + """ + quantityReserved: Int! + warehouse: Warehouse! +} + +enum StockAvailability { + IN_STOCK + OUT_OF_STOCK +} + +type StockCountableConnection { + edges: [StockCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type StockCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Stock! +} + +type StockError { + """ + The error code. + """ + code: StockErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String +} + +""" +An enumeration. +""" +enum StockErrorCode { + ALREADY_EXISTS + GRAPHQL_ERROR + INVALID + NOT_FOUND + REQUIRED + UNIQUE +} + +input StockFilterInput { + """ + """ + quantity: Float + search: String +} + +input StockInput { + """ + Quantity of items available for sell. + """ + quantity: Int! + + """ + Warehouse in which stock is located. + """ + warehouse: ID! +} + +""" +Enum representing the type of a payment storage in a gateway. +""" +enum StorePaymentMethodEnum { + """ + Storage is disabled. The payment is not stored. + """ + NONE + + """ + Off session storage type. The payment is stored to be reused even if the customer is absent. + """ + OFF_SESSION + + """ + On session storage type. The payment is stored only to be reused when the customer is present in the checkout flow. + """ + ON_SESSION +} + +type Subscription { + """ + Look up subscription event. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + event: Event +} + +""" +Representation of tax types fetched from tax gateway. +""" +type TaxType { + """ + Description of the tax type. + """ + description: String + + """ + External tax code used to identify given tax group. + """ + taxCode: String +} + +""" +Represents a monetary value with taxes. In cases where taxes were not applied, net and gross values will be equal. +""" +type TaxedMoney { + """ + Currency code. + """ + currency: String! + + """ + Amount of money including taxes. + """ + gross: Money! + + """ + Amount of money without taxes. + """ + net: Money! + + """ + Amount of taxes. + """ + tax: Money! +} + +""" +Represents a range of monetary values. +""" +type TaxedMoneyRange { + """ + Lower bound of a price range. + """ + start: TaxedMoney + + """ + Upper bound of a price range. + """ + stop: TaxedMoney +} + +type TimePeriod { + """ + The length of the period. + """ + amount: Int! + + """ + The type of the period. + """ + type: TimePeriodTypeEnum! +} + +input TimePeriodInputType { + """ + The length of the period. + """ + amount: Int! + + """ + The type of the period. + """ + type: TimePeriodTypeEnum! +} + +""" +An enumeration. +""" +enum TimePeriodTypeEnum { + DAY + MONTH + WEEK + YEAR +} + +""" +An object representing a single payment. +""" +type Transaction implements Node { + """ + Total amount of the transaction. + """ + amount: Money + created: DateTime! + error: String + gatewayResponse: JSONString! + id: ID! + isSuccess: Boolean! + kind: TransactionKind! + payment: Payment! + token: String! +} + +type TransactionAction { + """ + Determines the action type. + """ + actionType: TransactionActionEnum! + + """ + Transaction request amount. Null when action type is VOID. + """ + amount: PositiveDecimal +} + +""" +Represents possible actions on payment transaction. + + The following actions are possible: + CHARGE - Represents the charge action. + REFUND - Represents a refund action. + VOID - Represents a void action. +""" +enum TransactionActionEnum { + CHARGE + REFUND + VOID +} + +type TransactionActionRequest implements Event { + """ + Requested action data. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + action: TransactionAction! + + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Look up a transaction. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + transaction: TransactionItem + + """ + Saleor version that triggered the event. + """ + version: String +} + +""" +Create transaction for checkout or order. Requires the following permissions: AUTHENTICATED_APP and HANDLE_PAYMENTS. + +Added in Saleor 3.4. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. +""" +type TransactionCreate { + errors: [TransactionCreateError!]! + transaction: TransactionItem +} + +type TransactionCreateError { + """ + The error code. + """ + code: TransactionCreateErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String +} + +""" +An enumeration. +""" +enum TransactionCreateErrorCode { + GRAPHQL_ERROR + INCORRECT_CURRENCY + INVALID + METADATA_KEY_REQUIRED + NOT_FOUND +} + +input TransactionCreateInput { + """ + Amount authorized by this transaction. + """ + amountAuthorized: MoneyInput + + """ + Amount charged by this transaction. + """ + amountCharged: MoneyInput + + """ + Amount refunded by this transaction. + """ + amountRefunded: MoneyInput + + """ + Amount voided by this transaction. + """ + amountVoided: MoneyInput + + """ + List of all possible actions for the transaction + """ + availableActions: [TransactionActionEnum!] + + """ + Payment public metadata. + """ + metadata: [MetadataInput!] + + """ + Payment private metadata. + """ + privateMetadata: [MetadataInput!] + + """ + Reference of the transaction. + """ + reference: String + + """ + Status of the transaction. + """ + status: String! + + """ + Payment type used for this transaction. + """ + type: String! +} + +""" +Represents transaction's event. +""" +type TransactionEvent implements Node { + createdAt: DateTime! + + """ + The ID of the object. + """ + id: ID! + + """ + Name of the transaction's event. + """ + name: String + + """ + Reference of transaction's event. + """ + reference: String! + + """ + Status of transaction's event. + """ + status: TransactionStatus! +} + +input TransactionEventInput { + """ + Name of the transaction. + """ + name: String + + """ + Reference of the transaction. + """ + reference: String + + """ + Current status of the payment transaction. + """ + status: TransactionStatus! +} + +""" +Represents a payment transaction. + +Added in Saleor 3.4. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. +""" +type TransactionItem implements Node & ObjectWithMetadata { + """ + List of actions that can be performed in the current state of a payment. + """ + actions: [TransactionActionEnum!]! + + """ + Total amount authorized for this payment. + """ + authorizedAmount: Money! + + """ + Total amount charged for this payment. + """ + chargedAmount: Money! + createdAt: DateTime! + + """ + List of all transaction's events. + """ + events: [TransactionEvent!]! + + """ + The ID of the object. + """ + id: ID! + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + modifiedAt: DateTime! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + Reference of transaction. + """ + reference: String! + + """ + Total amount refunded for this payment. + """ + refundedAmount: Money! + + """ + Status of transaction. + """ + status: String! + + """ + Type of transaction. + """ + type: String! + + """ + Total amount voided for this payment. + """ + voidedAmount: Money! +} + +""" +An enumeration. +""" +enum TransactionKind { + ACTION_TO_CONFIRM + AUTH + CANCEL + CAPTURE + CONFIRM + EXTERNAL + PENDING + REFUND + REFUND_ONGOING + VOID +} + +""" +Request an action for payment transaction. + +Added in Saleor 3.4. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. + +Requires one of the following permissions: HANDLE_PAYMENTS, MANAGE_ORDERS. +""" +type TransactionRequestAction { + errors: [TransactionRequestActionError!]! + transaction: TransactionItem +} + +type TransactionRequestActionError { + """ + The error code. + """ + code: TransactionRequestActionErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String +} + +""" +An enumeration. +""" +enum TransactionRequestActionErrorCode { + GRAPHQL_ERROR + INVALID + MISSING_TRANSACTION_ACTION_REQUEST_WEBHOOK + NOT_FOUND +} + +""" +An enumeration. +""" +enum TransactionStatus { + FAILURE + PENDING + SUCCESS +} + +""" +Create transaction for checkout or order. Requires the following permissions: AUTHENTICATED_APP and HANDLE_PAYMENTS. + +Added in Saleor 3.4. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. +""" +type TransactionUpdate { + errors: [TransactionUpdateError!]! + transaction: TransactionItem +} + +type TransactionUpdateError { + """ + The error code. + """ + code: TransactionUpdateErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String +} + +""" +An enumeration. +""" +enum TransactionUpdateErrorCode { + GRAPHQL_ERROR + INCORRECT_CURRENCY + INVALID + METADATA_KEY_REQUIRED + NOT_FOUND +} + +input TransactionUpdateInput { + """ + Amount authorized by this transaction. + """ + amountAuthorized: MoneyInput + + """ + Amount charged by this transaction. + """ + amountCharged: MoneyInput + + """ + Amount refunded by this transaction. + """ + amountRefunded: MoneyInput + + """ + Amount voided by this transaction. + """ + amountVoided: MoneyInput + + """ + List of all possible actions for the transaction + """ + availableActions: [TransactionActionEnum!] + + """ + Payment public metadata. + """ + metadata: [MetadataInput!] + + """ + Payment private metadata. + """ + privateMetadata: [MetadataInput!] + + """ + Reference of the transaction. + """ + reference: String + + """ + Status of the transaction. + """ + status: String + + """ + Payment type used for this transaction. + """ + type: String +} + +union TranslatableItem = + AttributeTranslatableContent + | AttributeValueTranslatableContent + | CategoryTranslatableContent + | CollectionTranslatableContent + | MenuItemTranslatableContent + | PageTranslatableContent + | ProductTranslatableContent + | ProductVariantTranslatableContent + | SaleTranslatableContent + | ShippingMethodTranslatableContent + | VoucherTranslatableContent + +type TranslatableItemConnection { + edges: [TranslatableItemEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type TranslatableItemEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: TranslatableItem! +} + +enum TranslatableKinds { + ATTRIBUTE + ATTRIBUTE_VALUE + CATEGORY + COLLECTION + MENU_ITEM + PAGE + PRODUCT + SALE + SHIPPING_METHOD + VARIANT + VOUCHER +} + +type TranslationCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The translation the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + translation: TranslationTypes + + """ + Saleor version that triggered the event. + """ + version: String +} + +type TranslationError { + """ + The error code. + """ + code: TranslationErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String +} + +""" +An enumeration. +""" +enum TranslationErrorCode { + GRAPHQL_ERROR + INVALID + NOT_FOUND + REQUIRED +} + +input TranslationInput { + """ + Translated description. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + name: String + seoDescription: String + seoTitle: String +} + +union TranslationTypes = + AttributeTranslation + | AttributeValueTranslation + | CategoryTranslation + | CollectionTranslation + | MenuItemTranslation + | PageTranslation + | ProductTranslation + | ProductVariantTranslation + | SaleTranslation + | ShippingMethodTranslation + | VoucherTranslation + +type TranslationUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The translation the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + translation: TranslationTypes + + """ + Saleor version that triggered the event. + """ + version: String +} + +scalar UUID + +input UpdateInvoiceInput { + """ + Invoice number + """ + number: String + + """ + URL of an invoice to download. + """ + url: String +} + +""" +Updates metadata of an object. To use it, you need to have access to the modified object. +""" +type UpdateMetadata { + errors: [MetadataError!]! + item: ObjectWithMetadata + metadataErrors: [MetadataError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Updates private metadata of an object. To use it, you need to be an authenticated staff user or an app and have access to the modified object. +""" +type UpdatePrivateMetadata { + errors: [MetadataError!]! + item: ObjectWithMetadata + metadataErrors: [MetadataError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Variables of this type must be set to null in mutations. They will be replaced with a filename from a following multipart part containing a binary file. See: https://github.com/jaydenseric/graphql-multipart-request-spec. +""" +scalar Upload + +type UploadError { + """ + The error code. + """ + code: UploadErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String +} + +""" +An enumeration. +""" +enum UploadErrorCode { + GRAPHQL_ERROR +} + +""" +Represents user data. +""" +type User implements Node & ObjectWithMetadata { + """ + List of all user's addresses. + """ + addresses: [Address!] + avatar( + """ + Size of the avatar. + """ + size: Int + ): Image + + """ + Returns the last open checkout of this user. + """ + checkout: Checkout + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `checkoutTokens` field to fetch the user checkouts." + ) + + """ + Returns the checkout ID's assigned to this user. + """ + checkoutIds( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): [ID!] + + """ + Returns the checkout UUID's assigned to this user. + """ + checkoutTokens( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): [UUID!] + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `checkoutIds` instead.") + dateJoined: DateTime! + defaultBillingAddress: Address + defaultShippingAddress: Address + + """ + List of user's permission groups which user can manage. + """ + editableGroups: [Group!] + email: String! + + """ + List of events associated with the user. + + Requires one of the following permissions: MANAGE_USERS, MANAGE_STAFF. + """ + events: [CustomerEvent!] + firstName: String! + + """ + List of the user gift cards. + """ + giftCards( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): GiftCardCountableConnection + id: ID! + isActive: Boolean! + isStaff: Boolean! + + """ + User language code. + """ + languageCode: LanguageCodeEnum! + lastLogin: DateTime + lastName: String! + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + + """ + A note about the customer. + + Requires one of the following permissions: MANAGE_USERS, MANAGE_STAFF. + """ + note: String + + """ + List of user's orders. Requires one of the following permissions: MANAGE_STAFF, OWNER. + """ + orders( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): OrderCountableConnection + + """ + List of user's permission groups. + """ + permissionGroups: [Group!] + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of stored payment sources. + """ + storedPaymentSources( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): [PaymentSource!] + updatedAt: DateTime! + + """ + List of user's permissions. + """ + userPermissions: [UserPermission!] +} + +""" +Deletes a user avatar. Only for staff members. + +Requires one of the following permissions: AUTHENTICATED_STAFF_USER. +""" +type UserAvatarDelete { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + + """ + An updated user instance. + """ + user: User +} + +""" +Create a user avatar. Only for staff members. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + +Requires one of the following permissions: AUTHENTICATED_STAFF_USER. +""" +type UserAvatarUpdate { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + + """ + An updated user instance. + """ + user: User +} + +""" +Activate or deactivate users. + +Requires one of the following permissions: MANAGE_USERS. +""" +type UserBulkSetActive { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + + """ + Returns how many objects were affected. + """ + count: Int! + errors: [AccountError!]! +} + +type UserCountableConnection { + edges: [UserCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type UserCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: User! +} + +input UserCreateInput { + """ + Slug of a channel which will be used for notify user. Optional when only one channel exists. + """ + channel: String + + """ + Billing address of the customer. + """ + defaultBillingAddress: AddressInput + + """ + Shipping address of the customer. + """ + defaultShippingAddress: AddressInput + + """ + The unique email address of the user. + """ + email: String + + """ + Given name. + """ + firstName: String + + """ + User account is active. + """ + isActive: Boolean + + """ + User language code. + """ + languageCode: LanguageCodeEnum + + """ + Family name. + """ + lastName: String + + """ + A note about the user. + """ + note: String + + """ + URL of a view where users should be redirected to set the password. URL in RFC 1808 format. + """ + redirectUrl: String +} + +type UserPermission { + """ + Internal code for permission. + """ + code: PermissionEnum! + + """ + Describe action(s) allowed to do by permission. + """ + name: String! + + """ + List of user permission groups which contains this permission. + """ + sourcePermissionGroups( + """ + ID of user whose groups should be returned. + """ + userId: ID! + ): [Group!] +} + +enum UserSortField { + """ + Sort users by created at. + """ + CREATED_AT + + """ + Sort users by email. + """ + EMAIL + + """ + Sort users by first name. + """ + FIRST_NAME + + """ + Sort users by last modified at. + """ + LAST_MODIFIED_AT + + """ + Sort users by last name. + """ + LAST_NAME + + """ + Sort users by order count. + """ + ORDER_COUNT +} + +input UserSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort users by the selected field. + """ + field: UserSortField! +} + +""" +Represents a VAT rate for a country. +""" +type VAT { + """ + Country code. + """ + countryCode: String! + + """ + Country's VAT rate exceptions for specific types of goods. + """ + reducedRates: [ReducedRate!]! + + """ + Standard VAT rate in percent. + """ + standardRate: Float +} + +enum VariantAttributeScope { + ALL + NOT_VARIANT_SELECTION + VARIANT_SELECTION +} + +""" +Assign an media to a product variant. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type VariantMediaAssign { + errors: [ProductError!]! + media: ProductMedia + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productVariant: ProductVariant +} + +""" +Unassign an media from a product variant. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type VariantMediaUnassign { + errors: [ProductError!]! + media: ProductMedia + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + productVariant: ProductVariant +} + +""" +Represents availability of a variant in the storefront. +""" +type VariantPricingInfo { + """ + The discount amount if in sale (null otherwise). + """ + discount: TaxedMoney + + """ + The discount amount in the local currency. + """ + discountLocalCurrency: TaxedMoney + + """ + Whether it is in sale or not. + """ + onSale: Boolean + + """ + The price, with any discount subtracted. + """ + price: TaxedMoney + + """ + The discounted price in the local currency. + """ + priceLocalCurrency: TaxedMoney + + """ + The price without any discount. + """ + priceUndiscounted: TaxedMoney +} + +""" +Verify JWT token. +""" +type VerifyToken { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + + """ + Determine if token is valid or not. + """ + isValid: Boolean! + + """ + JWT payload. + """ + payload: GenericScalar + + """ + User assigned to token. + """ + user: User +} + +""" +An enumeration. +""" +enum VolumeUnitsEnum { + ACRE_FT + ACRE_IN + CUBIC_CENTIMETER + CUBIC_DECIMETER + CUBIC_FOOT + CUBIC_INCH + CUBIC_METER + CUBIC_MILLIMETER + CUBIC_YARD + FL_OZ + LITER + PINT + QT +} + +""" +Vouchers allow giving discounts to particular customers on categories, collections or specific products. They can be used during checkout by providing valid voucher codes. +""" +type Voucher implements Node & ObjectWithMetadata { + applyOncePerCustomer: Boolean! + applyOncePerOrder: Boolean! + + """ + List of categories this voucher applies to. + """ + categories( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): CategoryCountableConnection + + """ + List of availability in channels for the voucher. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + channelListings: [VoucherChannelListing!] + code: String! + + """ + List of collections this voucher applies to. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + collections( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): CollectionCountableConnection + + """ + List of countries available for the shipping voucher. + """ + countries: [CountryDisplay!] + + """ + Currency code for voucher. + """ + currency: String + + """ + Voucher value. + """ + discountValue: Float + + """ + Determines a type of discount for voucher - value or percentage + """ + discountValueType: DiscountValueTypeEnum! + endDate: DateTime + id: ID! + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + minCheckoutItemsQuantity: Int + + """ + Minimum order value to apply voucher. + """ + minSpent: Money + name: String + onlyForStaff: Boolean! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of products this voucher applies to. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + products( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ProductCountableConnection + startDate: DateTime! + + """ + Returns translated voucher fields for the given language code. + """ + translation( + """ + A language code to return the translation for voucher. + """ + languageCode: LanguageCodeEnum! + ): VoucherTranslation + + """ + Determines a type of voucher. + """ + type: VoucherTypeEnum! + usageLimit: Int + used: Int! + + """ + List of product variants this voucher applies to. + + Added in Saleor 3.1. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + variants( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ProductVariantCountableConnection +} + +""" +Adds products, categories, collections to a voucher. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type VoucherAddCatalogues { + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! + + """ + Voucher of which catalogue IDs will be modified. + """ + voucher: Voucher +} + +""" +Deletes vouchers. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type VoucherBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! +} + +""" +Represents voucher channel listing. +""" +type VoucherChannelListing implements Node { + channel: Channel! + currency: String! + discountValue: Float! + id: ID! + minSpent: Money +} + +input VoucherChannelListingAddInput { + """ + ID of a channel. + """ + channelId: ID! + + """ + Value of the voucher. + """ + discountValue: PositiveDecimal + + """ + Min purchase amount required to apply the voucher. + """ + minAmountSpent: PositiveDecimal +} + +input VoucherChannelListingInput { + """ + List of channels to which the voucher should be assigned. + """ + addChannels: [VoucherChannelListingAddInput!] + + """ + List of channels from which the voucher should be unassigned. + """ + removeChannels: [ID!] +} + +""" +Manage voucher's availability in channels. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type VoucherChannelListingUpdate { + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! + + """ + An updated voucher instance. + """ + voucher: Voucher +} + +type VoucherCountableConnection { + edges: [VoucherCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type VoucherCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Voucher! +} + +""" +Creates a new voucher. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type VoucherCreate { + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! + voucher: Voucher +} + +type VoucherCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The voucher the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + voucher( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Voucher +} + +""" +Deletes a voucher. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type VoucherDelete { + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! + voucher: Voucher +} + +type VoucherDeleted implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The voucher the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + voucher( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Voucher +} + +enum VoucherDiscountType { + FIXED + PERCENTAGE + SHIPPING +} + +input VoucherFilterInput { + discountType: [VoucherDiscountType!] + metadata: [MetadataFilter!] + search: String + started: DateTimeRangeInput + status: [DiscountStatusEnum!] + timesUsed: IntRangeInput +} + +input VoucherInput { + """ + Voucher should be applied once per customer. + """ + applyOncePerCustomer: Boolean + + """ + Voucher should be applied to the cheapest item or entire order. + """ + applyOncePerOrder: Boolean + + """ + Categories discounted by the voucher. + """ + categories: [ID!] + + """ + Code to use the voucher. + """ + code: String + + """ + Collections discounted by the voucher. + """ + collections: [ID!] + + """ + Country codes that can be used with the shipping voucher. + """ + countries: [String!] + + """ + Choices: fixed or percentage. + """ + discountValueType: DiscountValueTypeEnum + + """ + End date of the voucher in ISO 8601 format. + """ + endDate: DateTime + + """ + Minimal quantity of checkout items required to apply the voucher. + """ + minCheckoutItemsQuantity: Int + + """ + Voucher name. + """ + name: String + + """ + Voucher can be used only by staff user. + """ + onlyForStaff: Boolean + + """ + Products discounted by the voucher. + """ + products: [ID!] + + """ + Start date of the voucher in ISO 8601 format. + """ + startDate: DateTime + + """ + Voucher type: PRODUCT, CATEGORY SHIPPING or ENTIRE_ORDER. + """ + type: VoucherTypeEnum + + """ + Limit number of times this voucher can be used in total. + """ + usageLimit: Int + + """ + Variants discounted by the voucher. + + Added in Saleor 3.1. + """ + variants: [ID!] +} + +""" +Removes products, categories, collections from a voucher. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type VoucherRemoveCatalogues { + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! + + """ + Voucher of which catalogue IDs will be modified. + """ + voucher: Voucher +} + +enum VoucherSortField { + """ + Sort vouchers by code. + """ + CODE + + """ + Sort vouchers by end date. + """ + END_DATE + + """ + Sort vouchers by minimum spent amount. + + This option requires a channel filter to work as the values can vary between channels. + """ + MINIMUM_SPENT_AMOUNT + + """ + Sort vouchers by start date. + """ + START_DATE + + """ + Sort vouchers by type. + """ + TYPE + + """ + Sort vouchers by usage limit. + """ + USAGE_LIMIT + + """ + Sort vouchers by value. + + This option requires a channel filter to work as the values can vary between channels. + """ + VALUE +} + +input VoucherSortingInput { + """ + Specifies the channel in which to sort the data. + + DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. + """ + channel: String + + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort vouchers by the selected field. + """ + field: VoucherSortField! +} + +type VoucherTranslatableContent implements Node { + id: ID! + name: String + + """ + Returns translated voucher fields for the given language code. + """ + translation( + """ + A language code to return the translation for voucher. + """ + languageCode: LanguageCodeEnum! + ): VoucherTranslation + + """ + Vouchers allow giving discounts to particular customers on categories, collections or specific products. They can be used during checkout by providing valid voucher codes. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + voucher: Voucher + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) +} + +""" +Creates/updates translations for a voucher. + +Requires one of the following permissions: MANAGE_TRANSLATIONS. +""" +type VoucherTranslate { + errors: [TranslationError!]! + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + voucher: Voucher +} + +type VoucherTranslation implements Node { + id: ID! + + """ + Translation language. + """ + language: LanguageDisplay! + name: String +} + +enum VoucherTypeEnum { + ENTIRE_ORDER + SHIPPING + SPECIFIC_PRODUCT +} + +""" +Updates a voucher. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type VoucherUpdate { + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! + voucher: Voucher +} + +type VoucherUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The voucher the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + voucher( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Voucher +} + +""" +Represents warehouse. +""" +type Warehouse implements Node & ObjectWithMetadata { + address: Address! + + """ + Click and collect options: local, all or disabled. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + clickAndCollectOption: WarehouseClickAndCollectOptionEnum! + + """ + Warehouse company name. + """ + companyName: String! + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use `Address.companyName` instead." + ) + email: String! + id: ID! + isPrivate: Boolean! + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + name: String! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + shippingZones( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ShippingZoneCountableConnection! + slug: String! +} + +""" +An enumeration. +""" +enum WarehouseClickAndCollectOptionEnum { + ALL + DISABLED + LOCAL +} + +type WarehouseCountableConnection { + edges: [WarehouseCountableEdge!]! + + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type WarehouseCountableEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Warehouse! +} + +""" +Creates new warehouse. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type WarehouseCreate { + errors: [WarehouseError!]! + warehouse: Warehouse + warehouseErrors: [WarehouseError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input WarehouseCreateInput { + """ + Address of the warehouse. + """ + address: AddressInput! + + """ + The email address of the warehouse. + """ + email: String + + """ + Warehouse name. + """ + name: String! + + """ + Shipping zones supported by the warehouse. + """ + shippingZones: [ID!] + + """ + Warehouse slug. + """ + slug: String +} + +type WarehouseCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The warehouse the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + warehouse: Warehouse +} + +""" +Deletes selected warehouse. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type WarehouseDelete { + errors: [WarehouseError!]! + warehouse: Warehouse + warehouseErrors: [WarehouseError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type WarehouseDeleted implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The warehouse the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + warehouse: Warehouse +} + +type WarehouseError { + """ + The error code. + """ + code: WarehouseErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String +} + +""" +An enumeration. +""" +enum WarehouseErrorCode { + ALREADY_EXISTS + GRAPHQL_ERROR + INVALID + NOT_FOUND + REQUIRED + UNIQUE +} + +input WarehouseFilterInput { + clickAndCollectOption: WarehouseClickAndCollectOptionEnum + ids: [ID!] + isPrivate: Boolean + search: String +} + +""" +Add shipping zone to given warehouse. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type WarehouseShippingZoneAssign { + errors: [WarehouseError!]! + warehouse: Warehouse + warehouseErrors: [WarehouseError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +""" +Remove shipping zone from given warehouse. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type WarehouseShippingZoneUnassign { + errors: [WarehouseError!]! + warehouse: Warehouse + warehouseErrors: [WarehouseError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +enum WarehouseSortField { + """ + Sort warehouses by name. + """ + NAME +} + +input WarehouseSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort warehouses by the selected field. + """ + field: WarehouseSortField! +} + +""" +Updates given warehouse. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type WarehouseUpdate { + errors: [WarehouseError!]! + warehouse: Warehouse + warehouseErrors: [WarehouseError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input WarehouseUpdateInput { + """ + Address of the warehouse. + """ + address: AddressInput + + """ + Click and collect options: local, all or disabled. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + clickAndCollectOption: WarehouseClickAndCollectOptionEnum + + """ + The email address of the warehouse. + """ + email: String + + """ + Visibility of warehouse stocks. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + isPrivate: Boolean + + """ + Warehouse name. + """ + name: String + + """ + Warehouse slug. + """ + slug: String +} + +type WarehouseUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The warehouse the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + warehouse: Warehouse +} + +""" +Webhook. +""" +type Webhook implements Node { + app: App! + + """ + List of asynchronous webhook events. + """ + asyncEvents: [WebhookEventAsync!]! + + """ + Event deliveries. + """ + eventDeliveries( + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Event delivery filter options. + """ + filter: EventDeliveryFilterInput + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + + """ + Event delivery sorter. + """ + sortBy: EventDeliverySortingInput + ): EventDeliveryCountableConnection + + """ + List of webhook events. + """ + events: [WebhookEvent!]! + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use `asyncEvents` or `syncEvents` instead." + ) + id: ID! + + """ + Informs if webhook is activated. + """ + isActive: Boolean! + name: String! + + """ + Used to create a hash signature with each payload. + """ + secretKey: String + + """ + Used to define payloads for specific events. + """ + subscriptionQuery: String + + """ + List of synchronous webhook events. + """ + syncEvents: [WebhookEventSync!]! + + """ + Target URL for webhook. + """ + targetUrl: String! +} + +""" +Creates a new webhook subscription. + +Requires one of the following permissions: MANAGE_APPS, AUTHENTICATED_APP. +""" +type WebhookCreate { + errors: [WebhookError!]! + webhook: Webhook + webhookErrors: [WebhookError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input WebhookCreateInput { + """ + ID of the app to which webhook belongs. + """ + app: ID + + """ + The asynchronous events that webhook wants to subscribe. + """ + asyncEvents: [WebhookEventTypeAsyncEnum!] + + """ + The events that webhook wants to subscribe. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `asyncEvents` or `syncEvents` instead. + """ + events: [WebhookEventTypeEnum!] + + """ + Determine if webhook will be set active or not. + """ + isActive: Boolean + + """ + The name of the webhook. + """ + name: String + + """ + Subscription query used to define a webhook payload. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + query: String + + """ + The secret key used to create a hash signature with each payload. + """ + secretKey: String + + """ + The synchronous events that webhook wants to subscribe. + """ + syncEvents: [WebhookEventTypeSyncEnum!] + + """ + The url to receive the payload. + """ + targetUrl: String +} + +""" +Deletes a webhook subscription. + +Requires one of the following permissions: MANAGE_APPS, AUTHENTICATED_APP. +""" +type WebhookDelete { + errors: [WebhookError!]! + webhook: Webhook + webhookErrors: [WebhookError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +type WebhookError { + """ + The error code. + """ + code: WebhookErrorCode! + + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String +} + +""" +An enumeration. +""" +enum WebhookErrorCode { + GRAPHQL_ERROR + INVALID + NOT_FOUND + REQUIRED + UNIQUE +} + +""" +Webhook event. +""" +type WebhookEvent { + """ + Internal name of the event type. + """ + eventType: WebhookEventTypeEnum! + + """ + Display name of the event. + """ + name: String! +} + +""" +Asynchronous webhook event. +""" +type WebhookEventAsync { + """ + Internal name of the event type. + """ + eventType: WebhookEventTypeAsyncEnum! + + """ + Display name of the event. + """ + name: String! +} + +""" +Synchronous webhook event. +""" +type WebhookEventSync { + """ + Internal name of the event type. + """ + eventType: WebhookEventTypeSyncEnum! + + """ + Display name of the event. + """ + name: String! +} + +""" +Enum determining type of webhook. +""" +enum WebhookEventTypeAsyncEnum { + """ + All the events. + """ + ANY_EVENTS + + """ + An app deleted. + """ + APP_DELETED + + """ + A new app installed. + """ + APP_INSTALLED + + """ + An app status is changed. + """ + APP_STATUS_CHANGED + + """ + An app updated. + """ + APP_UPDATED + + """ + A new category created. + """ + CATEGORY_CREATED + + """ + A category is deleted. + """ + CATEGORY_DELETED + + """ + A category is updated. + """ + CATEGORY_UPDATED + + """ + A new channel created. + """ + CHANNEL_CREATED + + """ + A channel is deleted. + """ + CHANNEL_DELETED + + """ + A channel status is changed. + """ + CHANNEL_STATUS_CHANGED + + """ + A channel is updated. + """ + CHANNEL_UPDATED + + """ + A new checkout is created. + """ + CHECKOUT_CREATED + + """ + A checkout is updated. It also triggers all updates related to the checkout. + """ + CHECKOUT_UPDATED + + """ + A new collection is created. + """ + COLLECTION_CREATED + + """ + A collection is deleted. + """ + COLLECTION_DELETED + + """ + A collection is updated. + """ + COLLECTION_UPDATED + + """ + A new customer account is created. + """ + CUSTOMER_CREATED + + """ + A customer account is updated. + """ + CUSTOMER_UPDATED + DRAFT_ORDER_CREATED + DRAFT_ORDER_DELETED + DRAFT_ORDER_UPDATED + + """ + A fulfillment is cancelled. + """ + FULFILLMENT_CANCELED + + """ + A new fulfillment is created. + """ + FULFILLMENT_CREATED + + """ + A new gift card created. + """ + GIFT_CARD_CREATED + + """ + A gift card is deleted. + """ + GIFT_CARD_DELETED + + """ + A gift card status is changed. + """ + GIFT_CARD_STATUS_CHANGED + + """ + A gift card is updated. + """ + GIFT_CARD_UPDATED + + """ + An invoice is deleted. + """ + INVOICE_DELETED + + """ + An invoice for order requested. + """ + INVOICE_REQUESTED + + """ + Invoice has been sent. + """ + INVOICE_SENT + + """ + A new menu created. + """ + MENU_CREATED + + """ + A menu is deleted. + """ + MENU_DELETED + + """ + A new menu item created. + """ + MENU_ITEM_CREATED + + """ + A menu item is deleted. + """ + MENU_ITEM_DELETED + + """ + A menu item is updated. + """ + MENU_ITEM_UPDATED + + """ + A menu is updated. + """ + MENU_UPDATED + + """ + User notification triggered. + """ + NOTIFY_USER + + """ + An observability event is created. + """ + OBSERVABILITY + + """ + An order is cancelled. + """ + ORDER_CANCELLED + + """ + An order is confirmed (status change unconfirmed -> unfulfilled) by a staff user using the OrderConfirm mutation. It also triggers when the user completes the checkout and the shop setting `automatically_confirm_all_new_orders` is enabled. + """ + ORDER_CONFIRMED + + """ + A new order is placed. + """ + ORDER_CREATED + + """ + An order is fulfilled. + """ + ORDER_FULFILLED + + """ + Payment is made and an order is fully paid. + """ + ORDER_FULLY_PAID + + """ + An order is updated; triggered for all changes related to an order; covers all other order webhooks, except for ORDER_CREATED. + """ + ORDER_UPDATED + + """ + A new page is created. + """ + PAGE_CREATED + + """ + A page is deleted. + """ + PAGE_DELETED + + """ + A page is updated. + """ + PAGE_UPDATED + + """ + A new product is created. + """ + PRODUCT_CREATED + + """ + A product is deleted. + """ + PRODUCT_DELETED + + """ + A product is updated. + """ + PRODUCT_UPDATED + PRODUCT_VARIANT_BACK_IN_STOCK + + """ + A new product variant is created. + """ + PRODUCT_VARIANT_CREATED + + """ + A product variant is deleted. + """ + PRODUCT_VARIANT_DELETED + PRODUCT_VARIANT_OUT_OF_STOCK + + """ + A product variant is updated. + """ + PRODUCT_VARIANT_UPDATED + SALE_CREATED + SALE_DELETED + SALE_UPDATED + + """ + A new shipping price is created. + """ + SHIPPING_PRICE_CREATED + + """ + A shipping price is deleted. + """ + SHIPPING_PRICE_DELETED + + """ + A shipping price is updated. + """ + SHIPPING_PRICE_UPDATED + + """ + A new shipping zone is created. + """ + SHIPPING_ZONE_CREATED + + """ + A shipping zone is deleted. + """ + SHIPPING_ZONE_DELETED + + """ + A shipping zone is updated. + """ + SHIPPING_ZONE_UPDATED + TRANSACTION_ACTION_REQUEST + TRANSLATION_CREATED + TRANSLATION_UPDATED + + """ + A new voucher created. + """ + VOUCHER_CREATED + + """ + A voucher is deleted. + """ + VOUCHER_DELETED + + """ + A voucher is updated. + """ + VOUCHER_UPDATED + + """ + A new warehouse created. + """ + WAREHOUSE_CREATED + + """ + A warehouse is deleted. + """ + WAREHOUSE_DELETED + + """ + A warehouse is updated. + """ + WAREHOUSE_UPDATED +} + +""" +Enum determining type of webhook. +""" +enum WebhookEventTypeEnum { + """ + All the events. + """ + ANY_EVENTS + + """ + An app deleted. + """ + APP_DELETED + + """ + A new app installed. + """ + APP_INSTALLED + + """ + An app status is changed. + """ + APP_STATUS_CHANGED + + """ + An app updated. + """ + APP_UPDATED + + """ + A new category created. + """ + CATEGORY_CREATED + + """ + A category is deleted. + """ + CATEGORY_DELETED + + """ + A category is updated. + """ + CATEGORY_UPDATED + + """ + A new channel created. + """ + CHANNEL_CREATED + + """ + A channel is deleted. + """ + CHANNEL_DELETED + + """ + A channel status is changed. + """ + CHANNEL_STATUS_CHANGED + + """ + A channel is updated. + """ + CHANNEL_UPDATED + + """ + A new checkout is created. + """ + CHECKOUT_CREATED + CHECKOUT_FILTER_SHIPPING_METHODS + + """ + A checkout is updated. It also triggers all updates related to the checkout. + """ + CHECKOUT_UPDATED + + """ + A new collection is created. + """ + COLLECTION_CREATED + + """ + A collection is deleted. + """ + COLLECTION_DELETED + + """ + A collection is updated. + """ + COLLECTION_UPDATED + + """ + A new customer account is created. + """ + CUSTOMER_CREATED + + """ + A customer account is updated. + """ + CUSTOMER_UPDATED + DRAFT_ORDER_CREATED + DRAFT_ORDER_DELETED + DRAFT_ORDER_UPDATED + + """ + A fulfillment is cancelled. + """ + FULFILLMENT_CANCELED + + """ + A new fulfillment is created. + """ + FULFILLMENT_CREATED + + """ + A new gift card created. + """ + GIFT_CARD_CREATED + + """ + A gift card is deleted. + """ + GIFT_CARD_DELETED + + """ + A gift card status is changed. + """ + GIFT_CARD_STATUS_CHANGED + + """ + A gift card is updated. + """ + GIFT_CARD_UPDATED + + """ + An invoice is deleted. + """ + INVOICE_DELETED + + """ + An invoice for order requested. + """ + INVOICE_REQUESTED + + """ + Invoice has been sent. + """ + INVOICE_SENT + + """ + A new menu created. + """ + MENU_CREATED + + """ + A menu is deleted. + """ + MENU_DELETED + + """ + A new menu item created. + """ + MENU_ITEM_CREATED + + """ + A menu item is deleted. + """ + MENU_ITEM_DELETED + + """ + A menu item is updated. + """ + MENU_ITEM_UPDATED + + """ + A menu is updated. + """ + MENU_UPDATED + + """ + User notification triggered. + """ + NOTIFY_USER + + """ + An observability event is created. + """ + OBSERVABILITY + + """ + An order is cancelled. + """ + ORDER_CANCELLED + + """ + An order is confirmed (status change unconfirmed -> unfulfilled) by a staff user using the OrderConfirm mutation. It also triggers when the user completes the checkout and the shop setting `automatically_confirm_all_new_orders` is enabled. + """ + ORDER_CONFIRMED + + """ + A new order is placed. + """ + ORDER_CREATED + ORDER_FILTER_SHIPPING_METHODS + + """ + An order is fulfilled. + """ + ORDER_FULFILLED + + """ + Payment is made and an order is fully paid. + """ + ORDER_FULLY_PAID + + """ + An order is updated; triggered for all changes related to an order; covers all other order webhooks, except for ORDER_CREATED. + """ + ORDER_UPDATED + + """ + A new page is created. + """ + PAGE_CREATED + + """ + A page is deleted. + """ + PAGE_DELETED + + """ + A page is updated. + """ + PAGE_UPDATED + PAYMENT_AUTHORIZE + PAYMENT_CAPTURE + PAYMENT_CONFIRM + PAYMENT_LIST_GATEWAYS + PAYMENT_PROCESS + PAYMENT_REFUND + PAYMENT_VOID + + """ + A new product is created. + """ + PRODUCT_CREATED + + """ + A product is deleted. + """ + PRODUCT_DELETED + + """ + A product is updated. + """ + PRODUCT_UPDATED + PRODUCT_VARIANT_BACK_IN_STOCK + + """ + A new product variant is created. + """ + PRODUCT_VARIANT_CREATED + + """ + A product variant is deleted. + """ + PRODUCT_VARIANT_DELETED + PRODUCT_VARIANT_OUT_OF_STOCK + + """ + A product variant is updated. + """ + PRODUCT_VARIANT_UPDATED + SALE_CREATED + SALE_DELETED + SALE_UPDATED + SHIPPING_LIST_METHODS_FOR_CHECKOUT + + """ + A new shipping price is created. + """ + SHIPPING_PRICE_CREATED + + """ + A shipping price is deleted. + """ + SHIPPING_PRICE_DELETED + + """ + A shipping price is updated. + """ + SHIPPING_PRICE_UPDATED + + """ + A new shipping zone is created. + """ + SHIPPING_ZONE_CREATED + + """ + A shipping zone is deleted. + """ + SHIPPING_ZONE_DELETED + + """ + A shipping zone is updated. + """ + SHIPPING_ZONE_UPDATED + TRANSACTION_ACTION_REQUEST + TRANSLATION_CREATED + TRANSLATION_UPDATED + + """ + A new voucher created. + """ + VOUCHER_CREATED + + """ + A voucher is deleted. + """ + VOUCHER_DELETED + + """ + A voucher is updated. + """ + VOUCHER_UPDATED + + """ + A new warehouse created. + """ + WAREHOUSE_CREATED + + """ + A warehouse is deleted. + """ + WAREHOUSE_DELETED + + """ + A warehouse is updated. + """ + WAREHOUSE_UPDATED +} + +""" +Enum determining type of webhook. +""" +enum WebhookEventTypeSyncEnum { + CHECKOUT_FILTER_SHIPPING_METHODS + ORDER_FILTER_SHIPPING_METHODS + PAYMENT_AUTHORIZE + PAYMENT_CAPTURE + PAYMENT_CONFIRM + PAYMENT_LIST_GATEWAYS + PAYMENT_PROCESS + PAYMENT_REFUND + PAYMENT_VOID + SHIPPING_LIST_METHODS_FOR_CHECKOUT +} + +""" +An enumeration. +""" +enum WebhookSampleEventTypeEnum { + APP_DELETED + APP_INSTALLED + APP_STATUS_CHANGED + APP_UPDATED + CATEGORY_CREATED + CATEGORY_DELETED + CATEGORY_UPDATED + CHANNEL_CREATED + CHANNEL_DELETED + CHANNEL_STATUS_CHANGED + CHANNEL_UPDATED + CHECKOUT_CREATED + CHECKOUT_UPDATED + COLLECTION_CREATED + COLLECTION_DELETED + COLLECTION_UPDATED + CUSTOMER_CREATED + CUSTOMER_UPDATED + DRAFT_ORDER_CREATED + DRAFT_ORDER_DELETED + DRAFT_ORDER_UPDATED + FULFILLMENT_CANCELED + FULFILLMENT_CREATED + GIFT_CARD_CREATED + GIFT_CARD_DELETED + GIFT_CARD_STATUS_CHANGED + GIFT_CARD_UPDATED + INVOICE_DELETED + INVOICE_REQUESTED + INVOICE_SENT + MENU_CREATED + MENU_DELETED + MENU_ITEM_CREATED + MENU_ITEM_DELETED + MENU_ITEM_UPDATED + MENU_UPDATED + NOTIFY_USER + OBSERVABILITY + ORDER_CANCELLED + ORDER_CONFIRMED + ORDER_CREATED + ORDER_FULFILLED + ORDER_FULLY_PAID + ORDER_UPDATED + PAGE_CREATED + PAGE_DELETED + PAGE_UPDATED + PRODUCT_CREATED + PRODUCT_DELETED + PRODUCT_UPDATED + PRODUCT_VARIANT_BACK_IN_STOCK + PRODUCT_VARIANT_CREATED + PRODUCT_VARIANT_DELETED + PRODUCT_VARIANT_OUT_OF_STOCK + PRODUCT_VARIANT_UPDATED + SALE_CREATED + SALE_DELETED + SALE_UPDATED + SHIPPING_PRICE_CREATED + SHIPPING_PRICE_DELETED + SHIPPING_PRICE_UPDATED + SHIPPING_ZONE_CREATED + SHIPPING_ZONE_DELETED + SHIPPING_ZONE_UPDATED + TRANSACTION_ACTION_REQUEST + TRANSLATION_CREATED + TRANSLATION_UPDATED + VOUCHER_CREATED + VOUCHER_DELETED + VOUCHER_UPDATED + WAREHOUSE_CREATED + WAREHOUSE_DELETED + WAREHOUSE_UPDATED +} + +""" +Updates a webhook subscription. + +Requires one of the following permissions: MANAGE_APPS. +""" +type WebhookUpdate { + errors: [WebhookError!]! + webhook: Webhook + webhookErrors: [WebhookError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") +} + +input WebhookUpdateInput { + """ + ID of the app to which webhook belongs. + """ + app: ID + + """ + The asynchronous events that webhook wants to subscribe. + """ + asyncEvents: [WebhookEventTypeAsyncEnum!] + + """ + The events that webhook wants to subscribe. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `asyncEvents` or `syncEvents` instead. + """ + events: [WebhookEventTypeEnum!] + + """ + Determine if webhook will be set active or not. + """ + isActive: Boolean + + """ + The new name of the webhook. + """ + name: String + + """ + Subscription query used to define a webhook payload. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + query: String + + """ + Use to create a hash signature with each payload. + """ + secretKey: String + + """ + The synchronous events that webhook wants to subscribe. + """ + syncEvents: [WebhookEventTypeSyncEnum!] + + """ + The url to receive the payload. + """ + targetUrl: String +} + +""" +Represents weight value in a specific weight unit. +""" +type Weight { + """ + Weight unit. + """ + unit: WeightUnitsEnum! + + """ + Weight value. + """ + value: Float! +} + +scalar WeightScalar + +""" +An enumeration. +""" +enum WeightUnitsEnum { + G + KG + LB + OZ + TONNE +} + +""" +_Any value scalar as defined by Federation spec. +""" +scalar _Any + +""" +_Entity union as defined by Federation spec. +""" +union _Entity = + Address + | App + | Category + | Collection + | Group + | PageType + | Product + | ProductMedia + | ProductType + | ProductVariant + | User + +""" +_Service manifest as defined by Federation spec. +""" +type _Service { + sdl: String +} diff --git a/apps/slack/graphql/mutations/UpdateAppMetadata.graphql b/apps/slack/graphql/mutations/UpdateAppMetadata.graphql new file mode 100644 index 0000000..718ec63 --- /dev/null +++ b/apps/slack/graphql/mutations/UpdateAppMetadata.graphql @@ -0,0 +1,10 @@ +mutation UpdateAppMetadata($id: ID!, $input: [MetadataInput!]!) { + updatePrivateMetadata(id: $id, input: $input) { + item { + privateMetadata { + key + value + } + } + } +} diff --git a/apps/slack/graphql/queries/FetchAppDetails.graphql b/apps/slack/graphql/queries/FetchAppDetails.graphql new file mode 100644 index 0000000..b4bad82 --- /dev/null +++ b/apps/slack/graphql/queries/FetchAppDetails.graphql @@ -0,0 +1,9 @@ +query FetchAppDetails { + app { + id + privateMetadata { + key + value + } + } +} diff --git a/apps/slack/graphql/schema.graphql b/apps/slack/graphql/schema.graphql new file mode 100644 index 0000000..16be75e --- /dev/null +++ b/apps/slack/graphql/schema.graphql @@ -0,0 +1,29077 @@ +schema { + query: Query + mutation: Mutation + subscription: Subscription +} + +type Query { + """ + Look up a webhook by ID. Requires one of the following permissions: MANAGE_APPS, OWNER. + """ + webhook( + """ + ID of the webhook. + """ + id: ID! + ): Webhook + + """ + List of all available webhook events. + + Requires one of the following permissions: MANAGE_APPS. + """ + webhookEvents: [WebhookEvent!] + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use `WebhookEventTypeAsyncEnum` and `WebhookEventTypeSyncEnum` to get available event types." + ) + + """ + Retrieve a sample payload for a given webhook event based on real data. It can be useful for some integrations where sample payload is required. + """ + webhookSamplePayload( + """ + Name of the requested event type. + """ + eventType: WebhookSampleEventTypeEnum! + ): JSONString + + """ + Look up a warehouse by ID. + + Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS, MANAGE_SHIPPING. + """ + warehouse( + """ + ID of an warehouse + """ + id: ID! + ): Warehouse + + """ + List of warehouses. + + Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS, MANAGE_SHIPPING. + """ + warehouses( + filter: WarehouseFilterInput + sortBy: WarehouseSortingInput + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): WarehouseCountableConnection + + """ + Returns a list of all translatable items of a given kind. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + translations( + """ + Kind of objects to retrieve. + """ + kind: TranslatableKinds! + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): TranslatableItemConnection + + """ + Lookup a translatable item by ID. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + translation( + """ + ID of the object to retrieve. + """ + id: ID! + + """ + Kind of the object to retrieve. + """ + kind: TranslatableKinds! + ): TranslatableItem + + """ + Look up a stock by ID + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + stock( + """ + ID of an warehouse + """ + id: ID! + ): Stock + + """ + List of stocks. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + stocks( + filter: StockFilterInput + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): StockCountableConnection + + """ + Return information about the shop. + """ + shop: Shop! + + """ + Order related settings from site settings. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderSettings: OrderSettings + + """ + Gift card related settings from site settings. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardSettings: GiftCardSettings! + + """ + Look up a shipping zone by ID. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingZone( + """ + ID of the shipping zone. + """ + id: ID! + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ShippingZone + + """ + List of the shop's shipping zones. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingZones( + """ + Filtering options for shipping zones. + """ + filter: ShippingZoneFilterInput + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ShippingZoneCountableConnection + + """ + Look up digital content by ID. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + digitalContent( + """ + ID of the digital content. + """ + id: ID! + ): DigitalContent + + """ + List of digital content. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + digitalContents( + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): DigitalContentCountableConnection + + """ + List of the shop's categories. + """ + categories( + """ + Filtering options for categories. + """ + filter: CategoryFilterInput + + """ + Sort categories. + """ + sortBy: CategorySortingInput + + """ + Filter categories by the nesting level in the category tree. + """ + level: Int + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): CategoryCountableConnection + + """ + Look up a category by ID or slug. + """ + category( + """ + ID of the category. + """ + id: ID + + """ + Slug of the category + """ + slug: String + ): Category + + """ + Look up a collection by ID. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. + """ + collection( + """ + ID of the collection. + """ + id: ID + + """ + Slug of the category + """ + slug: String + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Collection + + """ + List of the shop's collections. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. + """ + collections( + """ + Filtering options for collections. + """ + filter: CollectionFilterInput + + """ + Sort collections. + """ + sortBy: CollectionSortingInput + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): CollectionCountableConnection + + """ + Look up a product by ID. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. + """ + product( + """ + ID of the product. + """ + id: ID + + """ + Slug of the product. + """ + slug: String + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Product + + """ + List of the shop's products. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. + """ + products( + """ + Filtering options for products. + """ + filter: ProductFilterInput + + """ + Sort products. + """ + sortBy: ProductOrder + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ProductCountableConnection + + """ + Look up a product type by ID. + """ + productType( + """ + ID of the product type. + """ + id: ID! + ): ProductType + + """ + List of the shop's product types. + """ + productTypes( + """ + Filtering options for product types. + """ + filter: ProductTypeFilterInput + + """ + Sort product types. + """ + sortBy: ProductTypeSortingInput + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ProductTypeCountableConnection + + """ + Look up a product variant by ID or SKU. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. + """ + productVariant( + """ + ID of the product variant. + """ + id: ID + + """ + Sku of the product variant. + """ + sku: String + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ProductVariant + + """ + List of product variants. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. + """ + productVariants( + """ + Filter product variants by given IDs. + """ + ids: [ID!] + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + Filtering options for product variant. + """ + filter: ProductVariantFilterInput + + """ + Sort products variants. + """ + sortBy: ProductVariantSortingInput + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ProductVariantCountableConnection + + """ + List of top selling products. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + reportProductSales( + """ + Span of time. + """ + period: ReportingPeriod! + + """ + Slug of a channel for which the data should be returned. + """ + channel: String! + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ProductVariantCountableConnection + + """ + Look up a payment by ID. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + payment( + """ + ID of the payment. + """ + id: ID! + ): Payment + + """ + List of payments. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + payments( + """ + Filtering options for payments. + """ + filter: PaymentFilterInput + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): PaymentCountableConnection + + """ + Look up a page by ID or slug. + """ + page( + """ + ID of the page. + """ + id: ID + + """ + The slug of the page. + """ + slug: String + ): Page + + """ + List of the shop's pages. + """ + pages( + """ + Sort pages. + """ + sortBy: PageSortingInput + + """ + Filtering options for pages. + """ + filter: PageFilterInput + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): PageCountableConnection + + """ + Look up a page type by ID. + """ + pageType( + """ + ID of the page type. + """ + id: ID! + ): PageType + + """ + List of the page types. + """ + pageTypes( + """ + Sort page types. + """ + sortBy: PageTypeSortingInput + + """ + Filtering options for page types. + """ + filter: PageTypeFilterInput + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): PageTypeCountableConnection + + """ + List of activity events to display on homepage (at the moment it only contains order-events). + + Requires one of the following permissions: MANAGE_ORDERS. + """ + homepageEvents( + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): OrderEventCountableConnection + + """ + Look up an order by ID. + """ + order( + """ + ID of an order. + """ + id: ID! + ): Order + + """ + List of orders. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orders( + """ + Sort orders. + """ + sortBy: OrderSortingInput + + """ + Filtering options for orders. + """ + filter: OrderFilterInput + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): OrderCountableConnection + + """ + List of draft orders. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + draftOrders( + """ + Sort draft orders. + """ + sortBy: OrderSortingInput + + """ + Filtering options for draft orders. + """ + filter: OrderDraftFilterInput + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): OrderCountableConnection + + """ + Return the total sales amount from a specific period. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + ordersTotal( + """ + A period of time. + """ + period: ReportingPeriod + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): TaxedMoney + + """ + Look up an order by token. + """ + orderByToken( + """ + The order's token. + """ + token: UUID! + ): Order @deprecated(reason: "This field will be removed in Saleor 4.0.") + + """ + Look up a navigation menu by ID or name. + """ + menu( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + ID of the menu. + """ + id: ID + + """ + The menu's name. + """ + name: String + + """ + The menu's slug. + """ + slug: String + ): Menu + + """ + List of the storefront's menus. + """ + menus( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + Sort menus. + """ + sortBy: MenuSortingInput + + """ + Filtering options for menus. + """ + filter: MenuFilterInput + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): MenuCountableConnection + + """ + Look up a menu item by ID. + """ + menuItem( + """ + ID of the menu item. + """ + id: ID! + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): MenuItem + + """ + List of the storefronts's menu items. + """ + menuItems( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + Sort menus items. + """ + sortBy: MenuItemSortingInput + + """ + Filtering options for menu items. + """ + filter: MenuItemFilterInput + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): MenuItemCountableConnection + + """ + Look up a gift card by ID. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCard( + """ + ID of the gift card. + """ + id: ID! + ): GiftCard + + """ + List of gift cards. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCards( + """ + Sort gift cards. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + sortBy: GiftCardSortingInput + + """ + Filtering options for gift cards. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + filter: GiftCardFilterInput + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): GiftCardCountableConnection + + """ + List of gift card currencies. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardCurrencies: [String!]! + + """ + List of gift card tags. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardTags( + """ + Filtering options for gift card tags. + """ + filter: GiftCardTagFilterInput + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): GiftCardTagCountableConnection + + """ + Look up a plugin by ID. + + Requires one of the following permissions: MANAGE_PLUGINS. + """ + plugin( + """ + ID of the plugin. + """ + id: ID! + ): Plugin + + """ + List of plugins. + + Requires one of the following permissions: MANAGE_PLUGINS. + """ + plugins( + """ + Filtering options for plugins. + """ + filter: PluginFilterInput + + """ + Sort plugins. + """ + sortBy: PluginSortingInput + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): PluginCountableConnection + + """ + Look up a sale by ID. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + sale( + """ + ID of the sale. + """ + id: ID! + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Sale + + """ + List of the shop's sales. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + sales( + """ + Filtering options for sales. + """ + filter: SaleFilterInput + + """ + Sort sales. + """ + sortBy: SaleSortingInput + + """ + Search sales by name, value or type. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `filter.search` input instead. + """ + query: String + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): SaleCountableConnection + + """ + Look up a voucher by ID. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + voucher( + """ + ID of the voucher. + """ + id: ID! + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Voucher + + """ + List of the shop's vouchers. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + vouchers( + """ + Filtering options for vouchers. + """ + filter: VoucherFilterInput + + """ + Sort voucher. + """ + sortBy: VoucherSortingInput + + """ + Search vouchers by name or code. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `filter.search` input instead. + """ + query: String + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): VoucherCountableConnection + + """ + Look up a export file by ID. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + exportFile( + """ + ID of the export file job. + """ + id: ID! + ): ExportFile + + """ + List of export files. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + exportFiles( + """ + Filtering options for export files. + """ + filter: ExportFileFilterInput + + """ + Sort export files. + """ + sortBy: ExportFileSortingInput + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ExportFileCountableConnection + + """ + List of all tax rates available from tax gateway. + """ + taxTypes: [TaxType!] + + """ + Look up a checkout by token and slug of channel. + """ + checkout( + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + The checkout's token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): Checkout + + """ + List of checkouts. + + Requires one of the following permissions: MANAGE_CHECKOUTS. + """ + checkouts( + """ + Sort checkouts. + + Added in Saleor 3.1. + """ + sortBy: CheckoutSortingInput + + """ + Filtering options for checkouts. + + Added in Saleor 3.1. + """ + filter: CheckoutFilterInput + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): CheckoutCountableConnection + + """ + List of checkout lines. + + Requires one of the following permissions: MANAGE_CHECKOUTS. + """ + checkoutLines( + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): CheckoutLineCountableConnection + + """ + Look up a channel by ID. + + Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER. + """ + channel( + """ + ID of the channel. + """ + id: ID + ): Channel + + """ + List of all channels. + + Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER. + """ + channels: [Channel!] + + """ + List of the shop's attributes. + """ + attributes( + """ + Filtering options for attributes. + """ + filter: AttributeFilterInput + + """ + Sorting options for attributes. + """ + sortBy: AttributeSortingInput + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): AttributeCountableConnection + + """ + Look up an attribute by ID. + """ + attribute( + """ + ID of the attribute. + """ + id: ID + + """ + Slug of the attribute. + """ + slug: String + ): Attribute + + """ + List of all apps installations + + Requires one of the following permissions: MANAGE_APPS. + """ + appsInstallations: [AppInstallation!]! + + """ + List of the apps. + + Requires one of the following permissions: AUTHENTICATED_STAFF_USER, MANAGE_APPS. + """ + apps( + """ + Filtering options for apps. + """ + filter: AppFilterInput + + """ + Sort apps. + """ + sortBy: AppSortingInput + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): AppCountableConnection + + """ + Look up an app by ID. If ID is not provided, return the currently authenticated app. + + Requires one of the following permissions: AUTHENTICATED_STAFF_USER AUTHENTICATED_APP. The authenticated app has access to its resources. Fetching different apps requires MANAGE_APPS permission. + """ + app( + """ + ID of the app. + """ + id: ID + ): App + + """ + List of all extensions. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP. + """ + appExtensions( + """ + Filtering options for apps extensions. + """ + filter: AppExtensionFilterInput + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): AppExtensionCountableConnection + + """ + Look up an app extension by ID. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP. + """ + appExtension( + """ + ID of the app extension. + """ + id: ID! + ): AppExtension + + """ + Returns address validation rules. + """ + addressValidationRules( + """ + Two-letter ISO 3166-1 country code. + """ + countryCode: CountryCode! + + """ + Designation of a region, province or state. + """ + countryArea: String + + """ + City or a town name. + """ + city: String + + """ + Sublocality like a district. + """ + cityArea: String + ): AddressValidationData + + """ + Look up an address by ID. + """ + address( + """ + ID of an address. + """ + id: ID! + ): Address + + """ + List of the shop's customers. + + Requires one of the following permissions: MANAGE_ORDERS, MANAGE_USERS. + """ + customers( + """ + Filtering options for customers. + """ + filter: CustomerFilterInput + + """ + Sort customers. + """ + sortBy: UserSortingInput + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): UserCountableConnection + + """ + List of permission groups. + + Requires one of the following permissions: MANAGE_STAFF. + """ + permissionGroups( + """ + Filtering options for permission groups. + """ + filter: PermissionGroupFilterInput + + """ + Sort permission groups. + """ + sortBy: PermissionGroupSortingInput + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): GroupCountableConnection + + """ + Look up permission group by ID. + + Requires one of the following permissions: MANAGE_STAFF. + """ + permissionGroup( + """ + ID of the group. + """ + id: ID! + ): Group + + """ + Return the currently authenticated user. + """ + me: User + + """ + List of the shop's staff users. + + Requires one of the following permissions: MANAGE_STAFF. + """ + staffUsers( + """ + Filtering options for staff users. + """ + filter: StaffUserInput + + """ + Sort staff users. + """ + sortBy: UserSortingInput + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): UserCountableConnection + + """ + Look up a user by ID or email address. + + Requires one of the following permissions: MANAGE_STAFF, MANAGE_USERS, MANAGE_ORDERS. + """ + user( + """ + ID of the user. + """ + id: ID + + """ + Email address of the user. + """ + email: String + ): User + _entities(representations: [_Any]): [_Entity] + _service: _Service +} + +""" +Webhook. +""" +type Webhook implements Node { + id: ID! + name: String! + + """ + List of webhook events. + """ + events: [WebhookEvent!]! + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use `asyncEvents` or `syncEvents` instead." + ) + + """ + List of synchronous webhook events. + """ + syncEvents: [WebhookEventSync!]! + + """ + List of asynchronous webhook events. + """ + asyncEvents: [WebhookEventAsync!]! + app: App! + + """ + Event deliveries. + """ + eventDeliveries( + """ + Event delivery sorter. + """ + sortBy: EventDeliverySortingInput + + """ + Event delivery filter options. + """ + filter: EventDeliveryFilterInput + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): EventDeliveryCountableConnection + + """ + Target URL for webhook. + """ + targetUrl: String! + + """ + Informs if webhook is activated. + """ + isActive: Boolean! + + """ + Used to create a hash signature with each payload. + """ + secretKey: String + + """ + Used to define payloads for specific events. + """ + subscriptionQuery: String +} + +""" +An object with an ID +""" +interface Node { + """ + The ID of the object. + """ + id: ID! +} + +""" +Webhook event. +""" +type WebhookEvent { + """ + Display name of the event. + """ + name: String! + + """ + Internal name of the event type. + """ + eventType: WebhookEventTypeEnum! +} + +""" +Enum determining type of webhook. +""" +enum WebhookEventTypeEnum { + """ + All the events. + """ + ANY_EVENTS + + """ + A new app installed. + """ + APP_INSTALLED + + """ + An app updated. + """ + APP_UPDATED + + """ + An app deleted. + """ + APP_DELETED + + """ + An app status is changed. + """ + APP_STATUS_CHANGED + + """ + A new category created. + """ + CATEGORY_CREATED + + """ + A category is updated. + """ + CATEGORY_UPDATED + + """ + A category is deleted. + """ + CATEGORY_DELETED + + """ + A new channel created. + """ + CHANNEL_CREATED + + """ + A channel is updated. + """ + CHANNEL_UPDATED + + """ + A channel is deleted. + """ + CHANNEL_DELETED + + """ + A channel status is changed. + """ + CHANNEL_STATUS_CHANGED + + """ + A new gift card created. + """ + GIFT_CARD_CREATED + + """ + A gift card is updated. + """ + GIFT_CARD_UPDATED + + """ + A gift card is deleted. + """ + GIFT_CARD_DELETED + + """ + A gift card status is changed. + """ + GIFT_CARD_STATUS_CHANGED + + """ + A new menu created. + """ + MENU_CREATED + + """ + A menu is updated. + """ + MENU_UPDATED + + """ + A menu is deleted. + """ + MENU_DELETED + + """ + A new menu item created. + """ + MENU_ITEM_CREATED + + """ + A menu item is updated. + """ + MENU_ITEM_UPDATED + + """ + A menu item is deleted. + """ + MENU_ITEM_DELETED + + """ + A new order is placed. + """ + ORDER_CREATED + + """ + An order is confirmed (status change unconfirmed -> unfulfilled) by a staff user using the OrderConfirm mutation. It also triggers when the user completes the checkout and the shop setting `automatically_confirm_all_new_orders` is enabled. + """ + ORDER_CONFIRMED + + """ + Payment is made and an order is fully paid. + """ + ORDER_FULLY_PAID + + """ + An order is updated; triggered for all changes related to an order; covers all other order webhooks, except for ORDER_CREATED. + """ + ORDER_UPDATED + + """ + An order is cancelled. + """ + ORDER_CANCELLED + + """ + An order is fulfilled. + """ + ORDER_FULFILLED + DRAFT_ORDER_CREATED + DRAFT_ORDER_UPDATED + DRAFT_ORDER_DELETED + SALE_CREATED + SALE_UPDATED + SALE_DELETED + + """ + An invoice for order requested. + """ + INVOICE_REQUESTED + + """ + An invoice is deleted. + """ + INVOICE_DELETED + + """ + Invoice has been sent. + """ + INVOICE_SENT + + """ + A new customer account is created. + """ + CUSTOMER_CREATED + + """ + A customer account is updated. + """ + CUSTOMER_UPDATED + + """ + A new collection is created. + """ + COLLECTION_CREATED + + """ + A collection is updated. + """ + COLLECTION_UPDATED + + """ + A collection is deleted. + """ + COLLECTION_DELETED + + """ + A new product is created. + """ + PRODUCT_CREATED + + """ + A product is updated. + """ + PRODUCT_UPDATED + + """ + A product is deleted. + """ + PRODUCT_DELETED + + """ + A new product variant is created. + """ + PRODUCT_VARIANT_CREATED + + """ + A product variant is updated. + """ + PRODUCT_VARIANT_UPDATED + + """ + A product variant is deleted. + """ + PRODUCT_VARIANT_DELETED + PRODUCT_VARIANT_OUT_OF_STOCK + PRODUCT_VARIANT_BACK_IN_STOCK + + """ + A new checkout is created. + """ + CHECKOUT_CREATED + + """ + A checkout is updated. It also triggers all updates related to the checkout. + """ + CHECKOUT_UPDATED + + """ + A new fulfillment is created. + """ + FULFILLMENT_CREATED + + """ + A fulfillment is cancelled. + """ + FULFILLMENT_CANCELED + + """ + User notification triggered. + """ + NOTIFY_USER + + """ + A new page is created. + """ + PAGE_CREATED + + """ + A page is updated. + """ + PAGE_UPDATED + + """ + A page is deleted. + """ + PAGE_DELETED + + """ + A new shipping price is created. + """ + SHIPPING_PRICE_CREATED + + """ + A shipping price is updated. + """ + SHIPPING_PRICE_UPDATED + + """ + A shipping price is deleted. + """ + SHIPPING_PRICE_DELETED + + """ + A new shipping zone is created. + """ + SHIPPING_ZONE_CREATED + + """ + A shipping zone is updated. + """ + SHIPPING_ZONE_UPDATED + + """ + A shipping zone is deleted. + """ + SHIPPING_ZONE_DELETED + TRANSACTION_ACTION_REQUEST + TRANSLATION_CREATED + TRANSLATION_UPDATED + + """ + A new warehouse created. + """ + WAREHOUSE_CREATED + + """ + A warehouse is updated. + """ + WAREHOUSE_UPDATED + + """ + A warehouse is deleted. + """ + WAREHOUSE_DELETED + + """ + A new voucher created. + """ + VOUCHER_CREATED + + """ + A voucher is updated. + """ + VOUCHER_UPDATED + + """ + A voucher is deleted. + """ + VOUCHER_DELETED + + """ + An observability event is created. + """ + OBSERVABILITY + PAYMENT_AUTHORIZE + PAYMENT_CAPTURE + PAYMENT_CONFIRM + PAYMENT_LIST_GATEWAYS + PAYMENT_PROCESS + PAYMENT_REFUND + PAYMENT_VOID + SHIPPING_LIST_METHODS_FOR_CHECKOUT + ORDER_FILTER_SHIPPING_METHODS + CHECKOUT_FILTER_SHIPPING_METHODS +} + +""" +Synchronous webhook event. +""" +type WebhookEventSync { + """ + Display name of the event. + """ + name: String! + + """ + Internal name of the event type. + """ + eventType: WebhookEventTypeSyncEnum! +} + +""" +Enum determining type of webhook. +""" +enum WebhookEventTypeSyncEnum { + PAYMENT_AUTHORIZE + PAYMENT_CAPTURE + PAYMENT_CONFIRM + PAYMENT_LIST_GATEWAYS + PAYMENT_PROCESS + PAYMENT_REFUND + PAYMENT_VOID + SHIPPING_LIST_METHODS_FOR_CHECKOUT + ORDER_FILTER_SHIPPING_METHODS + CHECKOUT_FILTER_SHIPPING_METHODS +} + +""" +Asynchronous webhook event. +""" +type WebhookEventAsync { + """ + Display name of the event. + """ + name: String! + + """ + Internal name of the event type. + """ + eventType: WebhookEventTypeAsyncEnum! +} + +""" +Enum determining type of webhook. +""" +enum WebhookEventTypeAsyncEnum { + """ + All the events. + """ + ANY_EVENTS + + """ + A new app installed. + """ + APP_INSTALLED + + """ + An app updated. + """ + APP_UPDATED + + """ + An app deleted. + """ + APP_DELETED + + """ + An app status is changed. + """ + APP_STATUS_CHANGED + + """ + A new category created. + """ + CATEGORY_CREATED + + """ + A category is updated. + """ + CATEGORY_UPDATED + + """ + A category is deleted. + """ + CATEGORY_DELETED + + """ + A new channel created. + """ + CHANNEL_CREATED + + """ + A channel is updated. + """ + CHANNEL_UPDATED + + """ + A channel is deleted. + """ + CHANNEL_DELETED + + """ + A channel status is changed. + """ + CHANNEL_STATUS_CHANGED + + """ + A new gift card created. + """ + GIFT_CARD_CREATED + + """ + A gift card is updated. + """ + GIFT_CARD_UPDATED + + """ + A gift card is deleted. + """ + GIFT_CARD_DELETED + + """ + A gift card status is changed. + """ + GIFT_CARD_STATUS_CHANGED + + """ + A new menu created. + """ + MENU_CREATED + + """ + A menu is updated. + """ + MENU_UPDATED + + """ + A menu is deleted. + """ + MENU_DELETED + + """ + A new menu item created. + """ + MENU_ITEM_CREATED + + """ + A menu item is updated. + """ + MENU_ITEM_UPDATED + + """ + A menu item is deleted. + """ + MENU_ITEM_DELETED + + """ + A new order is placed. + """ + ORDER_CREATED + + """ + An order is confirmed (status change unconfirmed -> unfulfilled) by a staff user using the OrderConfirm mutation. It also triggers when the user completes the checkout and the shop setting `automatically_confirm_all_new_orders` is enabled. + """ + ORDER_CONFIRMED + + """ + Payment is made and an order is fully paid. + """ + ORDER_FULLY_PAID + + """ + An order is updated; triggered for all changes related to an order; covers all other order webhooks, except for ORDER_CREATED. + """ + ORDER_UPDATED + + """ + An order is cancelled. + """ + ORDER_CANCELLED + + """ + An order is fulfilled. + """ + ORDER_FULFILLED + DRAFT_ORDER_CREATED + DRAFT_ORDER_UPDATED + DRAFT_ORDER_DELETED + SALE_CREATED + SALE_UPDATED + SALE_DELETED + + """ + An invoice for order requested. + """ + INVOICE_REQUESTED + + """ + An invoice is deleted. + """ + INVOICE_DELETED + + """ + Invoice has been sent. + """ + INVOICE_SENT + + """ + A new customer account is created. + """ + CUSTOMER_CREATED + + """ + A customer account is updated. + """ + CUSTOMER_UPDATED + + """ + A new collection is created. + """ + COLLECTION_CREATED + + """ + A collection is updated. + """ + COLLECTION_UPDATED + + """ + A collection is deleted. + """ + COLLECTION_DELETED + + """ + A new product is created. + """ + PRODUCT_CREATED + + """ + A product is updated. + """ + PRODUCT_UPDATED + + """ + A product is deleted. + """ + PRODUCT_DELETED + + """ + A new product variant is created. + """ + PRODUCT_VARIANT_CREATED + + """ + A product variant is updated. + """ + PRODUCT_VARIANT_UPDATED + + """ + A product variant is deleted. + """ + PRODUCT_VARIANT_DELETED + PRODUCT_VARIANT_OUT_OF_STOCK + PRODUCT_VARIANT_BACK_IN_STOCK + + """ + A new checkout is created. + """ + CHECKOUT_CREATED + + """ + A checkout is updated. It also triggers all updates related to the checkout. + """ + CHECKOUT_UPDATED + + """ + A new fulfillment is created. + """ + FULFILLMENT_CREATED + + """ + A fulfillment is cancelled. + """ + FULFILLMENT_CANCELED + + """ + User notification triggered. + """ + NOTIFY_USER + + """ + A new page is created. + """ + PAGE_CREATED + + """ + A page is updated. + """ + PAGE_UPDATED + + """ + A page is deleted. + """ + PAGE_DELETED + + """ + A new shipping price is created. + """ + SHIPPING_PRICE_CREATED + + """ + A shipping price is updated. + """ + SHIPPING_PRICE_UPDATED + + """ + A shipping price is deleted. + """ + SHIPPING_PRICE_DELETED + + """ + A new shipping zone is created. + """ + SHIPPING_ZONE_CREATED + + """ + A shipping zone is updated. + """ + SHIPPING_ZONE_UPDATED + + """ + A shipping zone is deleted. + """ + SHIPPING_ZONE_DELETED + TRANSACTION_ACTION_REQUEST + TRANSLATION_CREATED + TRANSLATION_UPDATED + + """ + A new warehouse created. + """ + WAREHOUSE_CREATED + + """ + A warehouse is updated. + """ + WAREHOUSE_UPDATED + + """ + A warehouse is deleted. + """ + WAREHOUSE_DELETED + + """ + A new voucher created. + """ + VOUCHER_CREATED + + """ + A voucher is updated. + """ + VOUCHER_UPDATED + + """ + A voucher is deleted. + """ + VOUCHER_DELETED + + """ + An observability event is created. + """ + OBSERVABILITY +} + +""" +Represents app data. +""" +type App implements Node & ObjectWithMetadata { + id: ID! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + + """ + List of the app's permissions. + """ + permissions: [Permission!] + + """ + The date and time when the app was created. + """ + created: DateTime + + """ + Determine if app will be set active or not. + """ + isActive: Boolean + + """ + Name of the app. + """ + name: String + + """ + Type of the app. + """ + type: AppTypeEnum + + """ + Last 4 characters of the tokens. + + Requires one of the following permissions: MANAGE_APPS, OWNER. + """ + tokens: [AppToken!] + + """ + List of webhooks assigned to this app. + + Requires one of the following permissions: MANAGE_APPS, OWNER. + """ + webhooks: [Webhook!] + + """ + Description of this app. + """ + aboutApp: String + + """ + Description of the data privacy defined for this app. + """ + dataPrivacy: String + + """ + Url to details about the privacy policy on the app owner page. + """ + dataPrivacyUrl: String + + """ + Homepage of the app. + """ + homepageUrl: String + + """ + Support page for the app. + """ + supportUrl: String + + """ + Url to iframe with the configuration for the app. + """ + configurationUrl: String + + """ + Url to iframe with the app. + """ + appUrl: String + + """ + Version number of the app. + """ + version: String + + """ + JWT token used to authenticate by thridparty app. + """ + accessToken: String + + """ + App's dashboard extensions. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + extensions: [AppExtension!]! +} + +interface ObjectWithMetadata { + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata +} + +type MetadataItem { + """ + Key of a metadata item. + """ + key: String! + + """ + Value of a metadata item. + """ + value: String! +} + +""" +Metadata is a map of key-value pairs, both keys and values are `String`. + +Example: +``` +{ + "key1": "value1", + "key2": "value2" +} +``` +""" +scalar Metadata + +""" +Represents a permission object in a friendly form. +""" +type Permission { + """ + Internal code for permission. + """ + code: PermissionEnum! + + """ + Describe action(s) allowed to do by permission. + """ + name: String! +} + +""" +An enumeration. +""" +enum PermissionEnum { + MANAGE_USERS + MANAGE_STAFF + IMPERSONATE_USER + MANAGE_APPS + MANAGE_OBSERVABILITY + MANAGE_CHANNELS + MANAGE_DISCOUNTS + MANAGE_PLUGINS + MANAGE_GIFT_CARD + MANAGE_MENUS + MANAGE_ORDERS + MANAGE_PAGES + MANAGE_PAGE_TYPES_AND_ATTRIBUTES + HANDLE_PAYMENTS + MANAGE_PRODUCTS + MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES + MANAGE_SHIPPING + MANAGE_SETTINGS + MANAGE_TRANSLATIONS + MANAGE_CHECKOUTS + HANDLE_CHECKOUTS +} + +""" +The `DateTime` scalar type represents a DateTime +value as specified by +[iso8601](https://en.wikipedia.org/wiki/ISO_8601). +""" +scalar DateTime + +""" +Enum determining type of your App. +""" +enum AppTypeEnum { + """ + Local Saleor App. The app is fully manageable from dashboard. You can change assigned permissions, add webhooks, or authentication token + """ + LOCAL + + """ + Third party external App. Installation is fully automated. Saleor uses a defined App manifest to gather all required information. + """ + THIRDPARTY +} + +""" +Represents token data. +""" +type AppToken implements Node { + id: ID! + + """ + Name of the authenticated token. + """ + name: String + + """ + Last 4 characters of the token. + """ + authToken: String +} + +""" +Represents app data. +""" +type AppExtension implements Node { + id: ID! + + """ + List of the app extension's permissions. + """ + permissions: [Permission!]! + + """ + Label of the extension to show in the dashboard. + """ + label: String! + + """ + URL of a view where extension's iframe is placed. + """ + url: String! + + """ + Place where given extension will be mounted. + """ + mount: AppExtensionMountEnum! + + """ + Type of way how app extension will be opened. + """ + target: AppExtensionTargetEnum! + app: App! + + """ + JWT token used to authenticate by thridparty app extension. + """ + accessToken: String +} + +""" +All places where app extension can be mounted. +""" +enum AppExtensionMountEnum { + PRODUCT_OVERVIEW_CREATE + PRODUCT_OVERVIEW_MORE_ACTIONS + PRODUCT_DETAILS_MORE_ACTIONS + NAVIGATION_CATALOG + NAVIGATION_ORDERS + NAVIGATION_CUSTOMERS + NAVIGATION_DISCOUNTS + NAVIGATION_TRANSLATIONS + NAVIGATION_PAGES + ORDER_DETAILS_MORE_ACTIONS + ORDER_OVERVIEW_CREATE + ORDER_OVERVIEW_MORE_ACTIONS +} + +""" +All available ways of opening an app extension. + + POPUP - app's extension will be mounted as a popup window + APP_PAGE - redirect to app's page +""" +enum AppExtensionTargetEnum { + POPUP + APP_PAGE +} + +type EventDeliveryCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [EventDeliveryCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +""" +The Relay compliant `PageInfo` type, containing data necessary to paginate this connection. +""" +type PageInfo { + """ + When paginating forwards, are there more items? + """ + hasNextPage: Boolean! + + """ + When paginating backwards, are there more items? + """ + hasPreviousPage: Boolean! + + """ + When paginating backwards, the cursor to continue. + """ + startCursor: String + + """ + When paginating forwards, the cursor to continue. + """ + endCursor: String +} + +type EventDeliveryCountableEdge { + """ + The item at the end of the edge. + """ + node: EventDelivery! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +""" +Event delivery. +""" +type EventDelivery implements Node { + id: ID! + createdAt: DateTime! + + """ + Event delivery status. + """ + status: EventDeliveryStatusEnum! + + """ + Webhook event type. + """ + eventType: WebhookEventTypeEnum! + + """ + Event delivery attempts. + """ + attempts( + """ + Event delivery sorter + """ + sortBy: EventDeliveryAttemptSortingInput + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): EventDeliveryAttemptCountableConnection + + """ + Event payload. + """ + payload: String +} + +enum EventDeliveryStatusEnum { + PENDING + SUCCESS + FAILED +} + +type EventDeliveryAttemptCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [EventDeliveryAttemptCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type EventDeliveryAttemptCountableEdge { + """ + The item at the end of the edge. + """ + node: EventDeliveryAttempt! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +""" +Event delivery attempts. +""" +type EventDeliveryAttempt implements Node { + id: ID! + + """ + Event delivery creation date and time. + """ + createdAt: DateTime! + + """ + Task id for delivery attempt. + """ + taskId: String + + """ + Delivery attempt duration. + """ + duration: Float + + """ + Delivery attempt response content. + """ + response: String + + """ + Response headers for delivery attempt. + """ + responseHeaders: String + + """ + Delivery attempt response status code. + """ + responseStatusCode: Int + + """ + Request headers for delivery attempt. + """ + requestHeaders: String + + """ + Event delivery status. + """ + status: EventDeliveryStatusEnum! +} + +input EventDeliveryAttemptSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort attempts by the selected field. + """ + field: EventDeliveryAttemptSortField! +} + +enum OrderDirection { + """ + Specifies an ascending sort order. + """ + ASC + + """ + Specifies a descending sort order. + """ + DESC +} + +enum EventDeliveryAttemptSortField { + """ + Sort event delivery attempts by created at. + """ + CREATED_AT +} + +input EventDeliverySortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort deliveries by the selected field. + """ + field: EventDeliverySortField! +} + +enum EventDeliverySortField { + """ + Sort event deliveries by created at. + """ + CREATED_AT +} + +input EventDeliveryFilterInput { + status: EventDeliveryStatusEnum + eventType: WebhookEventTypeEnum +} + +scalar JSONString + +""" +An enumeration. +""" +enum WebhookSampleEventTypeEnum { + APP_INSTALLED + APP_UPDATED + APP_DELETED + APP_STATUS_CHANGED + CATEGORY_CREATED + CATEGORY_UPDATED + CATEGORY_DELETED + CHANNEL_CREATED + CHANNEL_UPDATED + CHANNEL_DELETED + CHANNEL_STATUS_CHANGED + GIFT_CARD_CREATED + GIFT_CARD_UPDATED + GIFT_CARD_DELETED + GIFT_CARD_STATUS_CHANGED + MENU_CREATED + MENU_UPDATED + MENU_DELETED + MENU_ITEM_CREATED + MENU_ITEM_UPDATED + MENU_ITEM_DELETED + ORDER_CREATED + ORDER_CONFIRMED + ORDER_FULLY_PAID + ORDER_UPDATED + ORDER_CANCELLED + ORDER_FULFILLED + DRAFT_ORDER_CREATED + DRAFT_ORDER_UPDATED + DRAFT_ORDER_DELETED + SALE_CREATED + SALE_UPDATED + SALE_DELETED + INVOICE_REQUESTED + INVOICE_DELETED + INVOICE_SENT + CUSTOMER_CREATED + CUSTOMER_UPDATED + COLLECTION_CREATED + COLLECTION_UPDATED + COLLECTION_DELETED + PRODUCT_CREATED + PRODUCT_UPDATED + PRODUCT_DELETED + PRODUCT_VARIANT_CREATED + PRODUCT_VARIANT_UPDATED + PRODUCT_VARIANT_DELETED + PRODUCT_VARIANT_OUT_OF_STOCK + PRODUCT_VARIANT_BACK_IN_STOCK + CHECKOUT_CREATED + CHECKOUT_UPDATED + FULFILLMENT_CREATED + FULFILLMENT_CANCELED + NOTIFY_USER + PAGE_CREATED + PAGE_UPDATED + PAGE_DELETED + SHIPPING_PRICE_CREATED + SHIPPING_PRICE_UPDATED + SHIPPING_PRICE_DELETED + SHIPPING_ZONE_CREATED + SHIPPING_ZONE_UPDATED + SHIPPING_ZONE_DELETED + TRANSACTION_ACTION_REQUEST + TRANSLATION_CREATED + TRANSLATION_UPDATED + WAREHOUSE_CREATED + WAREHOUSE_UPDATED + WAREHOUSE_DELETED + VOUCHER_CREATED + VOUCHER_UPDATED + VOUCHER_DELETED + OBSERVABILITY +} + +""" +Represents warehouse. +""" +type Warehouse implements Node & ObjectWithMetadata { + id: ID! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + name: String! + slug: String! + email: String! + isPrivate: Boolean! + address: Address! + + """ + Warehouse company name. + """ + companyName: String! + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use `Address.companyName` instead." + ) + + """ + Click and collect options: local, all or disabled. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + clickAndCollectOption: WarehouseClickAndCollectOptionEnum! + shippingZones( + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ShippingZoneCountableConnection! +} + +""" +Represents user address data. +""" +type Address implements Node { + id: ID! + firstName: String! + lastName: String! + companyName: String! + streetAddress1: String! + streetAddress2: String! + city: String! + cityArea: String! + postalCode: String! + + """ + Shop's default country. + """ + country: CountryDisplay! + countryArea: String! + phone: String + + """ + Address is user's default shipping address. + """ + isDefaultShippingAddress: Boolean + + """ + Address is user's default billing address. + """ + isDefaultBillingAddress: Boolean +} + +type CountryDisplay { + """ + Country code. + """ + code: String! + + """ + Country name. + """ + country: String! + + """ + Country tax. + """ + vat: VAT +} + +""" +Represents a VAT rate for a country. +""" +type VAT { + """ + Country code. + """ + countryCode: String! + + """ + Standard VAT rate in percent. + """ + standardRate: Float + + """ + Country's VAT rate exceptions for specific types of goods. + """ + reducedRates: [ReducedRate!]! +} + +""" +Represents a reduced VAT rate for a particular type of goods. +""" +type ReducedRate { + """ + Reduced VAT rate in percent. + """ + rate: Float! + + """ + A type of goods. + """ + rateType: String! +} + +""" +An enumeration. +""" +enum WarehouseClickAndCollectOptionEnum { + DISABLED + LOCAL + ALL +} + +type ShippingZoneCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [ShippingZoneCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type ShippingZoneCountableEdge { + """ + The item at the end of the edge. + """ + node: ShippingZone! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +""" +Represents a shipping zone in the shop. Zones are the concept used only for grouping shipping methods in the dashboard, and are never exposed to the customers directly. +""" +type ShippingZone implements Node & ObjectWithMetadata { + id: ID! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + name: String! + default: Boolean! + + """ + Lowest and highest prices for the shipping. + """ + priceRange: MoneyRange + + """ + List of countries available for the method. + """ + countries: [CountryDisplay!]! + + """ + List of shipping methods available for orders shipped to countries within this shipping zone. + """ + shippingMethods: [ShippingMethodType!] + + """ + List of warehouses for shipping zone. + """ + warehouses: [Warehouse!]! + + """ + List of channels for shipping zone. + """ + channels: [Channel!]! + + """ + Description of a shipping zone. + """ + description: String +} + +""" +Represents a range of amounts of money. +""" +type MoneyRange { + """ + Lower bound of a price range. + """ + start: Money + + """ + Upper bound of a price range. + """ + stop: Money +} + +""" +Represents amount of money in specific currency. +""" +type Money { + """ + Currency code. + """ + currency: String! + + """ + Amount of money. + """ + amount: Float! +} + +""" +Shipping method are the methods you'll use to get customer's orders to them. They are directly exposed to the customers. +""" +type ShippingMethodType implements Node & ObjectWithMetadata { + """ + Shipping method ID. + """ + id: ID! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + + """ + Shipping method name. + """ + name: String! + + """ + Shipping method description. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Type of the shipping method. + """ + type: ShippingMethodTypeEnum + + """ + Returns translated shipping method fields for the given language code. + """ + translation( + """ + A language code to return the translation for shipping method. + """ + languageCode: LanguageCodeEnum! + ): ShippingMethodTranslation + + """ + List of channels available for the method. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + channelListings: [ShippingMethodChannelListing!] + + """ + The price of the cheapest variant (including discounts). + """ + maximumOrderPrice: Money + + """ + The price of the cheapest variant (including discounts). + """ + minimumOrderPrice: Money + + """ + Postal code ranges rule of exclusion or inclusion of the shipping method. + """ + postalCodeRules: [ShippingMethodPostalCodeRule!] + + """ + List of excluded products for the shipping method. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + excludedProducts( + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ProductCountableConnection + + """ + Minimum order weight to use this shipping method. + """ + minimumOrderWeight: Weight + + """ + Maximum order weight to use this shipping method. + """ + maximumOrderWeight: Weight + + """ + Maximum number of days for delivery. + """ + maximumDeliveryDays: Int + + """ + Minimal number of days for delivery. + """ + minimumDeliveryDays: Int +} + +""" +An enumeration. +""" +enum ShippingMethodTypeEnum { + PRICE + WEIGHT +} + +type ShippingMethodTranslation implements Node { + id: ID! + + """ + Translation language. + """ + language: LanguageDisplay! + name: String + + """ + Translated description of the shipping method. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString +} + +type LanguageDisplay { + """ + ISO 639 representation of the language name. + """ + code: LanguageCodeEnum! + + """ + Full name of the language. + """ + language: String! +} + +""" +An enumeration. +""" +enum LanguageCodeEnum { + AF + AF_NA + AF_ZA + AGQ + AGQ_CM + AK + AK_GH + AM + AM_ET + AR + AR_AE + AR_BH + AR_DJ + AR_DZ + AR_EG + AR_EH + AR_ER + AR_IL + AR_IQ + AR_JO + AR_KM + AR_KW + AR_LB + AR_LY + AR_MA + AR_MR + AR_OM + AR_PS + AR_QA + AR_SA + AR_SD + AR_SO + AR_SS + AR_SY + AR_TD + AR_TN + AR_YE + AS + AS_IN + ASA + ASA_TZ + AST + AST_ES + AZ + AZ_CYRL + AZ_CYRL_AZ + AZ_LATN + AZ_LATN_AZ + BAS + BAS_CM + BE + BE_BY + BEM + BEM_ZM + BEZ + BEZ_TZ + BG + BG_BG + BM + BM_ML + BN + BN_BD + BN_IN + BO + BO_CN + BO_IN + BR + BR_FR + BRX + BRX_IN + BS + BS_CYRL + BS_CYRL_BA + BS_LATN + BS_LATN_BA + CA + CA_AD + CA_ES + CA_ES_VALENCIA + CA_FR + CA_IT + CCP + CCP_BD + CCP_IN + CE + CE_RU + CEB + CEB_PH + CGG + CGG_UG + CHR + CHR_US + CKB + CKB_IQ + CKB_IR + CS + CS_CZ + CU + CU_RU + CY + CY_GB + DA + DA_DK + DA_GL + DAV + DAV_KE + DE + DE_AT + DE_BE + DE_CH + DE_DE + DE_IT + DE_LI + DE_LU + DJE + DJE_NE + DSB + DSB_DE + DUA + DUA_CM + DYO + DYO_SN + DZ + DZ_BT + EBU + EBU_KE + EE + EE_GH + EE_TG + EL + EL_CY + EL_GR + EN + EN_AE + EN_AG + EN_AI + EN_AS + EN_AT + EN_AU + EN_BB + EN_BE + EN_BI + EN_BM + EN_BS + EN_BW + EN_BZ + EN_CA + EN_CC + EN_CH + EN_CK + EN_CM + EN_CX + EN_CY + EN_DE + EN_DG + EN_DK + EN_DM + EN_ER + EN_FI + EN_FJ + EN_FK + EN_FM + EN_GB + EN_GD + EN_GG + EN_GH + EN_GI + EN_GM + EN_GU + EN_GY + EN_HK + EN_IE + EN_IL + EN_IM + EN_IN + EN_IO + EN_JE + EN_JM + EN_KE + EN_KI + EN_KN + EN_KY + EN_LC + EN_LR + EN_LS + EN_MG + EN_MH + EN_MO + EN_MP + EN_MS + EN_MT + EN_MU + EN_MW + EN_MY + EN_NA + EN_NF + EN_NG + EN_NL + EN_NR + EN_NU + EN_NZ + EN_PG + EN_PH + EN_PK + EN_PN + EN_PR + EN_PW + EN_RW + EN_SB + EN_SC + EN_SD + EN_SE + EN_SG + EN_SH + EN_SI + EN_SL + EN_SS + EN_SX + EN_SZ + EN_TC + EN_TK + EN_TO + EN_TT + EN_TV + EN_TZ + EN_UG + EN_UM + EN_US + EN_VC + EN_VG + EN_VI + EN_VU + EN_WS + EN_ZA + EN_ZM + EN_ZW + EO + ES + ES_AR + ES_BO + ES_BR + ES_BZ + ES_CL + ES_CO + ES_CR + ES_CU + ES_DO + ES_EA + ES_EC + ES_ES + ES_GQ + ES_GT + ES_HN + ES_IC + ES_MX + ES_NI + ES_PA + ES_PE + ES_PH + ES_PR + ES_PY + ES_SV + ES_US + ES_UY + ES_VE + ET + ET_EE + EU + EU_ES + EWO + EWO_CM + FA + FA_AF + FA_IR + FF + FF_ADLM + FF_ADLM_BF + FF_ADLM_CM + FF_ADLM_GH + FF_ADLM_GM + FF_ADLM_GN + FF_ADLM_GW + FF_ADLM_LR + FF_ADLM_MR + FF_ADLM_NE + FF_ADLM_NG + FF_ADLM_SL + FF_ADLM_SN + FF_LATN + FF_LATN_BF + FF_LATN_CM + FF_LATN_GH + FF_LATN_GM + FF_LATN_GN + FF_LATN_GW + FF_LATN_LR + FF_LATN_MR + FF_LATN_NE + FF_LATN_NG + FF_LATN_SL + FF_LATN_SN + FI + FI_FI + FIL + FIL_PH + FO + FO_DK + FO_FO + FR + FR_BE + FR_BF + FR_BI + FR_BJ + FR_BL + FR_CA + FR_CD + FR_CF + FR_CG + FR_CH + FR_CI + FR_CM + FR_DJ + FR_DZ + FR_FR + FR_GA + FR_GF + FR_GN + FR_GP + FR_GQ + FR_HT + FR_KM + FR_LU + FR_MA + FR_MC + FR_MF + FR_MG + FR_ML + FR_MQ + FR_MR + FR_MU + FR_NC + FR_NE + FR_PF + FR_PM + FR_RE + FR_RW + FR_SC + FR_SN + FR_SY + FR_TD + FR_TG + FR_TN + FR_VU + FR_WF + FR_YT + FUR + FUR_IT + FY + FY_NL + GA + GA_GB + GA_IE + GD + GD_GB + GL + GL_ES + GSW + GSW_CH + GSW_FR + GSW_LI + GU + GU_IN + GUZ + GUZ_KE + GV + GV_IM + HA + HA_GH + HA_NE + HA_NG + HAW + HAW_US + HE + HE_IL + HI + HI_IN + HR + HR_BA + HR_HR + HSB + HSB_DE + HU + HU_HU + HY + HY_AM + IA + ID + ID_ID + IG + IG_NG + II + II_CN + IS + IS_IS + IT + IT_CH + IT_IT + IT_SM + IT_VA + JA + JA_JP + JGO + JGO_CM + JMC + JMC_TZ + JV + JV_ID + KA + KA_GE + KAB + KAB_DZ + KAM + KAM_KE + KDE + KDE_TZ + KEA + KEA_CV + KHQ + KHQ_ML + KI + KI_KE + KK + KK_KZ + KKJ + KKJ_CM + KL + KL_GL + KLN + KLN_KE + KM + KM_KH + KN + KN_IN + KO + KO_KP + KO_KR + KOK + KOK_IN + KS + KS_ARAB + KS_ARAB_IN + KSB + KSB_TZ + KSF + KSF_CM + KSH + KSH_DE + KU + KU_TR + KW + KW_GB + KY + KY_KG + LAG + LAG_TZ + LB + LB_LU + LG + LG_UG + LKT + LKT_US + LN + LN_AO + LN_CD + LN_CF + LN_CG + LO + LO_LA + LRC + LRC_IQ + LRC_IR + LT + LT_LT + LU + LU_CD + LUO + LUO_KE + LUY + LUY_KE + LV + LV_LV + MAI + MAI_IN + MAS + MAS_KE + MAS_TZ + MER + MER_KE + MFE + MFE_MU + MG + MG_MG + MGH + MGH_MZ + MGO + MGO_CM + MI + MI_NZ + MK + MK_MK + ML + ML_IN + MN + MN_MN + MNI + MNI_BENG + MNI_BENG_IN + MR + MR_IN + MS + MS_BN + MS_ID + MS_MY + MS_SG + MT + MT_MT + MUA + MUA_CM + MY + MY_MM + MZN + MZN_IR + NAQ + NAQ_NA + NB + NB_NO + NB_SJ + ND + ND_ZW + NDS + NDS_DE + NDS_NL + NE + NE_IN + NE_NP + NL + NL_AW + NL_BE + NL_BQ + NL_CW + NL_NL + NL_SR + NL_SX + NMG + NMG_CM + NN + NN_NO + NNH + NNH_CM + NUS + NUS_SS + NYN + NYN_UG + OM + OM_ET + OM_KE + OR + OR_IN + OS + OS_GE + OS_RU + PA + PA_ARAB + PA_ARAB_PK + PA_GURU + PA_GURU_IN + PCM + PCM_NG + PL + PL_PL + PRG + PS + PS_AF + PS_PK + PT + PT_AO + PT_BR + PT_CH + PT_CV + PT_GQ + PT_GW + PT_LU + PT_MO + PT_MZ + PT_PT + PT_ST + PT_TL + QU + QU_BO + QU_EC + QU_PE + RM + RM_CH + RN + RN_BI + RO + RO_MD + RO_RO + ROF + ROF_TZ + RU + RU_BY + RU_KG + RU_KZ + RU_MD + RU_RU + RU_UA + RW + RW_RW + RWK + RWK_TZ + SAH + SAH_RU + SAQ + SAQ_KE + SAT + SAT_OLCK + SAT_OLCK_IN + SBP + SBP_TZ + SD + SD_ARAB + SD_ARAB_PK + SD_DEVA + SD_DEVA_IN + SE + SE_FI + SE_NO + SE_SE + SEH + SEH_MZ + SES + SES_ML + SG + SG_CF + SHI + SHI_LATN + SHI_LATN_MA + SHI_TFNG + SHI_TFNG_MA + SI + SI_LK + SK + SK_SK + SL + SL_SI + SMN + SMN_FI + SN + SN_ZW + SO + SO_DJ + SO_ET + SO_KE + SO_SO + SQ + SQ_AL + SQ_MK + SQ_XK + SR + SR_CYRL + SR_CYRL_BA + SR_CYRL_ME + SR_CYRL_RS + SR_CYRL_XK + SR_LATN + SR_LATN_BA + SR_LATN_ME + SR_LATN_RS + SR_LATN_XK + SU + SU_LATN + SU_LATN_ID + SV + SV_AX + SV_FI + SV_SE + SW + SW_CD + SW_KE + SW_TZ + SW_UG + TA + TA_IN + TA_LK + TA_MY + TA_SG + TE + TE_IN + TEO + TEO_KE + TEO_UG + TG + TG_TJ + TH + TH_TH + TI + TI_ER + TI_ET + TK + TK_TM + TO + TO_TO + TR + TR_CY + TR_TR + TT + TT_RU + TWQ + TWQ_NE + TZM + TZM_MA + UG + UG_CN + UK + UK_UA + UR + UR_IN + UR_PK + UZ + UZ_ARAB + UZ_ARAB_AF + UZ_CYRL + UZ_CYRL_UZ + UZ_LATN + UZ_LATN_UZ + VAI + VAI_LATN + VAI_LATN_LR + VAI_VAII + VAI_VAII_LR + VI + VI_VN + VO + VUN + VUN_TZ + WAE + WAE_CH + WO + WO_SN + XH + XH_ZA + XOG + XOG_UG + YAV + YAV_CM + YI + YO + YO_BJ + YO_NG + YUE + YUE_HANS + YUE_HANS_CN + YUE_HANT + YUE_HANT_HK + ZGH + ZGH_MA + ZH + ZH_HANS + ZH_HANS_CN + ZH_HANS_HK + ZH_HANS_MO + ZH_HANS_SG + ZH_HANT + ZH_HANT_HK + ZH_HANT_MO + ZH_HANT_TW + ZU + ZU_ZA +} + +""" +Represents shipping method channel listing. +""" +type ShippingMethodChannelListing implements Node { + id: ID! + channel: Channel! + maximumOrderPrice: Money + minimumOrderPrice: Money + price: Money +} + +""" +Represents channel. +""" +type Channel implements Node { + id: ID! + name: String! + isActive: Boolean! + currencyCode: String! + slug: String! + + """ + Whether a channel has associated orders. + + Requires one of the following permissions: MANAGE_CHANNELS. + """ + hasOrders: Boolean! + + """ + Default country for the channel. Default country can be used in checkout to determine the stock quantities or calculate taxes when the country was not explicitly provided. + + Added in Saleor 3.1. + """ + defaultCountry: CountryDisplay! +} + +""" +Represents shipping method postal code rule. +""" +type ShippingMethodPostalCodeRule implements Node { + """ + The ID of the object. + """ + id: ID! + + """ + Start address range. + """ + start: String + + """ + End address range. + """ + end: String + + """ + Inclusion type of the postal code rule. + """ + inclusionType: PostalCodeRuleInclusionTypeEnum +} + +""" +An enumeration. +""" +enum PostalCodeRuleInclusionTypeEnum { + INCLUDE + EXCLUDE +} + +type ProductCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [ProductCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type ProductCountableEdge { + """ + The item at the end of the edge. + """ + node: Product! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +""" +Represents an individual item for sale in the storefront. +""" +type Product implements Node & ObjectWithMetadata { + id: ID! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + seoTitle: String + seoDescription: String + name: String! + + """ + Description of the product. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + productType: ProductType! + slug: String! + category: Category + created: DateTime! + updatedAt: DateTime! + chargeTaxes: Boolean! + weight: Weight + defaultVariant: ProductVariant + rating: Float + + """ + Channel given to retrieve this product. Also used by federation gateway to resolve this object in a federated query. + """ + channel: String + + """ + Description of the product. + + Rich text format. For reference see https://editorjs.io/ + """ + descriptionJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `description` field instead." + ) + + """ + The main thumbnail for a product. + """ + thumbnail( + """ + Size of thumbnail. + """ + size: Int + ): Image + + """ + Lists the storefront product's pricing, the current price and discounts, only meant for displaying. + """ + pricing( + """ + Destination address used to find warehouses where stock availability for this product is checked. If address is empty, uses `Shop.companyAddress` or fallbacks to server's `settings.DEFAULT_COUNTRY` configuration. + """ + address: AddressInput + ): ProductPricingInfo + + """ + Whether the product is in stock and visible or not. + """ + isAvailable( + """ + Destination address used to find warehouses where stock availability for this product is checked. If address is empty, uses `Shop.companyAddress` or fallbacks to server's `settings.DEFAULT_COUNTRY` configuration. + """ + address: AddressInput + ): Boolean + + """ + A type of tax. Assigned by enabled tax gateway + """ + taxType: TaxType + + """ + List of attributes assigned to this product. + """ + attributes: [SelectedAttribute!]! + + """ + List of availability in channels for the product. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + channelListings: [ProductChannelListing!] + + """ + Get a single product media by ID. + """ + mediaById( + """ + ID of a product media. + """ + id: ID + ): ProductMedia + + """ + Get a single product image by ID. + """ + imageById( + """ + ID of a product image. + """ + id: ID + ): ProductImage + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `mediaById` field instead." + ) + + """ + List of variants for the product. Requires the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. + """ + variants: [ProductVariant!] + + """ + List of media for the product. + """ + media: [ProductMedia!] + + """ + List of images for the product. + """ + images: [ProductImage!] + @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `media` field instead.") + + """ + List of collections for the product. Requires the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. + """ + collections: [Collection!] + + """ + Returns translated product fields for the given language code. + """ + translation( + """ + A language code to return the translation for product. + """ + languageCode: LanguageCodeEnum! + ): ProductTranslation + + """ + Date when product is available for purchase. + """ + availableForPurchase: Date + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `availableForPurchaseAt` field to fetch the available for purchase date." + ) + + """ + Date when product is available for purchase. + """ + availableForPurchaseAt: DateTime + + """ + Whether the product is available for purchase. + """ + isAvailableForPurchase: Boolean +} + +""" +Represents a type of product. It defines what attributes are available to products of this type. +""" +type ProductType implements Node & ObjectWithMetadata { + id: ID! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + name: String! + slug: String! + hasVariants: Boolean! + isShippingRequired: Boolean! + isDigital: Boolean! + weight: Weight + + """ + The product type kind. + """ + kind: ProductTypeKindEnum! + + """ + List of products of this type. + """ + products( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ProductCountableConnection + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the top-level `products` query with the `productTypes` filter." + ) + + """ + A type of tax. Assigned by enabled tax gateway + """ + taxType: TaxType + + """ + Variant attributes of that product type. + """ + variantAttributes( + """ + Define scope of returned attributes. + """ + variantSelection: VariantAttributeScope + ): [Attribute!] + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use `assignedVariantAttributes` instead." + ) + + """ + Variant attributes of that product type with attached variant selection. + + Added in Saleor 3.1. + """ + assignedVariantAttributes( + """ + Define scope of returned attributes. + """ + variantSelection: VariantAttributeScope + ): [AssignedVariantAttribute!] + + """ + Product attributes of that product type. + """ + productAttributes: [Attribute!] + + """ + List of attributes which can be assigned to this product type. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + availableAttributes( + filter: AttributeFilterInput + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): AttributeCountableConnection +} + +""" +Represents weight value in a specific weight unit. +""" +type Weight { + """ + Weight unit. + """ + unit: WeightUnitsEnum! + + """ + Weight value. + """ + value: Float! +} + +""" +An enumeration. +""" +enum WeightUnitsEnum { + G + LB + OZ + KG + TONNE +} + +""" +An enumeration. +""" +enum ProductTypeKindEnum { + NORMAL + GIFT_CARD +} + +""" +Representation of tax types fetched from tax gateway. +""" +type TaxType { + """ + Description of the tax type. + """ + description: String + + """ + External tax code used to identify given tax group. + """ + taxCode: String +} + +""" +Custom attribute of a product. Attributes can be assigned to products and variants at the product type level. +""" +type Attribute implements Node & ObjectWithMetadata { + id: ID! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + + """ + The input type to use for entering attribute values in the dashboard. + """ + inputType: AttributeInputTypeEnum + + """ + The entity type which can be used as a reference. + """ + entityType: AttributeEntityTypeEnum + + """ + Name of an attribute displayed in the interface. + """ + name: String + + """ + Internal representation of an attribute name. + """ + slug: String + + """ + The attribute type. + """ + type: AttributeTypeEnum + + """ + The unit of attribute values. + """ + unit: MeasurementUnitsEnum + + """ + List of attribute's values. + """ + choices( + """ + Sort attribute choices. + """ + sortBy: AttributeChoicesSortingInput + + """ + Filtering options for attribute choices. + """ + filter: AttributeValueFilterInput + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): AttributeValueCountableConnection + + """ + Whether the attribute requires values to be passed or not. Requires one of the following permissions: MANAGE_PAGES, MANAGE_PAGE_TYPES_AND_ATTRIBUTES, MANAGE_PRODUCTS, MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + valueRequired: Boolean! + + """ + Whether the attribute should be visible or not in storefront. Requires one of the following permissions: MANAGE_PAGES, MANAGE_PAGE_TYPES_AND_ATTRIBUTES, MANAGE_PRODUCTS, MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + visibleInStorefront: Boolean! + + """ + Whether the attribute can be filtered in storefront. Requires one of the following permissions: MANAGE_PAGES, MANAGE_PAGE_TYPES_AND_ATTRIBUTES, MANAGE_PRODUCTS, MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + filterableInStorefront: Boolean! + + """ + Whether the attribute can be filtered in dashboard. Requires one of the following permissions: MANAGE_PAGES, MANAGE_PAGE_TYPES_AND_ATTRIBUTES, MANAGE_PRODUCTS, MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + filterableInDashboard: Boolean! + + """ + Whether the attribute can be displayed in the admin product list. Requires one of the following permissions: MANAGE_PAGES, MANAGE_PAGE_TYPES_AND_ATTRIBUTES, MANAGE_PRODUCTS, MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + availableInGrid: Boolean! + + """ + The position of the attribute in the storefront navigation (0 by default). Requires one of the following permissions: MANAGE_PAGES, MANAGE_PAGE_TYPES_AND_ATTRIBUTES, MANAGE_PRODUCTS, MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + storefrontSearchPosition: Int! + + """ + Returns translated attribute fields for the given language code. + """ + translation( + """ + A language code to return the translation for attribute. + """ + languageCode: LanguageCodeEnum! + ): AttributeTranslation + + """ + Flag indicating that attribute has predefined choices. + """ + withChoices: Boolean! + productTypes( + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ProductTypeCountableConnection! + productVariantTypes( + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ProductTypeCountableConnection! +} + +""" +An enumeration. +""" +enum AttributeInputTypeEnum { + DROPDOWN + MULTISELECT + FILE + REFERENCE + NUMERIC + RICH_TEXT + SWATCH + BOOLEAN + DATE + DATE_TIME +} + +""" +An enumeration. +""" +enum AttributeEntityTypeEnum { + PAGE + PRODUCT +} + +""" +An enumeration. +""" +enum AttributeTypeEnum { + PRODUCT_TYPE + PAGE_TYPE +} + +""" +An enumeration. +""" +enum MeasurementUnitsEnum { + CM + M + KM + FT + YD + INCH + SQ_CM + SQ_M + SQ_KM + SQ_FT + SQ_YD + SQ_INCH + CUBIC_MILLIMETER + CUBIC_CENTIMETER + CUBIC_DECIMETER + CUBIC_METER + LITER + CUBIC_FOOT + CUBIC_INCH + CUBIC_YARD + QT + PINT + FL_OZ + ACRE_IN + ACRE_FT + G + LB + OZ + KG + TONNE +} + +type AttributeValueCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [AttributeValueCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type AttributeValueCountableEdge { + """ + The item at the end of the edge. + """ + node: AttributeValue! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +""" +Represents a value of an attribute. +""" +type AttributeValue implements Node { + id: ID! + + """ + Name of a value displayed in the interface. + """ + name: String + + """ + Internal representation of a value (unique per attribute). + """ + slug: String + + """ + Represent value of the attribute value (e.g. color values for swatch attributes). + """ + value: String + + """ + Returns translated attribute value fields for the given language code. + """ + translation( + """ + A language code to return the translation for attribute value. + """ + languageCode: LanguageCodeEnum! + ): AttributeValueTranslation + + """ + The input type to use for entering attribute values in the dashboard. + """ + inputType: AttributeInputTypeEnum + + """ + The ID of the attribute reference. + """ + reference: ID + + """ + Represents file URL and content type (if attribute value is a file). + """ + file: File + + """ + Represents the text of the attribute value, includes formatting. + + Rich text format. For reference see https://editorjs.io/ + """ + richText: JSONString + + """ + Represents the boolean value of the attribute value. + """ + boolean: Boolean + + """ + Represents the date value of the attribute value. + """ + date: Date + + """ + Represents the date/time value of the attribute value. + """ + dateTime: DateTime +} + +type AttributeValueTranslation implements Node { + id: ID! + + """ + Translation language. + """ + language: LanguageDisplay! + name: String! + + """ + Attribute value. + + Rich text format. For reference see https://editorjs.io/ + """ + richText: JSONString +} + +type File { + """ + The URL of the file. + """ + url: String! + + """ + Content type of the file. + """ + contentType: String +} + +""" +The `Date` scalar type represents a Date +value as specified by +[iso8601](https://en.wikipedia.org/wiki/ISO_8601). +""" +scalar Date + +input AttributeChoicesSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort attribute choices by the selected field. + """ + field: AttributeChoicesSortField! +} + +enum AttributeChoicesSortField { + """ + Sort attribute choice by name. + """ + NAME + + """ + Sort attribute choice by slug. + """ + SLUG +} + +input AttributeValueFilterInput { + search: String + ids: [ID!] +} + +type AttributeTranslation implements Node { + id: ID! + + """ + Translation language. + """ + language: LanguageDisplay! + name: String! +} + +type ProductTypeCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [ProductTypeCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type ProductTypeCountableEdge { + """ + The item at the end of the edge. + """ + node: ProductType! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +enum VariantAttributeScope { + ALL + VARIANT_SELECTION + NOT_VARIANT_SELECTION +} + +""" +Represents assigned attribute to variant with variant selection attached. + +Added in Saleor 3.1. +""" +type AssignedVariantAttribute { + """ + Attribute assigned to variant. + """ + attribute: Attribute! + + """ + Determines, whether assigned attribute is allowed for variant selection. Supported variant types for variant selection are: ['dropdown', 'boolean', 'swatch', 'numeric'] + """ + variantSelection: Boolean! +} + +type AttributeCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [AttributeCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type AttributeCountableEdge { + """ + The item at the end of the edge. + """ + node: Attribute! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +input AttributeFilterInput { + valueRequired: Boolean + isVariantOnly: Boolean + visibleInStorefront: Boolean + filterableInStorefront: Boolean + filterableInDashboard: Boolean + availableInGrid: Boolean + metadata: [MetadataFilter!] + search: String + ids: [ID!] + type: AttributeTypeEnum + inCollection: ID + inCategory: ID + + """ + Specifies the channel by which the data should be filtered. + + DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. + """ + channel: String +} + +input MetadataFilter { + """ + Key of a metadata item. + """ + key: String! + + """ + Value of a metadata item. + """ + value: String +} + +""" +Represents a single category of products. Categories allow to organize products in a tree-hierarchies which can be used for navigation in the storefront. +""" +type Category implements Node & ObjectWithMetadata { + id: ID! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + seoTitle: String + seoDescription: String + name: String! + + """ + Description of the category. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + slug: String! + parent: Category + level: Int! + + """ + Description of the category. + + Rich text format. For reference see https://editorjs.io/ + """ + descriptionJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `description` field instead." + ) + + """ + List of ancestors of the category. + """ + ancestors( + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): CategoryCountableConnection + + """ + List of products in the category. Requires the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. + """ + products( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ProductCountableConnection + + """ + List of children of the category. + """ + children( + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): CategoryCountableConnection + backgroundImage( + """ + Size of the image. + """ + size: Int + ): Image + + """ + Returns translated category fields for the given language code. + """ + translation( + """ + A language code to return the translation for category. + """ + languageCode: LanguageCodeEnum! + ): CategoryTranslation +} + +type CategoryCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [CategoryCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type CategoryCountableEdge { + """ + The item at the end of the edge. + """ + node: Category! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +""" +Represents an image. +""" +type Image { + """ + The URL of the image. + """ + url: String! + + """ + Alt text for an image. + """ + alt: String +} + +type CategoryTranslation implements Node { + id: ID! + + """ + Translation language. + """ + language: LanguageDisplay! + seoTitle: String + seoDescription: String + name: String + + """ + Translated description of the category. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Translated description of the category. + + Rich text format. For reference see https://editorjs.io/ + """ + descriptionJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `description` field instead." + ) +} + +""" +Represents a version of a product such as different size or color. +""" +type ProductVariant implements Node & ObjectWithMetadata { + id: ID! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + name: String! + sku: String + product: Product! + trackInventory: Boolean! + quantityLimitPerCustomer: Int + weight: Weight + + """ + Channel given to retrieve this product variant. Also used by federation gateway to resolve this object in a federated query. + """ + channel: String + + """ + List of price information in channels for the product. + + Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER. + """ + channelListings: [ProductVariantChannelListing!] + + """ + Lists the storefront variant's pricing, the current price and discounts, only meant for displaying. + """ + pricing( + """ + Destination address used to find warehouses where stock availability for this product is checked. If address is empty, uses `Shop.companyAddress` or fallbacks to server's `settings.DEFAULT_COUNTRY` configuration. + """ + address: AddressInput + ): VariantPricingInfo + + """ + List of attributes assigned to this variant. + """ + attributes( + """ + Define scope of returned attributes. + """ + variantSelection: VariantAttributeScope + ): [SelectedAttribute!]! + + """ + Gross margin percentage value. + """ + margin: Int + + """ + Total quantity ordered. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + quantityOrdered: Int + + """ + Total revenue generated by a variant in given period of time. Note: this field should be queried using `reportProductSales` query as it uses optimizations suitable for such calculations. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + revenue(period: ReportingPeriod): TaxedMoney + + """ + List of images for the product variant. + """ + images: [ProductImage!] + @deprecated(reason: "This field will be removed in Saleor 4.0. Use the `media` field instead.") + + """ + List of media for the product variant. + """ + media: [ProductMedia!] + + """ + Returns translated product variant fields for the given language code. + """ + translation( + """ + A language code to return the translation for product variant. + """ + languageCode: LanguageCodeEnum! + ): ProductVariantTranslation + + """ + Digital content for the product variant. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + digitalContent: DigitalContent + + """ + Stocks for the product variant. + + Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. + """ + stocks( + """ + Destination address used to find warehouses where stock availability for this product is checked. If address is empty, uses `Shop.companyAddress` or fallbacks to server's `settings.DEFAULT_COUNTRY` configuration. + """ + address: AddressInput + + """ + Two-letter ISO 3166-1 country code. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `address` argument instead. + """ + countryCode: CountryCode + ): [Stock!] + + """ + Quantity of a product available for sale in one checkout. Field value will be `null` when no `limitQuantityPerCheckout` in global settings has been set, and `productVariant` stocks are not tracked. + """ + quantityAvailable( + """ + Destination address used to find warehouses where stock availability for this product is checked. If address is empty, uses `Shop.companyAddress` or fallbacks to server's `settings.DEFAULT_COUNTRY` configuration. + """ + address: AddressInput + + """ + Two-letter ISO 3166-1 country code. When provided, the exact quantity from a warehouse operating in shipping zones that contain this country will be returned. Otherwise, it will return the maximum quantity from all shipping zones. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `address` argument instead. + """ + countryCode: CountryCode + ): Int + + """ + Preorder data for product variant. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + preorder: PreorderData + created: DateTime! + updatedAt: DateTime! +} + +""" +Represents product varaint channel listing. +""" +type ProductVariantChannelListing implements Node { + id: ID! + channel: Channel! + price: Money + + """ + Cost price of the variant. + """ + costPrice: Money + + """ + Gross margin percentage value. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + margin: Int + + """ + Preorder variant data. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + preorderThreshold: PreorderThreshold +} + +""" +Represents preorder variant data for channel. +""" +type PreorderThreshold { + """ + Preorder threshold for product variant in this channel. + """ + quantity: Int + + """ + Number of sold product variant in this channel. + """ + soldUnits: Int! +} + +""" +Represents availability of a variant in the storefront. +""" +type VariantPricingInfo { + """ + Whether it is in sale or not. + """ + onSale: Boolean + + """ + The discount amount if in sale (null otherwise). + """ + discount: TaxedMoney + + """ + The discount amount in the local currency. + """ + discountLocalCurrency: TaxedMoney + + """ + The price, with any discount subtracted. + """ + price: TaxedMoney + + """ + The price without any discount. + """ + priceUndiscounted: TaxedMoney + + """ + The discounted price in the local currency. + """ + priceLocalCurrency: TaxedMoney +} + +""" +Represents a monetary value with taxes. In cases where taxes were not applied, net and gross values will be equal. +""" +type TaxedMoney { + """ + Currency code. + """ + currency: String! + + """ + Amount of money including taxes. + """ + gross: Money! + + """ + Amount of money without taxes. + """ + net: Money! + + """ + Amount of taxes. + """ + tax: Money! +} + +input AddressInput { + """ + Given name. + """ + firstName: String + + """ + Family name. + """ + lastName: String + + """ + Company or organization. + """ + companyName: String + + """ + Address. + """ + streetAddress1: String + + """ + Address. + """ + streetAddress2: String + + """ + City. + """ + city: String + + """ + District. + """ + cityArea: String + + """ + Postal code. + """ + postalCode: String + + """ + Country. + """ + country: CountryCode + + """ + State or province. + """ + countryArea: String + + """ + Phone number. + """ + phone: String +} + +""" +An enumeration. +""" +enum CountryCode { + AF + AX + AL + DZ + AS + AD + AO + AI + AQ + AG + AR + AM + AW + AU + AT + AZ + BS + BH + BD + BB + BY + BE + BZ + BJ + BM + BT + BO + BQ + BA + BW + BV + BR + IO + BN + BG + BF + BI + CV + KH + CM + CA + KY + CF + TD + CL + CN + CX + CC + CO + KM + CG + CD + CK + CR + CI + HR + CU + CW + CY + CZ + DK + DJ + DM + DO + EC + EG + SV + GQ + ER + EE + SZ + ET + EU + FK + FO + FJ + FI + FR + GF + PF + TF + GA + GM + GE + DE + GH + GI + GR + GL + GD + GP + GU + GT + GG + GN + GW + GY + HT + HM + VA + HN + HK + HU + IS + IN + ID + IR + IQ + IE + IM + IL + IT + JM + JP + JE + JO + KZ + KE + KI + KW + KG + LA + LV + LB + LS + LR + LY + LI + LT + LU + MO + MG + MW + MY + MV + ML + MT + MH + MQ + MR + MU + YT + MX + FM + MD + MC + MN + ME + MS + MA + MZ + MM + NA + NR + NP + NL + NC + NZ + NI + NE + NG + NU + NF + KP + MK + MP + NO + OM + PK + PW + PS + PA + PG + PY + PE + PH + PN + PL + PT + PR + QA + RE + RO + RU + RW + BL + SH + KN + LC + MF + PM + VC + WS + SM + ST + SA + SN + RS + SC + SL + SG + SX + SK + SI + SB + SO + ZA + GS + KR + SS + ES + LK + SD + SR + SJ + SE + CH + SY + TW + TJ + TZ + TH + TL + TG + TK + TO + TT + TN + TR + TM + TC + TV + UG + UA + AE + GB + UM + US + UY + UZ + VU + VE + VN + VG + VI + WF + EH + YE + ZM + ZW +} + +""" +Represents a custom attribute. +""" +type SelectedAttribute { + """ + Name of an attribute displayed in the interface. + """ + attribute: Attribute! + + """ + Values of an attribute. + """ + values: [AttributeValue!]! +} + +enum ReportingPeriod { + TODAY + THIS_MONTH +} + +""" +Represents a product image. +""" +type ProductImage { + """ + The ID of the image. + """ + id: ID! + + """ + The alt text of the image. + """ + alt: String + + """ + The new relative sorting position of the item (from -inf to +inf). 1 moves the item one position forward, -1 moves the item one position backward, 0 leaves the item unchanged. + """ + sortOrder: Int + + """ + The URL of the image. + """ + url( + """ + Size of the image. + """ + size: Int + ): String! +} + +""" +Represents a product media. +""" +type ProductMedia implements Node { + id: ID! + sortOrder: Int + alt: String! + type: ProductMediaType! + oembedData: JSONString! + + """ + The URL of the media. + """ + url( + """ + Size of the image. + """ + size: Int + ): String! +} + +""" +An enumeration. +""" +enum ProductMediaType { + IMAGE + VIDEO +} + +type ProductVariantTranslation implements Node { + id: ID! + + """ + Translation language. + """ + language: LanguageDisplay! + name: String! +} + +type DigitalContent implements Node & ObjectWithMetadata { + id: ID! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + useDefaultSettings: Boolean! + automaticFulfillment: Boolean! + contentFile: String! + maxDownloads: Int + urlValidDays: Int + + """ + List of URLs for the digital variant. + """ + urls: [DigitalContentUrl!] + + """ + Product variant assigned to digital content. + """ + productVariant: ProductVariant! +} + +type DigitalContentUrl implements Node { + id: ID! + content: DigitalContent! + created: DateTime! + downloadNum: Int! + + """ + URL for digital content. + """ + url: String + + """ + UUID of digital content. + """ + token: UUID! +} + +scalar UUID + +""" +Represents stock. +""" +type Stock implements Node { + id: ID! + warehouse: Warehouse! + productVariant: ProductVariant! + + """ + Quantity of a product in the warehouse's possession, including the allocated stock that is waiting for shipment. + + Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. + """ + quantity: Int! + + """ + Quantity allocated for orders. + + Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. + """ + quantityAllocated: Int! + + """ + Quantity reserved for checkouts. + + Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. + """ + quantityReserved: Int! +} + +""" +Represents preorder settings for product variant. +""" +type PreorderData { + """ + The global preorder threshold for product variant. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + globalThreshold: Int + + """ + Total number of sold product variant during preorder. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + globalSoldUnits: Int! + + """ + Preorder end date. + """ + endDate: DateTime +} + +""" +Represents availability of a product in the storefront. +""" +type ProductPricingInfo { + """ + Whether it is in sale or not. + """ + onSale: Boolean + + """ + The discount amount if in sale (null otherwise). + """ + discount: TaxedMoney + + """ + The discount amount in the local currency. + """ + discountLocalCurrency: TaxedMoney + + """ + The discounted price range of the product variants. + """ + priceRange: TaxedMoneyRange + + """ + The undiscounted price range of the product variants. + """ + priceRangeUndiscounted: TaxedMoneyRange + + """ + The discounted price range of the product variants in the local currency. + """ + priceRangeLocalCurrency: TaxedMoneyRange +} + +""" +Represents a range of monetary values. +""" +type TaxedMoneyRange { + """ + Lower bound of a price range. + """ + start: TaxedMoney + + """ + Upper bound of a price range. + """ + stop: TaxedMoney +} + +""" +Represents product channel listing. +""" +type ProductChannelListing implements Node { + id: ID! + publicationDate: Date + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `publishedAt` field to fetch the publication date." + ) + + """ + The product publication date time. + + Added in Saleor 3.3. + """ + publishedAt: DateTime + isPublished: Boolean! + channel: Channel! + visibleInListings: Boolean! + availableForPurchase: Date + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `availableForPurchaseAt` field to fetch the available for purchase date." + ) + + """ + The product available for purchase date time. + + Added in Saleor 3.3. + """ + availableForPurchaseAt: DateTime + + """ + The price of the cheapest variant (including discounts). + """ + discountedPrice: Money + + """ + Purchase cost of product. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + purchaseCost: MoneyRange + + """ + Range of margin percentage value. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + margin: Margin + + """ + Whether the product is available for purchase. + """ + isAvailableForPurchase: Boolean + + """ + Lists the storefront product's pricing, the current price and discounts, only meant for displaying. + """ + pricing( + """ + Destination address used to find warehouses where stock availability for this product is checked. If address is empty, uses `Shop.companyAddress` or fallbacks to server's `settings.DEFAULT_COUNTRY` configuration. + """ + address: AddressInput + ): ProductPricingInfo +} + +type Margin { + start: Int + stop: Int +} + +""" +Represents a collection of products. +""" +type Collection implements Node & ObjectWithMetadata { + id: ID! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + seoTitle: String + seoDescription: String + name: String! + + """ + Description of the collection. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + slug: String! + + """ + Channel given to retrieve this collection. Also used by federation gateway to resolve this object in a federated query. + """ + channel: String + + """ + Description of the collection. + + Rich text format. For reference see https://editorjs.io/ + """ + descriptionJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `description` field instead." + ) + + """ + List of products in this collection. + """ + products( + """ + Filtering options for products. + """ + filter: ProductFilterInput + + """ + Sort products. + """ + sortBy: ProductOrder + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ProductCountableConnection + backgroundImage( + """ + Size of the image. + """ + size: Int + ): Image + + """ + Returns translated collection fields for the given language code. + """ + translation( + """ + A language code to return the translation for collection. + """ + languageCode: LanguageCodeEnum! + ): CollectionTranslation + + """ + List of channels in which the collection is available. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + channelListings: [CollectionChannelListing!] +} + +input ProductFilterInput { + isPublished: Boolean + collections: [ID!] + categories: [ID!] + hasCategory: Boolean + attributes: [AttributeInput!] + stockAvailability: StockAvailability + stocks: ProductStockFilterInput + search: String + metadata: [MetadataFilter!] + price: PriceRangeInput + minimalPrice: PriceRangeInput + updatedAt: DateTimeRangeInput + productTypes: [ID!] + giftCard: Boolean + ids: [ID!] + hasPreorderedVariants: Boolean + + """ + Specifies the channel by which the data should be filtered. + + DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. + """ + channel: String +} + +input AttributeInput { + """ + Internal representation of an attribute name. + """ + slug: String! + + """ + Internal representation of a value (unique per attribute). + """ + values: [String!] + + """ + The range that the returned values should be in. + """ + valuesRange: IntRangeInput + + """ + The date/time range that the returned values should be in. + """ + dateTime: DateTimeRangeInput + + """ + The date range that the returned values should be in. In case of date/time attributes, the UTC midnight of the given date is used. + """ + date: DateRangeInput + + """ + The boolean value of the attribute. + """ + boolean: Boolean +} + +input IntRangeInput { + """ + Value greater than or equal to. + """ + gte: Int + + """ + Value less than or equal to. + """ + lte: Int +} + +input DateTimeRangeInput { + """ + Start date. + """ + gte: DateTime + + """ + End date. + """ + lte: DateTime +} + +input DateRangeInput { + """ + Start date. + """ + gte: Date + + """ + End date. + """ + lte: Date +} + +enum StockAvailability { + IN_STOCK + OUT_OF_STOCK +} + +input ProductStockFilterInput { + warehouseIds: [ID!] + quantity: IntRangeInput +} + +input PriceRangeInput { + """ + Price greater than or equal to. + """ + gte: Float + + """ + Price less than or equal to. + """ + lte: Float +} + +input ProductOrder { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Specifies the channel in which to sort the data. + + DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. + """ + channel: String + + """ + Sort product by the selected attribute's values. + Note: this doesn't take translations into account yet. + """ + attributeId: ID + + """ + Sort products by the selected field. + """ + field: ProductOrderField +} + +enum ProductOrderField { + """ + Sort products by name. + """ + NAME + + """ + Sort products by rank. Note: This option is available only with the `search` filter. + """ + RANK + + """ + Sort products by price. + + This option requires a channel filter to work as the values can vary between channels. + """ + PRICE + + """ + Sort products by a minimal price of a product's variant. + + This option requires a channel filter to work as the values can vary between channels. + """ + MINIMAL_PRICE + + """ + Sort products by update date. + """ + LAST_MODIFIED + + """ + Sort products by update date. + """ + DATE + + """ + Sort products by type. + """ + TYPE + + """ + Sort products by publication status. + + This option requires a channel filter to work as the values can vary between channels. + """ + PUBLISHED + + """ + Sort products by publication date. + + This option requires a channel filter to work as the values can vary between channels. + """ + PUBLICATION_DATE + + """ + Sort products by publication date. + + This option requires a channel filter to work as the values can vary between channels. + """ + PUBLISHED_AT + + """ + Sort products by update date. + """ + LAST_MODIFIED_AT + + """ + Sort products by collection. Note: This option is available only for the `Collection.products` query. + + This option requires a channel filter to work as the values can vary between channels. + """ + COLLECTION + + """ + Sort products by rating. + """ + RATING +} + +type CollectionTranslation implements Node { + id: ID! + + """ + Translation language. + """ + language: LanguageDisplay! + seoTitle: String + seoDescription: String + name: String + + """ + Translated description of the collection. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Translated description of the collection. + + Rich text format. For reference see https://editorjs.io/ + """ + descriptionJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `description` field instead." + ) +} + +""" +Represents collection channel listing. +""" +type CollectionChannelListing implements Node { + id: ID! + publicationDate: Date + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `publishedAt` field to fetch the publication date." + ) + + """ + The collection publication date. + + Added in Saleor 3.3. + """ + publishedAt: DateTime + isPublished: Boolean! + channel: Channel! +} + +type ProductTranslation implements Node { + id: ID! + + """ + Translation language. + """ + language: LanguageDisplay! + seoTitle: String + seoDescription: String + name: String + + """ + Translated description of the product. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Translated description of the product. + + Rich text format. For reference see https://editorjs.io/ + """ + descriptionJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `description` field instead." + ) +} + +type WarehouseCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [WarehouseCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type WarehouseCountableEdge { + """ + The item at the end of the edge. + """ + node: Warehouse! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +input WarehouseFilterInput { + clickAndCollectOption: WarehouseClickAndCollectOptionEnum + search: String + ids: [ID!] + isPrivate: Boolean +} + +input WarehouseSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort warehouses by the selected field. + """ + field: WarehouseSortField! +} + +enum WarehouseSortField { + """ + Sort warehouses by name. + """ + NAME +} + +type TranslatableItemConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [TranslatableItemEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type TranslatableItemEdge { + """ + The item at the end of the edge. + """ + node: TranslatableItem! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +union TranslatableItem = + ProductTranslatableContent + | CollectionTranslatableContent + | CategoryTranslatableContent + | AttributeTranslatableContent + | AttributeValueTranslatableContent + | ProductVariantTranslatableContent + | PageTranslatableContent + | ShippingMethodTranslatableContent + | SaleTranslatableContent + | VoucherTranslatableContent + | MenuItemTranslatableContent + +type ProductTranslatableContent implements Node { + id: ID! + seoTitle: String + seoDescription: String + name: String! + + """ + Description of the product. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Description of the product. + + Rich text format. For reference see https://editorjs.io/ + """ + descriptionJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `description` field instead." + ) + + """ + Returns translated product fields for the given language code. + """ + translation( + """ + A language code to return the translation for product. + """ + languageCode: LanguageCodeEnum! + ): ProductTranslation + + """ + Represents an individual item for sale in the storefront. + """ + product: Product + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) + + """ + List of product attribute values that can be translated. + """ + attributeValues: [AttributeValueTranslatableContent!]! +} + +type AttributeValueTranslatableContent implements Node { + id: ID! + name: String! + + """ + Attribute value. + + Rich text format. For reference see https://editorjs.io/ + """ + richText: JSONString + + """ + Returns translated attribute value fields for the given language code. + """ + translation( + """ + A language code to return the translation for attribute value. + """ + languageCode: LanguageCodeEnum! + ): AttributeValueTranslation + + """ + Represents a value of an attribute. + """ + attributeValue: AttributeValue + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) +} + +type CollectionTranslatableContent implements Node { + id: ID! + seoTitle: String + seoDescription: String + name: String! + + """ + Description of the collection. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Description of the collection. + + Rich text format. For reference see https://editorjs.io/ + """ + descriptionJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `description` field instead." + ) + + """ + Returns translated collection fields for the given language code. + """ + translation( + """ + A language code to return the translation for collection. + """ + languageCode: LanguageCodeEnum! + ): CollectionTranslation + + """ + Represents a collection of products. + """ + collection: Collection + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) +} + +type CategoryTranslatableContent implements Node { + id: ID! + seoTitle: String + seoDescription: String + name: String! + + """ + Description of the category. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Description of the category. + + Rich text format. For reference see https://editorjs.io/ + """ + descriptionJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `description` field instead." + ) + + """ + Returns translated category fields for the given language code. + """ + translation( + """ + A language code to return the translation for category. + """ + languageCode: LanguageCodeEnum! + ): CategoryTranslation + + """ + Represents a single category of products. + """ + category: Category + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) +} + +type AttributeTranslatableContent implements Node { + id: ID! + name: String! + + """ + Returns translated attribute fields for the given language code. + """ + translation( + """ + A language code to return the translation for attribute. + """ + languageCode: LanguageCodeEnum! + ): AttributeTranslation + + """ + Custom attribute of a product. + """ + attribute: Attribute + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) +} + +type ProductVariantTranslatableContent implements Node { + id: ID! + name: String! + + """ + Returns translated product variant fields for the given language code. + """ + translation( + """ + A language code to return the translation for product variant. + """ + languageCode: LanguageCodeEnum! + ): ProductVariantTranslation + + """ + Represents a version of a product such as different size or color. + """ + productVariant: ProductVariant + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) + + """ + List of product variant attribute values that can be translated. + """ + attributeValues: [AttributeValueTranslatableContent!]! +} + +type PageTranslatableContent implements Node { + id: ID! + seoTitle: String + seoDescription: String + title: String! + + """ + Content of the page. + + Rich text format. For reference see https://editorjs.io/ + """ + content: JSONString + + """ + Content of the page. + + Rich text format. For reference see https://editorjs.io/ + """ + contentJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `content` field instead." + ) + + """ + Returns translated page fields for the given language code. + """ + translation( + """ + A language code to return the translation for page. + """ + languageCode: LanguageCodeEnum! + ): PageTranslation + + """ + A static page that can be manually added by a shop operator through the dashboard. + """ + page: Page + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) + + """ + List of page content attribute values that can be translated. + """ + attributeValues: [AttributeValueTranslatableContent!]! +} + +type PageTranslation implements Node { + id: ID! + + """ + Translation language. + """ + language: LanguageDisplay! + seoTitle: String + seoDescription: String + title: String + + """ + Translated content of the page. + + Rich text format. For reference see https://editorjs.io/ + """ + content: JSONString + + """ + Translated description of the page. + + Rich text format. For reference see https://editorjs.io/ + """ + contentJson: JSONString + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `content` field instead." + ) +} + +""" +A static page that can be manually added by a shop operator through the dashboard. +""" +type Page implements Node & ObjectWithMetadata { + id: ID! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + seoTitle: String + seoDescription: String + title: String! + + """ + Content of the page. + + Rich text format. For reference see https://editorjs.io/ + """ + content: JSONString + publicationDate: Date + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `publishedAt` field to fetch the publication date." + ) + + """ + The page publication date. + + Added in Saleor 3.3. + """ + publishedAt: DateTime + isPublished: Boolean! + slug: String! + pageType: PageType! + created: DateTime! + + """ + Content of the page. + + Rich text format. For reference see https://editorjs.io/ + """ + contentJson: JSONString! + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `content` field instead." + ) + + """ + Returns translated page fields for the given language code. + """ + translation( + """ + A language code to return the translation for page. + """ + languageCode: LanguageCodeEnum! + ): PageTranslation + + """ + List of attributes assigned to this product. + """ + attributes: [SelectedAttribute!]! +} + +""" +Represents a type of page. It defines what attributes are available to pages of this type. +""" +type PageType implements Node & ObjectWithMetadata { + id: ID! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + name: String! + slug: String! + + """ + Page attributes of that page type. + """ + attributes: [Attribute!] + + """ + Attributes that can be assigned to the page type. + + Requires one of the following permissions: MANAGE_PAGES. + """ + availableAttributes( + filter: AttributeFilterInput + + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): AttributeCountableConnection + + """ + Whether page type has pages assigned. + + Requires one of the following permissions: MANAGE_PAGES. + """ + hasPages: Boolean +} + +type ShippingMethodTranslatableContent implements Node { + id: ID! + name: String! + + """ + Description of the shipping method. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Returns translated shipping method fields for the given language code. + """ + translation( + """ + A language code to return the translation for shipping method. + """ + languageCode: LanguageCodeEnum! + ): ShippingMethodTranslation + + """ + Shipping method are the methods you'll use to get customer's orders to them. They are directly exposed to the customers. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingMethod: ShippingMethodType + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) +} + +type SaleTranslatableContent implements Node { + id: ID! + name: String! + + """ + Returns translated sale fields for the given language code. + """ + translation( + """ + A language code to return the translation for sale. + """ + languageCode: LanguageCodeEnum! + ): SaleTranslation + + """ + Sales allow creating discounts for categories, collections or products and are visible to all the customers. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + sale: Sale + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) +} + +type SaleTranslation implements Node { + id: ID! + + """ + Translation language. + """ + language: LanguageDisplay! + name: String +} + +""" +Sales allow creating discounts for categories, collections or products and are visible to all the customers. +""" +type Sale implements Node & ObjectWithMetadata { + id: ID! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + name: String! + type: SaleType! + startDate: DateTime! + endDate: DateTime + created: DateTime! + updatedAt: DateTime! + + """ + List of categories this sale applies to. + """ + categories( + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): CategoryCountableConnection + + """ + List of collections this sale applies to. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + collections( + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): CollectionCountableConnection + + """ + List of products this sale applies to. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + products( + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ProductCountableConnection + + """ + List of product variants this sale applies to. + + Added in Saleor 3.1. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + variants( + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ProductVariantCountableConnection + + """ + Returns translated sale fields for the given language code. + """ + translation( + """ + A language code to return the translation for sale. + """ + languageCode: LanguageCodeEnum! + ): SaleTranslation + + """ + List of channels available for the sale. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + channelListings: [SaleChannelListing!] + + """ + Sale value. + """ + discountValue: Float + + """ + Currency code for sale. + """ + currency: String +} + +enum SaleType { + FIXED + PERCENTAGE +} + +type CollectionCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [CollectionCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type CollectionCountableEdge { + """ + The item at the end of the edge. + """ + node: Collection! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +type ProductVariantCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [ProductVariantCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type ProductVariantCountableEdge { + """ + The item at the end of the edge. + """ + node: ProductVariant! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +""" +Represents sale channel listing. +""" +type SaleChannelListing implements Node { + id: ID! + channel: Channel! + discountValue: Float! + currency: String! +} + +type VoucherTranslatableContent implements Node { + id: ID! + name: String + + """ + Returns translated voucher fields for the given language code. + """ + translation( + """ + A language code to return the translation for voucher. + """ + languageCode: LanguageCodeEnum! + ): VoucherTranslation + + """ + Vouchers allow giving discounts to particular customers on categories, collections or specific products. They can be used during checkout by providing valid voucher codes. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + voucher: Voucher + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) +} + +type VoucherTranslation implements Node { + id: ID! + + """ + Translation language. + """ + language: LanguageDisplay! + name: String +} + +""" +Vouchers allow giving discounts to particular customers on categories, collections or specific products. They can be used during checkout by providing valid voucher codes. +""" +type Voucher implements Node & ObjectWithMetadata { + id: ID! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + name: String + code: String! + usageLimit: Int + used: Int! + startDate: DateTime! + endDate: DateTime + applyOncePerOrder: Boolean! + applyOncePerCustomer: Boolean! + onlyForStaff: Boolean! + minCheckoutItemsQuantity: Int + + """ + List of categories this voucher applies to. + """ + categories( + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): CategoryCountableConnection + + """ + List of collections this voucher applies to. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + collections( + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): CollectionCountableConnection + + """ + List of products this voucher applies to. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + products( + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ProductCountableConnection + + """ + List of product variants this voucher applies to. + + Added in Saleor 3.1. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + variants( + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): ProductVariantCountableConnection + + """ + List of countries available for the shipping voucher. + """ + countries: [CountryDisplay!] + + """ + Returns translated voucher fields for the given language code. + """ + translation( + """ + A language code to return the translation for voucher. + """ + languageCode: LanguageCodeEnum! + ): VoucherTranslation + + """ + Determines a type of discount for voucher - value or percentage + """ + discountValueType: DiscountValueTypeEnum! + + """ + Voucher value. + """ + discountValue: Float + + """ + Currency code for voucher. + """ + currency: String + + """ + Minimum order value to apply voucher. + """ + minSpent: Money + + """ + Determines a type of voucher. + """ + type: VoucherTypeEnum! + + """ + List of availability in channels for the voucher. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + channelListings: [VoucherChannelListing!] +} + +enum DiscountValueTypeEnum { + FIXED + PERCENTAGE +} + +enum VoucherTypeEnum { + SHIPPING + ENTIRE_ORDER + SPECIFIC_PRODUCT +} + +""" +Represents voucher channel listing. +""" +type VoucherChannelListing implements Node { + id: ID! + channel: Channel! + discountValue: Float! + currency: String! + minSpent: Money +} + +type MenuItemTranslatableContent implements Node { + id: ID! + name: String! + + """ + Returns translated menu item fields for the given language code. + """ + translation( + """ + A language code to return the translation for menu item. + """ + languageCode: LanguageCodeEnum! + ): MenuItemTranslation + + """ + Represents a single item of the related menu. Can store categories, collection or pages. + """ + menuItem: MenuItem + @deprecated( + reason: "This field will be removed in Saleor 4.0. Get model fields from the root level queries." + ) +} + +type MenuItemTranslation implements Node { + id: ID! + + """ + Translation language. + """ + language: LanguageDisplay! + name: String! +} + +""" +Represents a single item of the related menu. Can store categories, collection or pages. +""" +type MenuItem implements Node & ObjectWithMetadata { + id: ID! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + name: String! + menu: Menu! + parent: MenuItem + category: Category + + """ + A collection associated with this menu item. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. + """ + collection: Collection + + """ + A page associated with this menu item. Requires one of the following permissions to include unpublished items: MANAGE_PAGES. + """ + page: Page + level: Int! + children: [MenuItem!] + + """ + URL to the menu item. + """ + url: String + + """ + Returns translated menu item fields for the given language code. + """ + translation( + """ + A language code to return the translation for menu item. + """ + languageCode: LanguageCodeEnum! + ): MenuItemTranslation +} + +""" +Represents a single menu - an object that is used to help navigate through the store. +""" +type Menu implements Node & ObjectWithMetadata { + id: ID! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + name: String! + slug: String! + items: [MenuItem!] +} + +enum TranslatableKinds { + ATTRIBUTE + ATTRIBUTE_VALUE + CATEGORY + COLLECTION + MENU_ITEM + PAGE + PRODUCT + SALE + SHIPPING_METHOD + VARIANT + VOUCHER +} + +type StockCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [StockCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type StockCountableEdge { + """ + The item at the end of the edge. + """ + node: Stock! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +input StockFilterInput { + """ + """ + quantity: Float + search: String +} + +""" +Represents a shop resource containing general shop data and configuration. +""" +type Shop { + """ + List of available payment gateways. + """ + availablePaymentGateways( + """ + A currency for which gateways will be returned. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `channel` argument instead. + """ + currency: String + + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): [PaymentGateway!]! + + """ + List of available external authentications. + """ + availableExternalAuthentications: [ExternalAuthentication!]! + + """ + Shipping methods that are available for the shop. + """ + availableShippingMethods( + """ + Slug of a channel for which the data should be returned. + """ + channel: String! + + """ + Address for which available shipping methods should be returned. + """ + address: AddressInput + ): [ShippingMethod!] + + """ + List of all currencies supported by shop's channels. + + Added in Saleor 3.1. + + Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP. + """ + channelCurrencies: [String!]! + + """ + List of countries available in the shop. + """ + countries( + """ + A language code to return the translation for. + + DEPRECATED: this field will be removed in Saleor 4.0. + """ + languageCode: LanguageCodeEnum + + """ + Filtering options for countries + """ + filter: CountryFilterInput + ): [CountryDisplay!]! + + """ + Shop's default country. + """ + defaultCountry: CountryDisplay + + """ + Default shop's email sender's name. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + defaultMailSenderName: String + + """ + Default shop's email sender's address. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + defaultMailSenderAddress: String + + """ + Shop's description. + """ + description: String + + """ + Shop's domain data. + """ + domain: Domain! + + """ + List of the shops's supported languages. + """ + languages: [LanguageDisplay!]! + + """ + Shop's name. + """ + name: String! + + """ + List of available permissions. + """ + permissions: [Permission!]! + + """ + List of possible phone prefixes. + """ + phonePrefixes: [String!]! + + """ + Header text. + """ + headerText: String + + """ + Include taxes in prices. + """ + includeTaxesInPrices: Boolean! + + """ + Automatically approve all new fulfillments. + + Added in Saleor 3.1. + """ + fulfillmentAutoApprove: Boolean! + + """ + Allow to approve fulfillments which are unpaid. + + Added in Saleor 3.1. + """ + fulfillmentAllowUnpaid: Boolean! + + """ + Display prices with tax in store. + """ + displayGrossPrices: Boolean! + + """ + Charge taxes on shipping. + """ + chargeTaxesOnShipping: Boolean! + + """ + Enable inventory tracking. + """ + trackInventoryByDefault: Boolean + + """ + Default weight unit. + """ + defaultWeightUnit: WeightUnitsEnum + + """ + Returns translated shop fields for the given language code. + """ + translation( + """ + A language code to return the translation for shop. + """ + languageCode: LanguageCodeEnum! + ): ShopTranslation + + """ + Enable automatic fulfillment for all digital products. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + automaticFulfillmentDigitalProducts: Boolean + + """ + Default number of minutes stock will be reserved for anonymous checkout or null when stock reservation is disabled. + + Added in Saleor 3.1. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + reserveStockDurationAnonymousUser: Int + + """ + Default number of minutes stock will be reserved for authenticated checkout or null when stock reservation is disabled. + + Added in Saleor 3.1. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + reserveStockDurationAuthenticatedUser: Int + + """ + Default number of maximum line quantity in single checkout (per single checkout line). + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + limitQuantityPerCheckout: Int + + """ + Default number of max downloads per digital content URL. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + defaultDigitalMaxDownloads: Int + + """ + Default number of days which digital content URL will be valid. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + defaultDigitalUrlValidDays: Int + + """ + Company address. + """ + companyAddress: Address + + """ + URL of a view where customers can set their password. + """ + customerSetPasswordUrl: String + + """ + List of staff notification recipients. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + staffNotificationRecipients: [StaffNotificationRecipient!] + + """ + Resource limitations and current usage if any set for a shop + + Requires one of the following permissions: AUTHENTICATED_STAFF_USER. + """ + limits: LimitInfo! + + """ + Saleor API version. + + Requires one of the following permissions: AUTHENTICATED_STAFF_USER, AUTHENTICATED_APP. + """ + version: String! +} + +""" +Available payment gateway backend with configuration necessary to setup client. +""" +type PaymentGateway { + """ + Payment gateway name. + """ + name: String! + + """ + Payment gateway ID. + """ + id: ID! + + """ + Payment gateway client configuration. + """ + config: [GatewayConfigLine!]! + + """ + Payment gateway supported currencies. + """ + currencies: [String!]! +} + +""" +Payment gateway client configuration key and value pair. +""" +type GatewayConfigLine { + """ + Gateway config key. + """ + field: String! + + """ + Gateway config value for key. + """ + value: String +} + +type ExternalAuthentication { + """ + ID of external authentication plugin. + """ + id: String! + + """ + Name of external authentication plugin. + """ + name: String +} + +""" +Shipping methods that can be used as means of shipping for orders and checkouts. +""" +type ShippingMethod implements Node & ObjectWithMetadata { + """ + Unique ID of ShippingMethod available for Order. + """ + id: ID! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + + """ + Type of the shipping method. + """ + type: ShippingMethodTypeEnum @deprecated(reason: "This field will be removed in Saleor 4.0.") + + """ + Shipping method name. + """ + name: String! + + """ + Shipping method description. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Maximum delivery days for this shipping method. + """ + maximumDeliveryDays: Int + + """ + Minimum delivery days for this shipping method. + """ + minimumDeliveryDays: Int + + """ + Maximum order weight for this shipping method. + """ + maximumOrderWeight: Weight @deprecated(reason: "This field will be removed in Saleor 4.0.") + + """ + Minimum order weight for this shipping method. + """ + minimumOrderWeight: Weight @deprecated(reason: "This field will be removed in Saleor 4.0.") + + """ + Returns translated shipping method fields for the given language code. + """ + translation( + """ + A language code to return the translation for shipping method. + """ + languageCode: LanguageCodeEnum! + ): ShippingMethodTranslation + + """ + The price of selected shipping method. + """ + price: Money! + + """ + Maximum order price for this shipping method. + """ + maximumOrderPrice: Money + + """ + Minimal order price for this shipping method. + """ + minimumOrderPrice: Money + + """ + Describes if this shipping method is active and can be selected. + """ + active: Boolean! + + """ + Message connected to this shipping method. + """ + message: String +} + +input CountryFilterInput { + """ + Boolean for filtering countries by having shipping zone assigned.If 'true', return countries with shipping zone assigned.If 'false', return countries without any shipping zone assigned.If the argument is not provided (null), return all countries. + """ + attachedToShippingZones: Boolean +} + +""" +Represents shop's domain. +""" +type Domain { + """ + The host name of the domain. + """ + host: String! + + """ + Inform if SSL is enabled. + """ + sslEnabled: Boolean! + + """ + Shop's absolute URL. + """ + url: String! +} + +type ShopTranslation implements Node { + id: ID! + + """ + Translation language. + """ + language: LanguageDisplay! + headerText: String! + description: String! +} + +""" +Represents a recipient of email notifications send by Saleor, such as notifications about new orders. Notifications can be assigned to staff users or arbitrary email addresses. +""" +type StaffNotificationRecipient implements Node { + id: ID! + + """ + Returns a user subscribed to email notifications. + """ + user: User + + """ + Returns email address of a user subscribed to email notifications. + """ + email: String + + """ + Determines if a notification active. + """ + active: Boolean +} + +""" +Represents user data. +""" +type User implements Node & ObjectWithMetadata { + id: ID! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + email: String! + firstName: String! + lastName: String! + isStaff: Boolean! + isActive: Boolean! + + """ + List of all user's addresses. + """ + addresses: [Address!] + + """ + Returns the last open checkout of this user. + """ + checkout: Checkout + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `checkoutTokens` field to fetch the user checkouts." + ) + + """ + Returns the checkout UUID's assigned to this user. + """ + checkoutTokens( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): [UUID!] + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `checkoutIds` instead.") + + """ + Returns the checkout ID's assigned to this user. + """ + checkoutIds( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): [ID!] + + """ + List of the user gift cards. + """ + giftCards( + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): GiftCardCountableConnection + + """ + A note about the customer. + + Requires one of the following permissions: MANAGE_USERS, MANAGE_STAFF. + """ + note: String + + """ + List of user's orders. Requires one of the following permissions: MANAGE_STAFF, OWNER. + """ + orders( + """ + Return the elements in the list that come before the specified cursor. + """ + before: String + + """ + Return the elements in the list that come after the specified cursor. + """ + after: String + + """ + Return the first n elements from the list. + """ + first: Int + + """ + Return the last n elements from the list. + """ + last: Int + ): OrderCountableConnection + + """ + List of user's permissions. + """ + userPermissions: [UserPermission!] + + """ + List of user's permission groups. + """ + permissionGroups: [Group!] + + """ + List of user's permission groups which user can manage. + """ + editableGroups: [Group!] + avatar( + """ + Size of the avatar. + """ + size: Int + ): Image + + """ + List of events associated with the user. + + Requires one of the following permissions: MANAGE_USERS, MANAGE_STAFF. + """ + events: [CustomerEvent!] + + """ + List of stored payment sources. + """ + storedPaymentSources( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): [PaymentSource!] + + """ + User language code. + """ + languageCode: LanguageCodeEnum! + defaultShippingAddress: Address + defaultBillingAddress: Address + lastLogin: DateTime + dateJoined: DateTime! + updatedAt: DateTime! +} + +""" +Checkout object. +""" +type Checkout implements Node & ObjectWithMetadata { + id: ID! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + created: DateTime! + lastChange: DateTime! + user: User + channel: Channel! + billingAddress: Address + shippingAddress: Address + note: String! + discount: Money + discountName: String + translatedDiscountName: String + voucherCode: String + + """ + Shipping methods that can be used with this checkout. + """ + availableShippingMethods: [ShippingMethod!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `shippingMethods` instead.") + + """ + Shipping methods that can be used with this checkout. + """ + shippingMethods: [ShippingMethod!]! + + """ + Collection points that can be used for this order. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + availableCollectionPoints: [Warehouse!]! + + """ + List of available payment gateways. + """ + availablePaymentGateways: [PaymentGateway!]! + + """ + Email of a customer. + """ + email: String + + """ + List of gift cards associated with this checkout. + """ + giftCards: [GiftCard!]! + + """ + Returns True, if checkout requires shipping. + """ + isShippingRequired: Boolean! + + """ + The number of items purchased. + """ + quantity: Int! + + """ + Date when oldest stock reservation for this checkout expires or null if no stock is reserved. + + Added in Saleor 3.1. + """ + stockReservationExpires: DateTime + + """ + A list of checkout lines, each containing information about an item in the checkout. + """ + lines: [CheckoutLine!]! + + """ + The price of the shipping, with all the taxes included. + """ + shippingPrice: TaxedMoney! + + """ + The shipping method related with checkout. + """ + shippingMethod: ShippingMethod + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `deliveryMethod` instead.") + + """ + The delivery method selected for this checkout. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + deliveryMethod: DeliveryMethod + + """ + The price of the checkout before shipping, with taxes included. + """ + subtotalPrice: TaxedMoney! + + """ + The checkout's token. + """ + token: UUID! + + """ + The sum of the the checkout line prices, with all the taxes,shipping costs, and discounts included. + """ + totalPrice: TaxedMoney! + + """ + Checkout language code. + """ + languageCode: LanguageCodeEnum! + + """ + List of transactions for the checkout. Requires one of the following permissions: MANAGE_CHECKOUTS, HANDLE_PAYMENTS. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + transactions: [TransactionItem!] +} + +""" +A gift card is a prepaid electronic payment card accepted in stores. They can be used during checkout by providing a valid gift card codes. +""" +type GiftCard implements Node & ObjectWithMetadata { + id: ID! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + + """ + Code in format which allows displaying in a user interface. + """ + displayCode: String! + + """ + Last 4 characters of gift card code. + """ + last4CodeChars: String! + + """ + Gift card code. Can be fetched by a staff member with MANAGE_GIFT_CARD when gift card wasn't yet used and by the gift card owner. + """ + code: String! + created: DateTime! + + """ + The user who bought or issued a gift card. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + createdBy: User + + """ + The customer who used a gift card. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + usedBy: User + + """ + Email address of the user who bought or issued gift card. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_USERS, OWNER. + """ + createdByEmail: String + + """ + Email address of the customer who used a gift card. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + usedByEmail: String + lastUsedOn: DateTime + expiryDate: Date + + """ + App which created the gift card. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_APPS, OWNER. + """ + app: App + + """ + Related gift card product. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + product: Product + + """ + List of events associated with the gift card. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + events( + """ + Filtering options for gift card events. + """ + filter: GiftCardEventFilterInput + ): [GiftCardEvent!]! + + """ + The gift card tag. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + tags: [GiftCardTag!]! + + """ + Slug of the channel where the gift card was bought. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + boughtInChannel: String + isActive: Boolean! + initialBalance: Money + currentBalance: Money + + """ + The customer who bought a gift card. + """ + user: User + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `createdBy` field instead.") + + """ + End date of gift card. + """ + endDate: DateTime + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `expiryDate` field instead.") + + """ + Start date of gift card. + """ + startDate: DateTime @deprecated(reason: "This field will be removed in Saleor 4.0.") +} + +""" +History log of the gift card. + +Added in Saleor 3.1. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. +""" +type GiftCardEvent implements Node { + id: ID! + + """ + Date when event happened at in ISO 8601 format. + """ + date: DateTime + + """ + Gift card event type. + """ + type: GiftCardEventsEnum + + """ + User who performed the action. Requires one of the following permissions: MANAGE_USERS, MANAGE_STAFF, OWNER. + """ + user: User + + """ + App that performed the action. Requires one of the following permissions: MANAGE_APPS, OWNER. + """ + app: App + + """ + Content of the event. + """ + message: String + + """ + Email of the customer. + """ + email: String + + """ + The order ID where gift card was used or bought. + """ + orderId: ID + + """ + User-friendly number of an order where gift card was used or bought. + """ + orderNumber: String + + """ + The list of gift card tags. + """ + tags: [String!] + + """ + The list of old gift card tags. + """ + oldTags: [String!] + + """ + The gift card balance. + """ + balance: GiftCardEventBalance + + """ + The gift card expiry date. + """ + expiryDate: Date + + """ + Previous gift card expiry date. + """ + oldExpiryDate: Date +} + +""" +An enumeration. +""" +enum GiftCardEventsEnum { + ISSUED + BOUGHT + UPDATED + ACTIVATED + DEACTIVATED + BALANCE_RESET + EXPIRY_DATE_UPDATED + TAGS_UPDATED + SENT_TO_CUSTOMER + RESENT + NOTE_ADDED + USED_IN_ORDER +} + +type GiftCardEventBalance { + """ + Initial balance of the gift card. + """ + initialBalance: Money + + """ + Current balance of the gift card. + """ + currentBalance: Money! + + """ + Previous initial balance of the gift card. + """ + oldInitialBalance: Money + + """ + Previous current balance of the gift card. + """ + oldCurrentBalance: Money +} + +input GiftCardEventFilterInput { + type: GiftCardEventsEnum + orders: [ID!] +} + +""" +The gift card tag. + +Added in Saleor 3.1. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. +""" +type GiftCardTag implements Node { + id: ID! + name: String! +} + +""" +Represents an item in the checkout. +""" +type CheckoutLine implements Node { + id: ID! + variant: ProductVariant! + quantity: Int! + + """ + The unit price of the checkout line, with taxes and discounts. + """ + unitPrice: TaxedMoney! + + """ + The unit price of the checkout line, without discounts. + """ + undiscountedUnitPrice: Money! + + """ + The sum of the checkout line price, taxes and discounts. + """ + totalPrice: TaxedMoney! + + """ + The sum of the checkout line price, without discounts. + """ + undiscountedTotalPrice: Money! + + """ + Indicates whether the item need to be delivered. + """ + requiresShipping: Boolean! +} + +""" +Represents a delivery method chosen for the checkout. `Warehouse` type is used when checkout is marked as "click and collect" and `ShippingMethod` otherwise. + +Added in Saleor 3.1. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. +""" +union DeliveryMethod = Warehouse | ShippingMethod + +""" +Represents a payment transaction. + +Added in Saleor 3.4. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. +""" +type TransactionItem implements Node & ObjectWithMetadata { + """ + The ID of the object. + """ + id: ID! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + createdAt: DateTime! + modifiedAt: DateTime! + + """ + List of actions that can be performed in the current state of a payment. + """ + actions: [TransactionActionEnum!]! + + """ + Total amount authorized for this payment. + """ + authorizedAmount: Money! + + """ + Total amount refunded for this payment. + """ + refundedAmount: Money! + + """ + Total amount voided for this payment. + """ + voidedAmount: Money! + + """ + Total amount charged for this payment. + """ + chargedAmount: Money! + + """ + Status of transaction. + """ + status: String! + + """ + Type of transaction. + """ + type: String! + + """ + Reference of transaction. + """ + reference: String! + + """ + List of all transaction's events. + """ + events: [TransactionEvent!]! +} + +""" +Represents possible actions on payment transaction. + + The following actions are possible: + CHARGE - Represents the charge action. + REFUND - Represents a refund action. + VOID - Represents a void action. +""" +enum TransactionActionEnum { + CHARGE + REFUND + VOID +} + +""" +Represents transaction's event. +""" +type TransactionEvent implements Node { + """ + The ID of the object. + """ + id: ID! + createdAt: DateTime! + + """ + Status of transaction's event. + """ + status: TransactionStatus! + + """ + Reference of transaction's event. + """ + reference: String! + + """ + Name of the transaction's event. + """ + name: String +} + +""" +An enumeration. +""" +enum TransactionStatus { + PENDING + SUCCESS + FAILURE +} + +type GiftCardCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [GiftCardCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type GiftCardCountableEdge { + """ + The item at the end of the edge. + """ + node: GiftCard! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +type OrderCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [OrderCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type OrderCountableEdge { + """ + The item at the end of the edge. + """ + node: Order! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +""" +Represents an order in the shop. +""" +type Order implements Node & ObjectWithMetadata { + id: ID! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + created: DateTime! + updatedAt: DateTime! + status: OrderStatus! + + """ + User who placed the order. This field is set only for orders placed by authenticated users. Can be fetched for orders created in Saleor 3.2 and later, for other orders requires one of the following permissions: MANAGE_USERS, MANAGE_ORDERS, OWNER. + """ + user: User + trackingClientId: String! + + """ + Billing address. The full data can be access for orders created in Saleor 3.2 and later, for other orders requires one of the following permissions: MANAGE_ORDERS, OWNER. + """ + billingAddress: Address + + """ + Shipping address. The full data can be access for orders created in Saleor 3.2 and later, for other orders requires one of the following permissions: MANAGE_ORDERS, OWNER. + """ + shippingAddress: Address + shippingMethodName: String + collectionPointName: String + channel: Channel! + + """ + List of shipments for the order. + """ + fulfillments: [Fulfillment!]! + + """ + List of order lines. + """ + lines: [OrderLine!]! + + """ + List of actions that can be performed in the current state of an order. + """ + actions: [OrderAction!]! + + """ + Shipping methods that can be used with this order. + """ + availableShippingMethods: [ShippingMethod!] + @deprecated(reason: "Use `shippingMethods`, this field will be removed in 4.0") + + """ + Shipping methods related to this order. + """ + shippingMethods: [ShippingMethod!]! + + """ + Collection points that can be used for this order. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + availableCollectionPoints: [Warehouse!]! + + """ + List of order invoices. Can be fetched for orders created in Saleor 3.2 and later, for other orders requires one of the following permissions: MANAGE_ORDERS, OWNER. + """ + invoices: [Invoice!]! + + """ + User-friendly number of an order. + """ + number: String! + + """ + The ID of the order that was the base for this order. + """ + original: ID + + """ + The order origin. + """ + origin: OrderOriginEnum! + + """ + Informs if an order is fully paid. + """ + isPaid: Boolean! + + """ + Internal payment status. + """ + paymentStatus: PaymentChargeStatusEnum! + + """ + User-friendly payment status. + """ + paymentStatusDisplay: String! + + """ + The authorize status of the order. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + authorizeStatus: OrderAuthorizeStatusEnum! + + """ + The charge status of the order. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + chargeStatus: OrderChargeStatusEnum! + + """ + List of transactions for the order. Requires one of the following permissions: MANAGE_ORDERS, HANDLE_PAYMENTS. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + transactions: [TransactionItem!]! + + """ + List of payments for the order. + """ + payments: [Payment!]! + + """ + Total amount of the order. + """ + total: TaxedMoney! + + """ + Undiscounted total amount of the order. + """ + undiscountedTotal: TaxedMoney! + + """ + Shipping method for this order. + """ + shippingMethod: ShippingMethod + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `deliveryMethod` instead.") + + """ + Total price of shipping. + """ + shippingPrice: TaxedMoney! + shippingTaxRate: Float! + token: String! @deprecated(reason: "This field will be removed in Saleor 4.0. Use `id` instead.") + voucher: Voucher + + """ + List of user gift cards. + """ + giftCards: [GiftCard!]! + displayGrossPrices: Boolean! + customerNote: String! + weight: Weight! + redirectUrl: String + + """ + The sum of line prices not including shipping. + """ + subtotal: TaxedMoney! + + """ + User-friendly order status. + """ + statusDisplay: String! + + """ + Informs whether a draft order can be finalized(turned into a regular order). + """ + canFinalize: Boolean! + + """ + Amount authorized for the order. + """ + totalAuthorized: Money! + + """ + Amount captured by payment. + """ + totalCaptured: Money! + + """ + List of events associated with the order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + events: [OrderEvent!]! + + """ + The difference between the paid and the order total amount. + """ + totalBalance: Money! + + """ + Email address of the customer. The full data can be access for orders created in Saleor 3.2 and later, for other orders requires one of the following permissions: MANAGE_ORDERS, OWNER. + """ + userEmail: String + + """ + Returns True, if order requires shipping. + """ + isShippingRequired: Boolean! + + """ + The delivery method selected for this checkout. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + deliveryMethod: DeliveryMethod + languageCode: String! + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `languageCodeEnum` field to fetch the language code. " + ) + + """ + Order language code. + """ + languageCodeEnum: LanguageCodeEnum! + + """ + Returns applied discount. + """ + discount: Money + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `discounts` field instead." + ) + + """ + Discount name. + """ + discountName: String + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `discounts` field instead." + ) + + """ + Translated discount name. + """ + translatedDiscountName: String + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use the `discounts` field instead. " + ) + + """ + List of all discounts assigned to the order. + """ + discounts: [OrderDiscount!]! + + """ + List of errors that occurred during order validation. + """ + errors: [OrderError!]! +} + +""" +An enumeration. +""" +enum OrderStatus { + DRAFT + UNCONFIRMED + UNFULFILLED + PARTIALLY_FULFILLED + PARTIALLY_RETURNED + RETURNED + FULFILLED + CANCELED +} + +""" +Represents order fulfillment. +""" +type Fulfillment implements Node & ObjectWithMetadata { + id: ID! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + fulfillmentOrder: Int! + status: FulfillmentStatus! + trackingNumber: String! + created: DateTime! + + """ + List of lines for the fulfillment. + """ + lines: [FulfillmentLine!] + + """ + User-friendly fulfillment status. + """ + statusDisplay: String + + """ + Warehouse from fulfillment was fulfilled. + """ + warehouse: Warehouse +} + +""" +An enumeration. +""" +enum FulfillmentStatus { + FULFILLED + REFUNDED + RETURNED + REPLACED + REFUNDED_AND_RETURNED + CANCELED + WAITING_FOR_APPROVAL +} + +""" +Represents line of the fulfillment. +""" +type FulfillmentLine implements Node { + id: ID! + quantity: Int! + orderLine: OrderLine +} + +""" +Represents order line of particular order. +""" +type OrderLine implements Node { + id: ID! + productName: String! + variantName: String! + productSku: String + productVariantId: String + isShippingRequired: Boolean! + quantity: Int! + quantityFulfilled: Int! + unitDiscountReason: String + taxRate: Float! + digitalContentUrl: DigitalContentUrl + + """ + The main thumbnail for the ordered product. + """ + thumbnail( + """ + Size of thumbnail. + """ + size: Int + ): Image + + """ + Price of the single item in the order line. + """ + unitPrice: TaxedMoney! + + """ + Price of the single item in the order line without applied an order line discount. + """ + undiscountedUnitPrice: TaxedMoney! + + """ + The discount applied to the single order line. + """ + unitDiscount: Money! + + """ + Value of the discount. Can store fixed value or percent value + """ + unitDiscountValue: PositiveDecimal! + + """ + Price of the order line. + """ + totalPrice: TaxedMoney! + + """ + A purchased product variant. Note: this field may be null if the variant has been removed from stock at all. Requires one of the following permissions to include the unpublished items: MANAGE_ORDERS, MANAGE_DISCOUNTS, MANAGE_PRODUCTS. + """ + variant: ProductVariant + + """ + Product name in the customer's language + """ + translatedProductName: String! + + """ + Variant name in the customer's language + """ + translatedVariantName: String! + + """ + List of allocations across warehouses. + + Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. + """ + allocations: [Allocation!] + + """ + A quantity of items remaining to be fulfilled. + + Added in Saleor 3.1. + """ + quantityToFulfill: Int! + + """ + Type of the discount: fixed or percent + """ + unitDiscountType: DiscountValueTypeEnum +} + +""" +Positive Decimal scalar implementation. + +Should be used in places where value must be positive. +""" +scalar PositiveDecimal + +""" +Represents allocation. +""" +type Allocation implements Node { + id: ID! + + """ + Quantity allocated for orders. + + Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. + """ + quantity: Int! + + """ + The warehouse were items were allocated. + + Requires one of the following permissions: MANAGE_PRODUCTS, MANAGE_ORDERS. + """ + warehouse: Warehouse! +} + +enum OrderAction { + """ + Represents the capture action. + """ + CAPTURE + + """ + Represents a mark-as-paid action. + """ + MARK_AS_PAID + + """ + Represents a refund action. + """ + REFUND + + """ + Represents a void action. + """ + VOID +} + +""" +Represents an Invoice. +""" +type Invoice implements ObjectWithMetadata & Job & Node { + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + + """ + Job status. + """ + status: JobStatusEnum! + createdAt: DateTime! + updatedAt: DateTime! + message: String + + """ + The ID of the object. + """ + id: ID! + number: String + externalUrl: String + + """ + URL to download an invoice. + """ + url: String +} + +interface Job { + """ + Job status. + """ + status: JobStatusEnum! + + """ + Created date time of job in ISO 8601 format. + """ + createdAt: DateTime! + + """ + Date time of job last update in ISO 8601 format. + """ + updatedAt: DateTime! + + """ + Job message. + """ + message: String +} + +""" +An enumeration. +""" +enum JobStatusEnum { + PENDING + SUCCESS + FAILED + DELETED +} + +""" +An enumeration. +""" +enum OrderOriginEnum { + CHECKOUT + DRAFT + REISSUE +} + +""" +An enumeration. +""" +enum PaymentChargeStatusEnum { + NOT_CHARGED + PENDING + PARTIALLY_CHARGED + FULLY_CHARGED + PARTIALLY_REFUNDED + FULLY_REFUNDED + REFUSED + CANCELLED +} + +""" +Determine a current authorize status for order. + + We treat the order as fully authorized when the sum of authorized and charged funds + cover the order.total. + We treat the order as partially authorized when the sum of authorized and charged + funds covers only part of the order.total + We treat the order as not authorized when the sum of authorized and charged funds is + 0. + + NONE - the funds are not authorized + PARTIAL - the funds that are authorized or charged don't cover fully the order's + total + FULL - the funds that are authorized or charged fully cover the order's total +""" +enum OrderAuthorizeStatusEnum { + NONE + PARTIAL + FULL +} + +""" +Determine the current charge status for the order. + + We treat the order as overcharged when the charged amount is bigger that order.total + We treat the order as fully charged when the charged amount is equal to order.total. + We treat the order as partially charged when the charged amount covers only part of + the order.total + + NONE - the funds are not charged. + PARTIAL - the funds that are charged don't cover the order's total + FULL - the funds that are charged fully cover the order's total + OVERCHARGED - the charged funds are bigger than order's total +""" +enum OrderChargeStatusEnum { + NONE + PARTIAL + FULL + OVERCHARGED +} + +""" +Represents a payment of a given type. +""" +type Payment implements Node & ObjectWithMetadata { + id: ID! + + """ + List of private metadata items. Requires staff permissions to access. + """ + privateMetadata: [MetadataItem!]! + + """ + A single key from private metadata. Requires staff permissions to access. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafield(key: String!): String + + """ + Private metadata. Requires staff permissions to access. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + privateMetafields(keys: [String!]): Metadata + + """ + List of public metadata items. Can be accessed without permissions. + """ + metadata: [MetadataItem!]! + + """ + A single key from public metadata. + + Tip: Use GraphQL aliases to fetch multiple keys. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafield(key: String!): String + + """ + Public metadata. Use `keys` to control which fields you want to include. The default is to include everything. + + Added in Saleor 3.3. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + metafields(keys: [String!]): Metadata + gateway: String! + isActive: Boolean! + created: DateTime! + modified: DateTime! + token: String! + checkout: Checkout + order: Order + paymentMethodType: String! + + """ + IP address of the user who created the payment. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + customerIpAddress: String + + """ + Internal payment status. + """ + chargeStatus: PaymentChargeStatusEnum! + + """ + List of actions that can be performed in the current state of a payment. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + actions: [OrderAction!]! + + """ + Total amount of the payment. + """ + total: Money + + """ + Total amount captured for this payment. + """ + capturedAmount: Money + + """ + List of all transactions within this payment. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + transactions: [Transaction!] + + """ + Maximum amount of money that can be captured. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + availableCaptureAmount: Money + + """ + Maximum amount of money that can be refunded. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + availableRefundAmount: Money + + """ + The details of the card used for this payment. + """ + creditCard: CreditCard +} + +""" +An object representing a single payment. +""" +type Transaction implements Node { + id: ID! + created: DateTime! + payment: Payment! + token: String! + kind: TransactionKind! + isSuccess: Boolean! + error: String + gatewayResponse: JSONString! + + """ + Total amount of the transaction. + """ + amount: Money +} + +""" +An enumeration. +""" +enum TransactionKind { + EXTERNAL + AUTH + PENDING + ACTION_TO_CONFIRM + REFUND + REFUND_ONGOING + CAPTURE + VOID + CONFIRM + CANCEL +} + +type CreditCard { + """ + Card brand. + """ + brand: String! + + """ + First 4 digits of the card number. + """ + firstDigits: String + + """ + Last 4 digits of the card number. + """ + lastDigits: String! + + """ + Two-digit number representing the card’s expiration month. + """ + expMonth: Int + + """ + Four-digit number representing the card’s expiration year. + """ + expYear: Int +} + +""" +History log of the order. +""" +type OrderEvent implements Node { + id: ID! + + """ + Date when event happened at in ISO 8601 format. + """ + date: DateTime + + """ + Order event type. + """ + type: OrderEventsEnum + + """ + User who performed the action. + """ + user: User + + """ + App that performed the action. Requires of of the following permissions: MANAGE_APPS, MANAGE_ORDERS, OWNER. + """ + app: App + + """ + Content of the event. + """ + message: String + + """ + Email of the customer. + """ + email: String + + """ + Type of an email sent to the customer. + """ + emailType: OrderEventsEmailsEnum + + """ + Amount of money. + """ + amount: Float + + """ + The payment reference from the payment provider. + """ + paymentId: String + + """ + The payment gateway of the payment. + """ + paymentGateway: String + + """ + Number of items. + """ + quantity: Int + + """ + Composed ID of the Fulfillment. + """ + composedId: String + + """ + User-friendly number of an order. + """ + orderNumber: String + + """ + Number of an invoice related to the order. + """ + invoiceNumber: String + + """ + List of oversold lines names. + """ + oversoldItems: [String!] + + """ + The concerned lines. + """ + lines: [OrderEventOrderLineObject!] + + """ + The lines fulfilled. + """ + fulfilledItems: [FulfillmentLine!] + + """ + The warehouse were items were restocked. + """ + warehouse: Warehouse + + """ + The transaction reference of captured payment. + """ + transactionReference: String + + """ + Define if shipping costs were included to the refund. + """ + shippingCostsIncluded: Boolean + + """ + The order which is related to this order. + """ + relatedOrder: Order + + """ + The discount applied to the order. + """ + discount: OrderEventDiscountObject + + """ + The status of payment's transaction. + """ + status: TransactionStatus + + """ + The reference of payment's transaction. + """ + reference: String +} + +""" +An enumeration. +""" +enum OrderEventsEnum { + DRAFT_CREATED + DRAFT_CREATED_FROM_REPLACE + ADDED_PRODUCTS + REMOVED_PRODUCTS + PLACED + PLACED_FROM_DRAFT + OVERSOLD_ITEMS + CANCELED + ORDER_MARKED_AS_PAID + ORDER_FULLY_PAID + ORDER_REPLACEMENT_CREATED + ORDER_DISCOUNT_ADDED + ORDER_DISCOUNT_AUTOMATICALLY_UPDATED + ORDER_DISCOUNT_UPDATED + ORDER_DISCOUNT_DELETED + ORDER_LINE_DISCOUNT_UPDATED + ORDER_LINE_DISCOUNT_REMOVED + ORDER_LINE_PRODUCT_DELETED + ORDER_LINE_VARIANT_DELETED + UPDATED_ADDRESS + EMAIL_SENT + CONFIRMED + PAYMENT_AUTHORIZED + PAYMENT_CAPTURED + EXTERNAL_SERVICE_NOTIFICATION + PAYMENT_REFUNDED + PAYMENT_VOIDED + PAYMENT_FAILED + TRANSACTION_EVENT + TRANSACTION_CAPTURE_REQUESTED + TRANSACTION_REFUND_REQUESTED + TRANSACTION_VOID_REQUESTED + INVOICE_REQUESTED + INVOICE_GENERATED + INVOICE_UPDATED + INVOICE_SENT + FULFILLMENT_CANCELED + FULFILLMENT_RESTOCKED_ITEMS + FULFILLMENT_FULFILLED_ITEMS + FULFILLMENT_REFUNDED + FULFILLMENT_RETURNED + FULFILLMENT_REPLACED + FULFILLMENT_AWAITS_APPROVAL + TRACKING_UPDATED + NOTE_ADDED + OTHER +} + +""" +An enumeration. +""" +enum OrderEventsEmailsEnum { + PAYMENT_CONFIRMATION + CONFIRMED + SHIPPING_CONFIRMATION + TRACKING_UPDATED + ORDER_CONFIRMATION + ORDER_CANCEL + ORDER_REFUND + FULFILLMENT_CONFIRMATION + DIGITAL_LINKS +} + +type OrderEventOrderLineObject { + """ + The variant quantity. + """ + quantity: Int + + """ + The order line. + """ + orderLine: OrderLine + + """ + The variant name. + """ + itemName: String + + """ + The discount applied to the order line. + """ + discount: OrderEventDiscountObject +} + +type OrderEventDiscountObject { + """ + Type of the discount: fixed or percent. + """ + valueType: DiscountValueTypeEnum! + + """ + Value of the discount. Can store fixed value or percent value. + """ + value: PositiveDecimal! + + """ + Explanation for the applied discount. + """ + reason: String + + """ + Returns amount of discount. + """ + amount: Money + + """ + Type of the discount: fixed or percent. + """ + oldValueType: DiscountValueTypeEnum + + """ + Value of the discount. Can store fixed value or percent value. + """ + oldValue: PositiveDecimal + + """ + Returns amount of discount. + """ + oldAmount: Money +} + +""" +Contains all details related to the applied discount to the order. +""" +type OrderDiscount implements Node { + id: ID! + type: OrderDiscountType! + name: String + translatedName: String + + """ + Type of the discount: fixed or percent + """ + valueType: DiscountValueTypeEnum! + + """ + Value of the discount. Can store fixed value or percent value + """ + value: PositiveDecimal! + + """ + Explanation for the applied discount. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + reason: String + + """ + Returns amount of discount. + """ + amount: Money! +} + +""" +An enumeration. +""" +enum OrderDiscountType { + VOUCHER + MANUAL +} + +type OrderError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: OrderErrorCode! + + """ + Warehouse ID which causes the error. + """ + warehouse: ID + + """ + List of order line IDs that cause the error. + """ + orderLines: [ID!] + + """ + List of product variants that are associated with the error + """ + variants: [ID!] + + """ + A type of address that causes the error. + """ + addressType: AddressTypeEnum +} + +""" +An enumeration. +""" +enum OrderErrorCode { + BILLING_ADDRESS_NOT_SET + CANNOT_CANCEL_FULFILLMENT + CANNOT_CANCEL_ORDER + CANNOT_DELETE + CANNOT_DISCOUNT + CANNOT_REFUND + CANNOT_FULFILL_UNPAID_ORDER + CAPTURE_INACTIVE_PAYMENT + GIFT_CARD_LINE + NOT_EDITABLE + FULFILL_ORDER_LINE + GRAPHQL_ERROR + INVALID + PRODUCT_NOT_PUBLISHED + PRODUCT_UNAVAILABLE_FOR_PURCHASE + NOT_FOUND + ORDER_NO_SHIPPING_ADDRESS + PAYMENT_ERROR + PAYMENT_MISSING + REQUIRED + SHIPPING_METHOD_NOT_APPLICABLE + SHIPPING_METHOD_REQUIRED + TAX_ERROR + UNIQUE + VOID_INACTIVE_PAYMENT + ZERO_QUANTITY + INVALID_QUANTITY + INSUFFICIENT_STOCK + DUPLICATED_INPUT_ITEM + NOT_AVAILABLE_IN_CHANNEL + CHANNEL_INACTIVE + MISSING_TRANSACTION_ACTION_REQUEST_WEBHOOK +} + +""" +An enumeration. +""" +enum AddressTypeEnum { + BILLING + SHIPPING +} + +type UserPermission { + """ + Internal code for permission. + """ + code: PermissionEnum! + + """ + Describe action(s) allowed to do by permission. + """ + name: String! + + """ + List of user permission groups which contains this permission. + """ + sourcePermissionGroups( + """ + ID of user whose groups should be returned. + """ + userId: ID! + ): [Group!] +} + +""" +Represents permission group data. +""" +type Group implements Node { + id: ID! + name: String! + + """ + List of group users + + Requires one of the following permissions: MANAGE_STAFF. + """ + users: [User!] + + """ + List of group permissions + """ + permissions: [Permission!] + + """ + True, if the currently authenticated user has rights to manage a group. + """ + userCanManage: Boolean! +} + +""" +History log of the customer. +""" +type CustomerEvent implements Node { + id: ID! + + """ + Date when event happened at in ISO 8601 format. + """ + date: DateTime + + """ + Customer event type. + """ + type: CustomerEventsEnum + + """ + User who performed the action. + """ + user: User + + """ + App that performed the action. + """ + app: App + + """ + Content of the event. + """ + message: String + + """ + Number of objects concerned by the event. + """ + count: Int + + """ + The concerned order. + """ + order: Order + + """ + The concerned order line. + """ + orderLine: OrderLine +} + +""" +An enumeration. +""" +enum CustomerEventsEnum { + ACCOUNT_CREATED + PASSWORD_RESET_LINK_SENT + PASSWORD_RESET + EMAIL_CHANGED_REQUEST + PASSWORD_CHANGED + EMAIL_CHANGED + PLACED_ORDER + NOTE_ADDED_TO_ORDER + DIGITAL_LINK_DOWNLOADED + CUSTOMER_DELETED + NAME_ASSIGNED + EMAIL_ASSIGNED + NOTE_ADDED +} + +""" +Represents a payment source stored for user in payment gateway, such as credit card. +""" +type PaymentSource { + """ + Payment gateway name. + """ + gateway: String! + + """ + ID of stored payment method. + """ + paymentMethodId: String + + """ + Stored credit card details if available. + """ + creditCardInfo: CreditCard + + """ + List of public metadata items. + + Added in Saleor 3.1. + + Can be accessed without permissions. + """ + metadata: [MetadataItem!]! +} + +type LimitInfo { + """ + Defines the current resource usage. + """ + currentUsage: Limits! + + """ + Defines the allowed maximum resource usage, null means unlimited. + """ + allowedUsage: Limits! +} + +type Limits { + channels: Int + orders: Int + productVariants: Int + staffUsers: Int + warehouses: Int +} + +""" +Order related settings from site settings. +""" +type OrderSettings { + automaticallyConfirmAllNewOrders: Boolean! + automaticallyFulfillNonShippableGiftCard: Boolean! +} + +""" +Gift card related settings from site settings. +""" +type GiftCardSettings { + """ + The gift card expiry type settings. + """ + expiryType: GiftCardSettingsExpiryTypeEnum! + + """ + The gift card expiry period settings. + """ + expiryPeriod: TimePeriod +} + +""" +An enumeration. +""" +enum GiftCardSettingsExpiryTypeEnum { + NEVER_EXPIRE + EXPIRY_PERIOD +} + +type TimePeriod { + """ + The length of the period. + """ + amount: Int! + + """ + The type of the period. + """ + type: TimePeriodTypeEnum! +} + +""" +An enumeration. +""" +enum TimePeriodTypeEnum { + DAY + WEEK + MONTH + YEAR +} + +input ShippingZoneFilterInput { + search: String + channels: [ID!] +} + +type DigitalContentCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [DigitalContentCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type DigitalContentCountableEdge { + """ + The item at the end of the edge. + """ + node: DigitalContent! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +input CategoryFilterInput { + search: String + metadata: [MetadataFilter!] + ids: [ID!] +} + +input CategorySortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Specifies the channel in which to sort the data. + + DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. + """ + channel: String + + """ + Sort categories by the selected field. + """ + field: CategorySortField! +} + +enum CategorySortField { + """ + Sort categories by name. + """ + NAME + + """ + Sort categories by product count. + """ + PRODUCT_COUNT + + """ + Sort categories by subcategory count. + """ + SUBCATEGORY_COUNT +} + +input CollectionFilterInput { + published: CollectionPublished + search: String + metadata: [MetadataFilter!] + ids: [ID!] + + """ + Specifies the channel by which the data should be filtered. + + DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. + """ + channel: String +} + +enum CollectionPublished { + PUBLISHED + HIDDEN +} + +input CollectionSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Specifies the channel in which to sort the data. + + DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. + """ + channel: String + + """ + Sort collections by the selected field. + """ + field: CollectionSortField! +} + +enum CollectionSortField { + """ + Sort collections by name. + """ + NAME + + """ + Sort collections by availability. + + This option requires a channel filter to work as the values can vary between channels. + """ + AVAILABILITY + + """ + Sort collections by product count. + """ + PRODUCT_COUNT + + """ + Sort collections by publication date. + + This option requires a channel filter to work as the values can vary between channels. + """ + PUBLICATION_DATE + + """ + Sort collections by publication date. + + This option requires a channel filter to work as the values can vary between channels. + """ + PUBLISHED_AT +} + +input ProductTypeFilterInput { + search: String + configurable: ProductTypeConfigurable + productType: ProductTypeEnum + metadata: [MetadataFilter!] + kind: ProductTypeKindEnum + ids: [ID!] +} + +enum ProductTypeConfigurable { + CONFIGURABLE + SIMPLE +} + +enum ProductTypeEnum { + DIGITAL + SHIPPABLE +} + +input ProductTypeSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort product types by the selected field. + """ + field: ProductTypeSortField! +} + +enum ProductTypeSortField { + """ + Sort products by name. + """ + NAME + + """ + Sort products by type. + """ + DIGITAL + + """ + Sort products by shipping. + """ + SHIPPING_REQUIRED +} + +input ProductVariantFilterInput { + search: String + sku: [String!] + metadata: [MetadataFilter!] + isPreorder: Boolean + updatedAt: DateTimeRangeInput +} + +input ProductVariantSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort productVariants by the selected field. + """ + field: ProductVariantSortField! +} + +enum ProductVariantSortField { + """ + Sort products variants by last modified at. + """ + LAST_MODIFIED_AT +} + +type PaymentCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [PaymentCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type PaymentCountableEdge { + """ + The item at the end of the edge. + """ + node: Payment! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +input PaymentFilterInput { + checkouts: [ID!] +} + +type PageCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [PageCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type PageCountableEdge { + """ + The item at the end of the edge. + """ + node: Page! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +input PageSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort pages by the selected field. + """ + field: PageSortField! +} + +enum PageSortField { + """ + Sort pages by title. + """ + TITLE + + """ + Sort pages by slug. + """ + SLUG + + """ + Sort pages by visibility. + """ + VISIBILITY + + """ + Sort pages by creation date. + """ + CREATION_DATE + + """ + Sort pages by publication date. + + DEPRECATED: this field will be removed in Saleor 4.0. + """ + PUBLICATION_DATE + + """ + Sort pages by publication date. + + DEPRECATED: this field will be removed in Saleor 4.0. + """ + PUBLISHED_AT +} + +input PageFilterInput { + search: String + metadata: [MetadataFilter!] + pageTypes: [ID!] + ids: [ID!] +} + +type PageTypeCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [PageTypeCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type PageTypeCountableEdge { + """ + The item at the end of the edge. + """ + node: PageType! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +input PageTypeSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort page types by the selected field. + """ + field: PageTypeSortField! +} + +enum PageTypeSortField { + """ + Sort page types by name. + """ + NAME + + """ + Sort page types by slug. + """ + SLUG +} + +input PageTypeFilterInput { + search: String +} + +type OrderEventCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [OrderEventCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type OrderEventCountableEdge { + """ + The item at the end of the edge. + """ + node: OrderEvent! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +input OrderSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort orders by the selected field. + """ + field: OrderSortField! +} + +enum OrderSortField { + """ + Sort orders by number. + """ + NUMBER + + """ + Sort orders by creation date. + + DEPRECATED: this field will be removed in Saleor 4.0. + """ + CREATION_DATE + + """ + Sort orders by creation date. + + DEPRECATED: this field will be removed in Saleor 4.0. + """ + CREATED_AT + + """ + Sort orders by last modified at. + """ + LAST_MODIFIED_AT + + """ + Sort orders by customer. + """ + CUSTOMER + + """ + Sort orders by payment. + """ + PAYMENT + + """ + Sort orders by fulfillment status. + """ + FULFILLMENT_STATUS +} + +input OrderFilterInput { + paymentStatus: [PaymentChargeStatusEnum!] + status: [OrderStatusFilter!] + customer: String + created: DateRangeInput + search: String + metadata: [MetadataFilter!] + channels: [ID!] + authorizeStatus: [OrderAuthorizeStatusEnum!] + chargeStatus: [OrderChargeStatusEnum!] + updatedAt: DateTimeRangeInput + isClickAndCollect: Boolean + isPreorder: Boolean + ids: [ID!] + giftCardUsed: Boolean + giftCardBought: Boolean + numbers: [String!] +} + +enum OrderStatusFilter { + READY_TO_FULFILL + READY_TO_CAPTURE + UNFULFILLED + UNCONFIRMED + PARTIALLY_FULFILLED + FULFILLED + CANCELED +} + +input OrderDraftFilterInput { + customer: String + created: DateRangeInput + search: String + metadata: [MetadataFilter!] + channels: [ID!] +} + +type MenuCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [MenuCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type MenuCountableEdge { + """ + The item at the end of the edge. + """ + node: Menu! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +input MenuSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort menus by the selected field. + """ + field: MenuSortField! +} + +enum MenuSortField { + """ + Sort menus by name. + """ + NAME + + """ + Sort menus by items count. + """ + ITEMS_COUNT +} + +input MenuFilterInput { + search: String + slug: [String!] + metadata: [MetadataFilter!] +} + +type MenuItemCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [MenuItemCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type MenuItemCountableEdge { + """ + The item at the end of the edge. + """ + node: MenuItem! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +input MenuItemSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort menu items by the selected field. + """ + field: MenuItemsSortField! +} + +enum MenuItemsSortField { + """ + Sort menu items by name. + """ + NAME +} + +input MenuItemFilterInput { + search: String + metadata: [MetadataFilter!] +} + +input GiftCardSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort gift cards by the selected field. + """ + field: GiftCardSortField! +} + +enum GiftCardSortField { + """ + Sort orders by product. + """ + PRODUCT + + """ + Sort orders by used by. + """ + USED_BY + + """ + Sort orders by current balance. + """ + CURRENT_BALANCE +} + +input GiftCardFilterInput { + isActive: Boolean + metadata: [MetadataFilter!] + tags: [String!] + products: [ID!] + usedBy: [ID!] + used: Boolean + currency: String + currentBalance: PriceRangeInput + initialBalance: PriceRangeInput + code: String +} + +type GiftCardTagCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [GiftCardTagCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type GiftCardTagCountableEdge { + """ + The item at the end of the edge. + """ + node: GiftCardTag! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +input GiftCardTagFilterInput { + search: String +} + +""" +Plugin. +""" +type Plugin { + """ + Identifier of the plugin. + """ + id: ID! + + """ + Name of the plugin. + """ + name: String! + + """ + Description of the plugin. + """ + description: String! + + """ + Global configuration of the plugin (not channel-specific). + """ + globalConfiguration: PluginConfiguration + + """ + Channel-specific plugin configuration. + """ + channelConfigurations: [PluginConfiguration!]! +} + +""" +Stores information about a configuration of plugin. +""" +type PluginConfiguration { + """ + Determines if plugin is active or not. + """ + active: Boolean! + + """ + The channel to which the plugin configuration is assigned to. + """ + channel: Channel + + """ + Configuration of the plugin. + """ + configuration: [ConfigurationItem!] +} + +""" +Stores information about a single configuration field. +""" +type ConfigurationItem { + """ + Name of the field. + """ + name: String! + + """ + Current value of the field. + """ + value: String + + """ + Type of the field. + """ + type: ConfigurationTypeFieldEnum + + """ + Help text for the field. + """ + helpText: String + + """ + Label for the field. + """ + label: String +} + +""" +An enumeration. +""" +enum ConfigurationTypeFieldEnum { + STRING + MULTILINE + BOOLEAN + SECRET + PASSWORD + SECRETMULTILINE + OUTPUT +} + +type PluginCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [PluginCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type PluginCountableEdge { + """ + The item at the end of the edge. + """ + node: Plugin! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +input PluginFilterInput { + statusInChannels: PluginStatusInChannelsInput + search: String + type: PluginConfigurationType +} + +input PluginStatusInChannelsInput { + active: Boolean! + channels: [ID!]! +} + +enum PluginConfigurationType { + PER_CHANNEL + GLOBAL +} + +input PluginSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort plugins by the selected field. + """ + field: PluginSortField! +} + +enum PluginSortField { + NAME + IS_ACTIVE +} + +type SaleCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [SaleCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type SaleCountableEdge { + """ + The item at the end of the edge. + """ + node: Sale! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +input SaleFilterInput { + status: [DiscountStatusEnum!] + saleType: DiscountValueTypeEnum + started: DateTimeRangeInput + search: String + metadata: [MetadataFilter!] + updatedAt: DateTimeRangeInput +} + +enum DiscountStatusEnum { + ACTIVE + EXPIRED + SCHEDULED +} + +input SaleSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Specifies the channel in which to sort the data. + + DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. + """ + channel: String + + """ + Sort sales by the selected field. + """ + field: SaleSortField! +} + +enum SaleSortField { + """ + Sort sales by name. + """ + NAME + + """ + Sort sales by start date. + """ + START_DATE + + """ + Sort sales by end date. + """ + END_DATE + + """ + Sort sales by value. + + This option requires a channel filter to work as the values can vary between channels. + """ + VALUE + + """ + Sort sales by type. + """ + TYPE + + """ + Sort sales by created at. + """ + CREATED_AT + + """ + Sort sales by last modified at. + """ + LAST_MODIFIED_AT +} + +type VoucherCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [VoucherCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type VoucherCountableEdge { + """ + The item at the end of the edge. + """ + node: Voucher! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +input VoucherFilterInput { + status: [DiscountStatusEnum!] + timesUsed: IntRangeInput + discountType: [VoucherDiscountType!] + started: DateTimeRangeInput + search: String + metadata: [MetadataFilter!] +} + +enum VoucherDiscountType { + FIXED + PERCENTAGE + SHIPPING +} + +input VoucherSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Specifies the channel in which to sort the data. + + DEPRECATED: this field will be removed in Saleor 4.0. Use root-level channel argument instead. + """ + channel: String + + """ + Sort vouchers by the selected field. + """ + field: VoucherSortField! +} + +enum VoucherSortField { + """ + Sort vouchers by code. + """ + CODE + + """ + Sort vouchers by start date. + """ + START_DATE + + """ + Sort vouchers by end date. + """ + END_DATE + + """ + Sort vouchers by value. + + This option requires a channel filter to work as the values can vary between channels. + """ + VALUE + + """ + Sort vouchers by type. + """ + TYPE + + """ + Sort vouchers by usage limit. + """ + USAGE_LIMIT + + """ + Sort vouchers by minimum spent amount. + + This option requires a channel filter to work as the values can vary between channels. + """ + MINIMUM_SPENT_AMOUNT +} + +""" +Represents a job data of exported file. +""" +type ExportFile implements Node & Job { + id: ID! + + """ + Job status. + """ + status: JobStatusEnum! + + """ + Created date time of job in ISO 8601 format. + """ + createdAt: DateTime! + + """ + Date time of job last update in ISO 8601 format. + """ + updatedAt: DateTime! + + """ + Job message. + """ + message: String + + """ + The URL of field to download. + """ + url: String + + """ + List of events associated with the export. + """ + events: [ExportEvent!] + user: User + app: App +} + +""" +History log of export file. +""" +type ExportEvent implements Node { + """ + The ID of the object. + """ + id: ID! + + """ + Date when event happened at in ISO 8601 format. + """ + date: DateTime! + + """ + Export event type. + """ + type: ExportEventsEnum! + + """ + User who performed the action. Requires one of the following permissions: OWNER, MANAGE_STAFF. + """ + user: User + + """ + App which performed the action. Requires one of the following permissions: OWNER, MANAGE_APPS. + """ + app: App + + """ + Content of the event. + """ + message: String! +} + +""" +An enumeration. +""" +enum ExportEventsEnum { + EXPORT_PENDING + EXPORT_SUCCESS + EXPORT_FAILED + EXPORT_DELETED + EXPORTED_FILE_SENT + EXPORT_FAILED_INFO_SENT +} + +type ExportFileCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [ExportFileCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type ExportFileCountableEdge { + """ + The item at the end of the edge. + """ + node: ExportFile! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +input ExportFileFilterInput { + createdAt: DateTimeRangeInput + updatedAt: DateTimeRangeInput + status: JobStatusEnum + user: String + app: String +} + +input ExportFileSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort export file by the selected field. + """ + field: ExportFileSortField! +} + +enum ExportFileSortField { + STATUS + CREATED_AT + UPDATED_AT + LAST_MODIFIED_AT +} + +type CheckoutCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [CheckoutCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type CheckoutCountableEdge { + """ + The item at the end of the edge. + """ + node: Checkout! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +input CheckoutSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort checkouts by the selected field. + """ + field: CheckoutSortField! +} + +enum CheckoutSortField { + """ + Sort checkouts by creation date. + """ + CREATION_DATE + + """ + Sort checkouts by customer. + """ + CUSTOMER + + """ + Sort checkouts by payment. + """ + PAYMENT +} + +input CheckoutFilterInput { + customer: String + created: DateRangeInput + search: String + metadata: [MetadataFilter!] + channels: [ID!] +} + +type CheckoutLineCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [CheckoutLineCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type CheckoutLineCountableEdge { + """ + The item at the end of the edge. + """ + node: CheckoutLine! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +input AttributeSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort attributes by the selected field. + """ + field: AttributeSortField! +} + +enum AttributeSortField { + """ + Sort attributes by name + """ + NAME + + """ + Sort attributes by slug + """ + SLUG + + """ + Sort attributes by the value required flag + """ + VALUE_REQUIRED + + """ + Sort attributes by the variant only flag + """ + IS_VARIANT_ONLY + + """ + Sort attributes by visibility in the storefront + """ + VISIBLE_IN_STOREFRONT + + """ + Sort attributes by the filterable in storefront flag + """ + FILTERABLE_IN_STOREFRONT + + """ + Sort attributes by the filterable in dashboard flag + """ + FILTERABLE_IN_DASHBOARD + + """ + Sort attributes by their position in storefront + """ + STOREFRONT_SEARCH_POSITION + + """ + Sort attributes based on whether they can be displayed or not in a product grid. + """ + AVAILABLE_IN_GRID +} + +""" +Represents ongoing installation of app. +""" +type AppInstallation implements Node & Job { + id: ID! + + """ + Job status. + """ + status: JobStatusEnum! + + """ + Created date time of job in ISO 8601 format. + """ + createdAt: DateTime! + + """ + Date time of job last update in ISO 8601 format. + """ + updatedAt: DateTime! + + """ + Job message. + """ + message: String + appName: String! + manifestUrl: String! +} + +type AppCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [AppCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type AppCountableEdge { + """ + The item at the end of the edge. + """ + node: App! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +input AppFilterInput { + search: String + isActive: Boolean + type: AppTypeEnum +} + +input AppSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort apps by the selected field. + """ + field: AppSortField! +} + +enum AppSortField { + """ + Sort apps by name. + """ + NAME + + """ + Sort apps by creation date. + """ + CREATION_DATE +} + +type AppExtensionCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [AppExtensionCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type AppExtensionCountableEdge { + """ + The item at the end of the edge. + """ + node: AppExtension! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +input AppExtensionFilterInput { + mount: [AppExtensionMountEnum!] + target: AppExtensionTargetEnum +} + +type AddressValidationData { + countryCode: String! + countryName: String! + addressFormat: String! + addressLatinFormat: String! + allowedFields: [String!]! + requiredFields: [String!]! + upperFields: [String!]! + countryAreaType: String! + countryAreaChoices: [ChoiceValue!]! + cityType: String! + cityChoices: [ChoiceValue!]! + cityAreaType: String! + cityAreaChoices: [ChoiceValue!]! + postalCodeType: String! + postalCodeMatchers: [String!]! + postalCodeExamples: [String!]! + postalCodePrefix: String! +} + +type ChoiceValue { + raw: String + verbose: String +} + +type UserCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [UserCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type UserCountableEdge { + """ + The item at the end of the edge. + """ + node: User! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +input CustomerFilterInput { + dateJoined: DateRangeInput + numberOfOrders: IntRangeInput + placedOrders: DateRangeInput + search: String + metadata: [MetadataFilter!] + updatedAt: DateTimeRangeInput +} + +input UserSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort users by the selected field. + """ + field: UserSortField! +} + +enum UserSortField { + """ + Sort users by first name. + """ + FIRST_NAME + + """ + Sort users by last name. + """ + LAST_NAME + + """ + Sort users by email. + """ + EMAIL + + """ + Sort users by order count. + """ + ORDER_COUNT + + """ + Sort users by created at. + """ + CREATED_AT + + """ + Sort users by last modified at. + """ + LAST_MODIFIED_AT +} + +type GroupCountableConnection { + """ + Pagination data for this connection. + """ + pageInfo: PageInfo! + edges: [GroupCountableEdge!]! + + """ + A total count of items in the collection. + """ + totalCount: Int +} + +type GroupCountableEdge { + """ + The item at the end of the edge. + """ + node: Group! + + """ + A cursor for use in pagination. + """ + cursor: String! +} + +input PermissionGroupFilterInput { + search: String + ids: [ID!] +} + +input PermissionGroupSortingInput { + """ + Specifies the direction in which to sort products. + """ + direction: OrderDirection! + + """ + Sort permission group by the selected field. + """ + field: PermissionGroupSortField! +} + +enum PermissionGroupSortField { + """ + Sort permission group accounts by name. + """ + NAME +} + +input StaffUserInput { + status: StaffMemberStatus + search: String + ids: [ID!] +} + +enum StaffMemberStatus { + """ + User account has been activated. + """ + ACTIVE + + """ + User account has not been activated yet. + """ + DEACTIVATED +} + +type Mutation { + """ + Creates a new webhook subscription. + + Requires one of the following permissions: MANAGE_APPS, AUTHENTICATED_APP. + """ + webhookCreate( + """ + Fields required to create a webhook. + """ + input: WebhookCreateInput! + ): WebhookCreate + + """ + Deletes a webhook subscription. + + Requires one of the following permissions: MANAGE_APPS, AUTHENTICATED_APP. + """ + webhookDelete( + """ + ID of a webhook to delete. + """ + id: ID! + ): WebhookDelete + + """ + Updates a webhook subscription. + + Requires one of the following permissions: MANAGE_APPS. + """ + webhookUpdate( + """ + ID of a webhook to update. + """ + id: ID! + + """ + Fields required to update a webhook. + """ + input: WebhookUpdateInput! + ): WebhookUpdate + + """ + Retries event delivery. + + Requires one of the following permissions: MANAGE_APPS. + """ + eventDeliveryRetry( + """ + ID of the event delivery to retry. + """ + id: ID! + ): EventDeliveryRetry + + """ + Creates new warehouse. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + createWarehouse( + """ + Fields required to create warehouse. + """ + input: WarehouseCreateInput! + ): WarehouseCreate + + """ + Updates given warehouse. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + updateWarehouse( + """ + ID of a warehouse to update. + """ + id: ID! + + """ + Fields required to update warehouse. + """ + input: WarehouseUpdateInput! + ): WarehouseUpdate + + """ + Deletes selected warehouse. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + deleteWarehouse( + """ + ID of a warehouse to delete. + """ + id: ID! + ): WarehouseDelete + + """ + Add shipping zone to given warehouse. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + assignWarehouseShippingZone( + """ + ID of a warehouse to update. + """ + id: ID! + + """ + List of shipping zone IDs. + """ + shippingZoneIds: [ID!]! + ): WarehouseShippingZoneAssign + + """ + Remove shipping zone from given warehouse. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + unassignWarehouseShippingZone( + """ + ID of a warehouse to update. + """ + id: ID! + + """ + List of shipping zone IDs. + """ + shippingZoneIds: [ID!]! + ): WarehouseShippingZoneUnassign + + """ + Creates a new staff notification recipient. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + staffNotificationRecipientCreate( + """ + Fields required to create a staff notification recipient. + """ + input: StaffNotificationRecipientInput! + ): StaffNotificationRecipientCreate + + """ + Updates a staff notification recipient. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + staffNotificationRecipientUpdate( + """ + ID of a staff notification recipient to update. + """ + id: ID! + + """ + Fields required to update a staff notification recipient. + """ + input: StaffNotificationRecipientInput! + ): StaffNotificationRecipientUpdate + + """ + Delete staff notification recipient. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + staffNotificationRecipientDelete( + """ + ID of a staff notification recipient to delete. + """ + id: ID! + ): StaffNotificationRecipientDelete + + """ + Updates site domain of the shop. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + shopDomainUpdate( + """ + Fields required to update site. + """ + input: SiteDomainInput + ): ShopDomainUpdate + + """ + Updates shop settings. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + shopSettingsUpdate( + """ + Fields required to update shop settings. + """ + input: ShopSettingsInput! + ): ShopSettingsUpdate + + """ + Fetch tax rates. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + shopFetchTaxRates: ShopFetchTaxRates + + """ + Creates/updates translations for shop settings. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + shopSettingsTranslate( + """ + Fields required to update shop settings translations. + """ + input: ShopSettingsTranslationInput! + + """ + Translation language code. + """ + languageCode: LanguageCodeEnum! + ): ShopSettingsTranslate + + """ + Update the shop's address. If the `null` value is passed, the currently selected address will be deleted. + + Requires one of the following permissions: MANAGE_SETTINGS. + """ + shopAddressUpdate( + """ + Fields required to update shop address. + """ + input: AddressInput + ): ShopAddressUpdate + + """ + Update shop order settings. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderSettingsUpdate( + """ + Fields required to update shop order settings. + """ + input: OrderSettingsUpdateInput! + ): OrderSettingsUpdate + + """ + Update gift card settings. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardSettingsUpdate( + """ + Fields required to update gift card settings. + """ + input: GiftCardSettingsUpdateInput! + ): GiftCardSettingsUpdate + + """ + Manage shipping method's availability in channels. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingMethodChannelListingUpdate( + """ + ID of a shipping method to update. + """ + id: ID! + + """ + Fields required to update shipping method channel listings. + """ + input: ShippingMethodChannelListingInput! + ): ShippingMethodChannelListingUpdate + + """ + Creates a new shipping price. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingPriceCreate( + """ + Fields required to create a shipping price. + """ + input: ShippingPriceInput! + ): ShippingPriceCreate + + """ + Deletes a shipping price. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingPriceDelete( + """ + ID of a shipping price to delete. + """ + id: ID! + ): ShippingPriceDelete + + """ + Deletes shipping prices. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingPriceBulkDelete( + """ + List of shipping price IDs to delete. + """ + ids: [ID!]! + ): ShippingPriceBulkDelete + + """ + Updates a new shipping price. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingPriceUpdate( + """ + ID of a shipping price to update. + """ + id: ID! + + """ + Fields required to update a shipping price. + """ + input: ShippingPriceInput! + ): ShippingPriceUpdate + + """ + Creates/updates translations for a shipping method. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + shippingPriceTranslate( + """ + ShippingMethodType ID or ShippingMethodTranslatableContent ID. + """ + id: ID! + input: ShippingPriceTranslationInput! + + """ + Translation language code. + """ + languageCode: LanguageCodeEnum! + ): ShippingPriceTranslate + + """ + Exclude products from shipping price. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingPriceExcludeProducts( + """ + ID of a shipping price. + """ + id: ID! + + """ + Exclude products input. + """ + input: ShippingPriceExcludeProductsInput! + ): ShippingPriceExcludeProducts + + """ + Remove product from excluded list for shipping price. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingPriceRemoveProductFromExclude( + """ + ID of a shipping price. + """ + id: ID! + + """ + List of products which will be removed from excluded list. + """ + products: [ID!]! + ): ShippingPriceRemoveProductFromExclude + + """ + Creates a new shipping zone. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingZoneCreate( + """ + Fields required to create a shipping zone. + """ + input: ShippingZoneCreateInput! + ): ShippingZoneCreate + + """ + Deletes a shipping zone. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingZoneDelete( + """ + ID of a shipping zone to delete. + """ + id: ID! + ): ShippingZoneDelete + + """ + Deletes shipping zones. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingZoneBulkDelete( + """ + List of shipping zone IDs to delete. + """ + ids: [ID!]! + ): ShippingZoneBulkDelete + + """ + Updates a new shipping zone. + + Requires one of the following permissions: MANAGE_SHIPPING. + """ + shippingZoneUpdate( + """ + ID of a shipping zone to update. + """ + id: ID! + + """ + Fields required to update a shipping zone. + """ + input: ShippingZoneUpdateInput! + ): ShippingZoneUpdate + + """ + Assign attributes to a given product type. + + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + productAttributeAssign( + """ + The operations to perform. + """ + operations: [ProductAttributeAssignInput!]! + + """ + ID of the product type to assign the attributes into. + """ + productTypeId: ID! + ): ProductAttributeAssign + + """ + Update attributes assigned to product variant for given product type. + + Added in Saleor 3.1. + + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + productAttributeAssignmentUpdate( + """ + The operations to perform. + """ + operations: [ProductAttributeAssignmentUpdateInput!]! + + """ + ID of the product type to assign the attributes into. + """ + productTypeId: ID! + ): ProductAttributeAssignmentUpdate + + """ + Un-assign attributes from a given product type. + + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + productAttributeUnassign( + """ + The IDs of the attributes to unassign. + """ + attributeIds: [ID!]! + + """ + ID of the product type from which the attributes should be unassigned. + """ + productTypeId: ID! + ): ProductAttributeUnassign + + """ + Creates a new category. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + categoryCreate( + """ + Fields required to create a category. + """ + input: CategoryInput! + + """ + ID of the parent category. If empty, category will be top level category. + """ + parent: ID + ): CategoryCreate + + """ + Deletes a category. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + categoryDelete( + """ + ID of a category to delete. + """ + id: ID! + ): CategoryDelete + + """ + Deletes categories. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + categoryBulkDelete( + """ + List of category IDs to delete. + """ + ids: [ID!]! + ): CategoryBulkDelete + + """ + Updates a category. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + categoryUpdate( + """ + ID of a category to update. + """ + id: ID! + + """ + Fields required to update a category. + """ + input: CategoryInput! + ): CategoryUpdate + + """ + Creates/updates translations for a category. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + categoryTranslate( + """ + Category ID or CategoryTranslatableContent ID. + """ + id: ID! + input: TranslationInput! + + """ + Translation language code. + """ + languageCode: LanguageCodeEnum! + ): CategoryTranslate + + """ + Adds products to a collection. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + collectionAddProducts( + """ + ID of a collection. + """ + collectionId: ID! + + """ + List of product IDs. + """ + products: [ID!]! + ): CollectionAddProducts + + """ + Creates a new collection. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + collectionCreate( + """ + Fields required to create a collection. + """ + input: CollectionCreateInput! + ): CollectionCreate + + """ + Deletes a collection. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + collectionDelete( + """ + ID of a collection to delete. + """ + id: ID! + ): CollectionDelete + + """ + Reorder the products of a collection. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + collectionReorderProducts( + """ + ID of a collection. + """ + collectionId: ID! + + """ + The collection products position operations. + """ + moves: [MoveProductInput!]! + ): CollectionReorderProducts + + """ + Deletes collections. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + collectionBulkDelete( + """ + List of collection IDs to delete. + """ + ids: [ID!]! + ): CollectionBulkDelete + + """ + Remove products from a collection. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + collectionRemoveProducts( + """ + ID of a collection. + """ + collectionId: ID! + + """ + List of product IDs. + """ + products: [ID!]! + ): CollectionRemoveProducts + + """ + Updates a collection. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + collectionUpdate( + """ + ID of a collection to update. + """ + id: ID! + + """ + Fields required to update a collection. + """ + input: CollectionInput! + ): CollectionUpdate + + """ + Creates/updates translations for a collection. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + collectionTranslate( + """ + Collection ID or CollectionTranslatableContent ID. + """ + id: ID! + input: TranslationInput! + + """ + Translation language code. + """ + languageCode: LanguageCodeEnum! + ): CollectionTranslate + + """ + Manage collection's availability in channels. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + collectionChannelListingUpdate( + """ + ID of a collection to update. + """ + id: ID! + + """ + Fields required to create or update collection channel listings. + """ + input: CollectionChannelListingUpdateInput! + ): CollectionChannelListingUpdate + + """ + Creates a new product. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productCreate( + """ + Fields required to create a product. + """ + input: ProductCreateInput! + ): ProductCreate + + """ + Deletes a product. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productDelete( + """ + ID of a product to delete. + """ + id: ID! + ): ProductDelete + + """ + Deletes products. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productBulkDelete( + """ + List of product IDs to delete. + """ + ids: [ID!]! + ): ProductBulkDelete + + """ + Updates an existing product. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productUpdate( + """ + ID of a product to update. + """ + id: ID! + + """ + Fields required to update a product. + """ + input: ProductInput! + ): ProductUpdate + + """ + Creates/updates translations for a product. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + productTranslate( + """ + Product ID or ProductTranslatableContent ID. + """ + id: ID! + input: TranslationInput! + + """ + Translation language code. + """ + languageCode: LanguageCodeEnum! + ): ProductTranslate + + """ + Manage product's availability in channels. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productChannelListingUpdate( + """ + ID of a product to update. + """ + id: ID! + + """ + Fields required to create or update product channel listings. + """ + input: ProductChannelListingUpdateInput! + ): ProductChannelListingUpdate + + """ + Create a media object (image or video URL) associated with product. For image, this mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productMediaCreate( + """ + Fields required to create a product media. + """ + input: ProductMediaCreateInput! + ): ProductMediaCreate + + """ + Reorder the variants of a product. Mutation updates updated_at on product and triggers PRODUCT_UPDATED webhook. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productVariantReorder( + """ + The list of variant reordering operations. + """ + moves: [ReorderInput!]! + + """ + Id of product that variants order will be altered. + """ + productId: ID! + ): ProductVariantReorder + + """ + Deletes a product media. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productMediaDelete( + """ + ID of a product media to delete. + """ + id: ID! + ): ProductMediaDelete + + """ + Deletes product media. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productMediaBulkDelete( + """ + List of product media IDs to delete. + """ + ids: [ID!]! + ): ProductMediaBulkDelete + + """ + Changes ordering of the product media. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productMediaReorder( + """ + IDs of a product media in the desired order. + """ + mediaIds: [ID!]! + + """ + ID of product that media order will be altered. + """ + productId: ID! + ): ProductMediaReorder + + """ + Updates a product media. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productMediaUpdate( + """ + ID of a product media to update. + """ + id: ID! + + """ + Fields required to update a product media. + """ + input: ProductMediaUpdateInput! + ): ProductMediaUpdate + + """ + Creates a new product type. + + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + productTypeCreate( + """ + Fields required to create a product type. + """ + input: ProductTypeInput! + ): ProductTypeCreate + + """ + Deletes a product type. + + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + productTypeDelete( + """ + ID of a product type to delete. + """ + id: ID! + ): ProductTypeDelete + + """ + Deletes product types. + + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + productTypeBulkDelete( + """ + List of product type IDs to delete. + """ + ids: [ID!]! + ): ProductTypeBulkDelete + + """ + Updates an existing product type. + + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + productTypeUpdate( + """ + ID of a product type to update. + """ + id: ID! + + """ + Fields required to update a product type. + """ + input: ProductTypeInput! + ): ProductTypeUpdate + + """ + Reorder the attributes of a product type. + + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + productTypeReorderAttributes( + """ + The list of attribute reordering operations. + """ + moves: [ReorderInput!]! + + """ + ID of a product type. + """ + productTypeId: ID! + + """ + The attribute type to reorder. + """ + type: ProductAttributeType! + ): ProductTypeReorderAttributes + + """ + Reorder product attribute values. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productReorderAttributeValues( + """ + ID of an attribute. + """ + attributeId: ID! + + """ + The list of reordering operations for given attribute values. + """ + moves: [ReorderInput!]! + + """ + ID of a product. + """ + productId: ID! + ): ProductReorderAttributeValues + + """ + Create new digital content. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + digitalContentCreate( + """ + Fields required to create a digital content. + """ + input: DigitalContentUploadInput! + + """ + ID of a product variant to upload digital content. + """ + variantId: ID! + ): DigitalContentCreate + + """ + Remove digital content assigned to given variant. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + digitalContentDelete( + """ + ID of a product variant with digital content to remove. + """ + variantId: ID! + ): DigitalContentDelete + + """ + Update digital content. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + digitalContentUpdate( + """ + Fields required to update a digital content. + """ + input: DigitalContentInput! + + """ + ID of a product variant with digital content to update. + """ + variantId: ID! + ): DigitalContentUpdate + + """ + Generate new URL to digital content. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + digitalContentUrlCreate( + """ + Fields required to create a new url. + """ + input: DigitalContentUrlCreateInput! + ): DigitalContentUrlCreate + + """ + Creates a new variant for a product. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productVariantCreate( + """ + Fields required to create a product variant. + """ + input: ProductVariantCreateInput! + ): ProductVariantCreate + + """ + Deletes a product variant. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productVariantDelete( + """ + ID of a product variant to delete. + """ + id: ID! + ): ProductVariantDelete + + """ + Creates product variants for a given product. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productVariantBulkCreate( + """ + ID of the product to create the variants for. + """ + product: ID! + + """ + Input list of product variants to create. + """ + variants: [ProductVariantBulkCreateInput!]! + ): ProductVariantBulkCreate + + """ + Deletes product variants. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productVariantBulkDelete( + """ + List of product variant IDs to delete. + """ + ids: [ID!]! + ): ProductVariantBulkDelete + + """ + Creates stocks for product variant. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productVariantStocksCreate( + """ + Input list of stocks to create. + """ + stocks: [StockInput!]! + + """ + ID of a product variant for which stocks will be created. + """ + variantId: ID! + ): ProductVariantStocksCreate + + """ + Delete stocks from product variant. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productVariantStocksDelete( + """ + ID of product variant for which stocks will be deleted. + """ + variantId: ID! + warehouseIds: [ID!] + ): ProductVariantStocksDelete + + """ + Update stocks for product variant. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productVariantStocksUpdate( + """ + Input list of stocks to create. + """ + stocks: [StockInput!]! + + """ + ID of a product variant for which stocks will be created. + """ + variantId: ID! + ): ProductVariantStocksUpdate + + """ + Updates an existing variant for product. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productVariantUpdate( + """ + ID of a product variant to update. + """ + id: ID! + + """ + Fields required to update a product variant. + """ + input: ProductVariantInput! + ): ProductVariantUpdate + + """ + Set default variant for a product. Mutation triggers PRODUCT_UPDATED webhook. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productVariantSetDefault( + """ + Id of a product that will have the default variant set. + """ + productId: ID! + + """ + Id of a variant that will be set as default. + """ + variantId: ID! + ): ProductVariantSetDefault + + """ + Creates/updates translations for a product variant. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + productVariantTranslate( + """ + ProductVariant ID or ProductVariantTranslatableContent ID. + """ + id: ID! + input: NameTranslationInput! + + """ + Translation language code. + """ + languageCode: LanguageCodeEnum! + ): ProductVariantTranslate + + """ + Manage product variant prices in channels. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productVariantChannelListingUpdate( + """ + ID of a product variant to update. + """ + id: ID! + + """ + List of fields required to create or upgrade product variant channel listings. + """ + input: [ProductVariantChannelListingAddInput!]! + ): ProductVariantChannelListingUpdate + + """ + Reorder product variant attribute values. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productVariantReorderAttributeValues( + """ + ID of an attribute. + """ + attributeId: ID! + + """ + The list of reordering operations for given attribute values. + """ + moves: [ReorderInput!]! + + """ + ID of a product variant. + """ + variantId: ID! + ): ProductVariantReorderAttributeValues + + """ + Deactivates product variant preorder. It changes all preorder allocation into regular allocation. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + productVariantPreorderDeactivate( + """ + ID of a variant which preorder should be deactivated. + """ + id: ID! + ): ProductVariantPreorderDeactivate + + """ + Assign an media to a product variant. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + variantMediaAssign( + """ + ID of a product media to assign to a variant. + """ + mediaId: ID! + + """ + ID of a product variant. + """ + variantId: ID! + ): VariantMediaAssign + + """ + Unassign an media from a product variant. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + variantMediaUnassign( + """ + ID of a product media to unassign from a variant. + """ + mediaId: ID! + + """ + ID of a product variant. + """ + variantId: ID! + ): VariantMediaUnassign + + """ + Captures the authorized payment amount. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + paymentCapture( + """ + Transaction amount. + """ + amount: PositiveDecimal + + """ + Payment ID. + """ + paymentId: ID! + ): PaymentCapture + + """ + Refunds the captured payment amount. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + paymentRefund( + """ + Transaction amount. + """ + amount: PositiveDecimal + + """ + Payment ID. + """ + paymentId: ID! + ): PaymentRefund + + """ + Voids the authorized payment. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + paymentVoid( + """ + Payment ID. + """ + paymentId: ID! + ): PaymentVoid + + """ + Initializes payment process when it is required by gateway. + """ + paymentInitialize( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + + """ + A gateway name used to initialize the payment. + """ + gateway: String! + + """ + Client-side generated data required to initialize the payment. + """ + paymentData: JSONString + ): PaymentInitialize + + """ + Check payment balance. + """ + paymentCheckBalance( + """ + Fields required to check payment balance. + """ + input: PaymentCheckBalanceInput! + ): PaymentCheckBalance + + """ + Create transaction for checkout or order. Requires the following permissions: AUTHENTICATED_APP and HANDLE_PAYMENTS. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + transactionCreate( + """ + The ID of the checkout or order. + """ + id: ID! + + """ + Input data required to create a new transaction object. + """ + transaction: TransactionCreateInput! + + """ + Data that defines a transaction event. + """ + transactionEvent: TransactionEventInput + ): TransactionCreate + + """ + Create transaction for checkout or order. Requires the following permissions: AUTHENTICATED_APP and HANDLE_PAYMENTS. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + transactionUpdate( + """ + The ID of the transaction. + """ + id: ID! + + """ + Input data required to create a new transaction object. + """ + transaction: TransactionUpdateInput + + """ + Data that defines a transaction transaction. + """ + transactionEvent: TransactionEventInput + ): TransactionUpdate + + """ + Request an action for payment transaction. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: HANDLE_PAYMENTS, MANAGE_ORDERS. + """ + transactionRequestAction( + """ + Determines the action type. + """ + actionType: TransactionActionEnum! + + """ + Transaction request amount. If empty for refund or capture, maximal possible amount will be used. + """ + amount: PositiveDecimal + + """ + The ID of the transaction. + """ + id: ID! + ): TransactionRequestAction + + """ + Creates a new page. + + Requires one of the following permissions: MANAGE_PAGES. + """ + pageCreate( + """ + Fields required to create a page. + """ + input: PageCreateInput! + ): PageCreate + + """ + Deletes a page. + + Requires one of the following permissions: MANAGE_PAGES. + """ + pageDelete( + """ + ID of a page to delete. + """ + id: ID! + ): PageDelete + + """ + Deletes pages. + + Requires one of the following permissions: MANAGE_PAGES. + """ + pageBulkDelete( + """ + List of page IDs to delete. + """ + ids: [ID!]! + ): PageBulkDelete + + """ + Publish pages. + + Requires one of the following permissions: MANAGE_PAGES. + """ + pageBulkPublish( + """ + List of page IDs to (un)publish. + """ + ids: [ID!]! + + """ + Determine if pages will be published or not. + """ + isPublished: Boolean! + ): PageBulkPublish + + """ + Updates an existing page. + + Requires one of the following permissions: MANAGE_PAGES. + """ + pageUpdate( + """ + ID of a page to update. + """ + id: ID! + + """ + Fields required to update a page. + """ + input: PageInput! + ): PageUpdate + + """ + Creates/updates translations for a page. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + pageTranslate( + """ + Page ID or PageTranslatableContent ID. + """ + id: ID! + input: PageTranslationInput! + + """ + Translation language code. + """ + languageCode: LanguageCodeEnum! + ): PageTranslate + + """ + Create a new page type. + + Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + """ + pageTypeCreate( + """ + Fields required to create page type. + """ + input: PageTypeCreateInput! + ): PageTypeCreate + + """ + Update page type. + + Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + """ + pageTypeUpdate( + """ + ID of the page type to update. + """ + id: ID + + """ + Fields required to update page type. + """ + input: PageTypeUpdateInput! + ): PageTypeUpdate + + """ + Delete a page type. + + Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + """ + pageTypeDelete( + """ + ID of the page type to delete. + """ + id: ID! + ): PageTypeDelete + + """ + Delete page types. + + Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + """ + pageTypeBulkDelete( + """ + List of page type IDs to delete + """ + ids: [ID!]! + ): PageTypeBulkDelete + + """ + Assign attributes to a given page type. + + Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + """ + pageAttributeAssign( + """ + The IDs of the attributes to assign. + """ + attributeIds: [ID!]! + + """ + ID of the page type to assign the attributes into. + """ + pageTypeId: ID! + ): PageAttributeAssign + + """ + Unassign attributes from a given page type. + + Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + """ + pageAttributeUnassign( + """ + The IDs of the attributes to unassign. + """ + attributeIds: [ID!]! + + """ + ID of the page type from which the attributes should be unassign. + """ + pageTypeId: ID! + ): PageAttributeUnassign + + """ + Reorder the attributes of a page type. + + Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + """ + pageTypeReorderAttributes( + """ + The list of attribute reordering operations. + """ + moves: [ReorderInput!]! + + """ + ID of a page type. + """ + pageTypeId: ID! + ): PageTypeReorderAttributes + + """ + Reorder page attribute values. + + Requires one of the following permissions: MANAGE_PAGES. + """ + pageReorderAttributeValues( + """ + ID of an attribute. + """ + attributeId: ID! + + """ + The list of reordering operations for given attribute values. + """ + moves: [ReorderInput!]! + + """ + ID of a page. + """ + pageId: ID! + ): PageReorderAttributeValues + + """ + Completes creating an order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + draftOrderComplete( + """ + ID of the order that will be completed. + """ + id: ID! + ): DraftOrderComplete + + """ + Creates a new draft order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + draftOrderCreate( + """ + Fields required to create an order. + """ + input: DraftOrderCreateInput! + ): DraftOrderCreate + + """ + Deletes a draft order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + draftOrderDelete( + """ + ID of a draft order to delete. + """ + id: ID! + ): DraftOrderDelete + + """ + Deletes draft orders. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + draftOrderBulkDelete( + """ + List of draft order IDs to delete. + """ + ids: [ID!]! + ): DraftOrderBulkDelete + + """ + Deletes order lines. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + draftOrderLinesBulkDelete( + """ + List of order lines IDs to delete. + """ + ids: [ID!]! + ): DraftOrderLinesBulkDelete @deprecated(reason: "This field will be removed in Saleor 4.0.") + + """ + Updates a draft order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + draftOrderUpdate( + """ + ID of a draft order to update. + """ + id: ID! + + """ + Fields required to update an order. + """ + input: DraftOrderInput! + ): DraftOrderUpdate + + """ + Adds note to the order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderAddNote( + """ + ID of the order to add a note for. + """ + order: ID! + + """ + Fields required to create a note for the order. + """ + input: OrderAddNoteInput! + ): OrderAddNote + + """ + Cancel an order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderCancel( + """ + ID of the order to cancel. + """ + id: ID! + ): OrderCancel + + """ + Capture an order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderCapture( + """ + Amount of money to capture. + """ + amount: PositiveDecimal! + + """ + ID of the order to capture. + """ + id: ID! + ): OrderCapture + + """ + Confirms an unconfirmed order by changing status to unfulfilled. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderConfirm( + """ + ID of an order to confirm. + """ + id: ID! + ): OrderConfirm + + """ + Creates new fulfillments for an order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderFulfill( + """ + Fields required to create a fulfillment. + """ + input: OrderFulfillInput! + + """ + ID of the order to be fulfilled. + """ + order: ID + ): OrderFulfill + + """ + Cancels existing fulfillment and optionally restocks items. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderFulfillmentCancel( + """ + ID of a fulfillment to cancel. + """ + id: ID! + + """ + Fields required to cancel a fulfillment. + """ + input: FulfillmentCancelInput + ): FulfillmentCancel + + """ + Approve existing fulfillment. + + Added in Saleor 3.1. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderFulfillmentApprove( + """ + True if stock could be exceeded. + """ + allowStockToBeExceeded: Boolean = false + + """ + ID of a fulfillment to approve. + """ + id: ID! + + """ + True if confirmation email should be send. + """ + notifyCustomer: Boolean! + ): FulfillmentApprove + + """ + Updates a fulfillment for an order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderFulfillmentUpdateTracking( + """ + ID of a fulfillment to update. + """ + id: ID! + + """ + Fields required to update a fulfillment. + """ + input: FulfillmentUpdateTrackingInput! + ): FulfillmentUpdateTracking + + """ + Refund products. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderFulfillmentRefundProducts( + """ + Fields required to create an refund fulfillment. + """ + input: OrderRefundProductsInput! + + """ + ID of the order to be refunded. + """ + order: ID! + ): FulfillmentRefundProducts + + """ + Return products. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderFulfillmentReturnProducts( + """ + Fields required to return products. + """ + input: OrderReturnProductsInput! + + """ + ID of the order to be returned. + """ + order: ID! + ): FulfillmentReturnProducts + + """ + Create order lines for an order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderLinesCreate( + """ + ID of the order to add the lines to. + """ + id: ID! + + """ + Fields required to add order lines. + """ + input: [OrderLineCreateInput!]! + ): OrderLinesCreate + + """ + Deletes an order line from an order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderLineDelete( + """ + ID of the order line to delete. + """ + id: ID! + ): OrderLineDelete + + """ + Updates an order line of an order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderLineUpdate( + """ + ID of the order line to update. + """ + id: ID! + + """ + Fields required to update an order line. + """ + input: OrderLineInput! + ): OrderLineUpdate + + """ + Adds discount to the order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderDiscountAdd( + """ + Fields required to create a discount for the order. + """ + input: OrderDiscountCommonInput! + + """ + ID of an order to discount. + """ + orderId: ID! + ): OrderDiscountAdd + + """ + Update discount for the order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderDiscountUpdate( + """ + ID of a discount to update. + """ + discountId: ID! + + """ + Fields required to update a discount for the order. + """ + input: OrderDiscountCommonInput! + ): OrderDiscountUpdate + + """ + Remove discount from the order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderDiscountDelete( + """ + ID of a discount to remove. + """ + discountId: ID! + ): OrderDiscountDelete + + """ + Update discount for the order line. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderLineDiscountUpdate( + """ + Fields required to update price for the order line. + """ + input: OrderDiscountCommonInput! + + """ + ID of a order line to update price + """ + orderLineId: ID! + ): OrderLineDiscountUpdate + + """ + Remove discount applied to the order line. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderLineDiscountRemove( + """ + ID of a order line to remove its discount + """ + orderLineId: ID! + ): OrderLineDiscountRemove + + """ + Mark order as manually paid. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderMarkAsPaid( + """ + ID of the order to mark paid. + """ + id: ID! + + """ + The external transaction reference. + """ + transactionReference: String + ): OrderMarkAsPaid + + """ + Refund an order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderRefund( + """ + Amount of money to refund. + """ + amount: PositiveDecimal! + + """ + ID of the order to refund. + """ + id: ID! + ): OrderRefund + + """ + Updates an order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderUpdate( + """ + ID of an order to update. + """ + id: ID! + + """ + Fields required to update an order. + """ + input: OrderUpdateInput! + ): OrderUpdate + + """ + Updates a shipping method of the order. Requires shipping method ID to update, when null is passed then currently assigned shipping method is removed. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderUpdateShipping( + """ + ID of the order to update a shipping method. + """ + order: ID! + + """ + Fields required to change shipping method of the order. + """ + input: OrderUpdateShippingInput! + ): OrderUpdateShipping + + """ + Void an order. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderVoid( + """ + ID of the order to void. + """ + id: ID! + ): OrderVoid + + """ + Cancels orders. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + orderBulkCancel( + """ + List of orders IDs to cancel. + """ + ids: [ID!]! + ): OrderBulkCancel + + """ + Delete metadata of an object. To use it, you need to have access to the modified object. + """ + deleteMetadata( + """ + ID or token (for Order and Checkout) of an object to update. + """ + id: ID! + + """ + Metadata keys to delete. + """ + keys: [String!]! + ): DeleteMetadata + + """ + Delete object's private metadata. To use it, you need to be an authenticated staff user or an app and have access to the modified object. + """ + deletePrivateMetadata( + """ + ID or token (for Order and Checkout) of an object to update. + """ + id: ID! + + """ + Metadata keys to delete. + """ + keys: [String!]! + ): DeletePrivateMetadata + + """ + Updates metadata of an object. To use it, you need to have access to the modified object. + """ + updateMetadata( + """ + ID or token (for Order and Checkout) of an object to update. + """ + id: ID! + + """ + Fields required to update the object's metadata. + """ + input: [MetadataInput!]! + ): UpdateMetadata + + """ + Updates private metadata of an object. To use it, you need to be an authenticated staff user or an app and have access to the modified object. + """ + updatePrivateMetadata( + """ + ID or token (for Order and Checkout) of an object to update. + """ + id: ID! + + """ + Fields required to update the object's metadata. + """ + input: [MetadataInput!]! + ): UpdatePrivateMetadata + + """ + Assigns storefront's navigation menus. + + Requires one of the following permissions: MANAGE_MENUS, MANAGE_SETTINGS. + """ + assignNavigation( + """ + ID of the menu. + """ + menu: ID + + """ + Type of the navigation bar to assign the menu to. + """ + navigationType: NavigationType! + ): AssignNavigation + + """ + Creates a new Menu. + + Requires one of the following permissions: MANAGE_MENUS. + """ + menuCreate( + """ + Fields required to create a menu. + """ + input: MenuCreateInput! + ): MenuCreate + + """ + Deletes a menu. + + Requires one of the following permissions: MANAGE_MENUS. + """ + menuDelete( + """ + ID of a menu to delete. + """ + id: ID! + ): MenuDelete + + """ + Deletes menus. + + Requires one of the following permissions: MANAGE_MENUS. + """ + menuBulkDelete( + """ + List of menu IDs to delete. + """ + ids: [ID!]! + ): MenuBulkDelete + + """ + Updates a menu. + + Requires one of the following permissions: MANAGE_MENUS. + """ + menuUpdate( + """ + ID of a menu to update. + """ + id: ID! + + """ + Fields required to update a menu. + """ + input: MenuInput! + ): MenuUpdate + + """ + Creates a new menu item. + + Requires one of the following permissions: MANAGE_MENUS. + """ + menuItemCreate( + """ + Fields required to update a menu item. Only one of `url`, `category`, `page`, `collection` is allowed per item. + """ + input: MenuItemCreateInput! + ): MenuItemCreate + + """ + Deletes a menu item. + + Requires one of the following permissions: MANAGE_MENUS. + """ + menuItemDelete( + """ + ID of a menu item to delete. + """ + id: ID! + ): MenuItemDelete + + """ + Deletes menu items. + + Requires one of the following permissions: MANAGE_MENUS. + """ + menuItemBulkDelete( + """ + List of menu item IDs to delete. + """ + ids: [ID!]! + ): MenuItemBulkDelete + + """ + Updates a menu item. + + Requires one of the following permissions: MANAGE_MENUS. + """ + menuItemUpdate( + """ + ID of a menu item to update. + """ + id: ID! + + """ + Fields required to update a menu item. Only one of `url`, `category`, `page`, `collection` is allowed per item. + """ + input: MenuItemInput! + ): MenuItemUpdate + + """ + Creates/updates translations for a menu item. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + menuItemTranslate( + """ + MenuItem ID or MenuItemTranslatableContent ID. + """ + id: ID! + input: NameTranslationInput! + + """ + Translation language code. + """ + languageCode: LanguageCodeEnum! + ): MenuItemTranslate + + """ + Moves items of menus. + + Requires one of the following permissions: MANAGE_MENUS. + """ + menuItemMove( + """ + ID of the menu. + """ + menu: ID! + + """ + The menu position data. + """ + moves: [MenuItemMoveInput!]! + ): MenuItemMove + + """ + Request an invoice for the order using plugin. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + invoiceRequest( + """ + Invoice number, if not provided it will be generated. + """ + number: String + + """ + ID of the order related to invoice. + """ + orderId: ID! + ): InvoiceRequest + + """ + Requests deletion of an invoice. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + invoiceRequestDelete( + """ + ID of an invoice to request the deletion. + """ + id: ID! + ): InvoiceRequestDelete + + """ + Creates a ready to send invoice. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + invoiceCreate( + """ + Fields required when creating an invoice. + """ + input: InvoiceCreateInput! + + """ + ID of the order related to invoice. + """ + orderId: ID! + ): InvoiceCreate + + """ + Deletes an invoice. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + invoiceDelete( + """ + ID of an invoice to delete. + """ + id: ID! + ): InvoiceDelete + + """ + Updates an invoice. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + invoiceUpdate( + """ + ID of an invoice to update. + """ + id: ID! + + """ + Fields to use when updating an invoice. + """ + input: UpdateInvoiceInput! + ): InvoiceUpdate + + """ + Send an invoice notification to the customer. + + Requires one of the following permissions: MANAGE_ORDERS. + """ + invoiceSendNotification( + """ + ID of an invoice to be sent. + """ + id: ID! + ): InvoiceSendNotification + + """ + Activate a gift card. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardActivate( + """ + ID of a gift card to activate. + """ + id: ID! + ): GiftCardActivate + + """ + Creates a new gift card. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardCreate( + """ + Fields required to create a gift card. + """ + input: GiftCardCreateInput! + ): GiftCardCreate + + """ + Delete gift card. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardDelete( + """ + ID of the gift card to delete. + """ + id: ID! + ): GiftCardDelete + + """ + Deactivate a gift card. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardDeactivate( + """ + ID of a gift card to deactivate. + """ + id: ID! + ): GiftCardDeactivate + + """ + Update a gift card. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardUpdate( + """ + ID of a gift card to update. + """ + id: ID! + + """ + Fields required to update a gift card. + """ + input: GiftCardUpdateInput! + ): GiftCardUpdate + + """ + Resend a gift card. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardResend( + """ + Fields required to resend a gift card. + """ + input: GiftCardResendInput! + ): GiftCardResend + + """ + Adds note to the gift card. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardAddNote( + """ + ID of the gift card to add a note for. + """ + id: ID! + + """ + Fields required to create a note for the gift card. + """ + input: GiftCardAddNoteInput! + ): GiftCardAddNote + + """ + Create gift cards. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardBulkCreate( + """ + Fields required to create gift cards. + """ + input: GiftCardBulkCreateInput! + ): GiftCardBulkCreate + + """ + Delete gift cards. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardBulkDelete( + """ + List of gift card IDs to delete. + """ + ids: [ID!]! + ): GiftCardBulkDelete + + """ + Activate gift cards. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardBulkActivate( + """ + List of gift card IDs to activate. + """ + ids: [ID!]! + ): GiftCardBulkActivate + + """ + Deactivate gift cards. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + giftCardBulkDeactivate( + """ + List of gift card IDs to deactivate. + """ + ids: [ID!]! + ): GiftCardBulkDeactivate + + """ + Update plugin configuration. + + Requires one of the following permissions: MANAGE_PLUGINS. + """ + pluginUpdate( + """ + ID of a channel for which the data should be modified. + """ + channelId: ID + + """ + ID of plugin to update. + """ + id: ID! + + """ + Fields required to update a plugin configuration. + """ + input: PluginUpdateInput! + ): PluginUpdate + + """ + Trigger sending a notification with the notify plugin method. Serializes nodes provided as ids parameter and includes this data in the notification payload. + + Added in Saleor 3.1. + """ + externalNotificationTrigger( + """ + Channel slug. Saleor will send a notification within a provided channel. Please, make sure that necessary plugins are active. + """ + channel: String! + + """ + Input for External Notification Trigger. + """ + input: ExternalNotificationTriggerInput! + + """ + The ID of notification plugin. + """ + pluginId: String + ): ExternalNotificationTrigger + + """ + Creates a new sale. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + saleCreate( + """ + Fields required to create a sale. + """ + input: SaleInput! + ): SaleCreate + + """ + Deletes a sale. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + saleDelete( + """ + ID of a sale to delete. + """ + id: ID! + ): SaleDelete + + """ + Deletes sales. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + saleBulkDelete( + """ + List of sale IDs to delete. + """ + ids: [ID!]! + ): SaleBulkDelete + + """ + Updates a sale. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + saleUpdate( + """ + ID of a sale to update. + """ + id: ID! + + """ + Fields required to update a sale. + """ + input: SaleInput! + ): SaleUpdate + + """ + Adds products, categories, collections to a voucher. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + saleCataloguesAdd( + """ + ID of a sale. + """ + id: ID! + + """ + Fields required to modify catalogue IDs of sale. + """ + input: CatalogueInput! + ): SaleAddCatalogues + + """ + Removes products, categories, collections from a sale. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + saleCataloguesRemove( + """ + ID of a sale. + """ + id: ID! + + """ + Fields required to modify catalogue IDs of sale. + """ + input: CatalogueInput! + ): SaleRemoveCatalogues + + """ + Creates/updates translations for a sale. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + saleTranslate( + """ + Sale ID or SaleTranslatableContent ID. + """ + id: ID! + input: NameTranslationInput! + + """ + Translation language code. + """ + languageCode: LanguageCodeEnum! + ): SaleTranslate + + """ + Manage sale's availability in channels. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + saleChannelListingUpdate( + """ + ID of a sale to update. + """ + id: ID! + + """ + Fields required to update sale channel listings. + """ + input: SaleChannelListingInput! + ): SaleChannelListingUpdate + + """ + Creates a new voucher. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + voucherCreate( + """ + Fields required to create a voucher. + """ + input: VoucherInput! + ): VoucherCreate + + """ + Deletes a voucher. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + voucherDelete( + """ + ID of a voucher to delete. + """ + id: ID! + ): VoucherDelete + + """ + Deletes vouchers. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + voucherBulkDelete( + """ + List of voucher IDs to delete. + """ + ids: [ID!]! + ): VoucherBulkDelete + + """ + Updates a voucher. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + voucherUpdate( + """ + ID of a voucher to update. + """ + id: ID! + + """ + Fields required to update a voucher. + """ + input: VoucherInput! + ): VoucherUpdate + + """ + Adds products, categories, collections to a voucher. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + voucherCataloguesAdd( + """ + ID of a voucher. + """ + id: ID! + + """ + Fields required to modify catalogue IDs of voucher. + """ + input: CatalogueInput! + ): VoucherAddCatalogues + + """ + Removes products, categories, collections from a voucher. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + voucherCataloguesRemove( + """ + ID of a voucher. + """ + id: ID! + + """ + Fields required to modify catalogue IDs of voucher. + """ + input: CatalogueInput! + ): VoucherRemoveCatalogues + + """ + Creates/updates translations for a voucher. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + voucherTranslate( + """ + Voucher ID or VoucherTranslatableContent ID. + """ + id: ID! + input: NameTranslationInput! + + """ + Translation language code. + """ + languageCode: LanguageCodeEnum! + ): VoucherTranslate + + """ + Manage voucher's availability in channels. + + Requires one of the following permissions: MANAGE_DISCOUNTS. + """ + voucherChannelListingUpdate( + """ + ID of a voucher to update. + """ + id: ID! + + """ + Fields required to update voucher channel listings. + """ + input: VoucherChannelListingInput! + ): VoucherChannelListingUpdate + + """ + Export products to csv file. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + exportProducts( + """ + Fields required to export product data. + """ + input: ExportProductsInput! + ): ExportProducts + + """ + Export gift cards to csv file. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + + Requires one of the following permissions: MANAGE_GIFT_CARD. + """ + exportGiftCards( + """ + Fields required to export gift cards data. + """ + input: ExportGiftCardsInput! + ): ExportGiftCards + + """ + Upload a file. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + + Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER. + """ + fileUpload( + """ + Represents a file in a multipart request. + """ + file: Upload! + ): FileUpload + + """ + Adds a gift card or a voucher to a checkout. + """ + checkoutAddPromoCode( + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + Gift card code or voucher code. + """ + promoCode: String! + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutAddPromoCode + + """ + Update billing address in the existing checkout. + """ + checkoutBillingAddressUpdate( + """ + The billing address of the checkout. + """ + billingAddress: AddressInput! + + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutBillingAddressUpdate + + """ + Completes the checkout. As a result a new order is created and a payment charge is made. This action requires a successful payment before it can be performed. In case additional confirmation step as 3D secure is required confirmationNeeded flag will be set to True and no order created until payment is confirmed with second call of this mutation. + """ + checkoutComplete( + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + Client-side generated data required to finalize the payment. + """ + paymentData: JSONString + + """ + URL of a view where users should be redirected to see the order details. URL in RFC 1808 format. + """ + redirectUrl: String + + """ + Determines whether to store the payment source for future usage. + + DEPRECATED: this field will be removed in Saleor 4.0. Use checkoutPaymentCreate for this action. + """ + storeSource: Boolean = false + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutComplete + + """ + Create a new checkout. + """ + checkoutCreate( + """ + Fields required to create checkout. + """ + input: CheckoutCreateInput! + ): CheckoutCreate + + """ + Sets the customer as the owner of the checkout. + + Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_USER. + """ + checkoutCustomerAttach( + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + ID of customer to attach to checkout. Can be used to attach customer to checkout by staff or app. Requires IMPERSONATE_USER permission. + """ + customerId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutCustomerAttach + + """ + Removes the user assigned as the owner of the checkout. + + Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_USER. + """ + checkoutCustomerDetach( + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutCustomerDetach + + """ + Updates email address in the existing checkout object. + """ + checkoutEmailUpdate( + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + email. + """ + email: String! + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutEmailUpdate + + """ + Deletes a CheckoutLine. + """ + checkoutLineDelete( + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + ID of the checkout line to delete. + """ + lineId: ID + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutLineDelete + @deprecated( + reason: "DEPRECATED: Will be removed in Saleor 4.0. Use `checkoutLinesDelete` instead." + ) + + """ + Deletes checkout lines. + """ + checkoutLinesDelete( + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + A list of checkout lines. + """ + linesIds: [ID!]! + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutLinesDelete + + """ + Adds a checkout line to the existing checkout.If line was already in checkout, its quantity will be increased. + """ + checkoutLinesAdd( + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + A list of checkout lines, each containing information about an item in the checkout. + """ + lines: [CheckoutLineInput!]! + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutLinesAdd + + """ + Updates checkout line in the existing checkout. + """ + checkoutLinesUpdate( + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + A list of checkout lines, each containing information about an item in the checkout. + """ + lines: [CheckoutLineUpdateInput!]! + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutLinesUpdate + + """ + Remove a gift card or a voucher from a checkout. + """ + checkoutRemovePromoCode( + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + Gift card code or voucher code. + """ + promoCode: String + + """ + Gift card or voucher ID. + """ + promoCodeId: ID + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutRemovePromoCode + + """ + Create a new payment for given checkout. + """ + checkoutPaymentCreate( + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + Data required to create a new payment. + """ + input: PaymentInput! + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutPaymentCreate + + """ + Update shipping address in the existing checkout. + """ + checkoutShippingAddressUpdate( + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + The mailing address to where the checkout will be shipped. + """ + shippingAddress: AddressInput! + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutShippingAddressUpdate + + """ + Updates the shipping method of the checkout. + """ + checkoutShippingMethodUpdate( + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + Shipping method. + """ + shippingMethodId: ID! + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutShippingMethodUpdate + @deprecated( + reason: "This field will be removed in Saleor 4.0. Use `checkoutDeliveryMethodUpdate` instead." + ) + + """ + Updates the delivery method (shipping method or pick up point) of the checkout. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + checkoutDeliveryMethodUpdate( + """ + Delivery Method ID (`Warehouse` ID or `ShippingMethod` ID). + """ + deliveryMethodId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutDeliveryMethodUpdate + + """ + Update language code in the existing checkout. + """ + checkoutLanguageCodeUpdate( + """ + The ID of the checkout. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + checkoutId: ID + + """ + The checkout's ID. + + Added in Saleor 3.4. + """ + id: ID + + """ + New language code. + """ + languageCode: LanguageCodeEnum! + + """ + Checkout token. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `id` instead. + """ + token: UUID + ): CheckoutLanguageCodeUpdate + + """ + Create new order from existing checkout. Requires the following permissions: AUTHENTICATED_APP and HANDLE_CHECKOUTS. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + orderCreateFromCheckout( + """ + ID of a checkout that will be converted to an order. + """ + id: ID! + + """ + Determines if checkout should be removed after creating an order. Default true. + """ + removeCheckout: Boolean = true + ): OrderCreateFromCheckout + + """ + Creates new channel. + + Requires one of the following permissions: MANAGE_CHANNELS. + """ + channelCreate( + """ + Fields required to create channel. + """ + input: ChannelCreateInput! + ): ChannelCreate + + """ + Update a channel. + + Requires one of the following permissions: MANAGE_CHANNELS. + """ + channelUpdate( + """ + ID of a channel to update. + """ + id: ID! + + """ + Fields required to update a channel. + """ + input: ChannelUpdateInput! + ): ChannelUpdate + + """ + Delete a channel. Orders associated with the deleted channel will be moved to the target channel. Checkouts, product availability, and pricing will be removed. + + Requires one of the following permissions: MANAGE_CHANNELS. + """ + channelDelete( + """ + ID of a channel to delete. + """ + id: ID! + + """ + Fields required to delete a channel. + """ + input: ChannelDeleteInput + ): ChannelDelete + + """ + Activate a channel. + + Requires one of the following permissions: MANAGE_CHANNELS. + """ + channelActivate( + """ + ID of the channel to activate. + """ + id: ID! + ): ChannelActivate + + """ + Deactivate a channel. + + Requires one of the following permissions: MANAGE_CHANNELS. + """ + channelDeactivate( + """ + ID of the channel to deactivate. + """ + id: ID! + ): ChannelDeactivate + + """ + Creates an attribute. + """ + attributeCreate( + """ + Fields required to create an attribute. + """ + input: AttributeCreateInput! + ): AttributeCreate + + """ + Deletes an attribute. + + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + attributeDelete( + """ + ID of an attribute to delete. + """ + id: ID! + ): AttributeDelete + + """ + Updates attribute. + + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + attributeUpdate( + """ + ID of an attribute to update. + """ + id: ID! + + """ + Fields required to update an attribute. + """ + input: AttributeUpdateInput! + ): AttributeUpdate + + """ + Creates/updates translations for an attribute. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + attributeTranslate( + """ + Attribute ID or AttributeTranslatableContent ID. + """ + id: ID! + input: NameTranslationInput! + + """ + Translation language code. + """ + languageCode: LanguageCodeEnum! + ): AttributeTranslate + + """ + Deletes attributes. + + Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + """ + attributeBulkDelete( + """ + List of attribute IDs to delete. + """ + ids: [ID!]! + ): AttributeBulkDelete + + """ + Deletes values of attributes. + + Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. + """ + attributeValueBulkDelete( + """ + List of attribute value IDs to delete. + """ + ids: [ID!]! + ): AttributeValueBulkDelete + + """ + Creates a value for an attribute. + + Requires one of the following permissions: MANAGE_PRODUCTS. + """ + attributeValueCreate( + """ + Attribute to which value will be assigned. + """ + attribute: ID! + + """ + Fields required to create an AttributeValue. + """ + input: AttributeValueCreateInput! + ): AttributeValueCreate + + """ + Deletes a value of an attribute. + + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + attributeValueDelete( + """ + ID of a value to delete. + """ + id: ID! + ): AttributeValueDelete + + """ + Updates value of an attribute. + + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + attributeValueUpdate( + """ + ID of an AttributeValue to update. + """ + id: ID! + + """ + Fields required to update an AttributeValue. + """ + input: AttributeValueUpdateInput! + ): AttributeValueUpdate + + """ + Creates/updates translations for an attribute value. + + Requires one of the following permissions: MANAGE_TRANSLATIONS. + """ + attributeValueTranslate( + """ + AttributeValue ID or AttributeValueTranslatableContent ID. + """ + id: ID! + input: AttributeValueTranslationInput! + + """ + Translation language code. + """ + languageCode: LanguageCodeEnum! + ): AttributeValueTranslate + + """ + Reorder the values of an attribute. + + Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. + """ + attributeReorderValues( + """ + ID of an attribute. + """ + attributeId: ID! + + """ + The list of reordering operations for given attribute values. + """ + moves: [ReorderInput!]! + ): AttributeReorderValues + + """ + Creates a new app. Requires the following permissions: AUTHENTICATED_STAFF_USER and MANAGE_APPS. + """ + appCreate( + """ + Fields required to create a new app. + """ + input: AppInput! + ): AppCreate + + """ + Updates an existing app. + + Requires one of the following permissions: MANAGE_APPS. + """ + appUpdate( + """ + ID of an app to update. + """ + id: ID! + + """ + Fields required to update an existing app. + """ + input: AppInput! + ): AppUpdate + + """ + Deletes an app. + + Requires one of the following permissions: MANAGE_APPS. + """ + appDelete( + """ + ID of an app to delete. + """ + id: ID! + ): AppDelete + + """ + Creates a new token. + + Requires one of the following permissions: MANAGE_APPS. + """ + appTokenCreate( + """ + Fields required to create a new auth token. + """ + input: AppTokenInput! + ): AppTokenCreate + + """ + Deletes an authentication token assigned to app. + + Requires one of the following permissions: MANAGE_APPS. + """ + appTokenDelete( + """ + ID of an auth token to delete. + """ + id: ID! + ): AppTokenDelete + + """ + Verify provided app token. + """ + appTokenVerify( + """ + App token to verify. + """ + token: String! + ): AppTokenVerify + + """ + Install new app by using app manifest. Requires the following permissions: AUTHENTICATED_STAFF_USER and MANAGE_APPS. + """ + appInstall( + """ + Fields required to install a new app. + """ + input: AppInstallInput! + ): AppInstall + + """ + Retry failed installation of new app. + + Requires one of the following permissions: MANAGE_APPS. + """ + appRetryInstall( + """ + Determine if app will be set active or not. + """ + activateAfterInstallation: Boolean = true + + """ + ID of failed installation. + """ + id: ID! + ): AppRetryInstall + + """ + Delete failed installation. + + Requires one of the following permissions: MANAGE_APPS. + """ + appDeleteFailedInstallation( + """ + ID of failed installation to delete. + """ + id: ID! + ): AppDeleteFailedInstallation + + """ + Fetch and validate manifest. + + Requires one of the following permissions: MANAGE_APPS. + """ + appFetchManifest(manifestUrl: String!): AppFetchManifest + + """ + Activate the app. + + Requires one of the following permissions: MANAGE_APPS. + """ + appActivate( + """ + ID of app to activate. + """ + id: ID! + ): AppActivate + + """ + Deactivate the app. + + Requires one of the following permissions: MANAGE_APPS. + """ + appDeactivate( + """ + ID of app to deactivate. + """ + id: ID! + ): AppDeactivate + + """ + Create JWT token. + """ + tokenCreate( + """ + Email of a user. + """ + email: String! + + """ + Password of a user. + """ + password: String! + ): CreateToken + + """ + Refresh JWT token. Mutation tries to take refreshToken from the input.If it fails it will try to take refreshToken from the http-only cookie -refreshToken. csrfToken is required when refreshToken is provided as a cookie. + """ + tokenRefresh( + """ + CSRF token required to refresh token. This argument is required when refreshToken is provided as a cookie. + """ + csrfToken: String + + """ + Refresh token. + """ + refreshToken: String + ): RefreshToken + + """ + Verify JWT token. + """ + tokenVerify( + """ + JWT token to validate. + """ + token: String! + ): VerifyToken + + """ + Deactivate all JWT tokens of the currently authenticated user. + + Requires one of the following permissions: AUTHENTICATED_USER. + """ + tokensDeactivateAll: DeactivateAllUserTokens + + """ + Prepare external authentication url for user by custom plugin. + """ + externalAuthenticationUrl( + """ + The data required by plugin to create external authentication url. + """ + input: JSONString! + + """ + The ID of the authentication plugin. + """ + pluginId: String! + ): ExternalAuthenticationUrl + + """ + Obtain external access tokens for user by custom plugin. + """ + externalObtainAccessTokens( + """ + The data required by plugin to create authentication data. + """ + input: JSONString! + + """ + The ID of the authentication plugin. + """ + pluginId: String! + ): ExternalObtainAccessTokens + + """ + Refresh user's access by custom plugin. + """ + externalRefresh( + """ + The data required by plugin to proceed the refresh process. + """ + input: JSONString! + + """ + The ID of the authentication plugin. + """ + pluginId: String! + ): ExternalRefresh + + """ + Logout user by custom plugin. + """ + externalLogout( + """ + The data required by plugin to proceed the logout process. + """ + input: JSONString! + + """ + The ID of the authentication plugin. + """ + pluginId: String! + ): ExternalLogout + + """ + Verify external authentication data by plugin. + """ + externalVerify( + """ + The data required by plugin to proceed the verification. + """ + input: JSONString! + + """ + The ID of the authentication plugin. + """ + pluginId: String! + ): ExternalVerify + + """ + Sends an email with the account password modification link. + """ + requestPasswordReset( + """ + Slug of a channel which will be used for notify user. Optional when only one channel exists. + """ + channel: String + + """ + Email of the user that will be used for password recovery. + """ + email: String! + + """ + URL of a view where users should be redirected to reset the password. URL in RFC 1808 format. + """ + redirectUrl: String! + ): RequestPasswordReset + + """ + Confirm user account with token sent by email during registration. + """ + confirmAccount( + """ + E-mail of the user performing account confirmation. + """ + email: String! + + """ + A one-time token required to confirm the account. + """ + token: String! + ): ConfirmAccount + + """ + Sets the user's password from the token sent by email using the RequestPasswordReset mutation. + """ + setPassword( + """ + Email of a user. + """ + email: String! + + """ + Password of a user. + """ + password: String! + + """ + A one-time token required to set the password. + """ + token: String! + ): SetPassword + + """ + Change the password of the logged in user. + + Requires one of the following permissions: AUTHENTICATED_USER. + """ + passwordChange( + """ + New user password. + """ + newPassword: String! + + """ + Current user password. + """ + oldPassword: String! + ): PasswordChange + + """ + Request email change of the logged in user. + + Requires one of the following permissions: AUTHENTICATED_USER. + """ + requestEmailChange( + """ + Slug of a channel which will be used to notify users. Optional when only one channel exists. + """ + channel: String + + """ + New user email. + """ + newEmail: String! + + """ + User password. + """ + password: String! + + """ + URL of a view where users should be redirected to update the email address. URL in RFC 1808 format. + """ + redirectUrl: String! + ): RequestEmailChange + + """ + Confirm the email change of the logged-in user. + + Requires one of the following permissions: AUTHENTICATED_USER. + """ + confirmEmailChange( + """ + Slug of a channel which will be used to notify users. Optional when only one channel exists. + """ + channel: String + + """ + A one-time token required to change the email. + """ + token: String! + ): ConfirmEmailChange + + """ + Create a new address for the customer. + + Requires one of the following permissions: AUTHENTICATED_USER. + """ + accountAddressCreate( + """ + Fields required to create address. + """ + input: AddressInput! + + """ + A type of address. If provided, the new address will be automatically assigned as the customer's default address of that type. + """ + type: AddressTypeEnum + ): AccountAddressCreate + + """ + Updates an address of the logged-in user. Requires one of the following permissions: MANAGE_USERS, IS_OWNER. + """ + accountAddressUpdate( + """ + ID of the address to update. + """ + id: ID! + + """ + Fields required to update the address. + """ + input: AddressInput! + ): AccountAddressUpdate + + """ + Delete an address of the logged-in user. Requires one of the following permissions: MANAGE_USERS, IS_OWNER. + """ + accountAddressDelete( + """ + ID of the address to delete. + """ + id: ID! + ): AccountAddressDelete + + """ + Sets a default address for the authenticated user. + + Requires one of the following permissions: AUTHENTICATED_USER. + """ + accountSetDefaultAddress( + """ + ID of the address to set as default. + """ + id: ID! + + """ + The type of address. + """ + type: AddressTypeEnum! + ): AccountSetDefaultAddress + + """ + Register a new user. + """ + accountRegister( + """ + Fields required to create a user. + """ + input: AccountRegisterInput! + ): AccountRegister + + """ + Updates the account of the logged-in user. + + Requires one of the following permissions: AUTHENTICATED_USER. + """ + accountUpdate( + """ + Fields required to update the account of the logged-in user. + """ + input: AccountInput! + ): AccountUpdate + + """ + Sends an email with the account removal link for the logged-in user. + + Requires one of the following permissions: AUTHENTICATED_USER. + """ + accountRequestDeletion( + """ + Slug of a channel which will be used to notify users. Optional when only one channel exists. + """ + channel: String + + """ + URL of a view where users should be redirected to delete their account. URL in RFC 1808 format. + """ + redirectUrl: String! + ): AccountRequestDeletion + + """ + Remove user account. + + Requires one of the following permissions: AUTHENTICATED_USER. + """ + accountDelete( + """ + A one-time token required to remove account. Sent by email using AccountRequestDeletion mutation. + """ + token: String! + ): AccountDelete + + """ + Creates user address. + + Requires one of the following permissions: MANAGE_USERS. + """ + addressCreate( + """ + Fields required to create address. + """ + input: AddressInput! + + """ + ID of a user to create address for. + """ + userId: ID! + ): AddressCreate + + """ + Updates an address. + + Requires one of the following permissions: MANAGE_USERS. + """ + addressUpdate( + """ + ID of the address to update. + """ + id: ID! + + """ + Fields required to update the address. + """ + input: AddressInput! + ): AddressUpdate + + """ + Deletes an address. + + Requires one of the following permissions: MANAGE_USERS. + """ + addressDelete( + """ + ID of the address to delete. + """ + id: ID! + ): AddressDelete + + """ + Sets a default address for the given user. + + Requires one of the following permissions: MANAGE_USERS. + """ + addressSetDefault( + """ + ID of the address. + """ + addressId: ID! + + """ + The type of address. + """ + type: AddressTypeEnum! + + """ + ID of the user to change the address for. + """ + userId: ID! + ): AddressSetDefault + + """ + Creates a new customer. + + Requires one of the following permissions: MANAGE_USERS. + """ + customerCreate( + """ + Fields required to create a customer. + """ + input: UserCreateInput! + ): CustomerCreate + + """ + Updates an existing customer. + + Requires one of the following permissions: MANAGE_USERS. + """ + customerUpdate( + """ + ID of a customer to update. + """ + id: ID! + + """ + Fields required to update a customer. + """ + input: CustomerInput! + ): CustomerUpdate + + """ + Deletes a customer. + + Requires one of the following permissions: MANAGE_USERS. + """ + customerDelete( + """ + ID of a customer to delete. + """ + id: ID! + ): CustomerDelete + + """ + Deletes customers. + + Requires one of the following permissions: MANAGE_USERS. + """ + customerBulkDelete( + """ + List of user IDs to delete. + """ + ids: [ID!]! + ): CustomerBulkDelete + + """ + Creates a new staff user. + + Requires one of the following permissions: MANAGE_STAFF. + """ + staffCreate( + """ + Fields required to create a staff user. + """ + input: StaffCreateInput! + ): StaffCreate + + """ + Updates an existing staff user. + + Requires one of the following permissions: MANAGE_STAFF. + """ + staffUpdate( + """ + ID of a staff user to update. + """ + id: ID! + + """ + Fields required to update a staff user. + """ + input: StaffUpdateInput! + ): StaffUpdate + + """ + Deletes a staff user. + + Requires one of the following permissions: MANAGE_STAFF. + """ + staffDelete( + """ + ID of a staff user to delete. + """ + id: ID! + ): StaffDelete + + """ + Deletes staff users. + + Requires one of the following permissions: MANAGE_STAFF. + """ + staffBulkDelete( + """ + List of user IDs to delete. + """ + ids: [ID!]! + ): StaffBulkDelete + + """ + Create a user avatar. Only for staff members. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + + Requires one of the following permissions: AUTHENTICATED_STAFF_USER. + """ + userAvatarUpdate( + """ + Represents an image file in a multipart request. + """ + image: Upload! + ): UserAvatarUpdate + + """ + Deletes a user avatar. Only for staff members. + + Requires one of the following permissions: AUTHENTICATED_STAFF_USER. + """ + userAvatarDelete: UserAvatarDelete + + """ + Activate or deactivate users. + + Requires one of the following permissions: MANAGE_USERS. + """ + userBulkSetActive( + """ + List of user IDs to (de)activate). + """ + ids: [ID!]! + + """ + Determine if users will be set active or not. + """ + isActive: Boolean! + ): UserBulkSetActive + + """ + Create new permission group. + + Requires one of the following permissions: MANAGE_STAFF. + """ + permissionGroupCreate( + """ + Input fields to create permission group. + """ + input: PermissionGroupCreateInput! + ): PermissionGroupCreate + + """ + Update permission group. + + Requires one of the following permissions: MANAGE_STAFF. + """ + permissionGroupUpdate( + """ + ID of the group to update. + """ + id: ID! + + """ + Input fields to create permission group. + """ + input: PermissionGroupUpdateInput! + ): PermissionGroupUpdate + + """ + Delete permission group. + + Requires one of the following permissions: MANAGE_STAFF. + """ + permissionGroupDelete( + """ + ID of the group to delete. + """ + id: ID! + ): PermissionGroupDelete +} + +""" +Creates a new webhook subscription. + +Requires one of the following permissions: MANAGE_APPS, AUTHENTICATED_APP. +""" +type WebhookCreate { + webhookErrors: [WebhookError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [WebhookError!]! + webhook: Webhook +} + +type WebhookError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: WebhookErrorCode! +} + +""" +An enumeration. +""" +enum WebhookErrorCode { + GRAPHQL_ERROR + INVALID + NOT_FOUND + REQUIRED + UNIQUE +} + +input WebhookCreateInput { + """ + The name of the webhook. + """ + name: String + + """ + The url to receive the payload. + """ + targetUrl: String + + """ + The events that webhook wants to subscribe. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `asyncEvents` or `syncEvents` instead. + """ + events: [WebhookEventTypeEnum!] + + """ + The asynchronous events that webhook wants to subscribe. + """ + asyncEvents: [WebhookEventTypeAsyncEnum!] + + """ + The synchronous events that webhook wants to subscribe. + """ + syncEvents: [WebhookEventTypeSyncEnum!] + + """ + ID of the app to which webhook belongs. + """ + app: ID + + """ + Determine if webhook will be set active or not. + """ + isActive: Boolean + + """ + The secret key used to create a hash signature with each payload. + """ + secretKey: String + + """ + Subscription query used to define a webhook payload. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + query: String +} + +""" +Deletes a webhook subscription. + +Requires one of the following permissions: MANAGE_APPS, AUTHENTICATED_APP. +""" +type WebhookDelete { + webhookErrors: [WebhookError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [WebhookError!]! + webhook: Webhook +} + +""" +Updates a webhook subscription. + +Requires one of the following permissions: MANAGE_APPS. +""" +type WebhookUpdate { + webhookErrors: [WebhookError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [WebhookError!]! + webhook: Webhook +} + +input WebhookUpdateInput { + """ + The new name of the webhook. + """ + name: String + + """ + The url to receive the payload. + """ + targetUrl: String + + """ + The events that webhook wants to subscribe. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `asyncEvents` or `syncEvents` instead. + """ + events: [WebhookEventTypeEnum!] + + """ + The asynchronous events that webhook wants to subscribe. + """ + asyncEvents: [WebhookEventTypeAsyncEnum!] + + """ + The synchronous events that webhook wants to subscribe. + """ + syncEvents: [WebhookEventTypeSyncEnum!] + + """ + ID of the app to which webhook belongs. + """ + app: ID + + """ + Determine if webhook will be set active or not. + """ + isActive: Boolean + + """ + Use to create a hash signature with each payload. + """ + secretKey: String + + """ + Subscription query used to define a webhook payload. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + query: String +} + +""" +Retries event delivery. + +Requires one of the following permissions: MANAGE_APPS. +""" +type EventDeliveryRetry { + """ + Event delivery. + """ + delivery: EventDelivery + errors: [WebhookError!]! +} + +""" +Creates new warehouse. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type WarehouseCreate { + warehouseErrors: [WarehouseError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [WarehouseError!]! + warehouse: Warehouse +} + +type WarehouseError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: WarehouseErrorCode! +} + +""" +An enumeration. +""" +enum WarehouseErrorCode { + ALREADY_EXISTS + GRAPHQL_ERROR + INVALID + NOT_FOUND + REQUIRED + UNIQUE +} + +input WarehouseCreateInput { + """ + Warehouse slug. + """ + slug: String + + """ + The email address of the warehouse. + """ + email: String + + """ + Warehouse name. + """ + name: String! + + """ + Address of the warehouse. + """ + address: AddressInput! + + """ + Shipping zones supported by the warehouse. + """ + shippingZones: [ID!] +} + +""" +Updates given warehouse. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type WarehouseUpdate { + warehouseErrors: [WarehouseError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [WarehouseError!]! + warehouse: Warehouse +} + +input WarehouseUpdateInput { + """ + Warehouse slug. + """ + slug: String + + """ + The email address of the warehouse. + """ + email: String + + """ + Warehouse name. + """ + name: String + + """ + Address of the warehouse. + """ + address: AddressInput + + """ + Click and collect options: local, all or disabled. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + clickAndCollectOption: WarehouseClickAndCollectOptionEnum + + """ + Visibility of warehouse stocks. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + isPrivate: Boolean +} + +""" +Deletes selected warehouse. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type WarehouseDelete { + warehouseErrors: [WarehouseError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [WarehouseError!]! + warehouse: Warehouse +} + +""" +Add shipping zone to given warehouse. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type WarehouseShippingZoneAssign { + warehouseErrors: [WarehouseError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [WarehouseError!]! + warehouse: Warehouse +} + +""" +Remove shipping zone from given warehouse. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type WarehouseShippingZoneUnassign { + warehouseErrors: [WarehouseError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [WarehouseError!]! + warehouse: Warehouse +} + +""" +Creates a new staff notification recipient. + +Requires one of the following permissions: MANAGE_SETTINGS. +""" +type StaffNotificationRecipientCreate { + shopErrors: [ShopError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ShopError!]! + staffNotificationRecipient: StaffNotificationRecipient +} + +type ShopError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: ShopErrorCode! +} + +""" +An enumeration. +""" +enum ShopErrorCode { + ALREADY_EXISTS + CANNOT_FETCH_TAX_RATES + GRAPHQL_ERROR + INVALID + NOT_FOUND + REQUIRED + UNIQUE +} + +input StaffNotificationRecipientInput { + """ + The ID of the user subscribed to email notifications.. + """ + user: ID + + """ + Email address of a user subscribed to email notifications. + """ + email: String + + """ + Determines if a notification active. + """ + active: Boolean +} + +""" +Updates a staff notification recipient. + +Requires one of the following permissions: MANAGE_SETTINGS. +""" +type StaffNotificationRecipientUpdate { + shopErrors: [ShopError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ShopError!]! + staffNotificationRecipient: StaffNotificationRecipient +} + +""" +Delete staff notification recipient. + +Requires one of the following permissions: MANAGE_SETTINGS. +""" +type StaffNotificationRecipientDelete { + shopErrors: [ShopError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ShopError!]! + staffNotificationRecipient: StaffNotificationRecipient +} + +""" +Updates site domain of the shop. + +Requires one of the following permissions: MANAGE_SETTINGS. +""" +type ShopDomainUpdate { + """ + Updated shop. + """ + shop: Shop + shopErrors: [ShopError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ShopError!]! +} + +input SiteDomainInput { + """ + Domain name for shop. + """ + domain: String + + """ + Shop site name. + """ + name: String +} + +""" +Updates shop settings. + +Requires one of the following permissions: MANAGE_SETTINGS. +""" +type ShopSettingsUpdate { + """ + Updated shop. + """ + shop: Shop + shopErrors: [ShopError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ShopError!]! +} + +input ShopSettingsInput { + """ + Header text. + """ + headerText: String + + """ + SEO description. + """ + description: String + + """ + Include taxes in prices. + """ + includeTaxesInPrices: Boolean + + """ + Display prices with tax in store. + """ + displayGrossPrices: Boolean + + """ + Charge taxes on shipping. + """ + chargeTaxesOnShipping: Boolean + + """ + Enable inventory tracking. + """ + trackInventoryByDefault: Boolean + + """ + Default weight unit. + """ + defaultWeightUnit: WeightUnitsEnum + + """ + Enable automatic fulfillment for all digital products. + """ + automaticFulfillmentDigitalProducts: Boolean + + """ + Enable automatic approval of all new fulfillments. + + Added in Saleor 3.1. + """ + fulfillmentAutoApprove: Boolean + + """ + Enable ability to approve fulfillments which are unpaid. + + Added in Saleor 3.1. + """ + fulfillmentAllowUnpaid: Boolean + + """ + Default number of max downloads per digital content URL. + """ + defaultDigitalMaxDownloads: Int + + """ + Default number of days which digital content URL will be valid. + """ + defaultDigitalUrlValidDays: Int + + """ + Default email sender's name. + """ + defaultMailSenderName: String + + """ + Default email sender's address. + """ + defaultMailSenderAddress: String + + """ + URL of a view where customers can set their password. + """ + customerSetPasswordUrl: String + + """ + Default number of minutes stock will be reserved for anonymous checkout. Enter 0 or null to disable. + + Added in Saleor 3.1. + """ + reserveStockDurationAnonymousUser: Int + + """ + Default number of minutes stock will be reserved for authenticated checkout. Enter 0 or null to disable. + + Added in Saleor 3.1. + """ + reserveStockDurationAuthenticatedUser: Int + + """ + Default number of maximum line quantity in single checkout. Minimum possible value is 1, default value is 50. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + limitQuantityPerCheckout: Int +} + +""" +Fetch tax rates. + +Requires one of the following permissions: MANAGE_SETTINGS. +""" +type ShopFetchTaxRates { + """ + Updated shop. + """ + shop: Shop + shopErrors: [ShopError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ShopError!]! +} + +""" +Creates/updates translations for shop settings. + +Requires one of the following permissions: MANAGE_TRANSLATIONS. +""" +type ShopSettingsTranslate { + """ + Updated shop settings. + """ + shop: Shop + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [TranslationError!]! +} + +type TranslationError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: TranslationErrorCode! +} + +""" +An enumeration. +""" +enum TranslationErrorCode { + GRAPHQL_ERROR + INVALID + NOT_FOUND + REQUIRED +} + +input ShopSettingsTranslationInput { + headerText: String + description: String +} + +""" +Update the shop's address. If the `null` value is passed, the currently selected address will be deleted. + +Requires one of the following permissions: MANAGE_SETTINGS. +""" +type ShopAddressUpdate { + """ + Updated shop. + """ + shop: Shop + shopErrors: [ShopError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ShopError!]! +} + +""" +Update shop order settings. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderSettingsUpdate { + """ + Order settings. + """ + orderSettings: OrderSettings + orderSettingsErrors: [OrderSettingsError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderSettingsError!]! +} + +type OrderSettingsError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: OrderSettingsErrorCode! +} + +""" +An enumeration. +""" +enum OrderSettingsErrorCode { + INVALID +} + +input OrderSettingsUpdateInput { + """ + When disabled, all new orders from checkout will be marked as unconfirmed. When enabled orders from checkout will become unfulfilled immediately. + """ + automaticallyConfirmAllNewOrders: Boolean + + """ + When enabled, all non-shippable gift card orders will be fulfilled automatically. + """ + automaticallyFulfillNonShippableGiftCard: Boolean +} + +""" +Update gift card settings. + +Requires one of the following permissions: MANAGE_GIFT_CARD. +""" +type GiftCardSettingsUpdate { + """ + Gift card settings. + """ + giftCardSettings: GiftCardSettings + errors: [GiftCardSettingsError!]! +} + +type GiftCardSettingsError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: GiftCardSettingsErrorCode! +} + +""" +An enumeration. +""" +enum GiftCardSettingsErrorCode { + INVALID + REQUIRED + GRAPHQL_ERROR +} + +input GiftCardSettingsUpdateInput { + """ + Defines gift card default expiry settings. + """ + expiryType: GiftCardSettingsExpiryTypeEnum + + """ + Defines gift card expiry period. + """ + expiryPeriod: TimePeriodInputType +} + +input TimePeriodInputType { + """ + The length of the period. + """ + amount: Int! + + """ + The type of the period. + """ + type: TimePeriodTypeEnum! +} + +""" +Manage shipping method's availability in channels. + +Requires one of the following permissions: MANAGE_SHIPPING. +""" +type ShippingMethodChannelListingUpdate { + """ + An updated shipping method instance. + """ + shippingMethod: ShippingMethodType + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ShippingError!]! +} + +type ShippingError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: ShippingErrorCode! + + """ + List of warehouse IDs which causes the error. + """ + warehouses: [ID!] + + """ + List of channels IDs which causes the error. + """ + channels: [ID!] +} + +""" +An enumeration. +""" +enum ShippingErrorCode { + ALREADY_EXISTS + GRAPHQL_ERROR + INVALID + MAX_LESS_THAN_MIN + NOT_FOUND + REQUIRED + UNIQUE + DUPLICATED_INPUT_ITEM +} + +input ShippingMethodChannelListingInput { + """ + List of channels to which the shipping method should be assigned. + """ + addChannels: [ShippingMethodChannelListingAddInput!] + + """ + List of channels from which the shipping method should be unassigned. + """ + removeChannels: [ID!] +} + +input ShippingMethodChannelListingAddInput { + """ + ID of a channel. + """ + channelId: ID! + + """ + Shipping price of the shipping method in this channel. + """ + price: PositiveDecimal + + """ + Minimum order price to use this shipping method. + """ + minimumOrderPrice: PositiveDecimal + + """ + Maximum order price to use this shipping method. + """ + maximumOrderPrice: PositiveDecimal +} + +""" +Creates a new shipping price. + +Requires one of the following permissions: MANAGE_SHIPPING. +""" +type ShippingPriceCreate { + """ + A shipping zone to which the shipping method belongs. + """ + shippingZone: ShippingZone + shippingMethod: ShippingMethodType + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ShippingError!]! +} + +input ShippingPriceInput { + """ + Name of the shipping method. + """ + name: String + + """ + Shipping method description. + """ + description: JSONString + + """ + Minimum order weight to use this shipping method. + """ + minimumOrderWeight: WeightScalar + + """ + Maximum order weight to use this shipping method. + """ + maximumOrderWeight: WeightScalar + + """ + Maximum number of days for delivery. + """ + maximumDeliveryDays: Int + + """ + Minimal number of days for delivery. + """ + minimumDeliveryDays: Int + + """ + Shipping type: price or weight based. + """ + type: ShippingMethodTypeEnum + + """ + Shipping zone this method belongs to. + """ + shippingZone: ID + + """ + Postal code rules to add. + """ + addPostalCodeRules: [ShippingPostalCodeRulesCreateInputRange!] + + """ + Postal code rules to delete. + """ + deletePostalCodeRules: [ID!] + + """ + Inclusion type for currently assigned postal code rules. + """ + inclusionType: PostalCodeRuleInclusionTypeEnum +} + +scalar WeightScalar + +input ShippingPostalCodeRulesCreateInputRange { + """ + Start range of the postal code. + """ + start: String! + + """ + End range of the postal code. + """ + end: String +} + +""" +Deletes a shipping price. + +Requires one of the following permissions: MANAGE_SHIPPING. +""" +type ShippingPriceDelete { + """ + A shipping method to delete. + """ + shippingMethod: ShippingMethodType + + """ + A shipping zone to which the shipping method belongs. + """ + shippingZone: ShippingZone + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ShippingError!]! +} + +""" +Deletes shipping prices. + +Requires one of the following permissions: MANAGE_SHIPPING. +""" +type ShippingPriceBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ShippingError!]! +} + +""" +Updates a new shipping price. + +Requires one of the following permissions: MANAGE_SHIPPING. +""" +type ShippingPriceUpdate { + """ + A shipping zone to which the shipping method belongs. + """ + shippingZone: ShippingZone + shippingMethod: ShippingMethodType + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ShippingError!]! +} + +""" +Creates/updates translations for a shipping method. + +Requires one of the following permissions: MANAGE_TRANSLATIONS. +""" +type ShippingPriceTranslate { + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [TranslationError!]! + shippingMethod: ShippingMethodType +} + +input ShippingPriceTranslationInput { + name: String + + """ + Translated shipping method description. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString +} + +""" +Exclude products from shipping price. + +Requires one of the following permissions: MANAGE_SHIPPING. +""" +type ShippingPriceExcludeProducts { + """ + A shipping method with new list of excluded products. + """ + shippingMethod: ShippingMethodType + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ShippingError!]! +} + +input ShippingPriceExcludeProductsInput { + """ + List of products which will be excluded. + """ + products: [ID!]! +} + +""" +Remove product from excluded list for shipping price. + +Requires one of the following permissions: MANAGE_SHIPPING. +""" +type ShippingPriceRemoveProductFromExclude { + """ + A shipping method with new list of excluded products. + """ + shippingMethod: ShippingMethodType + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ShippingError!]! +} + +""" +Creates a new shipping zone. + +Requires one of the following permissions: MANAGE_SHIPPING. +""" +type ShippingZoneCreate { + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ShippingError!]! + shippingZone: ShippingZone +} + +input ShippingZoneCreateInput { + """ + Shipping zone's name. Visible only to the staff. + """ + name: String + + """ + Description of the shipping zone. + """ + description: String + + """ + List of countries in this shipping zone. + """ + countries: [String!] + + """ + Default shipping zone will be used for countries not covered by other zones. + """ + default: Boolean + + """ + List of warehouses to assign to a shipping zone + """ + addWarehouses: [ID!] + + """ + List of channels to assign to the shipping zone. + """ + addChannels: [ID!] +} + +""" +Deletes a shipping zone. + +Requires one of the following permissions: MANAGE_SHIPPING. +""" +type ShippingZoneDelete { + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ShippingError!]! + shippingZone: ShippingZone +} + +""" +Deletes shipping zones. + +Requires one of the following permissions: MANAGE_SHIPPING. +""" +type ShippingZoneBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ShippingError!]! +} + +""" +Updates a new shipping zone. + +Requires one of the following permissions: MANAGE_SHIPPING. +""" +type ShippingZoneUpdate { + shippingErrors: [ShippingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ShippingError!]! + shippingZone: ShippingZone +} + +input ShippingZoneUpdateInput { + """ + Shipping zone's name. Visible only to the staff. + """ + name: String + + """ + Description of the shipping zone. + """ + description: String + + """ + List of countries in this shipping zone. + """ + countries: [String!] + + """ + Default shipping zone will be used for countries not covered by other zones. + """ + default: Boolean + + """ + List of warehouses to assign to a shipping zone + """ + addWarehouses: [ID!] + + """ + List of channels to assign to the shipping zone. + """ + addChannels: [ID!] + + """ + List of warehouses to unassign from a shipping zone + """ + removeWarehouses: [ID!] + + """ + List of channels to unassign from the shipping zone. + """ + removeChannels: [ID!] +} + +""" +Assign attributes to a given product type. + +Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. +""" +type ProductAttributeAssign { + """ + The updated product type. + """ + productType: ProductType + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! +} + +type ProductError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: ProductErrorCode! + + """ + List of attributes IDs which causes the error. + """ + attributes: [ID!] + + """ + List of attribute values IDs which causes the error. + """ + values: [ID!] +} + +""" +An enumeration. +""" +enum ProductErrorCode { + ALREADY_EXISTS + ATTRIBUTE_ALREADY_ASSIGNED + ATTRIBUTE_CANNOT_BE_ASSIGNED + ATTRIBUTE_VARIANTS_DISABLED + MEDIA_ALREADY_ASSIGNED + DUPLICATED_INPUT_ITEM + GRAPHQL_ERROR + INVALID + PRODUCT_WITHOUT_CATEGORY + NOT_PRODUCTS_IMAGE + NOT_PRODUCTS_VARIANT + NOT_FOUND + REQUIRED + UNIQUE + VARIANT_NO_DIGITAL_CONTENT + CANNOT_MANAGE_PRODUCT_WITHOUT_VARIANT + PRODUCT_NOT_ASSIGNED_TO_CHANNEL + UNSUPPORTED_MEDIA_PROVIDER + PREORDER_VARIANT_CANNOT_BE_DEACTIVATED +} + +input ProductAttributeAssignInput { + """ + The ID of the attribute to assign. + """ + id: ID! + + """ + The attribute type to be assigned as. + """ + type: ProductAttributeType! + + """ + Whether attribute is allowed in variant selection. Allowed types are: ['dropdown', 'boolean', 'swatch', 'numeric']. + + Added in Saleor 3.1. + """ + variantSelection: Boolean +} + +enum ProductAttributeType { + PRODUCT + VARIANT +} + +""" +Update attributes assigned to product variant for given product type. + +Added in Saleor 3.1. + +Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. +""" +type ProductAttributeAssignmentUpdate { + """ + The updated product type. + """ + productType: ProductType + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! +} + +input ProductAttributeAssignmentUpdateInput { + """ + The ID of the attribute to assign. + """ + id: ID! + + """ + Whether attribute is allowed in variant selection. Allowed types are: ['dropdown', 'boolean', 'swatch', 'numeric']. + + Added in Saleor 3.1. + """ + variantSelection: Boolean! +} + +""" +Un-assign attributes from a given product type. + +Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. +""" +type ProductAttributeUnassign { + """ + The updated product type. + """ + productType: ProductType + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! +} + +""" +Creates a new category. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type CategoryCreate { + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! + category: Category +} + +input CategoryInput { + """ + Category description. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Category name. + """ + name: String + + """ + Category slug. + """ + slug: String + + """ + Search engine optimization fields. + """ + seo: SeoInput + + """ + Background image file. + """ + backgroundImage: Upload + + """ + Alt text for a product media. + """ + backgroundImageAlt: String +} + +input SeoInput { + """ + SEO title. + """ + title: String + + """ + SEO description. + """ + description: String +} + +""" +Variables of this type must be set to null in mutations. They will be replaced with a filename from a following multipart part containing a binary file. See: https://github.com/jaydenseric/graphql-multipart-request-spec. +""" +scalar Upload + +""" +Deletes a category. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type CategoryDelete { + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! + category: Category +} + +""" +Deletes categories. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type CategoryBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! +} + +""" +Updates a category. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type CategoryUpdate { + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! + category: Category +} + +""" +Creates/updates translations for a category. + +Requires one of the following permissions: MANAGE_TRANSLATIONS. +""" +type CategoryTranslate { + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [TranslationError!]! + category: Category +} + +input TranslationInput { + seoTitle: String + seoDescription: String + name: String + + """ + Translated description. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString +} + +""" +Adds products to a collection. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type CollectionAddProducts { + """ + Collection to which products will be added. + """ + collection: Collection + collectionErrors: [CollectionError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CollectionError!]! +} + +type CollectionError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + List of products IDs which causes the error. + """ + products: [ID!] + + """ + The error code. + """ + code: CollectionErrorCode! +} + +""" +An enumeration. +""" +enum CollectionErrorCode { + DUPLICATED_INPUT_ITEM + GRAPHQL_ERROR + INVALID + NOT_FOUND + REQUIRED + UNIQUE + CANNOT_MANAGE_PRODUCT_WITHOUT_VARIANT +} + +""" +Creates a new collection. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type CollectionCreate { + collectionErrors: [CollectionError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CollectionError!]! + collection: Collection +} + +input CollectionCreateInput { + """ + Informs whether a collection is published. + """ + isPublished: Boolean + + """ + Name of the collection. + """ + name: String + + """ + Slug of the collection. + """ + slug: String + + """ + Description of the collection. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Background image file. + """ + backgroundImage: Upload + + """ + Alt text for an image. + """ + backgroundImageAlt: String + + """ + Search engine optimization fields. + """ + seo: SeoInput + + """ + Publication date. ISO 8601 standard. + + DEPRECATED: this field will be removed in Saleor 4.0. + """ + publicationDate: Date + + """ + List of products to be added to the collection. + """ + products: [ID!] +} + +""" +Deletes a collection. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type CollectionDelete { + collectionErrors: [CollectionError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CollectionError!]! + collection: Collection +} + +""" +Reorder the products of a collection. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type CollectionReorderProducts { + """ + Collection from which products are reordered. + """ + collection: Collection + collectionErrors: [CollectionError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CollectionError!]! +} + +input MoveProductInput { + """ + The ID of the product to move. + """ + productId: ID! + + """ + The relative sorting position of the product (from -inf to +inf) starting from the first given product's actual position.1 moves the item one position forward, -1 moves the item one position backward, 0 leaves the item unchanged. + """ + sortOrder: Int +} + +""" +Deletes collections. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type CollectionBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + collectionErrors: [CollectionError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CollectionError!]! +} + +""" +Remove products from a collection. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type CollectionRemoveProducts { + """ + Collection from which products will be removed. + """ + collection: Collection + collectionErrors: [CollectionError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CollectionError!]! +} + +""" +Updates a collection. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type CollectionUpdate { + collectionErrors: [CollectionError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CollectionError!]! + collection: Collection +} + +input CollectionInput { + """ + Informs whether a collection is published. + """ + isPublished: Boolean + + """ + Name of the collection. + """ + name: String + + """ + Slug of the collection. + """ + slug: String + + """ + Description of the collection. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Background image file. + """ + backgroundImage: Upload + + """ + Alt text for an image. + """ + backgroundImageAlt: String + + """ + Search engine optimization fields. + """ + seo: SeoInput + + """ + Publication date. ISO 8601 standard. + + DEPRECATED: this field will be removed in Saleor 4.0. + """ + publicationDate: Date +} + +""" +Creates/updates translations for a collection. + +Requires one of the following permissions: MANAGE_TRANSLATIONS. +""" +type CollectionTranslate { + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [TranslationError!]! + collection: Collection +} + +""" +Manage collection's availability in channels. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type CollectionChannelListingUpdate { + """ + An updated collection instance. + """ + collection: Collection + collectionChannelListingErrors: [CollectionChannelListingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CollectionChannelListingError!]! +} + +type CollectionChannelListingError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: ProductErrorCode! + + """ + List of attributes IDs which causes the error. + """ + attributes: [ID!] + + """ + List of attribute values IDs which causes the error. + """ + values: [ID!] + + """ + List of channels IDs which causes the error. + """ + channels: [ID!] +} + +input CollectionChannelListingUpdateInput { + """ + List of channels to which the collection should be assigned. + """ + addChannels: [PublishableChannelListingInput!] + + """ + List of channels from which the collection should be unassigned. + """ + removeChannels: [ID!] +} + +input PublishableChannelListingInput { + """ + ID of a channel. + """ + channelId: ID! + + """ + Determines if object is visible to customers. + """ + isPublished: Boolean + + """ + Publication date. ISO 8601 standard. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `publishedAt` field instead. + """ + publicationDate: Date + + """ + Publication date time. ISO 8601 standard. + + Added in Saleor 3.3. + """ + publishedAt: DateTime +} + +""" +Creates a new product. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductCreate { + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! + product: Product +} + +input ProductCreateInput { + """ + List of attributes. + """ + attributes: [AttributeValueInput!] + + """ + ID of the product's category. + """ + category: ID + + """ + Determine if taxes are being charged for the product. + """ + chargeTaxes: Boolean + + """ + List of IDs of collections that the product belongs to. + """ + collections: [ID!] + + """ + Product description. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Product name. + """ + name: String + + """ + Product slug. + """ + slug: String + + """ + Tax rate for enabled tax gateway. + """ + taxCode: String + + """ + Search engine optimization fields. + """ + seo: SeoInput + + """ + Weight of the Product. + """ + weight: WeightScalar + + """ + Defines the product rating value. + """ + rating: Float + + """ + ID of the type that product belongs to. + """ + productType: ID! +} + +input AttributeValueInput { + """ + ID of the selected attribute. + """ + id: ID + + """ + The value or slug of an attribute to resolve. If the passed value is non-existent, it will be created. + """ + values: [String!] + + """ + URL of the file attribute. Every time, a new value is created. + """ + file: String + + """ + File content type. + """ + contentType: String + + """ + List of entity IDs that will be used as references. + """ + references: [ID!] + + """ + Text content in JSON format. + """ + richText: JSONString + + """ + Represents the boolean value of the attribute value. + """ + boolean: Boolean + + """ + Represents the date value of the attribute value. + """ + date: Date + + """ + Represents the date/time value of the attribute value. + """ + dateTime: DateTime +} + +""" +Deletes a product. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductDelete { + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! + product: Product +} + +""" +Deletes products. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! +} + +""" +Updates an existing product. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductUpdate { + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! + product: Product +} + +input ProductInput { + """ + List of attributes. + """ + attributes: [AttributeValueInput!] + + """ + ID of the product's category. + """ + category: ID + + """ + Determine if taxes are being charged for the product. + """ + chargeTaxes: Boolean + + """ + List of IDs of collections that the product belongs to. + """ + collections: [ID!] + + """ + Product description. + + Rich text format. For reference see https://editorjs.io/ + """ + description: JSONString + + """ + Product name. + """ + name: String + + """ + Product slug. + """ + slug: String + + """ + Tax rate for enabled tax gateway. + """ + taxCode: String + + """ + Search engine optimization fields. + """ + seo: SeoInput + + """ + Weight of the Product. + """ + weight: WeightScalar + + """ + Defines the product rating value. + """ + rating: Float +} + +""" +Creates/updates translations for a product. + +Requires one of the following permissions: MANAGE_TRANSLATIONS. +""" +type ProductTranslate { + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [TranslationError!]! + product: Product +} + +""" +Manage product's availability in channels. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductChannelListingUpdate { + """ + An updated product instance. + """ + product: Product + productChannelListingErrors: [ProductChannelListingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductChannelListingError!]! +} + +type ProductChannelListingError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: ProductErrorCode! + + """ + List of attributes IDs which causes the error. + """ + attributes: [ID!] + + """ + List of attribute values IDs which causes the error. + """ + values: [ID!] + + """ + List of channels IDs which causes the error. + """ + channels: [ID!] + + """ + List of variants IDs which causes the error. + """ + variants: [ID!] +} + +input ProductChannelListingUpdateInput { + """ + List of channels to which the product should be assigned or updated. + """ + updateChannels: [ProductChannelListingAddInput!] + + """ + List of channels from which the product should be unassigned. + """ + removeChannels: [ID!] +} + +input ProductChannelListingAddInput { + """ + ID of a channel. + """ + channelId: ID! + + """ + Determines if object is visible to customers. + """ + isPublished: Boolean + + """ + Publication date. ISO 8601 standard. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `publishedAt` field instead. + """ + publicationDate: Date + + """ + Publication date time. ISO 8601 standard. + + Added in Saleor 3.3. + """ + publishedAt: DateTime + + """ + Determines if product is visible in product listings (doesn't apply to product collections). + """ + visibleInListings: Boolean + + """ + Determine if product should be available for purchase. + """ + isAvailableForPurchase: Boolean + + """ + A start date from which a product will be available for purchase. When not set and isAvailable is set to True, the current day is assumed. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `availableForPurchaseAt` field instead. + """ + availableForPurchaseDate: Date + + """ + A start date time from which a product will be available for purchase. When not set and `isAvailable` is set to True, the current day is assumed. + + Added in Saleor 3.3. + """ + availableForPurchaseAt: DateTime + + """ + List of variants to which the channel should be assigned. + """ + addVariants: [ID!] + + """ + List of variants from which the channel should be unassigned. + """ + removeVariants: [ID!] +} + +""" +Create a media object (image or video URL) associated with product. For image, this mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductMediaCreate { + product: Product + media: ProductMedia + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! +} + +input ProductMediaCreateInput { + """ + Alt text for a product media. + """ + alt: String + + """ + Represents an image file in a multipart request. + """ + image: Upload + + """ + ID of an product. + """ + product: ID! + + """ + Represents an URL to an external media. + """ + mediaUrl: String +} + +""" +Reorder the variants of a product. Mutation updates updated_at on product and triggers PRODUCT_UPDATED webhook. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductVariantReorder { + product: Product + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! +} + +input ReorderInput { + """ + The ID of the item to move. + """ + id: ID! + + """ + The new relative sorting position of the item (from -inf to +inf). 1 moves the item one position forward, -1 moves the item one position backward, 0 leaves the item unchanged. + """ + sortOrder: Int +} + +""" +Deletes a product media. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductMediaDelete { + product: Product + media: ProductMedia + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! +} + +""" +Deletes product media. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductMediaBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! +} + +""" +Changes ordering of the product media. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductMediaReorder { + product: Product + media: [ProductMedia!] + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! +} + +""" +Updates a product media. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductMediaUpdate { + product: Product + media: ProductMedia + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! +} + +input ProductMediaUpdateInput { + """ + Alt text for a product media. + """ + alt: String +} + +""" +Creates a new product type. + +Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. +""" +type ProductTypeCreate { + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! + productType: ProductType +} + +input ProductTypeInput { + """ + Name of the product type. + """ + name: String + + """ + Product type slug. + """ + slug: String + + """ + The product type kind. + """ + kind: ProductTypeKindEnum + + """ + Determines if product of this type has multiple variants. This option mainly simplifies product management in the dashboard. There is always at least one variant created under the hood. + """ + hasVariants: Boolean + + """ + List of attributes shared among all product variants. + """ + productAttributes: [ID!] + + """ + List of attributes used to distinguish between different variants of a product. + """ + variantAttributes: [ID!] + + """ + Determines if shipping is required for products of this variant. + """ + isShippingRequired: Boolean + + """ + Determines if products are digital. + """ + isDigital: Boolean + + """ + Weight of the ProductType items. + """ + weight: WeightScalar + + """ + Tax rate for enabled tax gateway. + """ + taxCode: String +} + +""" +Deletes a product type. + +Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. +""" +type ProductTypeDelete { + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! + productType: ProductType +} + +""" +Deletes product types. + +Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. +""" +type ProductTypeBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! +} + +""" +Updates an existing product type. + +Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. +""" +type ProductTypeUpdate { + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! + productType: ProductType +} + +""" +Reorder the attributes of a product type. + +Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. +""" +type ProductTypeReorderAttributes { + """ + Product type from which attributes are reordered. + """ + productType: ProductType + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! +} + +""" +Reorder product attribute values. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductReorderAttributeValues { + """ + Product from which attribute values are reordered. + """ + product: Product + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! +} + +""" +Create new digital content. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type DigitalContentCreate { + variant: ProductVariant + content: DigitalContent + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! +} + +input DigitalContentUploadInput { + """ + Use default digital content settings for this product. + """ + useDefaultSettings: Boolean! + + """ + Determines how many times a download link can be accessed by a customer. + """ + maxDownloads: Int + + """ + Determines for how many days a download link is active since it was generated. + """ + urlValidDays: Int + + """ + Overwrite default automatic_fulfillment setting for variant. + """ + automaticFulfillment: Boolean + + """ + Represents an file in a multipart request. + """ + contentFile: Upload! +} + +""" +Remove digital content assigned to given variant. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type DigitalContentDelete { + variant: ProductVariant + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! +} + +""" +Update digital content. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type DigitalContentUpdate { + variant: ProductVariant + content: DigitalContent + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! +} + +input DigitalContentInput { + """ + Use default digital content settings for this product. + """ + useDefaultSettings: Boolean! + + """ + Determines how many times a download link can be accessed by a customer. + """ + maxDownloads: Int + + """ + Determines for how many days a download link is active since it was generated. + """ + urlValidDays: Int + + """ + Overwrite default automatic_fulfillment setting for variant. + """ + automaticFulfillment: Boolean +} + +""" +Generate new URL to digital content. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type DigitalContentUrlCreate { + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! + digitalContentUrl: DigitalContentUrl +} + +input DigitalContentUrlCreateInput { + """ + Digital content ID which URL will belong to. + """ + content: ID! +} + +""" +Creates a new variant for a product. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductVariantCreate { + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! + productVariant: ProductVariant +} + +input ProductVariantCreateInput { + """ + List of attributes specific to this variant. + """ + attributes: [AttributeValueInput!]! + + """ + Stock keeping unit. + """ + sku: String + + """ + Determines if the inventory of this variant should be tracked. If false, the quantity won't change when customers buy this item. + """ + trackInventory: Boolean + + """ + Weight of the Product Variant. + """ + weight: WeightScalar + + """ + Determines if variant is in preorder. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + preorder: PreorderSettingsInput + + """ + Determines maximum quantity of `ProductVariant`,that can be bought in a single checkout. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + quantityLimitPerCustomer: Int + + """ + Product ID of which type is the variant. + """ + product: ID! + + """ + Stocks of a product available for sale. + """ + stocks: [StockInput!] +} + +input PreorderSettingsInput { + """ + The global threshold for preorder variant. + """ + globalThreshold: Int + + """ + The end date for preorder. + """ + endDate: DateTime +} + +input StockInput { + """ + Warehouse in which stock is located. + """ + warehouse: ID! + + """ + Quantity of items available for sell. + """ + quantity: Int! +} + +""" +Deletes a product variant. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductVariantDelete { + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! + productVariant: ProductVariant +} + +""" +Creates product variants for a given product. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductVariantBulkCreate { + """ + Returns how many objects were created. + """ + count: Int! + + """ + List of the created variants. + """ + productVariants: [ProductVariant!]! + bulkProductErrors: [BulkProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [BulkProductError!]! +} + +type BulkProductError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: ProductErrorCode! + + """ + List of attributes IDs which causes the error. + """ + attributes: [ID!] + + """ + List of attribute values IDs which causes the error. + """ + values: [ID!] + + """ + Index of an input list item that caused the error. + """ + index: Int + + """ + List of warehouse IDs which causes the error. + """ + warehouses: [ID!] + + """ + List of channel IDs which causes the error. + """ + channels: [ID!] +} + +input ProductVariantBulkCreateInput { + """ + List of attributes specific to this variant. + """ + attributes: [BulkAttributeValueInput!]! + + """ + Stock keeping unit. + """ + sku: String + + """ + Determines if the inventory of this variant should be tracked. If false, the quantity won't change when customers buy this item. + """ + trackInventory: Boolean + + """ + Weight of the Product Variant. + """ + weight: WeightScalar + + """ + Determines if variant is in preorder. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + preorder: PreorderSettingsInput + + """ + Determines maximum quantity of `ProductVariant`,that can be bought in a single checkout. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + quantityLimitPerCustomer: Int + + """ + Stocks of a product available for sale. + """ + stocks: [StockInput!] + + """ + List of prices assigned to channels. + """ + channelListings: [ProductVariantChannelListingAddInput!] +} + +input BulkAttributeValueInput { + """ + ID of the selected attribute. + """ + id: ID + + """ + The value or slug of an attribute to resolve. If the passed value is non-existent, it will be created. + """ + values: [String!] + + """ + The boolean value of an attribute to resolve. If the passed value is non-existent, it will be created. + """ + boolean: Boolean +} + +input ProductVariantChannelListingAddInput { + """ + ID of a channel. + """ + channelId: ID! + + """ + Price of the particular variant in channel. + """ + price: PositiveDecimal! + + """ + Cost price of the variant in channel. + """ + costPrice: PositiveDecimal + + """ + The threshold for preorder variant in channel. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + preorderThreshold: Int +} + +""" +Deletes product variants. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductVariantBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! +} + +""" +Creates stocks for product variant. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductVariantStocksCreate { + """ + Updated product variant. + """ + productVariant: ProductVariant + bulkStockErrors: [BulkStockError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [BulkStockError!]! +} + +type BulkStockError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: ProductErrorCode! + + """ + List of attributes IDs which causes the error. + """ + attributes: [ID!] + + """ + List of attribute values IDs which causes the error. + """ + values: [ID!] + + """ + Index of an input list item that caused the error. + """ + index: Int +} + +""" +Delete stocks from product variant. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductVariantStocksDelete { + """ + Updated product variant. + """ + productVariant: ProductVariant + stockErrors: [StockError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [StockError!]! +} + +type StockError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: StockErrorCode! +} + +""" +An enumeration. +""" +enum StockErrorCode { + ALREADY_EXISTS + GRAPHQL_ERROR + INVALID + NOT_FOUND + REQUIRED + UNIQUE +} + +""" +Update stocks for product variant. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductVariantStocksUpdate { + """ + Updated product variant. + """ + productVariant: ProductVariant + bulkStockErrors: [BulkStockError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [BulkStockError!]! +} + +""" +Updates an existing variant for product. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductVariantUpdate { + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! + productVariant: ProductVariant +} + +input ProductVariantInput { + """ + List of attributes specific to this variant. + """ + attributes: [AttributeValueInput!] + + """ + Stock keeping unit. + """ + sku: String + + """ + Determines if the inventory of this variant should be tracked. If false, the quantity won't change when customers buy this item. + """ + trackInventory: Boolean + + """ + Weight of the Product Variant. + """ + weight: WeightScalar + + """ + Determines if variant is in preorder. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + preorder: PreorderSettingsInput + + """ + Determines maximum quantity of `ProductVariant`,that can be bought in a single checkout. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + quantityLimitPerCustomer: Int +} + +""" +Set default variant for a product. Mutation triggers PRODUCT_UPDATED webhook. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductVariantSetDefault { + product: Product + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! +} + +""" +Creates/updates translations for a product variant. + +Requires one of the following permissions: MANAGE_TRANSLATIONS. +""" +type ProductVariantTranslate { + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [TranslationError!]! + productVariant: ProductVariant +} + +input NameTranslationInput { + name: String +} + +""" +Manage product variant prices in channels. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductVariantChannelListingUpdate { + """ + An updated product variant instance. + """ + variant: ProductVariant + productChannelListingErrors: [ProductChannelListingError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductChannelListingError!]! +} + +""" +Reorder product variant attribute values. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductVariantReorderAttributeValues { + """ + Product variant from which attribute values are reordered. + """ + productVariant: ProductVariant + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! +} + +""" +Deactivates product variant preorder. It changes all preorder allocation into regular allocation. + +Added in Saleor 3.1. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ProductVariantPreorderDeactivate { + """ + Product variant with ended preorder. + """ + productVariant: ProductVariant + errors: [ProductError!]! +} + +""" +Assign an media to a product variant. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type VariantMediaAssign { + productVariant: ProductVariant + media: ProductMedia + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! +} + +""" +Unassign an media from a product variant. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type VariantMediaUnassign { + productVariant: ProductVariant + media: ProductMedia + productErrors: [ProductError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ProductError!]! +} + +""" +Captures the authorized payment amount. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type PaymentCapture { + """ + Updated payment. + """ + payment: Payment + paymentErrors: [PaymentError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [PaymentError!]! +} + +type PaymentError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: PaymentErrorCode! + + """ + List of varint IDs which causes the error. + """ + variants: [ID!] +} + +""" +An enumeration. +""" +enum PaymentErrorCode { + BILLING_ADDRESS_NOT_SET + GRAPHQL_ERROR + INVALID + NOT_FOUND + REQUIRED + UNIQUE + PARTIAL_PAYMENT_NOT_ALLOWED + SHIPPING_ADDRESS_NOT_SET + INVALID_SHIPPING_METHOD + SHIPPING_METHOD_NOT_SET + PAYMENT_ERROR + NOT_SUPPORTED_GATEWAY + CHANNEL_INACTIVE + BALANCE_CHECK_ERROR + CHECKOUT_EMAIL_NOT_SET + UNAVAILABLE_VARIANT_IN_CHANNEL + NO_CHECKOUT_LINES +} + +""" +Refunds the captured payment amount. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type PaymentRefund { + """ + Updated payment. + """ + payment: Payment + paymentErrors: [PaymentError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [PaymentError!]! +} + +""" +Voids the authorized payment. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type PaymentVoid { + """ + Updated payment. + """ + payment: Payment + paymentErrors: [PaymentError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [PaymentError!]! +} + +""" +Initializes payment process when it is required by gateway. +""" +type PaymentInitialize { + initializedPayment: PaymentInitialized + paymentErrors: [PaymentError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [PaymentError!]! +} + +""" +Server-side data generated by a payment gateway. Optional step when the payment provider requires an additional action to initialize payment session. +""" +type PaymentInitialized { + """ + ID of a payment gateway. + """ + gateway: String! + + """ + Payment gateway name. + """ + name: String! + + """ + Initialized data by gateway. + """ + data: JSONString +} + +""" +Check payment balance. +""" +type PaymentCheckBalance { + """ + Response from the gateway. + """ + data: JSONString + paymentErrors: [PaymentError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [PaymentError!]! +} + +input PaymentCheckBalanceInput { + """ + An ID of a payment gateway to check. + """ + gatewayId: String! + + """ + Payment method name. + """ + method: String! + + """ + Slug of a channel for which the data should be returned. + """ + channel: String! + + """ + Information about card. + """ + card: CardInput! +} + +input CardInput { + """ + Payment method nonce, a token returned by the appropriate provider's SDK. + """ + code: String! + + """ + Card security code. + """ + cvc: String + + """ + Information about currency and amount. + """ + money: MoneyInput! +} + +input MoneyInput { + """ + Currency code. + """ + currency: String! + + """ + Amount of money. + """ + amount: PositiveDecimal! +} + +""" +Create transaction for checkout or order. Requires the following permissions: AUTHENTICATED_APP and HANDLE_PAYMENTS. + +Added in Saleor 3.4. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. +""" +type TransactionCreate { + transaction: TransactionItem + errors: [TransactionCreateError!]! +} + +type TransactionCreateError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: TransactionCreateErrorCode! +} + +""" +An enumeration. +""" +enum TransactionCreateErrorCode { + INVALID + GRAPHQL_ERROR + NOT_FOUND + INCORRECT_CURRENCY + METADATA_KEY_REQUIRED +} + +input TransactionCreateInput { + """ + Status of the transaction. + """ + status: String! + + """ + Payment type used for this transaction. + """ + type: String! + + """ + Reference of the transaction. + """ + reference: String + + """ + List of all possible actions for the transaction + """ + availableActions: [TransactionActionEnum!] + + """ + Amount authorized by this transaction. + """ + amountAuthorized: MoneyInput + + """ + Amount charged by this transaction. + """ + amountCharged: MoneyInput + + """ + Amount refunded by this transaction. + """ + amountRefunded: MoneyInput + + """ + Amount voided by this transaction. + """ + amountVoided: MoneyInput + + """ + Payment public metadata. + """ + metadata: [MetadataInput!] + + """ + Payment private metadata. + """ + privateMetadata: [MetadataInput!] +} + +input MetadataInput { + """ + Key of a metadata item. + """ + key: String! + + """ + Value of a metadata item. + """ + value: String! +} + +input TransactionEventInput { + """ + Current status of the payment transaction. + """ + status: TransactionStatus! + + """ + Reference of the transaction. + """ + reference: String + + """ + Name of the transaction. + """ + name: String +} + +""" +Create transaction for checkout or order. Requires the following permissions: AUTHENTICATED_APP and HANDLE_PAYMENTS. + +Added in Saleor 3.4. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. +""" +type TransactionUpdate { + transaction: TransactionItem + errors: [TransactionUpdateError!]! +} + +type TransactionUpdateError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: TransactionUpdateErrorCode! +} + +""" +An enumeration. +""" +enum TransactionUpdateErrorCode { + INVALID + GRAPHQL_ERROR + NOT_FOUND + INCORRECT_CURRENCY + METADATA_KEY_REQUIRED +} + +input TransactionUpdateInput { + """ + Status of the transaction. + """ + status: String + + """ + Payment type used for this transaction. + """ + type: String + + """ + Reference of the transaction. + """ + reference: String + + """ + List of all possible actions for the transaction + """ + availableActions: [TransactionActionEnum!] + + """ + Amount authorized by this transaction. + """ + amountAuthorized: MoneyInput + + """ + Amount charged by this transaction. + """ + amountCharged: MoneyInput + + """ + Amount refunded by this transaction. + """ + amountRefunded: MoneyInput + + """ + Amount voided by this transaction. + """ + amountVoided: MoneyInput + + """ + Payment public metadata. + """ + metadata: [MetadataInput!] + + """ + Payment private metadata. + """ + privateMetadata: [MetadataInput!] +} + +""" +Request an action for payment transaction. + +Added in Saleor 3.4. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. + +Requires one of the following permissions: HANDLE_PAYMENTS, MANAGE_ORDERS. +""" +type TransactionRequestAction { + transaction: TransactionItem + errors: [TransactionRequestActionError!]! +} + +type TransactionRequestActionError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: TransactionRequestActionErrorCode! +} + +""" +An enumeration. +""" +enum TransactionRequestActionErrorCode { + INVALID + GRAPHQL_ERROR + NOT_FOUND + MISSING_TRANSACTION_ACTION_REQUEST_WEBHOOK +} + +""" +Creates a new page. + +Requires one of the following permissions: MANAGE_PAGES. +""" +type PageCreate { + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [PageError!]! + page: Page +} + +type PageError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: PageErrorCode! + + """ + List of attributes IDs which causes the error. + """ + attributes: [ID!] + + """ + List of attribute values IDs which causes the error. + """ + values: [ID!] +} + +""" +An enumeration. +""" +enum PageErrorCode { + GRAPHQL_ERROR + INVALID + NOT_FOUND + REQUIRED + UNIQUE + DUPLICATED_INPUT_ITEM + ATTRIBUTE_ALREADY_ASSIGNED +} + +input PageCreateInput { + """ + Page internal name. + """ + slug: String + + """ + Page title. + """ + title: String + + """ + Page content. + + Rich text format. For reference see https://editorjs.io/ + """ + content: JSONString + + """ + List of attributes. + """ + attributes: [AttributeValueInput!] + + """ + Determines if page is visible in the storefront. + """ + isPublished: Boolean + + """ + Publication date. ISO 8601 standard. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `publishedAt` field instead. + """ + publicationDate: String + + """ + Publication date time. ISO 8601 standard. + + Added in Saleor 3.3. + """ + publishedAt: DateTime + + """ + Search engine optimization fields. + """ + seo: SeoInput + + """ + ID of the page type that page belongs to. + """ + pageType: ID! +} + +""" +Deletes a page. + +Requires one of the following permissions: MANAGE_PAGES. +""" +type PageDelete { + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [PageError!]! + page: Page +} + +""" +Deletes pages. + +Requires one of the following permissions: MANAGE_PAGES. +""" +type PageBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [PageError!]! +} + +""" +Publish pages. + +Requires one of the following permissions: MANAGE_PAGES. +""" +type PageBulkPublish { + """ + Returns how many objects were affected. + """ + count: Int! + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [PageError!]! +} + +""" +Updates an existing page. + +Requires one of the following permissions: MANAGE_PAGES. +""" +type PageUpdate { + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [PageError!]! + page: Page +} + +input PageInput { + """ + Page internal name. + """ + slug: String + + """ + Page title. + """ + title: String + + """ + Page content. + + Rich text format. For reference see https://editorjs.io/ + """ + content: JSONString + + """ + List of attributes. + """ + attributes: [AttributeValueInput!] + + """ + Determines if page is visible in the storefront. + """ + isPublished: Boolean + + """ + Publication date. ISO 8601 standard. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `publishedAt` field instead. + """ + publicationDate: String + + """ + Publication date time. ISO 8601 standard. + + Added in Saleor 3.3. + """ + publishedAt: DateTime + + """ + Search engine optimization fields. + """ + seo: SeoInput +} + +""" +Creates/updates translations for a page. + +Requires one of the following permissions: MANAGE_TRANSLATIONS. +""" +type PageTranslate { + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [TranslationError!]! + page: PageTranslatableContent +} + +input PageTranslationInput { + seoTitle: String + seoDescription: String + title: String + + """ + Translated page content. + + Rich text format. For reference see https://editorjs.io/ + """ + content: JSONString +} + +""" +Create a new page type. + +Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. +""" +type PageTypeCreate { + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [PageError!]! + pageType: PageType +} + +input PageTypeCreateInput { + """ + Name of the page type. + """ + name: String + + """ + Page type slug. + """ + slug: String + + """ + List of attribute IDs to be assigned to the page type. + """ + addAttributes: [ID!] +} + +""" +Update page type. + +Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. +""" +type PageTypeUpdate { + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [PageError!]! + pageType: PageType +} + +input PageTypeUpdateInput { + """ + Name of the page type. + """ + name: String + + """ + Page type slug. + """ + slug: String + + """ + List of attribute IDs to be assigned to the page type. + """ + addAttributes: [ID!] + + """ + List of attribute IDs to be assigned to the page type. + """ + removeAttributes: [ID!] +} + +""" +Delete a page type. + +Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. +""" +type PageTypeDelete { + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [PageError!]! + pageType: PageType +} + +""" +Delete page types. + +Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. +""" +type PageTypeBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [PageError!]! +} + +""" +Assign attributes to a given page type. + +Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. +""" +type PageAttributeAssign { + """ + The updated page type. + """ + pageType: PageType + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [PageError!]! +} + +""" +Unassign attributes from a given page type. + +Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. +""" +type PageAttributeUnassign { + """ + The updated page type. + """ + pageType: PageType + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [PageError!]! +} + +""" +Reorder the attributes of a page type. + +Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. +""" +type PageTypeReorderAttributes { + """ + Page type from which attributes are reordered. + """ + pageType: PageType + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [PageError!]! +} + +""" +Reorder page attribute values. + +Requires one of the following permissions: MANAGE_PAGES. +""" +type PageReorderAttributeValues { + """ + Page from which attribute values are reordered. + """ + page: Page + pageErrors: [PageError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [PageError!]! +} + +""" +Completes creating an order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type DraftOrderComplete { + """ + Completed order. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! +} + +""" +Creates a new draft order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type DraftOrderCreate { + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! + order: Order +} + +input DraftOrderCreateInput { + """ + Billing address of the customer. + """ + billingAddress: AddressInput + + """ + Customer associated with the draft order. + """ + user: ID + + """ + Email address of the customer. + """ + userEmail: String + + """ + Discount amount for the order. + """ + discount: PositiveDecimal + + """ + Shipping address of the customer. + """ + shippingAddress: AddressInput + + """ + ID of a selected shipping method. + """ + shippingMethod: ID + + """ + ID of the voucher associated with the order. + """ + voucher: ID + + """ + A note from a customer. Visible by customers in the order summary. + """ + customerNote: String + + """ + ID of the channel associated with the order. + """ + channelId: ID + + """ + URL of a view where users should be redirected to see the order details. URL in RFC 1808 format. + """ + redirectUrl: String + + """ + Variant line input consisting of variant ID and quantity of products. + """ + lines: [OrderLineCreateInput!] +} + +input OrderLineCreateInput { + """ + Number of variant items ordered. + """ + quantity: Int! + + """ + Product variant ID. + """ + variantId: ID! +} + +""" +Deletes a draft order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type DraftOrderDelete { + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! + order: Order +} + +""" +Deletes draft orders. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type DraftOrderBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! +} + +""" +Deletes order lines. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type DraftOrderLinesBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! +} + +""" +Updates a draft order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type DraftOrderUpdate { + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! + order: Order +} + +input DraftOrderInput { + """ + Billing address of the customer. + """ + billingAddress: AddressInput + + """ + Customer associated with the draft order. + """ + user: ID + + """ + Email address of the customer. + """ + userEmail: String + + """ + Discount amount for the order. + """ + discount: PositiveDecimal + + """ + Shipping address of the customer. + """ + shippingAddress: AddressInput + + """ + ID of a selected shipping method. + """ + shippingMethod: ID + + """ + ID of the voucher associated with the order. + """ + voucher: ID + + """ + A note from a customer. Visible by customers in the order summary. + """ + customerNote: String + + """ + ID of the channel associated with the order. + """ + channelId: ID + + """ + URL of a view where users should be redirected to see the order details. URL in RFC 1808 format. + """ + redirectUrl: String +} + +""" +Adds note to the order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderAddNote { + """ + Order with the note added. + """ + order: Order + + """ + Order note created. + """ + event: OrderEvent + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! +} + +input OrderAddNoteInput { + """ + Note message. + """ + message: String! +} + +""" +Cancel an order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderCancel { + """ + Canceled order. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! +} + +""" +Capture an order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderCapture { + """ + Captured order. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! +} + +""" +Confirms an unconfirmed order by changing status to unfulfilled. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderConfirm { + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! +} + +""" +Creates new fulfillments for an order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderFulfill { + """ + List of created fulfillments. + """ + fulfillments: [Fulfillment!] + + """ + Fulfilled order. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! +} + +input OrderFulfillInput { + """ + List of items informing how to fulfill the order. + """ + lines: [OrderFulfillLineInput!]! + + """ + If true, send an email notification to the customer. + """ + notifyCustomer: Boolean + + """ + If true, then allow proceed fulfillment when stock is exceeded. + """ + allowStockToBeExceeded: Boolean = false +} + +input OrderFulfillLineInput { + """ + The ID of the order line. + """ + orderLineId: ID + + """ + List of stock items to create. + """ + stocks: [OrderFulfillStockInput!]! +} + +input OrderFulfillStockInput { + """ + The number of line items to be fulfilled from given warehouse. + """ + quantity: Int! + + """ + ID of the warehouse from which the item will be fulfilled. + """ + warehouse: ID! +} + +""" +Cancels existing fulfillment and optionally restocks items. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type FulfillmentCancel { + """ + A canceled fulfillment. + """ + fulfillment: Fulfillment + + """ + Order which fulfillment was cancelled. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! +} + +input FulfillmentCancelInput { + """ + ID of a warehouse where items will be restocked. Optional when fulfillment is in WAITING_FOR_APPROVAL state. + """ + warehouseId: ID +} + +""" +Approve existing fulfillment. + +Added in Saleor 3.1. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type FulfillmentApprove { + """ + An approved fulfillment. + """ + fulfillment: Fulfillment + + """ + Order which fulfillment was approved. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! +} + +""" +Updates a fulfillment for an order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type FulfillmentUpdateTracking { + """ + A fulfillment with updated tracking. + """ + fulfillment: Fulfillment + + """ + Order for which fulfillment was updated. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! +} + +input FulfillmentUpdateTrackingInput { + """ + Fulfillment tracking number. + """ + trackingNumber: String + + """ + If true, send an email notification to the customer. + """ + notifyCustomer: Boolean = false +} + +""" +Refund products. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type FulfillmentRefundProducts { + """ + A refunded fulfillment. + """ + fulfillment: Fulfillment + + """ + Order which fulfillment was refunded. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! +} + +input OrderRefundProductsInput { + """ + List of unfulfilled lines to refund. + """ + orderLines: [OrderRefundLineInput!] + + """ + List of fulfilled lines to refund. + """ + fulfillmentLines: [OrderRefundFulfillmentLineInput!] + + """ + The total amount of refund when the value is provided manually. + """ + amountToRefund: PositiveDecimal + + """ + If true, Saleor will refund shipping costs. If amountToRefund is providedincludeShippingCosts will be ignored. + """ + includeShippingCosts: Boolean = false +} + +input OrderRefundLineInput { + """ + The ID of the order line to refund. + """ + orderLineId: ID! + + """ + The number of items to be refunded. + """ + quantity: Int! +} + +input OrderRefundFulfillmentLineInput { + """ + The ID of the fulfillment line to refund. + """ + fulfillmentLineId: ID! + + """ + The number of items to be refunded. + """ + quantity: Int! +} + +""" +Return products. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type FulfillmentReturnProducts { + """ + A return fulfillment. + """ + returnFulfillment: Fulfillment + + """ + A replace fulfillment. + """ + replaceFulfillment: Fulfillment + + """ + Order which fulfillment was returned. + """ + order: Order + + """ + A draft order which was created for products with replace flag. + """ + replaceOrder: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! +} + +input OrderReturnProductsInput { + """ + List of unfulfilled lines to return. + """ + orderLines: [OrderReturnLineInput!] + + """ + List of fulfilled lines to return. + """ + fulfillmentLines: [OrderReturnFulfillmentLineInput!] + + """ + The total amount of refund when the value is provided manually. + """ + amountToRefund: PositiveDecimal + + """ + If true, Saleor will refund shipping costs. If amountToRefund is providedincludeShippingCosts will be ignored. + """ + includeShippingCosts: Boolean = false + + """ + If true, Saleor will call refund action for all lines. + """ + refund: Boolean = false +} + +input OrderReturnLineInput { + """ + The ID of the order line to return. + """ + orderLineId: ID! + + """ + The number of items to be returned. + """ + quantity: Int! + + """ + Determines, if the line should be added to replace order. + """ + replace: Boolean = false +} + +input OrderReturnFulfillmentLineInput { + """ + The ID of the fulfillment line to return. + """ + fulfillmentLineId: ID! + + """ + The number of items to be returned. + """ + quantity: Int! + + """ + Determines, if the line should be added to replace order. + """ + replace: Boolean = false +} + +""" +Create order lines for an order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderLinesCreate { + """ + Related order. + """ + order: Order + + """ + List of added order lines. + """ + orderLines: [OrderLine!] + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! +} + +""" +Deletes an order line from an order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderLineDelete { + """ + A related order. + """ + order: Order + + """ + An order line that was deleted. + """ + orderLine: OrderLine + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! +} + +""" +Updates an order line of an order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderLineUpdate { + """ + Related order. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! + orderLine: OrderLine +} + +input OrderLineInput { + """ + Number of variant items ordered. + """ + quantity: Int! +} + +""" +Adds discount to the order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderDiscountAdd { + """ + Order which has been discounted. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! +} + +input OrderDiscountCommonInput { + """ + Type of the discount: fixed or percent + """ + valueType: DiscountValueTypeEnum! + + """ + Value of the discount. Can store fixed value or percent value + """ + value: PositiveDecimal! + + """ + Explanation for the applied discount. + """ + reason: String +} + +""" +Update discount for the order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderDiscountUpdate { + """ + Order which has been discounted. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! +} + +""" +Remove discount from the order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderDiscountDelete { + """ + Order which has removed discount. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! +} + +""" +Update discount for the order line. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderLineDiscountUpdate { + """ + Order line which has been discounted. + """ + orderLine: OrderLine + + """ + Order which is related to the discounted line. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! +} + +""" +Remove discount applied to the order line. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderLineDiscountRemove { + """ + Order line which has removed discount. + """ + orderLine: OrderLine + + """ + Order which is related to line which has removed discount. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! +} + +""" +Mark order as manually paid. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderMarkAsPaid { + """ + Order marked as paid. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! +} + +""" +Refund an order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderRefund { + """ + A refunded order. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! +} + +""" +Updates an order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderUpdate { + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! + order: Order +} + +input OrderUpdateInput { + """ + Billing address of the customer. + """ + billingAddress: AddressInput + + """ + Email address of the customer. + """ + userEmail: String + + """ + Shipping address of the customer. + """ + shippingAddress: AddressInput +} + +""" +Updates a shipping method of the order. Requires shipping method ID to update, when null is passed then currently assigned shipping method is removed. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderUpdateShipping { + """ + Order with updated shipping method. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! +} + +input OrderUpdateShippingInput { + """ + ID of the selected shipping method, pass null to remove currently assigned shipping method. + """ + shippingMethod: ID +} + +""" +Void an order. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderVoid { + """ + A voided order. + """ + order: Order + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! +} + +""" +Cancels orders. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type OrderBulkCancel { + """ + Returns how many objects were affected. + """ + count: Int! + orderErrors: [OrderError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [OrderError!]! +} + +""" +Delete metadata of an object. To use it, you need to have access to the modified object. +""" +type DeleteMetadata { + metadataErrors: [MetadataError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [MetadataError!]! + item: ObjectWithMetadata +} + +type MetadataError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: MetadataErrorCode! +} + +""" +An enumeration. +""" +enum MetadataErrorCode { + GRAPHQL_ERROR + INVALID + NOT_FOUND + REQUIRED + NOT_UPDATED +} + +""" +Delete object's private metadata. To use it, you need to be an authenticated staff user or an app and have access to the modified object. +""" +type DeletePrivateMetadata { + metadataErrors: [MetadataError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [MetadataError!]! + item: ObjectWithMetadata +} + +""" +Updates metadata of an object. To use it, you need to have access to the modified object. +""" +type UpdateMetadata { + metadataErrors: [MetadataError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [MetadataError!]! + item: ObjectWithMetadata +} + +""" +Updates private metadata of an object. To use it, you need to be an authenticated staff user or an app and have access to the modified object. +""" +type UpdatePrivateMetadata { + metadataErrors: [MetadataError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [MetadataError!]! + item: ObjectWithMetadata +} + +""" +Assigns storefront's navigation menus. + +Requires one of the following permissions: MANAGE_MENUS, MANAGE_SETTINGS. +""" +type AssignNavigation { + """ + Assigned navigation menu. + """ + menu: Menu + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [MenuError!]! +} + +type MenuError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: MenuErrorCode! +} + +""" +An enumeration. +""" +enum MenuErrorCode { + CANNOT_ASSIGN_NODE + GRAPHQL_ERROR + INVALID + INVALID_MENU_ITEM + NO_MENU_ITEM_PROVIDED + NOT_FOUND + REQUIRED + TOO_MANY_MENU_ITEMS + UNIQUE +} + +enum NavigationType { + """ + Main storefront navigation. + """ + MAIN + + """ + Secondary storefront navigation. + """ + SECONDARY +} + +""" +Creates a new Menu. + +Requires one of the following permissions: MANAGE_MENUS. +""" +type MenuCreate { + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [MenuError!]! + menu: Menu +} + +input MenuCreateInput { + """ + Name of the menu. + """ + name: String! + + """ + Slug of the menu. Will be generated if not provided. + """ + slug: String + + """ + List of menu items. + """ + items: [MenuItemInput!] +} + +input MenuItemInput { + """ + Name of the menu item. + """ + name: String + + """ + URL of the pointed item. + """ + url: String + + """ + Category to which item points. + """ + category: ID + + """ + Collection to which item points. + """ + collection: ID + + """ + Page to which item points. + """ + page: ID +} + +""" +Deletes a menu. + +Requires one of the following permissions: MANAGE_MENUS. +""" +type MenuDelete { + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [MenuError!]! + menu: Menu +} + +""" +Deletes menus. + +Requires one of the following permissions: MANAGE_MENUS. +""" +type MenuBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [MenuError!]! +} + +""" +Updates a menu. + +Requires one of the following permissions: MANAGE_MENUS. +""" +type MenuUpdate { + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [MenuError!]! + menu: Menu +} + +input MenuInput { + """ + Name of the menu. + """ + name: String + + """ + Slug of the menu. + """ + slug: String +} + +""" +Creates a new menu item. + +Requires one of the following permissions: MANAGE_MENUS. +""" +type MenuItemCreate { + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [MenuError!]! + menuItem: MenuItem +} + +input MenuItemCreateInput { + """ + Name of the menu item. + """ + name: String! + + """ + URL of the pointed item. + """ + url: String + + """ + Category to which item points. + """ + category: ID + + """ + Collection to which item points. + """ + collection: ID + + """ + Page to which item points. + """ + page: ID + + """ + Menu to which item belongs. + """ + menu: ID! + + """ + ID of the parent menu. If empty, menu will be top level menu. + """ + parent: ID +} + +""" +Deletes a menu item. + +Requires one of the following permissions: MANAGE_MENUS. +""" +type MenuItemDelete { + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [MenuError!]! + menuItem: MenuItem +} + +""" +Deletes menu items. + +Requires one of the following permissions: MANAGE_MENUS. +""" +type MenuItemBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [MenuError!]! +} + +""" +Updates a menu item. + +Requires one of the following permissions: MANAGE_MENUS. +""" +type MenuItemUpdate { + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [MenuError!]! + menuItem: MenuItem +} + +""" +Creates/updates translations for a menu item. + +Requires one of the following permissions: MANAGE_TRANSLATIONS. +""" +type MenuItemTranslate { + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [TranslationError!]! + menuItem: MenuItem +} + +""" +Moves items of menus. + +Requires one of the following permissions: MANAGE_MENUS. +""" +type MenuItemMove { + """ + Assigned menu to move within. + """ + menu: Menu + menuErrors: [MenuError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [MenuError!]! +} + +input MenuItemMoveInput { + """ + The menu item ID to move. + """ + itemId: ID! + + """ + ID of the parent menu. If empty, menu will be top level menu. + """ + parentId: ID + + """ + The new relative sorting position of the item (from -inf to +inf). 1 moves the item one position forward, -1 moves the item one position backward, 0 leaves the item unchanged. + """ + sortOrder: Int +} + +""" +Request an invoice for the order using plugin. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type InvoiceRequest { + """ + Order related to an invoice. + """ + order: Order + invoiceErrors: [InvoiceError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [InvoiceError!]! + invoice: Invoice +} + +type InvoiceError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: InvoiceErrorCode! +} + +""" +An enumeration. +""" +enum InvoiceErrorCode { + REQUIRED + NOT_READY + URL_NOT_SET + EMAIL_NOT_SET + NUMBER_NOT_SET + NOT_FOUND + INVALID_STATUS + NO_INVOICE_PLUGIN +} + +""" +Requests deletion of an invoice. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type InvoiceRequestDelete { + invoiceErrors: [InvoiceError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [InvoiceError!]! + invoice: Invoice +} + +""" +Creates a ready to send invoice. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type InvoiceCreate { + invoiceErrors: [InvoiceError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [InvoiceError!]! + invoice: Invoice +} + +input InvoiceCreateInput { + """ + Invoice number. + """ + number: String! + + """ + URL of an invoice to download. + """ + url: String! +} + +""" +Deletes an invoice. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type InvoiceDelete { + invoiceErrors: [InvoiceError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [InvoiceError!]! + invoice: Invoice +} + +""" +Updates an invoice. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type InvoiceUpdate { + invoiceErrors: [InvoiceError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [InvoiceError!]! + invoice: Invoice +} + +input UpdateInvoiceInput { + """ + Invoice number + """ + number: String + + """ + URL of an invoice to download. + """ + url: String +} + +""" +Send an invoice notification to the customer. + +Requires one of the following permissions: MANAGE_ORDERS. +""" +type InvoiceSendNotification { + invoiceErrors: [InvoiceError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [InvoiceError!]! + invoice: Invoice +} + +""" +Activate a gift card. + +Requires one of the following permissions: MANAGE_GIFT_CARD. +""" +type GiftCardActivate { + """ + Activated gift card. + """ + giftCard: GiftCard + giftCardErrors: [GiftCardError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [GiftCardError!]! +} + +type GiftCardError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: GiftCardErrorCode! + + """ + List of tag values that cause the error. + """ + tags: [String!] +} + +""" +An enumeration. +""" +enum GiftCardErrorCode { + ALREADY_EXISTS + GRAPHQL_ERROR + INVALID + NOT_FOUND + REQUIRED + UNIQUE + EXPIRED_GIFT_CARD + DUPLICATED_INPUT_ITEM +} + +""" +Creates a new gift card. + +Requires one of the following permissions: MANAGE_GIFT_CARD. +""" +type GiftCardCreate { + giftCardErrors: [GiftCardError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [GiftCardError!]! + giftCard: GiftCard +} + +input GiftCardCreateInput { + """ + The gift card tags to add. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + addTags: [String!] + + """ + The gift card expiry date. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + expiryDate: Date + + """ + Start date of the gift card in ISO 8601 format. + + DEPRECATED: this field will be removed in Saleor 4.0. + """ + startDate: Date + + """ + End date of the gift card in ISO 8601 format. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `expiryDate` from `expirySettings` instead. + """ + endDate: Date + + """ + Balance of the gift card. + """ + balance: PriceInput! + + """ + Email of the customer to whom gift card will be sent. + """ + userEmail: String + + """ + Slug of a channel from which the email should be sent. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + channel: String + + """ + Determine if gift card is active. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + isActive: Boolean! + + """ + Code to use the gift card. + + DEPRECATED: this field will be removed in Saleor 4.0. The code is now auto generated. + """ + code: String + + """ + The gift card note from the staff member. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + note: String +} + +input PriceInput { + """ + Currency code. + """ + currency: String! + + """ + Amount of money. + """ + amount: PositiveDecimal! +} + +""" +Delete gift card. + +Added in Saleor 3.1. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. + +Requires one of the following permissions: MANAGE_GIFT_CARD. +""" +type GiftCardDelete { + giftCardErrors: [GiftCardError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [GiftCardError!]! + giftCard: GiftCard +} + +""" +Deactivate a gift card. + +Requires one of the following permissions: MANAGE_GIFT_CARD. +""" +type GiftCardDeactivate { + """ + Deactivated gift card. + """ + giftCard: GiftCard + giftCardErrors: [GiftCardError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [GiftCardError!]! +} + +""" +Update a gift card. + +Requires one of the following permissions: MANAGE_GIFT_CARD. +""" +type GiftCardUpdate { + giftCardErrors: [GiftCardError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [GiftCardError!]! + giftCard: GiftCard +} + +input GiftCardUpdateInput { + """ + The gift card tags to add. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + addTags: [String!] + + """ + The gift card expiry date. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + expiryDate: Date + + """ + Start date of the gift card in ISO 8601 format. + + DEPRECATED: this field will be removed in Saleor 4.0. + """ + startDate: Date + + """ + End date of the gift card in ISO 8601 format. + + DEPRECATED: this field will be removed in Saleor 4.0. Use `expiryDate` from `expirySettings` instead. + """ + endDate: Date + + """ + The gift card tags to remove. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + removeTags: [String!] + + """ + The gift card balance amount. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + balanceAmount: PositiveDecimal +} + +""" +Resend a gift card. + +Added in Saleor 3.1. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. + +Requires one of the following permissions: MANAGE_GIFT_CARD. +""" +type GiftCardResend { + """ + Gift card which has been sent. + """ + giftCard: GiftCard + errors: [GiftCardError!]! +} + +input GiftCardResendInput { + """ + ID of a gift card to resend. + """ + id: ID! + + """ + Email to which gift card should be send. + """ + email: String + + """ + Slug of a channel from which the email should be sent. + """ + channel: String! +} + +""" +Adds note to the gift card. + +Added in Saleor 3.1. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. + +Requires one of the following permissions: MANAGE_GIFT_CARD. +""" +type GiftCardAddNote { + """ + Gift card with the note added. + """ + giftCard: GiftCard + + """ + Gift card note created. + """ + event: GiftCardEvent + errors: [GiftCardError!]! +} + +input GiftCardAddNoteInput { + """ + Note message. + """ + message: String! +} + +""" +Create gift cards. + +Added in Saleor 3.1. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. + +Requires one of the following permissions: MANAGE_GIFT_CARD. +""" +type GiftCardBulkCreate { + """ + Returns how many objects were created. + """ + count: Int! + + """ + List of created gift cards. + """ + giftCards: [GiftCard!]! + errors: [GiftCardError!]! +} + +input GiftCardBulkCreateInput { + """ + The number of cards to issue. + """ + count: Int! + + """ + Balance of the gift card. + """ + balance: PriceInput! + + """ + The gift card tags. + """ + tags: [String!] + + """ + The gift card expiry date. + """ + expiryDate: Date + + """ + Determine if gift card is active. + """ + isActive: Boolean! +} + +""" +Delete gift cards. + +Added in Saleor 3.1. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. + +Requires one of the following permissions: MANAGE_GIFT_CARD. +""" +type GiftCardBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + errors: [GiftCardError!]! +} + +""" +Activate gift cards. + +Added in Saleor 3.1. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. + +Requires one of the following permissions: MANAGE_GIFT_CARD. +""" +type GiftCardBulkActivate { + """ + Returns how many objects were affected. + """ + count: Int! + errors: [GiftCardError!]! +} + +""" +Deactivate gift cards. + +Added in Saleor 3.1. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. + +Requires one of the following permissions: MANAGE_GIFT_CARD. +""" +type GiftCardBulkDeactivate { + """ + Returns how many objects were affected. + """ + count: Int! + errors: [GiftCardError!]! +} + +""" +Update plugin configuration. + +Requires one of the following permissions: MANAGE_PLUGINS. +""" +type PluginUpdate { + plugin: Plugin + pluginsErrors: [PluginError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [PluginError!]! +} + +type PluginError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: PluginErrorCode! +} + +""" +An enumeration. +""" +enum PluginErrorCode { + GRAPHQL_ERROR + INVALID + PLUGIN_MISCONFIGURED + NOT_FOUND + REQUIRED + UNIQUE +} + +input PluginUpdateInput { + """ + Indicates whether the plugin should be enabled. + """ + active: Boolean + + """ + Configuration of the plugin. + """ + configuration: [ConfigurationItemInput!] +} + +input ConfigurationItemInput { + """ + Name of the field to update. + """ + name: String! + + """ + Value of the given field to update. + """ + value: String +} + +""" +Trigger sending a notification with the notify plugin method. Serializes nodes provided as ids parameter and includes this data in the notification payload. + +Added in Saleor 3.1. +""" +type ExternalNotificationTrigger { + errors: [ExternalNotificationError!]! +} + +type ExternalNotificationError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: ExternalNotificationErrorCodes! +} + +""" +An enumeration. +""" +enum ExternalNotificationErrorCodes { + REQUIRED + INVALID_MODEL_TYPE + NOT_FOUND + CHANNEL_INACTIVE +} + +input ExternalNotificationTriggerInput { + """ + The list of customers or orders node IDs that will be serialized and included in the notification payload. + """ + ids: [ID!]! + + """ + Additional payload that will be merged with the one based on the bussines object ID. + """ + extraPayload: JSONString + + """ + External event type. This field is passed to a plugin as an event type. + """ + externalEventType: String! +} + +""" +Creates a new sale. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type SaleCreate { + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! + sale: Sale +} + +type DiscountError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + List of products IDs which causes the error. + """ + products: [ID!] + + """ + The error code. + """ + code: DiscountErrorCode! + + """ + List of channels IDs which causes the error. + """ + channels: [ID!] +} + +""" +An enumeration. +""" +enum DiscountErrorCode { + ALREADY_EXISTS + GRAPHQL_ERROR + INVALID + NOT_FOUND + REQUIRED + UNIQUE + CANNOT_MANAGE_PRODUCT_WITHOUT_VARIANT + DUPLICATED_INPUT_ITEM +} + +input SaleInput { + """ + Voucher name. + """ + name: String + + """ + Fixed or percentage. + """ + type: DiscountValueTypeEnum + + """ + Value of the voucher. + """ + value: PositiveDecimal + + """ + Products related to the discount. + """ + products: [ID!] + variants: [ID!] + + """ + Categories related to the discount. + """ + categories: [ID!] + + """ + Collections related to the discount. + """ + collections: [ID!] + + """ + Start date of the voucher in ISO 8601 format. + """ + startDate: DateTime + + """ + End date of the voucher in ISO 8601 format. + """ + endDate: DateTime +} + +""" +Deletes a sale. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type SaleDelete { + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! + sale: Sale +} + +""" +Deletes sales. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type SaleBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! +} + +""" +Updates a sale. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type SaleUpdate { + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! + sale: Sale +} + +""" +Adds products, categories, collections to a voucher. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type SaleAddCatalogues { + """ + Sale of which catalogue IDs will be modified. + """ + sale: Sale + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! +} + +input CatalogueInput { + """ + Products related to the discount. + """ + products: [ID!] + + """ + Categories related to the discount. + """ + categories: [ID!] + + """ + Collections related to the discount. + """ + collections: [ID!] + + """ + Product variant related to the discount. + + Added in Saleor 3.1. + """ + variants: [ID!] +} + +""" +Removes products, categories, collections from a sale. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type SaleRemoveCatalogues { + """ + Sale of which catalogue IDs will be modified. + """ + sale: Sale + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! +} + +""" +Creates/updates translations for a sale. + +Requires one of the following permissions: MANAGE_TRANSLATIONS. +""" +type SaleTranslate { + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [TranslationError!]! + sale: Sale +} + +""" +Manage sale's availability in channels. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type SaleChannelListingUpdate { + """ + An updated sale instance. + """ + sale: Sale + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! +} + +input SaleChannelListingInput { + """ + List of channels to which the sale should be assigned. + """ + addChannels: [SaleChannelListingAddInput!] + + """ + List of channels from which the sale should be unassigned. + """ + removeChannels: [ID!] +} + +input SaleChannelListingAddInput { + """ + ID of a channel. + """ + channelId: ID! + + """ + The value of the discount. + """ + discountValue: PositiveDecimal! +} + +""" +Creates a new voucher. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type VoucherCreate { + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! + voucher: Voucher +} + +input VoucherInput { + """ + Voucher type: PRODUCT, CATEGORY SHIPPING or ENTIRE_ORDER. + """ + type: VoucherTypeEnum + + """ + Voucher name. + """ + name: String + + """ + Code to use the voucher. + """ + code: String + + """ + Start date of the voucher in ISO 8601 format. + """ + startDate: DateTime + + """ + End date of the voucher in ISO 8601 format. + """ + endDate: DateTime + + """ + Choices: fixed or percentage. + """ + discountValueType: DiscountValueTypeEnum + + """ + Products discounted by the voucher. + """ + products: [ID!] + + """ + Variants discounted by the voucher. + + Added in Saleor 3.1. + """ + variants: [ID!] + + """ + Collections discounted by the voucher. + """ + collections: [ID!] + + """ + Categories discounted by the voucher. + """ + categories: [ID!] + + """ + Minimal quantity of checkout items required to apply the voucher. + """ + minCheckoutItemsQuantity: Int + + """ + Country codes that can be used with the shipping voucher. + """ + countries: [String!] + + """ + Voucher should be applied to the cheapest item or entire order. + """ + applyOncePerOrder: Boolean + + """ + Voucher should be applied once per customer. + """ + applyOncePerCustomer: Boolean + + """ + Voucher can be used only by staff user. + """ + onlyForStaff: Boolean + + """ + Limit number of times this voucher can be used in total. + """ + usageLimit: Int +} + +""" +Deletes a voucher. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type VoucherDelete { + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! + voucher: Voucher +} + +""" +Deletes vouchers. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type VoucherBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! +} + +""" +Updates a voucher. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type VoucherUpdate { + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! + voucher: Voucher +} + +""" +Adds products, categories, collections to a voucher. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type VoucherAddCatalogues { + """ + Voucher of which catalogue IDs will be modified. + """ + voucher: Voucher + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! +} + +""" +Removes products, categories, collections from a voucher. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type VoucherRemoveCatalogues { + """ + Voucher of which catalogue IDs will be modified. + """ + voucher: Voucher + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! +} + +""" +Creates/updates translations for a voucher. + +Requires one of the following permissions: MANAGE_TRANSLATIONS. +""" +type VoucherTranslate { + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [TranslationError!]! + voucher: Voucher +} + +""" +Manage voucher's availability in channels. + +Requires one of the following permissions: MANAGE_DISCOUNTS. +""" +type VoucherChannelListingUpdate { + """ + An updated voucher instance. + """ + voucher: Voucher + discountErrors: [DiscountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [DiscountError!]! +} + +input VoucherChannelListingInput { + """ + List of channels to which the voucher should be assigned. + """ + addChannels: [VoucherChannelListingAddInput!] + + """ + List of channels from which the voucher should be unassigned. + """ + removeChannels: [ID!] +} + +input VoucherChannelListingAddInput { + """ + ID of a channel. + """ + channelId: ID! + + """ + Value of the voucher. + """ + discountValue: PositiveDecimal + + """ + Min purchase amount required to apply the voucher. + """ + minAmountSpent: PositiveDecimal +} + +""" +Export products to csv file. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type ExportProducts { + """ + The newly created export file job which is responsible for export data. + """ + exportFile: ExportFile + exportErrors: [ExportError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ExportError!]! +} + +type ExportError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: ExportErrorCode! +} + +""" +An enumeration. +""" +enum ExportErrorCode { + GRAPHQL_ERROR + INVALID + NOT_FOUND + REQUIRED +} + +input ExportProductsInput { + """ + Determine which products should be exported. + """ + scope: ExportScope! + + """ + Filtering options for products. + """ + filter: ProductFilterInput + + """ + List of products IDs to export. + """ + ids: [ID!] + + """ + Input with info about fields which should be exported. + """ + exportInfo: ExportInfoInput + + """ + Type of exported file. + """ + fileType: FileTypesEnum! +} + +enum ExportScope { + """ + Export all products. + """ + ALL + + """ + Export products with given ids. + """ + IDS + + """ + Export the filtered products. + """ + FILTER +} + +input ExportInfoInput { + """ + List of attribute ids witch should be exported. + """ + attributes: [ID!] + + """ + List of warehouse ids witch should be exported. + """ + warehouses: [ID!] + + """ + List of channels ids which should be exported. + """ + channels: [ID!] + + """ + List of product fields witch should be exported. + """ + fields: [ProductFieldEnum!] +} + +enum ProductFieldEnum { + NAME + DESCRIPTION + PRODUCT_TYPE + CATEGORY + PRODUCT_WEIGHT + COLLECTIONS + CHARGE_TAXES + PRODUCT_MEDIA + VARIANT_ID + VARIANT_SKU + VARIANT_WEIGHT + VARIANT_MEDIA +} + +""" +An enumeration. +""" +enum FileTypesEnum { + CSV + XLSX +} + +""" +Export gift cards to csv file. + +Added in Saleor 3.1. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. + +Requires one of the following permissions: MANAGE_GIFT_CARD. +""" +type ExportGiftCards { + """ + The newly created export file job which is responsible for export data. + """ + exportFile: ExportFile + errors: [ExportError!]! +} + +input ExportGiftCardsInput { + """ + Determine which gift cards should be exported. + """ + scope: ExportScope! + + """ + Filtering options for gift cards. + """ + filter: GiftCardFilterInput + + """ + List of gift cards IDs to export. + """ + ids: [ID!] + + """ + Type of exported file. + """ + fileType: FileTypesEnum! +} + +""" +Upload a file. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + +Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_STAFF_USER. +""" +type FileUpload { + uploadedFile: File + uploadErrors: [UploadError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [UploadError!]! +} + +type UploadError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: UploadErrorCode! +} + +""" +An enumeration. +""" +enum UploadErrorCode { + GRAPHQL_ERROR +} + +""" +Adds a gift card or a voucher to a checkout. +""" +type CheckoutAddPromoCode { + """ + The checkout with the added gift card or voucher. + """ + checkout: Checkout + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CheckoutError!]! +} + +type CheckoutError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: CheckoutErrorCode! + + """ + List of varint IDs which causes the error. + """ + variants: [ID!] + + """ + List of line Ids which cause the error. + """ + lines: [ID!] + + """ + A type of address that causes the error. + """ + addressType: AddressTypeEnum +} + +""" +An enumeration. +""" +enum CheckoutErrorCode { + BILLING_ADDRESS_NOT_SET + CHECKOUT_NOT_FULLY_PAID + GRAPHQL_ERROR + PRODUCT_NOT_PUBLISHED + PRODUCT_UNAVAILABLE_FOR_PURCHASE + INSUFFICIENT_STOCK + INVALID + INVALID_SHIPPING_METHOD + NOT_FOUND + PAYMENT_ERROR + QUANTITY_GREATER_THAN_LIMIT + REQUIRED + SHIPPING_ADDRESS_NOT_SET + SHIPPING_METHOD_NOT_APPLICABLE + DELIVERY_METHOD_NOT_APPLICABLE + SHIPPING_METHOD_NOT_SET + SHIPPING_NOT_REQUIRED + TAX_ERROR + UNIQUE + VOUCHER_NOT_APPLICABLE + GIFT_CARD_NOT_APPLICABLE + ZERO_QUANTITY + MISSING_CHANNEL_SLUG + CHANNEL_INACTIVE + UNAVAILABLE_VARIANT_IN_CHANNEL + EMAIL_NOT_SET + NO_LINES +} + +""" +Update billing address in the existing checkout. +""" +type CheckoutBillingAddressUpdate { + """ + An updated checkout. + """ + checkout: Checkout + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CheckoutError!]! +} + +""" +Completes the checkout. As a result a new order is created and a payment charge is made. This action requires a successful payment before it can be performed. In case additional confirmation step as 3D secure is required confirmationNeeded flag will be set to True and no order created until payment is confirmed with second call of this mutation. +""" +type CheckoutComplete { + """ + Placed order. + """ + order: Order + + """ + Set to true if payment needs to be confirmed before checkout is complete. + """ + confirmationNeeded: Boolean! + + """ + Confirmation data used to process additional authorization steps. + """ + confirmationData: JSONString + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CheckoutError!]! +} + +""" +Create a new checkout. +""" +type CheckoutCreate { + """ + Whether the checkout was created or the current active one was returned. Refer to checkoutLinesAdd and checkoutLinesUpdate to merge a cart with an active checkout. + """ + created: Boolean + @deprecated(reason: "This field will be removed in Saleor 4.0. Always returns `true`.") + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CheckoutError!]! + checkout: Checkout +} + +input CheckoutCreateInput { + """ + Slug of a channel in which to create a checkout. + """ + channel: String + + """ + A list of checkout lines, each containing information about an item in the checkout. + """ + lines: [CheckoutLineInput!]! + + """ + The customer's email address. + """ + email: String + + """ + The mailing address to where the checkout will be shipped. Note: the address will be ignored if the checkout doesn't contain shippable items. + """ + shippingAddress: AddressInput + + """ + Billing address of the customer. + """ + billingAddress: AddressInput + + """ + Checkout language code. + """ + languageCode: LanguageCodeEnum +} + +input CheckoutLineInput { + """ + The number of items purchased. + """ + quantity: Int! + + """ + ID of the product variant. + """ + variantId: ID! + + """ + Custom price of the item. Can be set only by apps with `HANDLE_CHECKOUTS` permission. When the line with the same variant will be provided multiple times, the last price will be used. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + price: PositiveDecimal +} + +""" +Sets the customer as the owner of the checkout. + +Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_USER. +""" +type CheckoutCustomerAttach { + """ + An updated checkout. + """ + checkout: Checkout + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CheckoutError!]! +} + +""" +Removes the user assigned as the owner of the checkout. + +Requires one of the following permissions: AUTHENTICATED_APP, AUTHENTICATED_USER. +""" +type CheckoutCustomerDetach { + """ + An updated checkout. + """ + checkout: Checkout + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CheckoutError!]! +} + +""" +Updates email address in the existing checkout object. +""" +type CheckoutEmailUpdate { + """ + An updated checkout. + """ + checkout: Checkout + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CheckoutError!]! +} + +""" +Deletes a CheckoutLine. +""" +type CheckoutLineDelete { + """ + An updated checkout. + """ + checkout: Checkout + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CheckoutError!]! +} + +""" +Deletes checkout lines. +""" +type CheckoutLinesDelete { + """ + An updated checkout. + """ + checkout: Checkout + errors: [CheckoutError!]! +} + +""" +Adds a checkout line to the existing checkout.If line was already in checkout, its quantity will be increased. +""" +type CheckoutLinesAdd { + """ + An updated checkout. + """ + checkout: Checkout + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CheckoutError!]! +} + +""" +Updates checkout line in the existing checkout. +""" +type CheckoutLinesUpdate { + """ + An updated checkout. + """ + checkout: Checkout + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CheckoutError!]! +} + +input CheckoutLineUpdateInput { + """ + The number of items purchased. Optional for apps, required for any other users. + """ + quantity: Int + + """ + ID of the product variant. + """ + variantId: ID! + + """ + Custom price of the item. Can be set only by apps with `HANDLE_CHECKOUTS` permission. When the line with the same variant will be provided multiple times, the last price will be used. + + Added in Saleor 3.1. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + price: PositiveDecimal +} + +""" +Remove a gift card or a voucher from a checkout. +""" +type CheckoutRemovePromoCode { + """ + The checkout with the removed gift card or voucher. + """ + checkout: Checkout + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CheckoutError!]! +} + +""" +Create a new payment for given checkout. +""" +type CheckoutPaymentCreate { + """ + Related checkout object. + """ + checkout: Checkout + + """ + A newly created payment. + """ + payment: Payment + paymentErrors: [PaymentError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [PaymentError!]! +} + +input PaymentInput { + """ + A gateway to use with that payment. + """ + gateway: String! + + """ + Client-side generated payment token, representing customer's billing data in a secure manner. + """ + token: String + + """ + Total amount of the transaction, including all taxes and discounts. If no amount is provided, the checkout total will be used. + """ + amount: PositiveDecimal + + """ + URL of a storefront view where user should be redirected after requiring additional actions. Payment with additional actions will not be finished if this field is not provided. + """ + returnUrl: String + + """ + Payment store type. + + Added in Saleor 3.1. + """ + storePaymentMethod: StorePaymentMethodEnum = NONE + + """ + User public metadata. + + Added in Saleor 3.1. + """ + metadata: [MetadataInput!] +} + +""" +Enum representing the type of a payment storage in a gateway. +""" +enum StorePaymentMethodEnum { + """ + On session storage type. The payment is stored only to be reused when the customer is present in the checkout flow. + """ + ON_SESSION + + """ + Off session storage type. The payment is stored to be reused even if the customer is absent. + """ + OFF_SESSION + + """ + Storage is disabled. The payment is not stored. + """ + NONE +} + +""" +Update shipping address in the existing checkout. +""" +type CheckoutShippingAddressUpdate { + """ + An updated checkout. + """ + checkout: Checkout + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CheckoutError!]! +} + +""" +Updates the shipping method of the checkout. +""" +type CheckoutShippingMethodUpdate { + """ + An updated checkout. + """ + checkout: Checkout + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CheckoutError!]! +} + +""" +Updates the delivery method (shipping method or pick up point) of the checkout. + +Added in Saleor 3.1. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. +""" +type CheckoutDeliveryMethodUpdate { + """ + An updated checkout. + """ + checkout: Checkout + errors: [CheckoutError!]! +} + +""" +Update language code in the existing checkout. +""" +type CheckoutLanguageCodeUpdate { + """ + An updated checkout. + """ + checkout: Checkout + checkoutErrors: [CheckoutError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [CheckoutError!]! +} + +""" +Create new order from existing checkout. Requires the following permissions: AUTHENTICATED_APP and HANDLE_CHECKOUTS. + +Added in Saleor 3.2. + +Note: this API is currently in Feature Preview and can be subject to changes at later point. +""" +type OrderCreateFromCheckout { + """ + Placed order. + """ + order: Order + errors: [OrderCreateFromCheckoutError!]! +} + +type OrderCreateFromCheckoutError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: OrderCreateFromCheckoutErrorCode! + + """ + List of variant IDs which causes the error. + """ + variants: [ID!] + + """ + List of line Ids which cause the error. + """ + lines: [ID!] +} + +""" +An enumeration. +""" +enum OrderCreateFromCheckoutErrorCode { + GRAPHQL_ERROR + CHECKOUT_NOT_FOUND + CHANNEL_INACTIVE + INSUFFICIENT_STOCK + VOUCHER_NOT_APPLICABLE + GIFT_CARD_NOT_APPLICABLE + TAX_ERROR + SHIPPING_METHOD_NOT_SET + BILLING_ADDRESS_NOT_SET + SHIPPING_ADDRESS_NOT_SET + INVALID_SHIPPING_METHOD + NO_LINES + EMAIL_NOT_SET + UNAVAILABLE_VARIANT_IN_CHANNEL +} + +""" +Creates new channel. + +Requires one of the following permissions: MANAGE_CHANNELS. +""" +type ChannelCreate { + channelErrors: [ChannelError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ChannelError!]! + channel: Channel +} + +type ChannelError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: ChannelErrorCode! + + """ + List of shipping zone IDs which causes the error. + """ + shippingZones: [ID!] +} + +""" +An enumeration. +""" +enum ChannelErrorCode { + ALREADY_EXISTS + GRAPHQL_ERROR + INVALID + NOT_FOUND + REQUIRED + UNIQUE + CHANNELS_CURRENCY_MUST_BE_THE_SAME + CHANNEL_WITH_ORDERS + DUPLICATED_INPUT_ITEM +} + +input ChannelCreateInput { + """ + isActive flag. + """ + isActive: Boolean + + """ + Name of the channel. + """ + name: String! + + """ + Slug of the channel. + """ + slug: String! + + """ + Currency of the channel. + """ + currencyCode: String! + + """ + Default country for the channel. Default country can be used in checkout to determine the stock quantities or calculate taxes when the country was not explicitly provided. + + Added in Saleor 3.1. + """ + defaultCountry: CountryCode! + + """ + List of shipping zones to assign to the channel. + """ + addShippingZones: [ID!] +} + +""" +Update a channel. + +Requires one of the following permissions: MANAGE_CHANNELS. +""" +type ChannelUpdate { + channelErrors: [ChannelError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ChannelError!]! + channel: Channel +} + +input ChannelUpdateInput { + """ + isActive flag. + """ + isActive: Boolean + + """ + Name of the channel. + """ + name: String + + """ + Slug of the channel. + """ + slug: String + + """ + Default country for the channel. Default country can be used in checkout to determine the stock quantities or calculate taxes when the country was not explicitly provided. + + Added in Saleor 3.1. + """ + defaultCountry: CountryCode + + """ + List of shipping zones to assign to the channel. + """ + addShippingZones: [ID!] + + """ + List of shipping zones to unassign from the channel. + """ + removeShippingZones: [ID!] +} + +""" +Delete a channel. Orders associated with the deleted channel will be moved to the target channel. Checkouts, product availability, and pricing will be removed. + +Requires one of the following permissions: MANAGE_CHANNELS. +""" +type ChannelDelete { + channelErrors: [ChannelError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ChannelError!]! + channel: Channel +} + +input ChannelDeleteInput { + """ + ID of channel to migrate orders from origin channel. + """ + channelId: ID! +} + +""" +Activate a channel. + +Requires one of the following permissions: MANAGE_CHANNELS. +""" +type ChannelActivate { + """ + Activated channel. + """ + channel: Channel + channelErrors: [ChannelError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ChannelError!]! +} + +""" +Deactivate a channel. + +Requires one of the following permissions: MANAGE_CHANNELS. +""" +type ChannelDeactivate { + """ + Deactivated channel. + """ + channel: Channel + channelErrors: [ChannelError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [ChannelError!]! +} + +""" +Creates an attribute. +""" +type AttributeCreate { + attribute: Attribute + attributeErrors: [AttributeError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AttributeError!]! +} + +type AttributeError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: AttributeErrorCode! +} + +""" +An enumeration. +""" +enum AttributeErrorCode { + ALREADY_EXISTS + GRAPHQL_ERROR + INVALID + NOT_FOUND + REQUIRED + UNIQUE +} + +input AttributeCreateInput { + """ + The input type to use for entering attribute values in the dashboard. + """ + inputType: AttributeInputTypeEnum + + """ + The entity type which can be used as a reference. + """ + entityType: AttributeEntityTypeEnum + + """ + Name of an attribute displayed in the interface. + """ + name: String! + + """ + Internal representation of an attribute name. + """ + slug: String + + """ + The attribute type. + """ + type: AttributeTypeEnum! + + """ + The unit of attribute values. + """ + unit: MeasurementUnitsEnum + + """ + List of attribute's values. + """ + values: [AttributeValueCreateInput!] + + """ + Whether the attribute requires values to be passed or not. + """ + valueRequired: Boolean + + """ + Whether the attribute is for variants only. + """ + isVariantOnly: Boolean + + """ + Whether the attribute should be visible or not in storefront. + """ + visibleInStorefront: Boolean + + """ + Whether the attribute can be filtered in storefront. + """ + filterableInStorefront: Boolean + + """ + Whether the attribute can be filtered in dashboard. + """ + filterableInDashboard: Boolean + + """ + The position of the attribute in the storefront navigation (0 by default). + """ + storefrontSearchPosition: Int + + """ + Whether the attribute can be displayed in the admin product list. + """ + availableInGrid: Boolean +} + +input AttributeValueCreateInput { + """ + Represent value of the attribute value (e.g. color values for swatch attributes). + """ + value: String + + """ + Represents the text of the attribute value, includes formatting. + + Rich text format. For reference see https://editorjs.io/ + """ + richText: JSONString + + """ + URL of the file attribute. Every time, a new value is created. + """ + fileUrl: String + + """ + File content type. + """ + contentType: String + + """ + Name of a value displayed in the interface. + """ + name: String! +} + +""" +Deletes an attribute. + +Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. +""" +type AttributeDelete { + attributeErrors: [AttributeError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AttributeError!]! + attribute: Attribute +} + +""" +Updates attribute. + +Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. +""" +type AttributeUpdate { + attribute: Attribute + attributeErrors: [AttributeError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AttributeError!]! +} + +input AttributeUpdateInput { + """ + Name of an attribute displayed in the interface. + """ + name: String + + """ + Internal representation of an attribute name. + """ + slug: String + + """ + The unit of attribute values. + """ + unit: MeasurementUnitsEnum + + """ + IDs of values to be removed from this attribute. + """ + removeValues: [ID!] + + """ + New values to be created for this attribute. + """ + addValues: [AttributeValueUpdateInput!] + + """ + Whether the attribute requires values to be passed or not. + """ + valueRequired: Boolean + + """ + Whether the attribute is for variants only. + """ + isVariantOnly: Boolean + + """ + Whether the attribute should be visible or not in storefront. + """ + visibleInStorefront: Boolean + + """ + Whether the attribute can be filtered in storefront. + """ + filterableInStorefront: Boolean + + """ + Whether the attribute can be filtered in dashboard. + """ + filterableInDashboard: Boolean + + """ + The position of the attribute in the storefront navigation (0 by default). + """ + storefrontSearchPosition: Int + + """ + Whether the attribute can be displayed in the admin product list. + """ + availableInGrid: Boolean +} + +input AttributeValueUpdateInput { + """ + Represent value of the attribute value (e.g. color values for swatch attributes). + """ + value: String + + """ + Represents the text of the attribute value, includes formatting. + + Rich text format. For reference see https://editorjs.io/ + """ + richText: JSONString + + """ + URL of the file attribute. Every time, a new value is created. + """ + fileUrl: String + + """ + File content type. + """ + contentType: String + + """ + Name of a value displayed in the interface. + """ + name: String +} + +""" +Creates/updates translations for an attribute. + +Requires one of the following permissions: MANAGE_TRANSLATIONS. +""" +type AttributeTranslate { + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [TranslationError!]! + attribute: Attribute +} + +""" +Deletes attributes. + +Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. +""" +type AttributeBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + attributeErrors: [AttributeError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AttributeError!]! +} + +""" +Deletes values of attributes. + +Requires one of the following permissions: MANAGE_PAGE_TYPES_AND_ATTRIBUTES. +""" +type AttributeValueBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + attributeErrors: [AttributeError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AttributeError!]! +} + +""" +Creates a value for an attribute. + +Requires one of the following permissions: MANAGE_PRODUCTS. +""" +type AttributeValueCreate { + """ + The updated attribute. + """ + attribute: Attribute + attributeErrors: [AttributeError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AttributeError!]! + attributeValue: AttributeValue +} + +""" +Deletes a value of an attribute. + +Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. +""" +type AttributeValueDelete { + """ + The updated attribute. + """ + attribute: Attribute + attributeErrors: [AttributeError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AttributeError!]! + attributeValue: AttributeValue +} + +""" +Updates value of an attribute. + +Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. +""" +type AttributeValueUpdate { + """ + The updated attribute. + """ + attribute: Attribute + attributeErrors: [AttributeError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AttributeError!]! + attributeValue: AttributeValue +} + +""" +Creates/updates translations for an attribute value. + +Requires one of the following permissions: MANAGE_TRANSLATIONS. +""" +type AttributeValueTranslate { + translationErrors: [TranslationError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [TranslationError!]! + attributeValue: AttributeValue +} + +input AttributeValueTranslationInput { + name: String + + """ + Translated text. + + Rich text format. For reference see https://editorjs.io/ + """ + richText: JSONString +} + +""" +Reorder the values of an attribute. + +Requires one of the following permissions: MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES. +""" +type AttributeReorderValues { + """ + Attribute from which values are reordered. + """ + attribute: Attribute + attributeErrors: [AttributeError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AttributeError!]! +} + +""" +Creates a new app. Requires the following permissions: AUTHENTICATED_STAFF_USER and MANAGE_APPS. +""" +type AppCreate { + """ + The newly created authentication token. + """ + authToken: String + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AppError!]! + app: App +} + +type AppError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: AppErrorCode! + + """ + List of permissions which causes the error. + """ + permissions: [PermissionEnum!] +} + +""" +An enumeration. +""" +enum AppErrorCode { + FORBIDDEN + GRAPHQL_ERROR + INVALID + INVALID_STATUS + INVALID_PERMISSION + INVALID_URL_FORMAT + INVALID_MANIFEST_FORMAT + MANIFEST_URL_CANT_CONNECT + NOT_FOUND + REQUIRED + UNIQUE + OUT_OF_SCOPE_APP + OUT_OF_SCOPE_PERMISSION +} + +input AppInput { + """ + Name of the app. + """ + name: String + + """ + List of permission code names to assign to this app. + """ + permissions: [PermissionEnum!] +} + +""" +Updates an existing app. + +Requires one of the following permissions: MANAGE_APPS. +""" +type AppUpdate { + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AppError!]! + app: App +} + +""" +Deletes an app. + +Requires one of the following permissions: MANAGE_APPS. +""" +type AppDelete { + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AppError!]! + app: App +} + +""" +Creates a new token. + +Requires one of the following permissions: MANAGE_APPS. +""" +type AppTokenCreate { + """ + The newly created authentication token. + """ + authToken: String + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AppError!]! + appToken: AppToken +} + +input AppTokenInput { + """ + Name of the token. + """ + name: String + + """ + ID of app. + """ + app: ID! +} + +""" +Deletes an authentication token assigned to app. + +Requires one of the following permissions: MANAGE_APPS. +""" +type AppTokenDelete { + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AppError!]! + appToken: AppToken +} + +""" +Verify provided app token. +""" +type AppTokenVerify { + """ + Determine if token is valid or not. + """ + valid: Boolean! + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AppError!]! +} + +""" +Install new app by using app manifest. Requires the following permissions: AUTHENTICATED_STAFF_USER and MANAGE_APPS. +""" +type AppInstall { + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AppError!]! + appInstallation: AppInstallation +} + +input AppInstallInput { + """ + Name of the app to install. + """ + appName: String + + """ + Url to app's manifest in JSON format. + """ + manifestUrl: String + + """ + Determine if app will be set active or not. + """ + activateAfterInstallation: Boolean = true + + """ + List of permission code names to assign to this app. + """ + permissions: [PermissionEnum!] +} + +""" +Retry failed installation of new app. + +Requires one of the following permissions: MANAGE_APPS. +""" +type AppRetryInstall { + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AppError!]! + appInstallation: AppInstallation +} + +""" +Delete failed installation. + +Requires one of the following permissions: MANAGE_APPS. +""" +type AppDeleteFailedInstallation { + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AppError!]! + appInstallation: AppInstallation +} + +""" +Fetch and validate manifest. + +Requires one of the following permissions: MANAGE_APPS. +""" +type AppFetchManifest { + manifest: Manifest + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AppError!]! +} + +""" +The manifest definition. +""" +type Manifest { + identifier: String! + version: String! + name: String! + about: String + permissions: [Permission!] + appUrl: String + configurationUrl: String + tokenTargetUrl: String + dataPrivacy: String + dataPrivacyUrl: String + homepageUrl: String + supportUrl: String + extensions: [AppManifestExtension!]! +} + +type AppManifestExtension { + """ + List of the app extension's permissions. + """ + permissions: [Permission!]! + + """ + Label of the extension to show in the dashboard. + """ + label: String! + + """ + URL of a view where extension's iframe is placed. + """ + url: String! + + """ + Place where given extension will be mounted. + """ + mount: AppExtensionMountEnum! + + """ + Type of way how app extension will be opened. + """ + target: AppExtensionTargetEnum! +} + +""" +Activate the app. + +Requires one of the following permissions: MANAGE_APPS. +""" +type AppActivate { + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AppError!]! + app: App +} + +""" +Deactivate the app. + +Requires one of the following permissions: MANAGE_APPS. +""" +type AppDeactivate { + appErrors: [AppError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AppError!]! + app: App +} + +""" +Create JWT token. +""" +type CreateToken { + """ + JWT token, required to authenticate. + """ + token: String + + """ + JWT refresh token, required to re-generate access token. + """ + refreshToken: String + + """ + CSRF token required to re-generate access token. + """ + csrfToken: String + + """ + A user instance. + """ + user: User + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! +} + +type AccountError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: AccountErrorCode! + + """ + A type of address that causes the error. + """ + addressType: AddressTypeEnum +} + +""" +An enumeration. +""" +enum AccountErrorCode { + ACTIVATE_OWN_ACCOUNT + ACTIVATE_SUPERUSER_ACCOUNT + DUPLICATED_INPUT_ITEM + DEACTIVATE_OWN_ACCOUNT + DEACTIVATE_SUPERUSER_ACCOUNT + DELETE_NON_STAFF_USER + DELETE_OWN_ACCOUNT + DELETE_STAFF_ACCOUNT + DELETE_SUPERUSER_ACCOUNT + GRAPHQL_ERROR + INACTIVE + INVALID + INVALID_PASSWORD + LEFT_NOT_MANAGEABLE_PERMISSION + INVALID_CREDENTIALS + NOT_FOUND + OUT_OF_SCOPE_USER + OUT_OF_SCOPE_GROUP + OUT_OF_SCOPE_PERMISSION + PASSWORD_ENTIRELY_NUMERIC + PASSWORD_TOO_COMMON + PASSWORD_TOO_SHORT + PASSWORD_TOO_SIMILAR + REQUIRED + UNIQUE + JWT_SIGNATURE_EXPIRED + JWT_INVALID_TOKEN + JWT_DECODE_ERROR + JWT_MISSING_TOKEN + JWT_INVALID_CSRF_TOKEN + CHANNEL_INACTIVE + MISSING_CHANNEL_SLUG + ACCOUNT_NOT_CONFIRMED +} + +""" +Refresh JWT token. Mutation tries to take refreshToken from the input.If it fails it will try to take refreshToken from the http-only cookie -refreshToken. csrfToken is required when refreshToken is provided as a cookie. +""" +type RefreshToken { + """ + JWT token, required to authenticate. + """ + token: String + + """ + A user instance. + """ + user: User + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! +} + +""" +Verify JWT token. +""" +type VerifyToken { + """ + User assigned to token. + """ + user: User + + """ + Determine if token is valid or not. + """ + isValid: Boolean! + + """ + JWT payload. + """ + payload: GenericScalar + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! +} + +""" +The `GenericScalar` scalar type represents a generic +GraphQL scalar value that could be: +String, Boolean, Int, Float, List or Object. +""" +scalar GenericScalar + +""" +Deactivate all JWT tokens of the currently authenticated user. + +Requires one of the following permissions: AUTHENTICATED_USER. +""" +type DeactivateAllUserTokens { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! +} + +""" +Prepare external authentication url for user by custom plugin. +""" +type ExternalAuthenticationUrl { + """ + The data returned by authentication plugin. + """ + authenticationData: JSONString + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! +} + +""" +Obtain external access tokens for user by custom plugin. +""" +type ExternalObtainAccessTokens { + """ + The token, required to authenticate. + """ + token: String + + """ + The refresh token, required to re-generate external access token. + """ + refreshToken: String + + """ + CSRF token required to re-generate external access token. + """ + csrfToken: String + + """ + A user instance. + """ + user: User + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! +} + +""" +Refresh user's access by custom plugin. +""" +type ExternalRefresh { + """ + The token, required to authenticate. + """ + token: String + + """ + The refresh token, required to re-generate external access token. + """ + refreshToken: String + + """ + CSRF token required to re-generate external access token. + """ + csrfToken: String + + """ + A user instance. + """ + user: User + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! +} + +""" +Logout user by custom plugin. +""" +type ExternalLogout { + """ + The data returned by authentication plugin. + """ + logoutData: JSONString + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! +} + +""" +Verify external authentication data by plugin. +""" +type ExternalVerify { + """ + User assigned to data. + """ + user: User + + """ + Determine if authentication data is valid or not. + """ + isValid: Boolean! + + """ + External data. + """ + verifyData: JSONString + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! +} + +""" +Sends an email with the account password modification link. +""" +type RequestPasswordReset { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! +} + +""" +Confirm user account with token sent by email during registration. +""" +type ConfirmAccount { + """ + An activated user account. + """ + user: User + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! +} + +""" +Sets the user's password from the token sent by email using the RequestPasswordReset mutation. +""" +type SetPassword { + """ + JWT token, required to authenticate. + """ + token: String + + """ + JWT refresh token, required to re-generate access token. + """ + refreshToken: String + + """ + CSRF token required to re-generate access token. + """ + csrfToken: String + + """ + A user instance. + """ + user: User + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! +} + +""" +Change the password of the logged in user. + +Requires one of the following permissions: AUTHENTICATED_USER. +""" +type PasswordChange { + """ + A user instance with a new password. + """ + user: User + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! +} + +""" +Request email change of the logged in user. + +Requires one of the following permissions: AUTHENTICATED_USER. +""" +type RequestEmailChange { + """ + A user instance. + """ + user: User + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! +} + +""" +Confirm the email change of the logged-in user. + +Requires one of the following permissions: AUTHENTICATED_USER. +""" +type ConfirmEmailChange { + """ + A user instance with a new email. + """ + user: User + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! +} + +""" +Create a new address for the customer. + +Requires one of the following permissions: AUTHENTICATED_USER. +""" +type AccountAddressCreate { + """ + A user instance for which the address was created. + """ + user: User + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + address: Address +} + +""" +Updates an address of the logged-in user. Requires one of the following permissions: MANAGE_USERS, IS_OWNER. +""" +type AccountAddressUpdate { + """ + A user object for which the address was edited. + """ + user: User + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + address: Address +} + +""" +Delete an address of the logged-in user. Requires one of the following permissions: MANAGE_USERS, IS_OWNER. +""" +type AccountAddressDelete { + """ + A user instance for which the address was deleted. + """ + user: User + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + address: Address +} + +""" +Sets a default address for the authenticated user. + +Requires one of the following permissions: AUTHENTICATED_USER. +""" +type AccountSetDefaultAddress { + """ + An updated user instance. + """ + user: User + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! +} + +""" +Register a new user. +""" +type AccountRegister { + """ + Informs whether users need to confirm their email address. + """ + requiresConfirmation: Boolean + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + user: User +} + +input AccountRegisterInput { + """ + Given name. + """ + firstName: String + + """ + Family name. + """ + lastName: String + + """ + User language code. + """ + languageCode: LanguageCodeEnum + + """ + The email address of the user. + """ + email: String! + + """ + Password. + """ + password: String! + + """ + Base of frontend URL that will be needed to create confirmation URL. + """ + redirectUrl: String + + """ + User public metadata. + """ + metadata: [MetadataInput!] + + """ + Slug of a channel which will be used to notify users. Optional when only one channel exists. + """ + channel: String +} + +""" +Updates the account of the logged-in user. + +Requires one of the following permissions: AUTHENTICATED_USER. +""" +type AccountUpdate { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + user: User +} + +input AccountInput { + """ + Given name. + """ + firstName: String + + """ + Family name. + """ + lastName: String + + """ + User language code. + """ + languageCode: LanguageCodeEnum + + """ + Billing address of the customer. + """ + defaultBillingAddress: AddressInput + + """ + Shipping address of the customer. + """ + defaultShippingAddress: AddressInput +} + +""" +Sends an email with the account removal link for the logged-in user. + +Requires one of the following permissions: AUTHENTICATED_USER. +""" +type AccountRequestDeletion { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! +} + +""" +Remove user account. + +Requires one of the following permissions: AUTHENTICATED_USER. +""" +type AccountDelete { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + user: User +} + +""" +Creates user address. + +Requires one of the following permissions: MANAGE_USERS. +""" +type AddressCreate { + """ + A user instance for which the address was created. + """ + user: User + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + address: Address +} + +""" +Updates an address. + +Requires one of the following permissions: MANAGE_USERS. +""" +type AddressUpdate { + """ + A user object for which the address was edited. + """ + user: User + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + address: Address +} + +""" +Deletes an address. + +Requires one of the following permissions: MANAGE_USERS. +""" +type AddressDelete { + """ + A user instance for which the address was deleted. + """ + user: User + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + address: Address +} + +""" +Sets a default address for the given user. + +Requires one of the following permissions: MANAGE_USERS. +""" +type AddressSetDefault { + """ + An updated user instance. + """ + user: User + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! +} + +""" +Creates a new customer. + +Requires one of the following permissions: MANAGE_USERS. +""" +type CustomerCreate { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + user: User +} + +input UserCreateInput { + """ + Billing address of the customer. + """ + defaultBillingAddress: AddressInput + + """ + Shipping address of the customer. + """ + defaultShippingAddress: AddressInput + + """ + Given name. + """ + firstName: String + + """ + Family name. + """ + lastName: String + + """ + The unique email address of the user. + """ + email: String + + """ + User account is active. + """ + isActive: Boolean + + """ + A note about the user. + """ + note: String + + """ + User language code. + """ + languageCode: LanguageCodeEnum + + """ + URL of a view where users should be redirected to set the password. URL in RFC 1808 format. + """ + redirectUrl: String + + """ + Slug of a channel which will be used for notify user. Optional when only one channel exists. + """ + channel: String +} + +""" +Updates an existing customer. + +Requires one of the following permissions: MANAGE_USERS. +""" +type CustomerUpdate { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + user: User +} + +input CustomerInput { + """ + Billing address of the customer. + """ + defaultBillingAddress: AddressInput + + """ + Shipping address of the customer. + """ + defaultShippingAddress: AddressInput + + """ + Given name. + """ + firstName: String + + """ + Family name. + """ + lastName: String + + """ + The unique email address of the user. + """ + email: String + + """ + User account is active. + """ + isActive: Boolean + + """ + A note about the user. + """ + note: String + + """ + User language code. + """ + languageCode: LanguageCodeEnum +} + +""" +Deletes a customer. + +Requires one of the following permissions: MANAGE_USERS. +""" +type CustomerDelete { + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! + user: User +} + +""" +Deletes customers. + +Requires one of the following permissions: MANAGE_USERS. +""" +type CustomerBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! +} + +""" +Creates a new staff user. + +Requires one of the following permissions: MANAGE_STAFF. +""" +type StaffCreate { + staffErrors: [StaffError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [StaffError!]! + user: User +} + +type StaffError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: AccountErrorCode! + + """ + A type of address that causes the error. + """ + addressType: AddressTypeEnum + + """ + List of permissions which causes the error. + """ + permissions: [PermissionEnum!] + + """ + List of permission group IDs which cause the error. + """ + groups: [ID!] + + """ + List of user IDs which causes the error. + """ + users: [ID!] +} + +input StaffCreateInput { + """ + Given name. + """ + firstName: String + + """ + Family name. + """ + lastName: String + + """ + The unique email address of the user. + """ + email: String + + """ + User account is active. + """ + isActive: Boolean + + """ + A note about the user. + """ + note: String + + """ + List of permission group IDs to which user should be assigned. + """ + addGroups: [ID!] + + """ + URL of a view where users should be redirected to set the password. URL in RFC 1808 format. + """ + redirectUrl: String +} + +""" +Updates an existing staff user. + +Requires one of the following permissions: MANAGE_STAFF. +""" +type StaffUpdate { + staffErrors: [StaffError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [StaffError!]! + user: User +} + +input StaffUpdateInput { + """ + Given name. + """ + firstName: String + + """ + Family name. + """ + lastName: String + + """ + The unique email address of the user. + """ + email: String + + """ + User account is active. + """ + isActive: Boolean + + """ + A note about the user. + """ + note: String + + """ + List of permission group IDs to which user should be assigned. + """ + addGroups: [ID!] + + """ + List of permission group IDs from which user should be unassigned. + """ + removeGroups: [ID!] +} + +""" +Deletes a staff user. + +Requires one of the following permissions: MANAGE_STAFF. +""" +type StaffDelete { + staffErrors: [StaffError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [StaffError!]! + user: User +} + +""" +Deletes staff users. + +Requires one of the following permissions: MANAGE_STAFF. +""" +type StaffBulkDelete { + """ + Returns how many objects were affected. + """ + count: Int! + staffErrors: [StaffError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [StaffError!]! +} + +""" +Create a user avatar. Only for staff members. This mutation must be sent as a `multipart` request. More detailed specs of the upload format can be found here: https://github.com/jaydenseric/graphql-multipart-request-spec + +Requires one of the following permissions: AUTHENTICATED_STAFF_USER. +""" +type UserAvatarUpdate { + """ + An updated user instance. + """ + user: User + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! +} + +""" +Deletes a user avatar. Only for staff members. + +Requires one of the following permissions: AUTHENTICATED_STAFF_USER. +""" +type UserAvatarDelete { + """ + An updated user instance. + """ + user: User + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! +} + +""" +Activate or deactivate users. + +Requires one of the following permissions: MANAGE_USERS. +""" +type UserBulkSetActive { + """ + Returns how many objects were affected. + """ + count: Int! + accountErrors: [AccountError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [AccountError!]! +} + +""" +Create new permission group. + +Requires one of the following permissions: MANAGE_STAFF. +""" +type PermissionGroupCreate { + permissionGroupErrors: [PermissionGroupError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [PermissionGroupError!]! + group: Group +} + +type PermissionGroupError { + """ + Name of a field that caused the error. A value of `null` indicates that the error isn't associated with a particular field. + """ + field: String + + """ + The error message. + """ + message: String + + """ + The error code. + """ + code: PermissionGroupErrorCode! + + """ + List of permissions which causes the error. + """ + permissions: [PermissionEnum!] + + """ + List of user IDs which causes the error. + """ + users: [ID!] +} + +""" +An enumeration. +""" +enum PermissionGroupErrorCode { + ASSIGN_NON_STAFF_MEMBER + DUPLICATED_INPUT_ITEM + CANNOT_REMOVE_FROM_LAST_GROUP + LEFT_NOT_MANAGEABLE_PERMISSION + OUT_OF_SCOPE_PERMISSION + OUT_OF_SCOPE_USER + REQUIRED + UNIQUE +} + +input PermissionGroupCreateInput { + """ + List of permission code names to assign to this group. + """ + addPermissions: [PermissionEnum!] + + """ + List of users to assign to this group. + """ + addUsers: [ID!] + + """ + Group name. + """ + name: String! +} + +""" +Update permission group. + +Requires one of the following permissions: MANAGE_STAFF. +""" +type PermissionGroupUpdate { + permissionGroupErrors: [PermissionGroupError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [PermissionGroupError!]! + group: Group +} + +input PermissionGroupUpdateInput { + """ + List of permission code names to assign to this group. + """ + addPermissions: [PermissionEnum!] + + """ + List of users to assign to this group. + """ + addUsers: [ID!] + + """ + Group name. + """ + name: String + + """ + List of permission code names to unassign from this group. + """ + removePermissions: [PermissionEnum!] + + """ + List of users to unassign from this group. + """ + removeUsers: [ID!] +} + +""" +Delete permission group. + +Requires one of the following permissions: MANAGE_STAFF. +""" +type PermissionGroupDelete { + permissionGroupErrors: [PermissionGroupError!]! + @deprecated(reason: "This field will be removed in Saleor 4.0. Use `errors` field instead.") + errors: [PermissionGroupError!]! + group: Group +} + +type Subscription { + """ + Look up subscription event. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + event: Event +} + +interface Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App +} + +union IssuingPrincipal = App | User + +""" +An enumeration. +""" +enum DistanceUnitsEnum { + CM + M + KM + FT + YD + INCH +} + +""" +An enumeration. +""" +enum AreaUnitsEnum { + SQ_CM + SQ_M + SQ_KM + SQ_FT + SQ_YD + SQ_INCH +} + +""" +An enumeration. +""" +enum VolumeUnitsEnum { + CUBIC_MILLIMETER + CUBIC_CENTIMETER + CUBIC_DECIMETER + CUBIC_METER + LITER + CUBIC_FOOT + CUBIC_INCH + CUBIC_YARD + QT + PINT + FL_OZ + ACRE_IN + ACRE_FT +} + +type AppInstalled implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The application the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + app: App +} + +type AppUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The application the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + app: App +} + +type AppDeleted implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The application the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + app: App +} + +type AppStatusChanged implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The application the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + app: App +} + +type CategoryCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The category the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + category: Category +} + +type CategoryUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The category the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + category: Category +} + +type CategoryDeleted implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The category the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + category: Category +} + +type ChannelCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The channel the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + channel: Channel +} + +type ChannelUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The channel the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + channel: Channel +} + +type ChannelDeleted implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The channel the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + channel: Channel +} + +type ChannelStatusChanged implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The channel the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + channel: Channel +} + +type GiftCardCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The gift card the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + giftCard: GiftCard +} + +type GiftCardUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The gift card the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + giftCard: GiftCard +} + +type GiftCardDeleted implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The gift card the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + giftCard: GiftCard +} + +type GiftCardStatusChanged implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The gift card the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + giftCard: GiftCard +} + +type MenuCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The menu the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + menu( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Menu +} + +type MenuUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The menu the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + menu( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Menu +} + +type MenuDeleted implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The menu the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + menu( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Menu +} + +type MenuItemCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The menu item the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + menuItem( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): MenuItem +} + +type MenuItemUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The menu item the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + menuItem( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): MenuItem +} + +type MenuItemDeleted implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The menu item the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + menuItem( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): MenuItem +} + +type OrderCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The order the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + order: Order +} + +type OrderUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The order the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + order: Order +} + +type OrderConfirmed implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The order the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + order: Order +} + +type OrderFullyPaid implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The order the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + order: Order +} + +type OrderCancelled implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The order the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + order: Order +} + +type OrderFulfilled implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The order the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + order: Order +} + +type DraftOrderCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The order the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + order: Order +} + +type DraftOrderUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The order the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + order: Order +} + +type DraftOrderDeleted implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The order the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + order: Order +} + +type ProductCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The product the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + product( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Product + + """ + The category of the product. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + category: Category +} + +type ProductUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The product the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + product( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Product + + """ + The category of the product. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + category: Category +} + +type ProductDeleted implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The product the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + product( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Product + + """ + The category of the product. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + category: Category +} + +type ProductVariantCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The product variant the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + productVariant( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ProductVariant +} + +type ProductVariantUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The product variant the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + productVariant( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ProductVariant +} + +type ProductVariantOutOfStock implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The product variant the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + productVariant( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ProductVariant + + """ + Look up a warehouse. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + warehouse: Warehouse +} + +type ProductVariantBackInStock implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The product variant the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + productVariant( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ProductVariant + + """ + Look up a warehouse. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + warehouse: Warehouse +} + +type ProductVariantDeleted implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The product variant the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + productVariant( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ProductVariant +} + +type SaleCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The sale the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + sale( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Sale +} + +type SaleUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The sale the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + sale( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Sale +} + +type SaleDeleted implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The sale the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + sale( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Sale +} + +type InvoiceRequested implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The invoice the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + invoice: Invoice +} + +type InvoiceDeleted implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The invoice the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + invoice: Invoice +} + +type InvoiceSent implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The invoice the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + invoice: Invoice +} + +type FulfillmentCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The fulfillment the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + fulfillment: Fulfillment + + """ + The order the fulfillment belongs to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + order: Order +} + +type FulfillmentCanceled implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The fulfillment the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + fulfillment: Fulfillment + + """ + The order the fulfillment belongs to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + order: Order +} + +type CustomerCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The user the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + user: User +} + +type CustomerUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The user the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + user: User +} + +type CollectionCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The collection the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + collection( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Collection +} + +type CollectionUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The collection the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + collection( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Collection +} + +type CollectionDeleted implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The collection the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + collection( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Collection +} + +type CheckoutCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The checkout the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + checkout: Checkout +} + +type CheckoutUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The checkout the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + checkout: Checkout +} + +type PageCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The page the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + page: Page +} + +type PageUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The page the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + page: Page +} + +type PageDeleted implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The page the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + page: Page +} + +type ShippingPriceCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The shipping method the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + shippingMethod( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ShippingMethodType + + """ + The shipping zone the shipping method belongs to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + shippingZone( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ShippingZone +} + +type ShippingPriceUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The shipping method the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + shippingMethod( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ShippingMethodType + + """ + The shipping zone the shipping method belongs to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + shippingZone( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ShippingZone +} + +type ShippingPriceDeleted implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The shipping method the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + shippingMethod( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ShippingMethodType + + """ + The shipping zone the shipping method belongs to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + shippingZone( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ShippingZone +} + +type ShippingZoneCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The shipping zone the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + shippingZone( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ShippingZone +} + +type ShippingZoneUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The shipping zone the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + shippingZone( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ShippingZone +} + +type ShippingZoneDeleted implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The shipping zone the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + shippingZone( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): ShippingZone +} + +type TransactionActionRequest implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + Look up a transaction. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + transaction: TransactionItem + + """ + Requested action data. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + action: TransactionAction! +} + +type TransactionAction { + """ + Determines the action type. + """ + actionType: TransactionActionEnum! + + """ + Transaction request amount. Null when action type is VOID. + """ + amount: PositiveDecimal +} + +type TranslationCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The translation the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + translation: TranslationTypes +} + +union TranslationTypes = + ProductTranslation + | CollectionTranslation + | CategoryTranslation + | AttributeTranslation + | AttributeValueTranslation + | ProductVariantTranslation + | PageTranslation + | ShippingMethodTranslation + | SaleTranslation + | VoucherTranslation + | MenuItemTranslation + +type TranslationUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The translation the event relates to. + + Added in Saleor 3.2. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + translation: TranslationTypes +} + +type VoucherCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The voucher the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + voucher( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Voucher +} + +type VoucherUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The voucher the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + voucher( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Voucher +} + +type VoucherDeleted implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The voucher the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + voucher( + """ + Slug of a channel for which the data should be returned. + """ + channel: String + ): Voucher +} + +type WarehouseCreated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The warehouse the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + warehouse: Warehouse +} + +type WarehouseUpdated implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The warehouse the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + warehouse: Warehouse +} + +type WarehouseDeleted implements Event { + """ + Time of the event. + """ + issuedAt: DateTime + + """ + Saleor version that triggered the event. + """ + version: String + + """ + The user or application that triggered the event. + """ + issuingPrincipal: IssuingPrincipal + + """ + The application receiving the webhook. + """ + recipient: App + + """ + The warehouse the event relates to. + + Added in Saleor 3.4. + + Note: this API is currently in Feature Preview and can be subject to changes at later point. + """ + warehouse: Warehouse +} + +""" +_Any value scalar as defined by Federation spec. +""" +scalar _Any + +""" +_Entity union as defined by Federation spec. +""" +union _Entity = + App + | Address + | User + | Group + | ProductVariant + | Product + | ProductType + | Collection + | Category + | ProductMedia + | PageType + +""" +_Service manifest as defined by Federation spec. +""" +type _Service { + sdl: String +} diff --git a/apps/slack/next-env.d.ts b/apps/slack/next-env.d.ts new file mode 100644 index 0000000..4f11a03 --- /dev/null +++ b/apps/slack/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/apps/slack/next.config.js b/apps/slack/next.config.js new file mode 100644 index 0000000..87a04b6 --- /dev/null +++ b/apps/slack/next.config.js @@ -0,0 +1,44 @@ +// This file sets a custom webpack configuration to use your Next.js app +// with Sentry. +// https://nextjs.org/docs/api-reference/next.config.js/introduction +// https://docs.sentry.io/platforms/javascript/guides/nextjs/ + +const { withSentryConfig } = require("@sentry/nextjs"); + +const isSentryPropertiesInEnvironment = + process.env.SENTRY_AUTH_TOKEN && process.env.SENTRY_PROJECT && process.env.SENTRY_ORG; + +const moduleExports = { + eslint: { + ignoreDuringBuilds: false, + }, + reactStrictMode: true, + + sentry: { + disableServerWebpackPlugin: !isSentryPropertiesInEnvironment, + disableClientWebpackPlugin: !isSentryPropertiesInEnvironment, + // Use `hidden-source-map` rather than `source-map` as the Webpack `devtool` + // for client-side builds. (This will be the default starting in + // `@sentry/nextjs` version 8.0.0.) See + // https://webpack.js.org/configuration/devtool/ and + // https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/#use-hidden-source-map + // for more information. + hideSourceMaps: true, + }, +}; + +const sentryWebpackPluginOptions = { + // Additional config options for the Sentry Webpack plugin. Keep in mind that + // the following options are set automatically, and overriding them is not + // recommended: + // release, url, org, project, authToken, configFile, stripPrefix, + // urlPrefix, include, ignore + + silent: true, // Suppresses all logs + // For all available options, see: + // https://github.com/getsentry/sentry-webpack-plugin#options. +}; + +// Make sure adding Sentry options is the last code to run before exporting, to +// ensure that your source maps include changes from all other Webpack plugins +module.exports = withSentryConfig(moduleExports, sentryWebpackPluginOptions); diff --git a/apps/slack/package.json b/apps/slack/package.json new file mode 100644 index 0000000..e6fb8dc --- /dev/null +++ b/apps/slack/package.json @@ -0,0 +1,61 @@ +{ + "name": "saleor-app-slack", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "pnpm generate && NODE_OPTIONS='--inspect' next dev", + "build": "pnpm generate && next build", + "start": "next start", + "lint": "pnpm generate && prettier --loglevel warn --write . && eslint --fix .", + "fetch-schema": "curl https://raw.githubusercontent.com/saleor/saleor/${npm_package_saleor_schemaVersion}/saleor/graphql/schema.graphql > graphql/schema.graphql", + "generate": "graphql-codegen" + }, + "saleor": { + "schemaVersion": "3.10" + }, + "dependencies": { + "@material-ui/core": "^4.12.4", + "@material-ui/icons": "^4.11.3", + "@material-ui/lab": "4.0.0-alpha.61", + "@saleor/app-sdk": "0.27.1", + "@saleor/macaw-ui": "^0.7.2", + "@sentry/nextjs": "^7.30.0", + "@urql/exchange-auth": "^1.0.0", + "clsx": "^1.2.1", + "eslint-config-next": "13.1.4", + "graphql": "^16.5.0", + "graphql-tag": "^2.12.6", + "jose": "^4.11.2", + "next": "13.1.0", + "react": "18.2.0", + "react-dom": "18.2.0", + "react-helmet": "^6.1.0", + "urql": "^3.0.3", + "usehooks-ts": "^2.9.1" + }, + "devDependencies": { + "@graphql-codegen/cli": "2.7.0", + "@graphql-codegen/introspection": "2.1.1", + "@graphql-codegen/typed-document-node": "^2.2.14", + "@graphql-codegen/typescript": "2.6.0", + "@graphql-codegen/typescript-operations": "2.4.3", + "@graphql-codegen/typescript-urql": "^3.5.13", + "@graphql-codegen/urql-introspection": "2.1.1", + "@graphql-typed-document-node/core": "^3.1.1", + "@types/node": "^18.7.16", + "@types/react": "^18.0.19", + "@types/react-dom": "^18.0.6", + "@typescript-eslint/eslint-plugin": "^5.36.2", + "@typescript-eslint/parser": "^5.36.2", + "autoprefixer": "^10.4.7", + "clean-publish": "^4.0.1", + "postcss": "^8.4.14", + "pretty-quick": "^3.1.3", + "typescript": "4.8.3", + "eslint-config-saleor": "workspace:*" + }, + "lint-staged": { + "*.{js,ts,tsx}": "eslint --cache --fix", + "*.{js,ts,tsx,css,md,json}": "prettier --write" + } +} diff --git a/apps/slack/pnpm-lock.yaml b/apps/slack/pnpm-lock.yaml new file mode 100644 index 0000000..c2bc9dd --- /dev/null +++ b/apps/slack/pnpm-lock.yaml @@ -0,0 +1,8984 @@ +lockfileVersion: 5.4 + +specifiers: + "@graphql-codegen/cli": 2.7.0 + "@graphql-codegen/introspection": 2.1.1 + "@graphql-codegen/typed-document-node": ^2.2.14 + "@graphql-codegen/typescript": 2.6.0 + "@graphql-codegen/typescript-operations": 2.4.3 + "@graphql-codegen/typescript-urql": ^3.5.13 + "@graphql-codegen/urql-introspection": 2.1.1 + "@graphql-typed-document-node/core": ^3.1.1 + "@material-ui/core": ^4.12.4 + "@material-ui/icons": ^4.11.3 + "@material-ui/lab": 4.0.0-alpha.61 + "@saleor/app-sdk": 0.27.1 + "@saleor/macaw-ui": ^0.7.2 + "@sentry/nextjs": ^7.30.0 + "@types/node": ^18.7.16 + "@types/react": ^18.0.19 + "@types/react-dom": ^18.0.6 + "@typescript-eslint/eslint-plugin": ^5.36.2 + "@typescript-eslint/parser": ^5.36.2 + "@urql/exchange-auth": ^1.0.0 + autoprefixer: ^10.4.7 + clean-publish: ^4.0.1 + clsx: ^1.2.1 + eslint: ^8.23.1 + eslint-config-airbnb: ^19.0.4 + eslint-config-next: 13.1.4 + eslint-config-prettier: ^8.5.0 + eslint-import-resolver-typescript: ^3.5.1 + eslint-plugin-import: ^2.26.0 + eslint-plugin-jsx-a11y: ^6.6.0 + eslint-plugin-react: ^7.31.8 + eslint-plugin-react-hooks: ^4.6.0 + eslint-plugin-simple-import-sort: ^8.0.0 + graphql: ^16.5.0 + graphql-tag: ^2.12.6 + husky: ^8.0.1 + jose: ^4.11.2 + next: 13.1.0 + postcss: ^8.4.14 + prettier: ^2.7.1 + pretty-quick: ^3.1.3 + react: 18.2.0 + react-dom: 18.2.0 + react-helmet: ^6.1.0 + typescript: 4.8.3 + urql: ^3.0.3 + usehooks-ts: ^2.9.1 + +dependencies: + "@material-ui/core": 4.12.4_nylzxt5ale4dsv666zkb25cgtm + "@material-ui/icons": 4.11.3_syzufrrnbgjhwvvotesawp6yai + "@material-ui/lab": 4.0.0-alpha.61_syzufrrnbgjhwvvotesawp6yai + "@saleor/app-sdk": 0.27.1_s75y6mxmikaw2mhqmuko6w7njm + "@saleor/macaw-ui": 0.7.2_3igskpsgnvdgn574z3phvz2joa + "@sentry/nextjs": 7.30.0_next@13.1.0+react@18.2.0 + "@urql/exchange-auth": 1.0.0_graphql@16.5.0 + clsx: 1.2.1 + eslint-config-next: 13.1.4_irgkl5vooow2ydyo6aokmferha + graphql: 16.5.0 + graphql-tag: 2.12.6_graphql@16.5.0 + jose: 4.11.2 + next: 13.1.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-helmet: 6.1.0_react@18.2.0 + urql: 3.0.3_aez2jvt6lsvokp3l4ousdbdxf4 + usehooks-ts: 2.9.1_biqbaboplfbrettd7655fr4n2y + +devDependencies: + "@graphql-codegen/cli": 2.7.0_siupcgn3wlvluhjnbpgmgner4m + "@graphql-codegen/introspection": 2.1.1_graphql@16.5.0 + "@graphql-codegen/typed-document-node": 2.3.2_graphql@16.5.0 + "@graphql-codegen/typescript": 2.6.0_graphql@16.5.0 + "@graphql-codegen/typescript-operations": 2.4.3_graphql@16.5.0 + "@graphql-codegen/typescript-urql": 3.6.2_ubrtutz2urcxyhwqr2zvlqjzha + "@graphql-codegen/urql-introspection": 2.1.1_graphql@16.5.0 + "@graphql-typed-document-node/core": 3.1.1_graphql@16.5.0 + "@types/node": 18.7.16 + "@types/react": 18.0.19 + "@types/react-dom": 18.0.6 + "@typescript-eslint/eslint-plugin": 5.36.2_wxqvmnl3i4rbvz4ixyoiufmx3e + "@typescript-eslint/parser": 5.36.2_irgkl5vooow2ydyo6aokmferha + autoprefixer: 10.4.8_postcss@8.4.14 + clean-publish: 4.0.1 + eslint: 8.23.1 + eslint-config-airbnb: 19.0.4_vaa2l43rrt3zt475houvwxvax4 + eslint-config-prettier: 8.5.0_eslint@8.23.1 + eslint-import-resolver-typescript: 3.5.1_hdzsmr7kawaomymueo2tso6fjq + eslint-plugin-import: 2.26.0_bkwixupcywvgmrzjbgj7n47r6y + eslint-plugin-jsx-a11y: 6.6.0_eslint@8.23.1 + eslint-plugin-react: 7.31.8_eslint@8.23.1 + eslint-plugin-react-hooks: 4.6.0_eslint@8.23.1 + eslint-plugin-simple-import-sort: 8.0.0_eslint@8.23.1 + husky: 8.0.1 + postcss: 8.4.14 + prettier: 2.7.1 + pretty-quick: 3.1.3_prettier@2.7.1 + typescript: 4.8.3 + +packages: + /@ampproject/remapping/2.2.0: + resolution: + { + integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==, + } + engines: { node: ">=6.0.0" } + dependencies: + "@jridgewell/gen-mapping": 0.1.1 + "@jridgewell/trace-mapping": 0.3.14 + dev: true + + /@ardatan/relay-compiler/12.0.0_graphql@16.5.0: + resolution: + { + integrity: sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==, + } + hasBin: true + peerDependencies: + graphql: "*" + dependencies: + "@babel/core": 7.18.9 + "@babel/generator": 7.18.9 + "@babel/parser": 7.19.0 + "@babel/runtime": 7.18.9 + "@babel/traverse": 7.18.9 + "@babel/types": 7.19.0 + babel-preset-fbjs: 3.4.0_@babel+core@7.18.9 + chalk: 4.1.2 + fb-watchman: 2.0.1 + fbjs: 3.0.4 + glob: 7.2.3 + graphql: 16.5.0 + immutable: 3.7.6 + invariant: 2.2.4 + nullthrows: 1.1.1 + relay-runtime: 12.0.0 + signedsource: 1.0.0 + yargs: 15.4.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@babel/code-frame/7.18.6: + resolution: + { + integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/highlight": 7.18.6 + dev: true + + /@babel/compat-data/7.19.0: + resolution: + { + integrity: sha512-y5rqgTTPTmaF5e2nVhOxw+Ur9HDJLsWb6U/KpgUzRZEdPfE6VOubXBKLdbcUTijzRptednSBDQbYZBOSqJxpJw==, + } + engines: { node: ">=6.9.0" } + dev: true + + /@babel/core/7.18.9: + resolution: + { + integrity: sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@ampproject/remapping": 2.2.0 + "@babel/code-frame": 7.18.6 + "@babel/generator": 7.18.9 + "@babel/helper-compilation-targets": 7.19.0_@babel+core@7.18.9 + "@babel/helper-module-transforms": 7.18.9 + "@babel/helpers": 7.18.9 + "@babel/parser": 7.19.0 + "@babel/template": 7.18.10 + "@babel/traverse": 7.18.9 + "@babel/types": 7.19.0 + convert-source-map: 1.8.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator/7.18.9: + resolution: + { + integrity: sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.19.0 + "@jridgewell/gen-mapping": 0.3.2 + jsesc: 2.5.2 + dev: true + + /@babel/helper-annotate-as-pure/7.18.6: + resolution: + { + integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.19.0 + dev: true + + /@babel/helper-compilation-targets/7.19.0_@babel+core@7.18.9: + resolution: + { + integrity: sha512-Ai5bNWXIvwDvWM7njqsG3feMlL9hCVQsPYXodsZyLwshYkZVJt59Gftau4VrE8S9IT9asd2uSP1hG6wCNw+sXA==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0 + dependencies: + "@babel/compat-data": 7.19.0 + "@babel/core": 7.18.9 + "@babel/helper-validator-option": 7.18.6 + browserslist: 4.21.3 + semver: 6.3.0 + dev: true + + /@babel/helper-create-class-features-plugin/7.19.0_@babel+core@7.18.9: + resolution: + { + integrity: sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0 + dependencies: + "@babel/core": 7.18.9 + "@babel/helper-annotate-as-pure": 7.18.6 + "@babel/helper-environment-visitor": 7.18.9 + "@babel/helper-function-name": 7.19.0 + "@babel/helper-member-expression-to-functions": 7.18.9 + "@babel/helper-optimise-call-expression": 7.18.6 + "@babel/helper-replace-supers": 7.18.9 + "@babel/helper-split-export-declaration": 7.18.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-environment-visitor/7.18.9: + resolution: + { + integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==, + } + engines: { node: ">=6.9.0" } + dev: true + + /@babel/helper-function-name/7.19.0: + resolution: + { + integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/template": 7.18.10 + "@babel/types": 7.19.0 + dev: true + + /@babel/helper-hoist-variables/7.18.6: + resolution: + { + integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.19.0 + dev: true + + /@babel/helper-member-expression-to-functions/7.18.9: + resolution: + { + integrity: sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.19.0 + dev: true + + /@babel/helper-module-imports/7.18.6: + resolution: + { + integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.19.0 + dev: true + + /@babel/helper-module-transforms/7.18.9: + resolution: + { + integrity: sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/helper-environment-visitor": 7.18.9 + "@babel/helper-module-imports": 7.18.6 + "@babel/helper-simple-access": 7.18.6 + "@babel/helper-split-export-declaration": 7.18.6 + "@babel/helper-validator-identifier": 7.18.6 + "@babel/template": 7.18.10 + "@babel/traverse": 7.18.9 + "@babel/types": 7.19.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-optimise-call-expression/7.18.6: + resolution: + { + integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.19.0 + dev: true + + /@babel/helper-plugin-utils/7.19.0: + resolution: + { + integrity: sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==, + } + engines: { node: ">=6.9.0" } + dev: true + + /@babel/helper-replace-supers/7.18.9: + resolution: + { + integrity: sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/helper-environment-visitor": 7.18.9 + "@babel/helper-member-expression-to-functions": 7.18.9 + "@babel/helper-optimise-call-expression": 7.18.6 + "@babel/traverse": 7.18.9 + "@babel/types": 7.19.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-simple-access/7.18.6: + resolution: + { + integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.19.0 + dev: true + + /@babel/helper-skip-transparent-expression-wrappers/7.18.9: + resolution: + { + integrity: sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.19.0 + dev: true + + /@babel/helper-split-export-declaration/7.18.6: + resolution: + { + integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.19.0 + dev: true + + /@babel/helper-string-parser/7.18.10: + resolution: + { + integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==, + } + engines: { node: ">=6.9.0" } + dev: true + + /@babel/helper-validator-identifier/7.18.6: + resolution: + { + integrity: sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==, + } + engines: { node: ">=6.9.0" } + dev: true + + /@babel/helper-validator-option/7.18.6: + resolution: + { + integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==, + } + engines: { node: ">=6.9.0" } + dev: true + + /@babel/helpers/7.18.9: + resolution: + { + integrity: sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/template": 7.18.10 + "@babel/traverse": 7.18.9 + "@babel/types": 7.19.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/highlight/7.18.6: + resolution: + { + integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/helper-validator-identifier": 7.18.6 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/parser/7.19.0: + resolution: + { + integrity: sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw==, + } + engines: { node: ">=6.0.0" } + hasBin: true + dependencies: + "@babel/types": 7.19.0 + dev: true + + /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.18.9: + resolution: + { + integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.18.9 + "@babel/helper-create-class-features-plugin": 7.19.0_@babel+core@7.18.9 + "@babel/helper-plugin-utils": 7.19.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-object-rest-spread/7.18.9_@babel+core@7.18.9: + resolution: + { + integrity: sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/compat-data": 7.19.0 + "@babel/core": 7.18.9 + "@babel/helper-compilation-targets": 7.19.0_@babel+core@7.18.9 + "@babel/helper-plugin-utils": 7.19.0 + "@babel/plugin-syntax-object-rest-spread": 7.8.3_@babel+core@7.18.9 + "@babel/plugin-transform-parameters": 7.18.8_@babel+core@7.18.9 + dev: true + + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.18.9: + resolution: + { + integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==, + } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.18.9 + "@babel/helper-plugin-utils": 7.19.0 + dev: true + + /@babel/plugin-syntax-flow/7.18.6_@babel+core@7.18.9: + resolution: + { + integrity: sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.18.9 + "@babel/helper-plugin-utils": 7.19.0 + dev: true + + /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.18.9: + resolution: + { + integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.18.9 + "@babel/helper-plugin-utils": 7.19.0 + dev: true + + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.18.9: + resolution: + { + integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==, + } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.18.9 + "@babel/helper-plugin-utils": 7.19.0 + dev: true + + /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.18.9: + resolution: + { + integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.18.9 + "@babel/helper-plugin-utils": 7.19.0 + dev: true + + /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.18.9: + resolution: + { + integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.18.9 + "@babel/helper-plugin-utils": 7.19.0 + dev: true + + /@babel/plugin-transform-block-scoping/7.18.9_@babel+core@7.18.9: + resolution: + { + integrity: sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.18.9 + "@babel/helper-plugin-utils": 7.19.0 + dev: true + + /@babel/plugin-transform-classes/7.19.0_@babel+core@7.18.9: + resolution: + { + integrity: sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.18.9 + "@babel/helper-annotate-as-pure": 7.18.6 + "@babel/helper-compilation-targets": 7.19.0_@babel+core@7.18.9 + "@babel/helper-environment-visitor": 7.18.9 + "@babel/helper-function-name": 7.19.0 + "@babel/helper-optimise-call-expression": 7.18.6 + "@babel/helper-plugin-utils": 7.19.0 + "@babel/helper-replace-supers": 7.18.9 + "@babel/helper-split-export-declaration": 7.18.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-computed-properties/7.18.9_@babel+core@7.18.9: + resolution: + { + integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.18.9 + "@babel/helper-plugin-utils": 7.19.0 + dev: true + + /@babel/plugin-transform-destructuring/7.18.13_@babel+core@7.18.9: + resolution: + { + integrity: sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.18.9 + "@babel/helper-plugin-utils": 7.19.0 + dev: true + + /@babel/plugin-transform-flow-strip-types/7.18.9_@babel+core@7.18.9: + resolution: + { + integrity: sha512-+G6rp2zRuOAInY5wcggsx4+QVao1qPM0osC9fTUVlAV3zOrzTCnrMAFVnR6+a3T8wz1wFIH7KhYMcMB3u1n80A==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.18.9 + "@babel/helper-plugin-utils": 7.19.0 + "@babel/plugin-syntax-flow": 7.18.6_@babel+core@7.18.9 + dev: true + + /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.18.9: + resolution: + { + integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.18.9 + "@babel/helper-plugin-utils": 7.19.0 + dev: true + + /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.18.9: + resolution: + { + integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.18.9 + "@babel/helper-compilation-targets": 7.19.0_@babel+core@7.18.9 + "@babel/helper-function-name": 7.19.0 + "@babel/helper-plugin-utils": 7.19.0 + dev: true + + /@babel/plugin-transform-literals/7.18.9_@babel+core@7.18.9: + resolution: + { + integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.18.9 + "@babel/helper-plugin-utils": 7.19.0 + dev: true + + /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.18.9: + resolution: + { + integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.18.9 + "@babel/helper-plugin-utils": 7.19.0 + dev: true + + /@babel/plugin-transform-modules-commonjs/7.18.6_@babel+core@7.18.9: + resolution: + { + integrity: sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.18.9 + "@babel/helper-module-transforms": 7.18.9 + "@babel/helper-plugin-utils": 7.19.0 + "@babel/helper-simple-access": 7.18.6 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.18.9: + resolution: + { + integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.18.9 + "@babel/helper-plugin-utils": 7.19.0 + "@babel/helper-replace-supers": 7.18.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-parameters/7.18.8_@babel+core@7.18.9: + resolution: + { + integrity: sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.18.9 + "@babel/helper-plugin-utils": 7.19.0 + dev: true + + /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.18.9: + resolution: + { + integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.18.9 + "@babel/helper-plugin-utils": 7.19.0 + dev: true + + /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.18.9: + resolution: + { + integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.18.9 + "@babel/helper-plugin-utils": 7.19.0 + dev: true + + /@babel/plugin-transform-react-jsx/7.18.6_@babel+core@7.18.9: + resolution: + { + integrity: sha512-Mz7xMPxoy9kPS/JScj6fJs03TZ/fZ1dJPlMjRAgTaxaS0fUBk8FV/A2rRgfPsVCZqALNwMexD+0Uaf5zlcKPpw==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.18.9 + "@babel/helper-annotate-as-pure": 7.18.6 + "@babel/helper-module-imports": 7.18.6 + "@babel/helper-plugin-utils": 7.19.0 + "@babel/plugin-syntax-jsx": 7.18.6_@babel+core@7.18.9 + "@babel/types": 7.19.0 + dev: true + + /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.18.9: + resolution: + { + integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.18.9 + "@babel/helper-plugin-utils": 7.19.0 + dev: true + + /@babel/plugin-transform-spread/7.19.0_@babel+core@7.18.9: + resolution: + { + integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.18.9 + "@babel/helper-plugin-utils": 7.19.0 + "@babel/helper-skip-transparent-expression-wrappers": 7.18.9 + dev: true + + /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.18.9: + resolution: + { + integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==, + } + engines: { node: ">=6.9.0" } + peerDependencies: + "@babel/core": ^7.0.0-0 + dependencies: + "@babel/core": 7.18.9 + "@babel/helper-plugin-utils": 7.19.0 + dev: true + + /@babel/runtime-corejs3/7.18.9: + resolution: + { + integrity: sha512-qZEWeccZCrHA2Au4/X05QW5CMdm4VjUDCrGq5gf1ZDcM4hRqreKrtwAn7yci9zfgAS9apvnsFXiGBHBAxZdK9A==, + } + engines: { node: ">=6.9.0" } + dependencies: + core-js-pure: 3.23.5 + regenerator-runtime: 0.13.9 + + /@babel/runtime/7.18.9: + resolution: + { + integrity: sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==, + } + engines: { node: ">=6.9.0" } + dependencies: + regenerator-runtime: 0.13.9 + + /@babel/template/7.18.10: + resolution: + { + integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/code-frame": 7.18.6 + "@babel/parser": 7.19.0 + "@babel/types": 7.19.0 + dev: true + + /@babel/traverse/7.18.9: + resolution: + { + integrity: sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/code-frame": 7.18.6 + "@babel/generator": 7.18.9 + "@babel/helper-environment-visitor": 7.18.9 + "@babel/helper-function-name": 7.19.0 + "@babel/helper-hoist-variables": 7.18.6 + "@babel/helper-split-export-declaration": 7.18.6 + "@babel/parser": 7.19.0 + "@babel/types": 7.19.0 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types/7.19.0: + resolution: + { + integrity: sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/helper-string-parser": 7.18.10 + "@babel/helper-validator-identifier": 7.18.6 + to-fast-properties: 2.0.0 + dev: true + + /@emotion/hash/0.8.0: + resolution: + { + integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==, + } + dev: false + + /@endemolshinegroup/cosmiconfig-typescript-loader/3.0.2_6wf3rui7fxpk2ozg5pxhvfantu: + resolution: + { + integrity: sha512-QRVtqJuS1mcT56oHpVegkKBlgtWjXw/gHNWO3eL9oyB5Sc7HBoc2OLG/nYpVfT/Jejvo3NUrD0Udk7XgoyDKkA==, + } + engines: { node: ">=10.0.0" } + peerDependencies: + cosmiconfig: ">=6" + dependencies: + cosmiconfig: 7.0.1 + lodash.get: 4.4.2 + make-error: 1.3.6 + ts-node: 9.1.1_typescript@4.8.3 + tslib: 2.4.0 + transitivePeerDependencies: + - typescript + dev: true + + /@eslint/eslintrc/1.3.2: + resolution: + { + integrity: sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.4.0 + globals: 13.16.0 + ignore: 5.2.0 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + /@floating-ui/core/0.7.3: + resolution: + { + integrity: sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg==, + } + dev: false + + /@floating-ui/dom/0.5.4: + resolution: + { + integrity: sha512-419BMceRLq0RrmTSDxn8hf9R3VCJv2K9PUfugh5JyEFmdjzDo+e8U5EdR8nzKq8Yj1htzLm3b6eQEEam3/rrtg==, + } + dependencies: + "@floating-ui/core": 0.7.3 + dev: false + + /@floating-ui/react-dom-interactions/0.5.0_nylzxt5ale4dsv666zkb25cgtm: + resolution: + { + integrity: sha512-rfON7mkHjCeogd0BSXPa8GBp1TMxEytJQqGVlCouSUonJ4POqdHsqcxRnCh0yAaGVaL/nB/J1vq28V4RdoLszg==, + } + deprecated: Package renamed to @floating-ui/react + dependencies: + "@floating-ui/react-dom": 0.7.2_nylzxt5ale4dsv666zkb25cgtm + aria-hidden: 1.1.3 + use-isomorphic-layout-effect: 1.1.2_fn6mmk7tilns4p7ajkklhuudvi + transitivePeerDependencies: + - "@types/react" + - react + - react-dom + dev: false + + /@floating-ui/react-dom/0.7.2_nylzxt5ale4dsv666zkb25cgtm: + resolution: + { + integrity: sha512-1T0sJcpHgX/u4I1OzIEhlcrvkUN8ln39nz7fMoE/2HDHrPiMFoOGR7++GYyfUmIQHkkrTinaeQsO3XWubjSvGg==, + } + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + dependencies: + "@floating-ui/dom": 0.5.4 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + use-isomorphic-layout-effect: 1.1.2_fn6mmk7tilns4p7ajkklhuudvi + transitivePeerDependencies: + - "@types/react" + dev: false + + /@graphql-codegen/cli/2.7.0_siupcgn3wlvluhjnbpgmgner4m: + resolution: + { + integrity: sha512-qlBcS6jGfZ/xWXwqiyRLHGRuLC9gUdF8AwGHN7LdAYEP5MjL7pIXb02W5JuvMn47rrvr2Q22H9ECppZX65oSAg==, + } + hasBin: true + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + "@graphql-codegen/core": 2.5.1_graphql@16.5.0 + "@graphql-codegen/plugin-helpers": 2.6.0_graphql@16.5.0 + "@graphql-tools/apollo-engine-loader": 7.3.1_graphql@16.5.0 + "@graphql-tools/code-file-loader": 7.3.0_graphql@16.5.0 + "@graphql-tools/git-loader": 7.2.0_graphql@16.5.0 + "@graphql-tools/github-loader": 7.3.1_graphql@16.5.0 + "@graphql-tools/graphql-file-loader": 7.4.0_graphql@16.5.0 + "@graphql-tools/json-file-loader": 7.4.0_graphql@16.5.0 + "@graphql-tools/load": 7.7.0_graphql@16.5.0 + "@graphql-tools/prisma-loader": 7.2.2_ewm3rx2a6dfbdevnsyuui3n5xm + "@graphql-tools/url-loader": 7.12.1_ewm3rx2a6dfbdevnsyuui3n5xm + "@graphql-tools/utils": 8.8.0_graphql@16.5.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + change-case-all: 1.0.14 + chokidar: 3.5.3 + common-tags: 1.8.2 + cosmiconfig: 7.0.1 + debounce: 1.2.1 + detect-indent: 6.1.0 + graphql: 16.5.0 + graphql-config: 4.3.1_siupcgn3wlvluhjnbpgmgner4m + inquirer: 8.2.4 + is-glob: 4.0.3 + json-to-pretty-yaml: 1.2.2 + latest-version: 5.1.0 + listr: 0.14.3 + listr-update-renderer: 0.5.0_listr@0.14.3 + log-symbols: 4.1.0 + mkdirp: 1.0.4 + string-env-interpolation: 1.0.1 + ts-log: 2.2.4 + wrap-ansi: 7.0.0 + yaml: 1.10.2 + yargs: 17.5.1 + transitivePeerDependencies: + - "@types/node" + - bufferutil + - encoding + - supports-color + - typescript + - utf-8-validate + - zen-observable + - zenObservable + dev: true + + /@graphql-codegen/core/2.5.1_graphql@16.5.0: + resolution: + { + integrity: sha512-alctBVl2hMnBXDLwkgmnFPrZVIiBDsWJSmxJcM4GKg1PB23+xuov35GE47YAyAhQItE1B1fbYnbb1PtGiDZ4LA==, + } + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + "@graphql-codegen/plugin-helpers": 2.6.0_graphql@16.5.0 + "@graphql-tools/schema": 8.5.0_graphql@16.5.0 + "@graphql-tools/utils": 8.8.0_graphql@16.5.0 + graphql: 16.5.0 + tslib: 2.3.1 + dev: true + + /@graphql-codegen/introspection/2.1.1_graphql@16.5.0: + resolution: + { + integrity: sha512-O9zsy0IoFYDo37pBVF4pSvRMDx/AKdgOxyko4R/O+0DHEw9Nya/pQ3dbn+LDLj2n6X+xOXUBUfFvqhODTqU28w==, + } + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + "@graphql-codegen/plugin-helpers": 2.6.0_graphql@16.5.0 + graphql: 16.5.0 + tslib: 2.3.1 + dev: true + + /@graphql-codegen/plugin-helpers/2.6.0_graphql@16.5.0: + resolution: + { + integrity: sha512-z8uw6GdUvtKyt5YSijtj1yRqI0A2lBWdGIgTjgXaAKqSC+InlVBy+89859LlKNMrO7somdt44cbMys8r4Hbqeg==, + } + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + "@graphql-tools/utils": 8.8.0_graphql@16.5.0 + change-case-all: 1.0.14 + common-tags: 1.8.2 + graphql: 16.5.0 + import-from: 4.0.0 + lodash: 4.17.21 + tslib: 2.4.0 + dev: true + + /@graphql-codegen/schema-ast/2.5.0_graphql@16.5.0: + resolution: + { + integrity: sha512-nlF4Yc7h90nmogG2E11TeFJ3/hCkb4SDMSdbJX68b1mhvVEji/kq3zWYKAQ+lAzjZ7HF94Eylm3MrZAjjpCKIA==, + } + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + "@graphql-codegen/plugin-helpers": 2.6.0_graphql@16.5.0 + "@graphql-tools/utils": 8.8.0_graphql@16.5.0 + graphql: 16.5.0 + tslib: 2.4.0 + dev: true + + /@graphql-codegen/typed-document-node/2.3.2_graphql@16.5.0: + resolution: + { + integrity: sha512-QJtSXEFMx5Ze5vqGXOphhuOAIbWfTPjTAMoNFXtaLsbrihooDNq2/BIujAxHc/Cw0pS2JjMRjbur118v0yXbSQ==, + } + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + "@graphql-codegen/plugin-helpers": 2.6.0_graphql@16.5.0 + "@graphql-codegen/visitor-plugin-common": 2.12.0_graphql@16.5.0 + auto-bind: 4.0.0 + change-case-all: 1.0.14 + graphql: 16.5.0 + tslib: 2.4.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@graphql-codegen/typescript-operations/2.4.3_graphql@16.5.0: + resolution: + { + integrity: sha512-MW9cU/zCAmfFAObwW23e+GrW3CoV9OX2gVm/V1565WGZXDQPUc5Y5IjdfGfunV4ApkgFDiHpF1Mz/AS55OErgw==, + } + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + "@graphql-codegen/plugin-helpers": 2.6.0_graphql@16.5.0 + "@graphql-codegen/typescript": 2.6.0_graphql@16.5.0 + "@graphql-codegen/visitor-plugin-common": 2.10.0_graphql@16.5.0 + auto-bind: 4.0.0 + graphql: 16.5.0 + tslib: 2.4.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@graphql-codegen/typescript-urql/3.6.2_ubrtutz2urcxyhwqr2zvlqjzha: + resolution: + { + integrity: sha512-iaAHoFYx3ZIBnIHO5/gvXdkVOYZVKKusrHr/hwOzOM/yVmapXMh/2+9YE9WHr2JVwDcy7STZPeN058hWHgILwg==, + } + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + graphql-tag: ^2.0.0 + dependencies: + "@graphql-codegen/plugin-helpers": 2.6.0_graphql@16.5.0 + "@graphql-codegen/visitor-plugin-common": 2.12.0_graphql@16.5.0 + auto-bind: 4.0.0 + graphql: 16.5.0 + graphql-tag: 2.12.6_graphql@16.5.0 + tslib: 2.4.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@graphql-codegen/typescript/2.6.0_graphql@16.5.0: + resolution: + { + integrity: sha512-f36ilg8J+wui0OhmQglIZ+2z4Ybc08Y7r7BlBDqfJ1F5X0zau0SlC7Hp2iCoCA0ucqZYtiUU/0n+/R8m1cTrQQ==, + } + peerDependencies: + graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + "@graphql-codegen/plugin-helpers": 2.6.0_graphql@16.5.0 + "@graphql-codegen/schema-ast": 2.5.0_graphql@16.5.0 + "@graphql-codegen/visitor-plugin-common": 2.10.0_graphql@16.5.0 + auto-bind: 4.0.0 + graphql: 16.5.0 + tslib: 2.4.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@graphql-codegen/urql-introspection/2.1.1_graphql@16.5.0: + resolution: + { + integrity: sha512-XLDLxyK8N3x3fvbkMoDb6lYPX2/rx3LiYT8dBeZYrBH1i9Tu0kfcEg0GeqNeLxiwnch9PZIC3O+gzROqP+rveA==, + } + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + "@graphql-codegen/plugin-helpers": 2.6.0_graphql@16.5.0 + "@urql/introspection": 0.3.1_graphql@16.5.0 + graphql: 16.5.0 + tslib: 2.3.1 + dev: true + + /@graphql-codegen/visitor-plugin-common/2.10.0_graphql@16.5.0: + resolution: + { + integrity: sha512-nWoxHKUdwOJCWV96Ks1x4EwYCWsZDJXB+2j6EQz5j27DzdxmQInZ86degaDCd3EgbwhMQEMtiZiPGFFDrgBkHA==, + } + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + "@graphql-codegen/plugin-helpers": 2.6.0_graphql@16.5.0 + "@graphql-tools/optimize": 1.3.0_graphql@16.5.0 + "@graphql-tools/relay-operation-optimizer": 6.5.0_graphql@16.5.0 + "@graphql-tools/utils": 8.8.0_graphql@16.5.0 + auto-bind: 4.0.0 + change-case-all: 1.0.14 + dependency-graph: 0.11.0 + graphql: 16.5.0 + graphql-tag: 2.12.6_graphql@16.5.0 + parse-filepath: 1.0.2 + tslib: 2.4.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@graphql-codegen/visitor-plugin-common/2.12.0_graphql@16.5.0: + resolution: + { + integrity: sha512-ULhFgOY05U+dlPsXkPT2wSBaAZMtEuHPL5Q1u8xwBdHWHi/uT4L5zEcBx+If/f6UWrOw7ufjEM0L7XSupe1iCA==, + } + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + "@graphql-codegen/plugin-helpers": 2.6.0_graphql@16.5.0 + "@graphql-tools/optimize": 1.3.0_graphql@16.5.0 + "@graphql-tools/relay-operation-optimizer": 6.5.0_graphql@16.5.0 + "@graphql-tools/utils": 8.8.0_graphql@16.5.0 + auto-bind: 4.0.0 + change-case-all: 1.0.14 + dependency-graph: 0.11.0 + graphql: 16.5.0 + graphql-tag: 2.12.6_graphql@16.5.0 + parse-filepath: 1.0.2 + tslib: 2.4.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@graphql-tools/apollo-engine-loader/7.3.1_graphql@16.5.0: + resolution: + { + integrity: sha512-PJhX4gQeoPtR2BJFYHYVLdLYkqQHB94r9IC64GamFV+kxR+jzQYZJdDTgnFZxvpvGJ7rEgYKNjcfWS+r+CQisQ==, + } + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + "@graphql-tools/utils": 8.8.0_graphql@16.5.0 + cross-undici-fetch: 0.4.14 + graphql: 16.5.0 + sync-fetch: 0.4.1 + tslib: 2.4.0 + transitivePeerDependencies: + - encoding + dev: true + + /@graphql-tools/batch-execute/8.5.0_graphql@16.5.0: + resolution: + { + integrity: sha512-S9/76X4uYIbVlJyRzXhCBbTJvVD0VvaWNqGiKgkITxlq4aBsTOHVuE84OSi3E1QKP3PTiJYrgMIn220iFOkyQw==, + } + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + "@graphql-tools/utils": 8.8.0_graphql@16.5.0 + dataloader: 2.1.0 + graphql: 16.5.0 + tslib: 2.4.0 + value-or-promise: 1.0.11 + dev: true + + /@graphql-tools/code-file-loader/7.3.0_graphql@16.5.0: + resolution: + { + integrity: sha512-mzevVv5JYyyRIbE6R0mxIniCAZWUGdoNYX97HdVgqChLOl2XRf9I8MarVPewHLmjLTZuWrdQx4ta4sPTLk4tUQ==, + } + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + "@graphql-tools/graphql-tag-pluck": 7.3.0_graphql@16.5.0 + "@graphql-tools/utils": 8.8.0_graphql@16.5.0 + globby: 11.1.0 + graphql: 16.5.0 + tslib: 2.4.0 + unixify: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@graphql-tools/delegate/8.8.0_graphql@16.5.0: + resolution: + { + integrity: sha512-dbhfOI8rQXPcowXrbwHLOBY9oGi7qxtlrXF4RuRXmjqGTs2AgogdOE3Ep1+6wFD7qYTuFmHXZ8Cl0PmhoZUgrg==, + } + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + "@graphql-tools/batch-execute": 8.5.0_graphql@16.5.0 + "@graphql-tools/schema": 8.5.0_graphql@16.5.0 + "@graphql-tools/utils": 8.8.0_graphql@16.5.0 + dataloader: 2.1.0 + graphql: 16.5.0 + tslib: 2.4.0 + value-or-promise: 1.0.11 + dev: true + + /@graphql-tools/git-loader/7.2.0_graphql@16.5.0: + resolution: + { + integrity: sha512-aFJ5Py9sCIhiSyE+EK4zC+mQ4zRUNGGNwosqlCYNcmhtGFwlXArB13/rdj2b4p3RsmTe31Mso9VfsEZXQ6CGCw==, + } + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + "@graphql-tools/graphql-tag-pluck": 7.3.0_graphql@16.5.0 + "@graphql-tools/utils": 8.8.0_graphql@16.5.0 + graphql: 16.5.0 + is-glob: 4.0.3 + micromatch: 4.0.5 + tslib: 2.4.0 + unixify: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@graphql-tools/github-loader/7.3.1_graphql@16.5.0: + resolution: + { + integrity: sha512-sus/YOZKhhbcBQTCWFvUdIzFThm/LiAlSh9+Bt+hNz2K05PWzR6XD7Fo2ejh6bSAZvevJBvsH/4xf1YSK86Fkg==, + } + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + "@graphql-tools/graphql-tag-pluck": 7.3.0_graphql@16.5.0 + "@graphql-tools/utils": 8.8.0_graphql@16.5.0 + cross-undici-fetch: 0.4.14 + graphql: 16.5.0 + sync-fetch: 0.4.1 + tslib: 2.4.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@graphql-tools/graphql-file-loader/7.4.0_graphql@16.5.0: + resolution: + { + integrity: sha512-r1lslE5GlWO/nbDX82enHjvva7qQiZEIPm+LC9JSgKaYuVoYHuIuIAVYkpBHeaRK1Kbh/86pEhL7PuBZ/cIWSA==, + } + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + "@graphql-tools/import": 6.7.0_graphql@16.5.0 + "@graphql-tools/utils": 8.8.0_graphql@16.5.0 + globby: 11.1.0 + graphql: 16.5.0 + tslib: 2.4.0 + unixify: 1.0.0 + dev: true + + /@graphql-tools/graphql-tag-pluck/7.3.0_graphql@16.5.0: + resolution: + { + integrity: sha512-GxtgGTSOiQuFc/yNWXsPJ5QEgGlH+4qBf1paqUJtjFpm89dZA+VkdjoIDiFg8fyXGivjZ37+XAUbuu6UlsT+6Q==, + } + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + "@babel/parser": 7.19.0 + "@babel/traverse": 7.18.9 + "@babel/types": 7.19.0 + "@graphql-tools/utils": 8.8.0_graphql@16.5.0 + graphql: 16.5.0 + tslib: 2.4.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@graphql-tools/import/6.7.0_graphql@16.5.0: + resolution: + { + integrity: sha512-u9JL4fClKKyBTQpgb4QFacYUwgBCs4lW1NaHX0hD2zBdahIYidokBY0QkOqOCEAnWeFqpEmAjB62ulLiAJWc2g==, + } + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + "@graphql-tools/utils": 8.8.0_graphql@16.5.0 + graphql: 16.5.0 + resolve-from: 5.0.0 + tslib: 2.4.0 + dev: true + + /@graphql-tools/json-file-loader/7.4.0_graphql@16.5.0: + resolution: + { + integrity: sha512-6oR7Ulc5iZc5SM3g1Yj91DqSu3TNbfGK/0baE8KyUlvq6KiIuWFWDy13RGnNesftt4RSWvZqGzu/kzXcBHtt+A==, + } + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + "@graphql-tools/utils": 8.8.0_graphql@16.5.0 + globby: 11.1.0 + graphql: 16.5.0 + tslib: 2.4.0 + unixify: 1.0.0 + dev: true + + /@graphql-tools/load/7.7.0_graphql@16.5.0: + resolution: + { + integrity: sha512-6KX7Z8BtlFScDr0pIac92QZWlPGbHcpNMesX/6Y3Vsp3FeFnAYfzZldXZQcJoW7Yl+gHdFwYVq683wSH64kNrw==, + } + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + "@graphql-tools/schema": 8.5.0_graphql@16.5.0 + "@graphql-tools/utils": 8.8.0_graphql@16.5.0 + graphql: 16.5.0 + p-limit: 3.1.0 + tslib: 2.4.0 + dev: true + + /@graphql-tools/merge/8.3.0_graphql@16.5.0: + resolution: + { + integrity: sha512-xRa7RAQok/0DD2YnjuqikMrr7dUAxTpdGtZ7BkvUUGhYs3B3p7reCAfvOVr1DJAqVToP7hdlMk+S5+Ylk+AaqA==, + } + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + "@graphql-tools/utils": 8.8.0_graphql@16.5.0 + graphql: 16.5.0 + tslib: 2.4.0 + dev: true + + /@graphql-tools/optimize/1.3.0_graphql@16.5.0: + resolution: + { + integrity: sha512-30QOWJoMJEt1De7tAFtWJ6VPrP6SLq+tSQrA3x+WMvCW3q2exq5wPDpvAXOakVKu0y8L2E+YkipC0hcQPBQdLg==, + } + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + graphql: 16.5.0 + tslib: 2.4.0 + dev: true + + /@graphql-tools/prisma-loader/7.2.2_ewm3rx2a6dfbdevnsyuui3n5xm: + resolution: + { + integrity: sha512-f5txUBRwwZmPQYL5g5CNdOjOglFE/abtnEVOvUCq+nET0BRuxcuxUD5vykfZnkql9sNvnCFAfrZuBVe5S2n3bA==, + } + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + "@graphql-tools/url-loader": 7.12.1_ewm3rx2a6dfbdevnsyuui3n5xm + "@graphql-tools/utils": 8.8.0_graphql@16.5.0 + "@types/js-yaml": 4.0.5 + "@types/json-stable-stringify": 1.0.34 + "@types/jsonwebtoken": 8.5.8 + chalk: 4.1.2 + debug: 4.3.4 + dotenv: 16.0.1 + graphql: 16.5.0 + graphql-request: 4.3.0_graphql@16.5.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + isomorphic-fetch: 3.0.0 + js-yaml: 4.1.0 + json-stable-stringify: 1.0.1 + jsonwebtoken: 8.5.1 + lodash: 4.17.21 + replaceall: 0.1.6 + scuid: 1.1.0 + tslib: 2.4.0 + yaml-ast-parser: 0.0.43 + transitivePeerDependencies: + - "@types/node" + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: true + + /@graphql-tools/relay-operation-optimizer/6.5.0_graphql@16.5.0: + resolution: + { + integrity: sha512-snqmdPiM2eBex6pijRFx4H9MPumVd8ZWM3y+aaRwzc73VUNnjHE4NyVZEEIdlbmJ2HoQ9Zrm9aFlHVMK7B59zg==, + } + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + "@ardatan/relay-compiler": 12.0.0_graphql@16.5.0 + "@graphql-tools/utils": 8.8.0_graphql@16.5.0 + graphql: 16.5.0 + tslib: 2.4.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@graphql-tools/schema/8.5.0_graphql@16.5.0: + resolution: + { + integrity: sha512-VeFtKjM3SA9/hCJJfr95aEdC3G0xIKM9z0Qdz4i+eC1g2fdZYnfWFt2ucW4IME+2TDd0enHlKzaV0qk2SLVUww==, + } + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + "@graphql-tools/merge": 8.3.0_graphql@16.5.0 + "@graphql-tools/utils": 8.8.0_graphql@16.5.0 + graphql: 16.5.0 + tslib: 2.4.0 + value-or-promise: 1.0.11 + dev: true + + /@graphql-tools/url-loader/7.12.1_ewm3rx2a6dfbdevnsyuui3n5xm: + resolution: + { + integrity: sha512-Fd3ZZLEEr9GGFHEbdrcaMHFQu01BLpFnNDBkISupvjokd497O5Uh0xZvsZGC6mxVt0WWQWpgaK2ef+oLuOdLqQ==, + } + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + "@graphql-tools/delegate": 8.8.0_graphql@16.5.0 + "@graphql-tools/utils": 8.8.0_graphql@16.5.0 + "@graphql-tools/wrap": 8.5.0_graphql@16.5.0 + "@n1ru4l/graphql-live-query": 0.9.0_graphql@16.5.0 + "@types/ws": 8.5.3 + cross-undici-fetch: 0.4.14 + dset: 3.1.2 + extract-files: 11.0.0 + graphql: 16.5.0 + graphql-ws: 5.9.1_graphql@16.5.0 + isomorphic-ws: 5.0.0_ws@8.8.1 + meros: 1.2.0_@types+node@18.7.16 + sync-fetch: 0.4.1 + tslib: 2.4.0 + value-or-promise: 1.0.11 + ws: 8.8.1 + transitivePeerDependencies: + - "@types/node" + - bufferutil + - encoding + - utf-8-validate + dev: true + + /@graphql-tools/utils/8.8.0_graphql@16.5.0: + resolution: + { + integrity: sha512-KJrtx05uSM/cPYFdTnGAS1doL5bftJLAiFCDMZ8Vkifztz3BFn3gpFiy/o4wDtM8s39G46mxmt2Km/RmeltfGw==, + } + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + graphql: 16.5.0 + tslib: 2.4.0 + dev: true + + /@graphql-tools/wrap/8.5.0_graphql@16.5.0: + resolution: + { + integrity: sha512-I+x9dBNzC135WWPi04ejqurR/zDmhfeGbCftCaYKF4CvgWd+ZaJx4Uc74n1SBegQtrj+KDrOS4HgKwf9vAVR7A==, + } + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + "@graphql-tools/delegate": 8.8.0_graphql@16.5.0 + "@graphql-tools/schema": 8.5.0_graphql@16.5.0 + "@graphql-tools/utils": 8.8.0_graphql@16.5.0 + graphql: 16.5.0 + tslib: 2.4.0 + value-or-promise: 1.0.11 + dev: true + + /@graphql-typed-document-node/core/3.1.1_graphql@16.5.0: + resolution: + { + integrity: sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==, + } + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + graphql: 16.5.0 + + /@humanwhocodes/config-array/0.10.4: + resolution: + { + integrity: sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==, + } + engines: { node: ">=10.10.0" } + dependencies: + "@humanwhocodes/object-schema": 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + /@humanwhocodes/gitignore-to-minimatch/1.0.2: + resolution: + { + integrity: sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==, + } + + /@humanwhocodes/module-importer/1.0.1: + resolution: + { + integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, + } + engines: { node: ">=12.22" } + + /@humanwhocodes/object-schema/1.2.1: + resolution: + { + integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==, + } + + /@iarna/toml/2.2.5: + resolution: + { + integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==, + } + dev: true + + /@jridgewell/gen-mapping/0.1.1: + resolution: + { + integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==, + } + engines: { node: ">=6.0.0" } + dependencies: + "@jridgewell/set-array": 1.1.2 + "@jridgewell/sourcemap-codec": 1.4.14 + dev: true + + /@jridgewell/gen-mapping/0.3.2: + resolution: + { + integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==, + } + engines: { node: ">=6.0.0" } + dependencies: + "@jridgewell/set-array": 1.1.2 + "@jridgewell/sourcemap-codec": 1.4.14 + "@jridgewell/trace-mapping": 0.3.14 + dev: true + + /@jridgewell/resolve-uri/3.1.0: + resolution: + { + integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==, + } + engines: { node: ">=6.0.0" } + dev: true + + /@jridgewell/set-array/1.1.2: + resolution: + { + integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==, + } + engines: { node: ">=6.0.0" } + dev: true + + /@jridgewell/sourcemap-codec/1.4.14: + resolution: + { + integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==, + } + dev: true + + /@jridgewell/trace-mapping/0.3.14: + resolution: + { + integrity: sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==, + } + dependencies: + "@jridgewell/resolve-uri": 3.1.0 + "@jridgewell/sourcemap-codec": 1.4.14 + dev: true + + /@material-ui/core/4.12.4_nylzxt5ale4dsv666zkb25cgtm: + resolution: + { + integrity: sha512-tr7xekNlM9LjA6pagJmL8QCgZXaubWUwkJnoYcMKd4gw/t4XiyvnTkjdGrUVicyB2BsdaAv1tvow45bPM4sSwQ==, + } + engines: { node: ">=8.0.0" } + peerDependencies: + "@types/react": ^16.8.6 || ^17.0.0 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + dependencies: + "@babel/runtime": 7.18.9 + "@material-ui/styles": 4.11.5_nylzxt5ale4dsv666zkb25cgtm + "@material-ui/system": 4.12.2_nylzxt5ale4dsv666zkb25cgtm + "@material-ui/types": 5.1.0_@types+react@18.0.19 + "@material-ui/utils": 4.11.3_biqbaboplfbrettd7655fr4n2y + "@types/react": 18.0.19 + "@types/react-transition-group": 4.4.5 + clsx: 1.2.1 + hoist-non-react-statics: 3.3.2 + popper.js: 1.16.1-lts + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-is: 17.0.2 + react-transition-group: 4.4.2_biqbaboplfbrettd7655fr4n2y + dev: false + + /@material-ui/icons/4.11.3_syzufrrnbgjhwvvotesawp6yai: + resolution: + { + integrity: sha512-IKHlyx6LDh8n19vzwH5RtHIOHl9Tu90aAAxcbWME6kp4dmvODM3UvOHJeMIDzUbd4muuJKHmlNoBN+mDY4XkBA==, + } + engines: { node: ">=8.0.0" } + peerDependencies: + "@material-ui/core": ^4.0.0 + "@types/react": ^16.8.6 || ^17.0.0 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + dependencies: + "@babel/runtime": 7.18.9 + "@material-ui/core": 4.12.4_nylzxt5ale4dsv666zkb25cgtm + "@types/react": 18.0.19 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false + + /@material-ui/lab/4.0.0-alpha.61_syzufrrnbgjhwvvotesawp6yai: + resolution: + { + integrity: sha512-rSzm+XKiNUjKegj8bzt5+pygZeckNLOr+IjykH8sYdVk7dE9y2ZuUSofiMV2bJk3qU+JHwexmw+q0RyNZB9ugg==, + } + engines: { node: ">=8.0.0" } + peerDependencies: + "@material-ui/core": ^4.12.1 + "@types/react": ^16.8.6 || ^17.0.0 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + dependencies: + "@babel/runtime": 7.18.9 + "@material-ui/core": 4.12.4_nylzxt5ale4dsv666zkb25cgtm + "@material-ui/utils": 4.11.3_biqbaboplfbrettd7655fr4n2y + "@types/react": 18.0.19 + clsx: 1.2.1 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-is: 17.0.2 + dev: false + + /@material-ui/styles/4.11.5_nylzxt5ale4dsv666zkb25cgtm: + resolution: + { + integrity: sha512-o/41ot5JJiUsIETME9wVLAJrmIWL3j0R0Bj2kCOLbSfqEkKf0fmaPt+5vtblUh5eXr2S+J/8J3DaCb10+CzPGA==, + } + engines: { node: ">=8.0.0" } + peerDependencies: + "@types/react": ^16.8.6 || ^17.0.0 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + dependencies: + "@babel/runtime": 7.18.9 + "@emotion/hash": 0.8.0 + "@material-ui/types": 5.1.0_@types+react@18.0.19 + "@material-ui/utils": 4.11.3_biqbaboplfbrettd7655fr4n2y + "@types/react": 18.0.19 + clsx: 1.2.1 + csstype: 2.6.20 + hoist-non-react-statics: 3.3.2 + jss: 10.9.0 + jss-plugin-camel-case: 10.9.0 + jss-plugin-default-unit: 10.9.0 + jss-plugin-global: 10.9.0 + jss-plugin-nested: 10.9.0 + jss-plugin-props-sort: 10.9.0 + jss-plugin-rule-value-function: 10.9.0 + jss-plugin-vendor-prefixer: 10.9.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false + + /@material-ui/system/4.12.2_nylzxt5ale4dsv666zkb25cgtm: + resolution: + { + integrity: sha512-6CSKu2MtmiJgcCGf6nBQpM8fLkuB9F55EKfbdTC80NND5wpTmKzwdhLYLH3zL4cLlK0gVaaltW7/wMuyTnN0Lw==, + } + engines: { node: ">=8.0.0" } + peerDependencies: + "@types/react": ^16.8.6 || ^17.0.0 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + dependencies: + "@babel/runtime": 7.18.9 + "@material-ui/utils": 4.11.3_biqbaboplfbrettd7655fr4n2y + "@types/react": 18.0.19 + csstype: 2.6.20 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false + + /@material-ui/types/5.1.0_@types+react@18.0.19: + resolution: + { + integrity: sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==, + } + peerDependencies: + "@types/react": "*" + peerDependenciesMeta: + "@types/react": + optional: true + dependencies: + "@types/react": 18.0.19 + dev: false + + /@material-ui/utils/4.11.3_biqbaboplfbrettd7655fr4n2y: + resolution: + { + integrity: sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg==, + } + engines: { node: ">=8.0.0" } + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + dependencies: + "@babel/runtime": 7.18.9 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-is: 17.0.2 + dev: false + + /@n1ru4l/graphql-live-query/0.9.0_graphql@16.5.0: + resolution: + { + integrity: sha512-BTpWy1e+FxN82RnLz4x1+JcEewVdfmUhV1C6/XYD5AjS7PQp9QFF7K8bCD6gzPTr2l+prvqOyVueQhFJxB1vfg==, + } + peerDependencies: + graphql: ^15.4.0 || ^16.0.0 + dependencies: + graphql: 16.5.0 + dev: true + + /@next/env/13.1.0: + resolution: + { + integrity: sha512-6iNixFzCndH+Bl4FetQzOMjxCJqg8fs0LAlZviig1K6mIjOWH2m2oPcHcOg1Ta5VCe7Bx5KG1Hs+NrWDUkBt9A==, + } + dev: false + + /@next/eslint-plugin-next/13.1.4: + resolution: + { + integrity: sha512-a/T30+7Q1scom5t3L+wEBkYzCa+bhT/3DTxzxlNy4Xckw2InzcckQGeIi/larDgh5r2fSSJswhYAZEcKtuJiig==, + } + dependencies: + glob: 7.1.7 + dev: false + + /@next/swc-android-arm-eabi/13.1.0: + resolution: + { + integrity: sha512-ANBZZRjZBV+Sii11ZVxbxSvfIi6dZwu4w+XnJBDmz+0/wtAigpjYWyMkuWZ/RCD7INdusOlU4EgJ99WzWGIDjA==, + } + engines: { node: ">= 10" } + cpu: [arm] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@next/swc-android-arm64/13.1.0: + resolution: + { + integrity: sha512-nPwbkS3aZjCIe61wztgjXjIeylijOP8uGtDGjjJVUF3B/5GLVx3ngZu6tjPTMEgaLM0u//HuGK+aZolWUQWE4g==, + } + engines: { node: ">= 10" } + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@next/swc-darwin-arm64/13.1.0: + resolution: + { + integrity: sha512-0hUydiAW18jK2uGPnZRdnRQtdB/3ZoPo84A6zH7MJHxAWw9lzVsv3kMg9kgVBBlrivzqdNN8rdgA+eYNxzXU9w==, + } + engines: { node: ">= 10" } + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-darwin-x64/13.1.0: + resolution: + { + integrity: sha512-3S3iQqJIysklj0Q9gnanuYMzF8H9p+fUVhvSHxVVLcKH4HsE8EGddNkXsaOyznL1kC6vGKw7h6uz1ojaXEafCA==, + } + engines: { node: ">= 10" } + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-freebsd-x64/13.1.0: + resolution: + { + integrity: sha512-wAgzwm/em48GIuWq3OYr0BpncMy7c+UA3hsyX+xKh/vb/sOIpQly7JTa+GNdk17s7kprhMfsgzPG3da36NLpkA==, + } + engines: { node: ">= 10" } + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm-gnueabihf/13.1.0: + resolution: + { + integrity: sha512-Cr2hzL7ad+4nj9KrR1Cz1RDcsWa61X6I7gc6PToRYIY4gL480Sijq19xo7dlXQPnr1viVzbNiNnNXZASHv7uvw==, + } + engines: { node: ">= 10" } + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-gnu/13.1.0: + resolution: + { + integrity: sha512-EjCIKfeZB9h72evL2yGNwBvE5Im96Zn7o2zxImlvCiUYb/xXDqn4hzhck035BSP3g3sGDLfijFTE1wKRyXIk4w==, + } + engines: { node: ">= 10" } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-musl/13.1.0: + resolution: + { + integrity: sha512-WAsZtCtPXlz/7/bnW9ryw856xEun+c6xSwZwbcvrMxtcSiW3z0LD91Nsj3AkexsjRtBjeEpNeVtDExqF2VKKSA==, + } + engines: { node: ">= 10" } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-gnu/13.1.0: + resolution: + { + integrity: sha512-Tjd5gieI3X9vPce5yF+GsQxOl0jwUkyOrTR1g5PQr+bT/9Qos/yPL48H1L5ayEp0hxgLVPW7skGal7lVnAoVEQ==, + } + engines: { node: ">= 10" } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-musl/13.1.0: + resolution: + { + integrity: sha512-H9UMEQv40e9pkgdX4mCms0dDf2dimmZ6WXhDTWF/yIh9icgcsHaP73BJ9IFlgvh80wLiUgWZ3LAX4vXnXzidmg==, + } + engines: { node: ">= 10" } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-arm64-msvc/13.1.0: + resolution: + { + integrity: sha512-LFFIKjW/cPl4wvG8HF/6oYPJZ+Jy32G3FUflC8UW1Od6W9yOSEvadhk9fMyDZN4cgsNOcVc3uVSMpcuuCpbDGw==, + } + engines: { node: ">= 10" } + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-ia32-msvc/13.1.0: + resolution: + { + integrity: sha512-MBLaoHZSenMdxhB3Ww1VNEhjyPT3uLjzAi5Ygk48LLLbOGu5KxQolhINRrqGuJWqJRNWSJ9JSFBfJrZwQzrUew==, + } + engines: { node: ">= 10" } + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-x64-msvc/13.1.0: + resolution: + { + integrity: sha512-fFTfIQvnmpbKoyh4v3ezlGqtERlgc2Sx8qJwPuYqoVi0V08wCx9wp2Iq1CINxP3UMHkEeNX7gYpDOd+9Cw9EiQ==, + } + engines: { node: ">= 10" } + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@nodelib/fs.scandir/2.1.5: + resolution: + { + integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, + } + engines: { node: ">= 8" } + dependencies: + "@nodelib/fs.stat": 2.0.5 + run-parallel: 1.2.0 + + /@nodelib/fs.stat/2.0.5: + resolution: + { + integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, + } + engines: { node: ">= 8" } + + /@nodelib/fs.walk/1.2.8: + resolution: + { + integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, + } + engines: { node: ">= 8" } + dependencies: + "@nodelib/fs.scandir": 2.1.5 + fastq: 1.13.0 + + /@pkgr/utils/2.3.1: + resolution: + { + integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==, + } + engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 } + dependencies: + cross-spawn: 7.0.3 + is-glob: 4.0.3 + open: 8.4.0 + picocolors: 1.0.0 + tiny-glob: 0.2.9 + tslib: 2.4.0 + + /@rollup/plugin-sucrase/4.0.4_rollup@2.78.0: + resolution: + { + integrity: sha512-YH4J8yoJb5EVnLhAwWxYAQNh2SJOR+SdZ6XdgoKEv6Kxm33riYkM8MlMaggN87UoISP52qAFyZ5ey56wu6umGg==, + } + engines: { node: ">=12.0.0" } + peerDependencies: + rollup: ^2.53.1 + dependencies: + "@rollup/pluginutils": 4.2.1 + rollup: 2.78.0 + sucrase: 3.25.0 + dev: false + + /@rollup/plugin-virtual/3.0.0_rollup@2.78.0: + resolution: + { + integrity: sha512-K9KORe1myM62o0lKkNR4MmCxjwuAXsZEtIHpaILfv4kILXTOrXt/R2ha7PzMcCHPYdnkWPiBZK8ed4Zr3Ll5lQ==, + } + engines: { node: ">=14.0.0" } + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + rollup: 2.78.0 + dev: false + + /@rollup/pluginutils/4.2.1: + resolution: + { + integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==, + } + engines: { node: ">= 8.0.0" } + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: false + + /@rushstack/eslint-patch/1.2.0: + resolution: + { + integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==, + } + dev: false + + /@saleor/app-sdk/0.27.1_s75y6mxmikaw2mhqmuko6w7njm: + resolution: + { + integrity: sha512-ZNbucokKCdBE1qa+YLHvjBVazYcRuUExBdaPW9aNxfeYyXgQNCdHqJx9oA/S1lMEVSbZSIRcn8Sx1+X/eEV8BA==, + } + peerDependencies: + next: ">=12" + react: ">=17" + react-dom: ">=17" + dependencies: + debug: 4.3.4 + fast-glob: 3.2.11 + graphql: 16.6.0 + jose: 4.11.2 + next: 13.1.0_biqbaboplfbrettd7655fr4n2y + raw-body: 2.5.1 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + retes: 0.33.0 + uuid: 8.3.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@saleor/macaw-ui/0.7.2_3igskpsgnvdgn574z3phvz2joa: + resolution: + { + integrity: sha512-Fli7fhTWuHu7q2CzxwTUpB4x9HYaxHSAzCLZLA23VY1ieIWbCxbsXadMiMGWp/nuYitswMr6JXMm+1SDe9K8LQ==, + } + engines: { node: ">=16 <19" } + peerDependencies: + "@material-ui/core": ^4.11.2 + "@material-ui/icons": ^4.11.2 + "@material-ui/lab": ^4.0.0-alpha.58 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + react-helmet: ^6.1.0 + dependencies: + "@floating-ui/react-dom-interactions": 0.5.0_nylzxt5ale4dsv666zkb25cgtm + "@material-ui/core": 4.12.4_nylzxt5ale4dsv666zkb25cgtm + "@material-ui/icons": 4.11.3_syzufrrnbgjhwvvotesawp6yai + "@material-ui/lab": 4.0.0-alpha.61_syzufrrnbgjhwvvotesawp6yai + clsx: 1.2.1 + downshift: 6.1.7_react@18.2.0 + lodash: 4.17.21 + lodash-es: 4.17.21 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-helmet: 6.1.0_react@18.2.0 + react-inlinesvg: 3.0.1_react@18.2.0 + transitivePeerDependencies: + - "@types/react" + dev: false + + /@samverschueren/stream-to-observable/0.3.1_rxjs@6.6.7: + resolution: + { + integrity: sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==, + } + engines: { node: ">=6" } + peerDependencies: + rxjs: "*" + zen-observable: "*" + peerDependenciesMeta: + rxjs: + optional: true + zen-observable: + optional: true + dependencies: + any-observable: 0.3.0_rxjs@6.6.7 + rxjs: 6.6.7 + transitivePeerDependencies: + - zenObservable + dev: true + + /@sentry/browser/7.30.0: + resolution: + { + integrity: sha512-9hpaNAqIBDLdnrZ51iWkqenRotqqweE1f2AlHO56nyT/UE+u+GdmAiBrgRNqdFQQM13JtTG/gu4HGOyLWb9HEA==, + } + engines: { node: ">=8" } + dependencies: + "@sentry/core": 7.30.0 + "@sentry/replay": 7.30.0_@sentry+browser@7.30.0 + "@sentry/types": 7.30.0 + "@sentry/utils": 7.30.0 + tslib: 1.14.1 + dev: false + + /@sentry/cli/1.74.6: + resolution: + { + integrity: sha512-pJ7JJgozyjKZSTjOGi86chIngZMLUlYt2HOog+OJn+WGvqEkVymu8m462j1DiXAnex9NspB4zLLNuZ/R6rTQHg==, + } + engines: { node: ">= 8" } + hasBin: true + requiresBuild: true + dependencies: + https-proxy-agent: 5.0.1 + mkdirp: 0.5.6 + node-fetch: 2.6.7 + npmlog: 4.1.2 + progress: 2.0.3 + proxy-from-env: 1.1.0 + which: 2.0.2 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@sentry/core/7.30.0: + resolution: + { + integrity: sha512-NeLigkBlpcK63ymM63GoIHurml6V3BUe1Vi+trwm4/qqOTzT7PQhvdJCX+o3+atzRBH+zdb6kd4VWx44Oye3KA==, + } + engines: { node: ">=8" } + dependencies: + "@sentry/types": 7.30.0 + "@sentry/utils": 7.30.0 + tslib: 1.14.1 + dev: false + + /@sentry/integrations/7.30.0: + resolution: + { + integrity: sha512-KU8TnJm1Yldxnhdu/EZcIGXU9ptGQPk6ot4smcNx/mKsy575VrDdyVDx8uIYURWyfsg7eOayt6VdC7ISSODp8A==, + } + engines: { node: ">=8" } + dependencies: + "@sentry/types": 7.30.0 + "@sentry/utils": 7.30.0 + localforage: 1.10.0 + tslib: 1.14.1 + dev: false + + /@sentry/nextjs/7.30.0_next@13.1.0+react@18.2.0: + resolution: + { + integrity: sha512-4gW29QRb9S7AHf8/uJ77xc18JwmFFqdGyZ8YHRSoRhuof9IM0i8sK/NYUaPolaMRHYc3gf8gJsHjH/0AaUXhQA==, + } + engines: { node: ">=8" } + peerDependencies: + next: ^10.0.8 || ^11.0 || ^12.0 || ^13.0 + react: 15.x || 16.x || 17.x || 18.x + webpack: ">= 4.0.0" + peerDependenciesMeta: + webpack: + optional: true + dependencies: + "@rollup/plugin-sucrase": 4.0.4_rollup@2.78.0 + "@rollup/plugin-virtual": 3.0.0_rollup@2.78.0 + "@sentry/core": 7.30.0 + "@sentry/integrations": 7.30.0 + "@sentry/node": 7.30.0 + "@sentry/react": 7.30.0_react@18.2.0 + "@sentry/tracing": 7.30.0 + "@sentry/types": 7.30.0 + "@sentry/utils": 7.30.0 + "@sentry/webpack-plugin": 1.20.0 + chalk: 3.0.0 + next: 13.1.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + rollup: 2.78.0 + tslib: 1.14.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@sentry/node/7.30.0: + resolution: + { + integrity: sha512-YYasu6C3I0HBP4N1oc/ed2nunxhGJgtAWaKwq3lo8uk3uF6cB1A8+2e0CpjzU5ejhbaFPUBxHyj4th39Bvku/w==, + } + engines: { node: ">=8" } + dependencies: + "@sentry/core": 7.30.0 + "@sentry/types": 7.30.0 + "@sentry/utils": 7.30.0 + cookie: 0.4.2 + https-proxy-agent: 5.0.1 + lru_map: 0.3.3 + tslib: 1.14.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@sentry/react/7.30.0_react@18.2.0: + resolution: + { + integrity: sha512-yn0GiRewi/Gcig2Fkps95l96zOwiKxQacv3T83bBzlFIuO0vBWqV6imOcJKt4gxU9JoX6RGf9UqeACxzJlDqNg==, + } + engines: { node: ">=8" } + peerDependencies: + react: 15.x || 16.x || 17.x || 18.x + dependencies: + "@sentry/browser": 7.30.0 + "@sentry/types": 7.30.0 + "@sentry/utils": 7.30.0 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + tslib: 1.14.1 + dev: false + + /@sentry/replay/7.30.0_@sentry+browser@7.30.0: + resolution: + { + integrity: sha512-qJgz1tG0uStqMF5V7gN7KqxZuZY0MMQQY7siwPcSQVYj7X3AQswHjmvD4npEKbIa+jP6aQ6fFjoBjl3c0t3Mmg==, + } + engines: { node: ">=12" } + peerDependencies: + "@sentry/browser": ">=7.24.0" + dependencies: + "@sentry/browser": 7.30.0 + "@sentry/core": 7.30.0 + "@sentry/types": 7.30.0 + "@sentry/utils": 7.30.0 + dev: false + + /@sentry/tracing/7.30.0: + resolution: + { + integrity: sha512-bjGeDeKhpGAmLcWcrXFT/xOfHVwp/j0L1aRHzYHnqgTjVzD0NXcooPu/Nz8vF0paxz+hPD5bJwb8kz/ggJzGWQ==, + } + engines: { node: ">=8" } + dependencies: + "@sentry/core": 7.30.0 + "@sentry/types": 7.30.0 + "@sentry/utils": 7.30.0 + tslib: 1.14.1 + dev: false + + /@sentry/types/7.30.0: + resolution: + { + integrity: sha512-l4A86typvt/SfWh5JffpdxNGkg5EEA8m35BzpIcKmCAQZUDmnb4b478r8jdD2uuOjLmPNmZr1tifdRW4NCLuxQ==, + } + engines: { node: ">=8" } + dev: false + + /@sentry/utils/7.30.0: + resolution: + { + integrity: sha512-tSlBhr5u/LdE2emxIDTDmjmyRr99GnZGIAh5GwRxUgeDQ3VEfNUFlyFodBCbZ6yeYTYd6PWNih5xoHn1+Rf3Sw==, + } + engines: { node: ">=8" } + dependencies: + "@sentry/types": 7.30.0 + tslib: 1.14.1 + dev: false + + /@sentry/webpack-plugin/1.20.0: + resolution: + { + integrity: sha512-Ssj1mJVFsfU6vMCOM2d+h+KQR7QHSfeIP16t4l20Uq/neqWXZUQ2yvQfe4S3BjdbJXz/X4Rw8Hfy1Sd0ocunYw==, + } + engines: { node: ">= 8" } + dependencies: + "@sentry/cli": 1.74.6 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@sindresorhus/is/0.14.0: + resolution: + { + integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==, + } + engines: { node: ">=6" } + dev: true + + /@swc/helpers/0.4.14: + resolution: + { + integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==, + } + dependencies: + tslib: 2.4.0 + dev: false + + /@szmarczak/http-timer/1.1.2: + resolution: + { + integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==, + } + engines: { node: ">=6" } + dependencies: + defer-to-connect: 1.1.3 + dev: true + + /@tootallnate/once/2.0.0: + resolution: + { + integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==, + } + engines: { node: ">= 10" } + dev: true + + /@types/js-yaml/4.0.5: + resolution: + { + integrity: sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==, + } + dev: true + + /@types/json-schema/7.0.11: + resolution: + { + integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==, + } + dev: true + + /@types/json-stable-stringify/1.0.34: + resolution: + { + integrity: sha512-s2cfwagOQAS8o06TcwKfr9Wx11dNGbH2E9vJz1cqV+a/LOyhWNLUNd6JSRYNzvB4d29UuJX2M0Dj9vE1T8fRXw==, + } + dev: true + + /@types/json5/0.0.29: + resolution: + { + integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==, + } + + /@types/jsonwebtoken/8.5.8: + resolution: + { + integrity: sha512-zm6xBQpFDIDM6o9r6HSgDeIcLy82TKWctCXEPbJJcXb5AKmi5BNNdLXneixK4lplX3PqIVcwLBCGE/kAGnlD4A==, + } + dependencies: + "@types/node": 18.7.16 + dev: true + + /@types/keyv/3.1.4: + resolution: + { + integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==, + } + dependencies: + "@types/node": 18.7.16 + dev: true + + /@types/minimatch/3.0.5: + resolution: + { + integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==, + } + dev: true + + /@types/node/18.7.16: + resolution: + { + integrity: sha512-EQHhixfu+mkqHMZl1R2Ovuvn47PUw18azMJOTwSZr9/fhzHNGXAJ0ma0dayRVchprpCj0Kc1K1xKoWaATWF1qg==, + } + dev: true + + /@types/parse-json/4.0.0: + resolution: + { + integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==, + } + dev: true + + /@types/prop-types/15.7.5: + resolution: + { + integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==, + } + + /@types/react-dom/18.0.6: + resolution: + { + integrity: sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==, + } + dependencies: + "@types/react": 18.0.19 + dev: true + + /@types/react-transition-group/4.4.5: + resolution: + { + integrity: sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==, + } + dependencies: + "@types/react": 18.0.19 + dev: false + + /@types/react/18.0.19: + resolution: + { + integrity: sha512-BDc3Q+4Q3zsn7k9xZrKfjWyJsSlEDMs38gD1qp2eDazLCdcPqAT+vq1ND+Z8AGel/UiwzNUk8ptpywgNQcJ1MQ==, + } + dependencies: + "@types/prop-types": 15.7.5 + "@types/scheduler": 0.16.2 + csstype: 3.1.0 + + /@types/responselike/1.0.0: + resolution: + { + integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==, + } + dependencies: + "@types/node": 18.7.16 + dev: true + + /@types/scheduler/0.16.2: + resolution: + { + integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==, + } + + /@types/ws/8.5.3: + resolution: + { + integrity: sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==, + } + dependencies: + "@types/node": 18.7.16 + dev: true + + /@typescript-eslint/eslint-plugin/5.36.2_wxqvmnl3i4rbvz4ixyoiufmx3e: + resolution: + { + integrity: sha512-OwwR8LRwSnI98tdc2z7mJYgY60gf7I9ZfGjN5EjCwwns9bdTuQfAXcsjSB2wSQ/TVNYSGKf4kzVXbNGaZvwiXw==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + "@typescript-eslint/parser": ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + dependencies: + "@typescript-eslint/parser": 5.36.2_irgkl5vooow2ydyo6aokmferha + "@typescript-eslint/scope-manager": 5.36.2 + "@typescript-eslint/type-utils": 5.36.2_irgkl5vooow2ydyo6aokmferha + "@typescript-eslint/utils": 5.36.2_irgkl5vooow2ydyo6aokmferha + debug: 4.3.4 + eslint: 8.23.1 + functional-red-black-tree: 1.0.1 + ignore: 5.2.0 + regexpp: 3.2.0 + semver: 7.3.7 + tsutils: 3.21.0_typescript@4.8.3 + typescript: 4.8.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser/5.36.2_irgkl5vooow2ydyo6aokmferha: + resolution: + { + integrity: sha512-qS/Kb0yzy8sR0idFspI9Z6+t7mqk/oRjnAYfewG+VN73opAUvmYL3oPIMmgOX6CnQS6gmVIXGshlb5RY/R22pA==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + dependencies: + "@typescript-eslint/scope-manager": 5.36.2 + "@typescript-eslint/types": 5.36.2 + "@typescript-eslint/typescript-estree": 5.36.2_typescript@4.8.3 + debug: 4.3.4 + eslint: 8.23.1 + typescript: 4.8.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser/5.48.2_irgkl5vooow2ydyo6aokmferha: + resolution: + { + integrity: sha512-38zMsKsG2sIuM5Oi/olurGwYJXzmtdsHhn5mI/pQogP+BjYVkK5iRazCQ8RGS0V+YLk282uWElN70zAAUmaYHw==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + dependencies: + "@typescript-eslint/scope-manager": 5.48.2 + "@typescript-eslint/types": 5.48.2 + "@typescript-eslint/typescript-estree": 5.48.2_typescript@4.8.3 + debug: 4.3.4 + eslint: 8.23.1 + typescript: 4.8.3 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/scope-manager/5.36.2: + resolution: + { + integrity: sha512-cNNP51L8SkIFSfce8B1NSUBTJTu2Ts4nWeWbFrdaqjmn9yKrAaJUBHkyTZc0cL06OFHpb+JZq5AUHROS398Orw==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + "@typescript-eslint/types": 5.36.2 + "@typescript-eslint/visitor-keys": 5.36.2 + dev: true + + /@typescript-eslint/scope-manager/5.48.2: + resolution: + { + integrity: sha512-zEUFfonQid5KRDKoI3O+uP1GnrFd4tIHlvs+sTJXiWuypUWMuDaottkJuR612wQfOkjYbsaskSIURV9xo4f+Fw==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + "@typescript-eslint/types": 5.48.2 + "@typescript-eslint/visitor-keys": 5.48.2 + dev: false + + /@typescript-eslint/type-utils/5.36.2_irgkl5vooow2ydyo6aokmferha: + resolution: + { + integrity: sha512-rPQtS5rfijUWLouhy6UmyNquKDPhQjKsaKH0WnY6hl/07lasj8gPaH2UD8xWkePn6SC+jW2i9c2DZVDnL+Dokw==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: "*" + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + dependencies: + "@typescript-eslint/typescript-estree": 5.36.2_typescript@4.8.3 + "@typescript-eslint/utils": 5.36.2_irgkl5vooow2ydyo6aokmferha + debug: 4.3.4 + eslint: 8.23.1 + tsutils: 3.21.0_typescript@4.8.3 + typescript: 4.8.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types/5.36.2: + resolution: + { + integrity: sha512-9OJSvvwuF1L5eS2EQgFUbECb99F0mwq501w0H0EkYULkhFa19Qq7WFbycdw1PexAc929asupbZcgjVIe6OK/XQ==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dev: true + + /@typescript-eslint/types/5.48.2: + resolution: + { + integrity: sha512-hE7dA77xxu7ByBc6KCzikgfRyBCTst6dZQpwaTy25iMYOnbNljDT4hjhrGEJJ0QoMjrfqrx+j1l1B9/LtKeuqA==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dev: false + + /@typescript-eslint/typescript-estree/5.36.2_typescript@4.8.3: + resolution: + { + integrity: sha512-8fyH+RfbKc0mTspfuEjlfqA4YywcwQK2Amcf6TDOwaRLg7Vwdu4bZzyvBZp4bjt1RRjQ5MDnOZahxMrt2l5v9w==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + dependencies: + "@typescript-eslint/types": 5.36.2 + "@typescript-eslint/visitor-keys": 5.36.2 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.7 + tsutils: 3.21.0_typescript@4.8.3 + typescript: 4.8.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree/5.48.2_typescript@4.8.3: + resolution: + { + integrity: sha512-bibvD3z6ilnoVxUBFEgkO0k0aFvUc4Cttt0dAreEr+nrAHhWzkO83PEVVuieK3DqcgL6VAK5dkzK8XUVja5Zcg==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + dependencies: + "@typescript-eslint/types": 5.48.2 + "@typescript-eslint/visitor-keys": 5.48.2 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.7 + tsutils: 3.21.0_typescript@4.8.3 + typescript: 4.8.3 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/utils/5.36.2_irgkl5vooow2ydyo6aokmferha: + resolution: + { + integrity: sha512-uNcopWonEITX96v9pefk9DC1bWMdkweeSsewJ6GeC7L6j2t0SJywisgkr9wUTtXk90fi2Eljj90HSHm3OGdGRg==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + "@types/json-schema": 7.0.11 + "@typescript-eslint/scope-manager": 5.36.2 + "@typescript-eslint/types": 5.36.2 + "@typescript-eslint/typescript-estree": 5.36.2_typescript@4.8.3 + eslint: 8.23.1 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@8.23.1 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys/5.36.2: + resolution: + { + integrity: sha512-BtRvSR6dEdrNt7Net2/XDjbYKU5Ml6GqJgVfXT0CxTCJlnIqK7rAGreuWKMT2t8cFUT2Msv5oxw0GMRD7T5J7A==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + "@typescript-eslint/types": 5.36.2 + eslint-visitor-keys: 3.3.0 + dev: true + + /@typescript-eslint/visitor-keys/5.48.2: + resolution: + { + integrity: sha512-z9njZLSkwmjFWUelGEwEbdf4NwKvfHxvGC0OcGN1Hp/XNDIcJ7D5DpPNPv6x6/mFvc1tQHsaWmpD/a4gOvvCJQ==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + "@typescript-eslint/types": 5.48.2 + eslint-visitor-keys: 3.3.0 + dev: false + + /@urql/core/3.0.3_graphql@16.5.0: + resolution: + { + integrity: sha512-raQP51ERNtg5BvlN8x8mHVRvk4K0ugWQ69n53BdkjKpXVV5kuWp7trnwriGv1fQKa8HuiGNSCfyslUucc0OVQg==, + } + peerDependencies: + graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + "@graphql-typed-document-node/core": 3.1.1_graphql@16.5.0 + graphql: 16.5.0 + wonka: 6.0.0 + dev: false + + /@urql/exchange-auth/1.0.0_graphql@16.5.0: + resolution: + { + integrity: sha512-79hqPQab+ifeINOxvQykvqub4ixWHBEIagN4U67ijcHGMfp3c4yEWRk4IJMPwF+OMT7LrRFuv+jRIZTQn/9VwQ==, + } + peerDependencies: + graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + "@urql/core": 3.0.3_graphql@16.5.0 + graphql: 16.5.0 + wonka: 6.0.0 + dev: false + + /@urql/introspection/0.3.1_graphql@16.5.0: + resolution: + { + integrity: sha512-4Srr45lA00cVlfRGtGJqYlc2vcPN6BZwFW9EVY20yROaoADCGNxm6xmScZhxuCRQPhOB9DXtuYs2KNrOo84ZeA==, + } + peerDependencies: + graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + graphql: 16.5.0 + dev: true + + /abort-controller/3.0.0: + resolution: + { + integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==, + } + engines: { node: ">=6.5" } + dependencies: + event-target-shim: 5.0.1 + dev: true + + /acorn-jsx/5.3.2_acorn@8.8.0: + resolution: + { + integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, + } + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.8.0 + + /acorn/8.8.0: + resolution: + { + integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==, + } + engines: { node: ">=0.4.0" } + hasBin: true + + /agent-base/6.0.2: + resolution: + { + integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==, + } + engines: { node: ">= 6.0.0" } + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + /ajv/6.12.6: + resolution: + { + integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==, + } + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + /ansi-escapes/3.2.0: + resolution: + { + integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==, + } + engines: { node: ">=4" } + dev: true + + /ansi-escapes/4.3.2: + resolution: + { + integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==, + } + engines: { node: ">=8" } + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-regex/2.1.1: + resolution: + { + integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==, + } + engines: { node: ">=0.10.0" } + + /ansi-regex/3.0.1: + resolution: + { + integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==, + } + engines: { node: ">=4" } + dev: true + + /ansi-regex/5.0.1: + resolution: + { + integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, + } + engines: { node: ">=8" } + + /ansi-styles/2.2.1: + resolution: + { + integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==, + } + engines: { node: ">=0.10.0" } + dev: true + + /ansi-styles/3.2.1: + resolution: + { + integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==, + } + engines: { node: ">=4" } + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles/4.3.0: + resolution: + { + integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, + } + engines: { node: ">=8" } + dependencies: + color-convert: 2.0.1 + + /any-observable/0.3.0_rxjs@6.6.7: + resolution: + { + integrity: sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==, + } + engines: { node: ">=6" } + peerDependencies: + rxjs: "*" + zenObservable: "*" + peerDependenciesMeta: + rxjs: + optional: true + zenObservable: + optional: true + dependencies: + rxjs: 6.6.7 + dev: true + + /any-promise/1.3.0: + resolution: + { + integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==, + } + dev: false + + /anymatch/3.1.2: + resolution: + { + integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==, + } + engines: { node: ">= 8" } + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /aproba/1.2.0: + resolution: + { + integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==, + } + dev: false + + /are-we-there-yet/1.1.7: + resolution: + { + integrity: sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==, + } + dependencies: + delegates: 1.0.0 + readable-stream: 2.3.7 + dev: false + + /arg/4.1.3: + resolution: + { + integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==, + } + dev: true + + /argparse/2.0.1: + resolution: + { + integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, + } + + /aria-hidden/1.1.3: + resolution: + { + integrity: sha512-RhVWFtKH5BiGMycI72q2RAFMLQi8JP9bLuQXgR5a8Znp7P5KOIADSJeyfI8PCVxLEp067B2HbP5JIiI/PXIZeA==, + } + engines: { node: ">=8.5.0" } + dependencies: + tslib: 1.14.1 + dev: false + + /aria-query/4.2.2: + resolution: + { + integrity: sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==, + } + engines: { node: ">=6.0" } + dependencies: + "@babel/runtime": 7.18.9 + "@babel/runtime-corejs3": 7.18.9 + + /array-differ/3.0.0: + resolution: + { + integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==, + } + engines: { node: ">=8" } + dev: true + + /array-includes/3.1.5: + resolution: + { + integrity: sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + get-intrinsic: 1.1.2 + is-string: 1.0.7 + + /array-union/2.1.0: + resolution: + { + integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==, + } + engines: { node: ">=8" } + + /array.prototype.flat/1.3.0: + resolution: + { + integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + es-shim-unscopables: 1.0.0 + + /array.prototype.flatmap/1.3.0: + resolution: + { + integrity: sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + es-shim-unscopables: 1.0.0 + + /arrify/2.0.1: + resolution: + { + integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==, + } + engines: { node: ">=8" } + dev: true + + /asap/2.0.6: + resolution: + { + integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==, + } + dev: true + + /ast-types-flow/0.0.7: + resolution: + { + integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==, + } + + /asynckit/0.4.0: + resolution: + { + integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, + } + dev: true + + /auto-bind/4.0.0: + resolution: + { + integrity: sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==, + } + engines: { node: ">=8" } + dev: true + + /autoprefixer/10.4.8_postcss@8.4.14: + resolution: + { + integrity: sha512-75Jr6Q/XpTqEf6D2ltS5uMewJIx5irCU1oBYJrWjFenq/m12WRRrz6g15L1EIoYvPLXTbEry7rDOwrcYNj77xw==, + } + engines: { node: ^10 || ^12 || >=14 } + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.21.3 + caniuse-lite: 1.0.30001374 + fraction.js: 4.2.0 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: true + + /axe-core/4.4.3: + resolution: + { + integrity: sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w==, + } + engines: { node: ">=4" } + + /axobject-query/2.2.0: + resolution: + { + integrity: sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==, + } + + /babel-plugin-dynamic-import-node/2.3.3: + resolution: + { + integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==, + } + dependencies: + object.assign: 4.1.2 + dev: true + + /babel-plugin-syntax-trailing-function-commas/7.0.0-beta.0: + resolution: + { + integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==, + } + dev: true + + /babel-preset-fbjs/3.4.0_@babel+core@7.18.9: + resolution: + { + integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==, + } + peerDependencies: + "@babel/core": ^7.0.0 + dependencies: + "@babel/core": 7.18.9 + "@babel/plugin-proposal-class-properties": 7.18.6_@babel+core@7.18.9 + "@babel/plugin-proposal-object-rest-spread": 7.18.9_@babel+core@7.18.9 + "@babel/plugin-syntax-class-properties": 7.12.13_@babel+core@7.18.9 + "@babel/plugin-syntax-flow": 7.18.6_@babel+core@7.18.9 + "@babel/plugin-syntax-jsx": 7.18.6_@babel+core@7.18.9 + "@babel/plugin-syntax-object-rest-spread": 7.8.3_@babel+core@7.18.9 + "@babel/plugin-transform-arrow-functions": 7.18.6_@babel+core@7.18.9 + "@babel/plugin-transform-block-scoped-functions": 7.18.6_@babel+core@7.18.9 + "@babel/plugin-transform-block-scoping": 7.18.9_@babel+core@7.18.9 + "@babel/plugin-transform-classes": 7.19.0_@babel+core@7.18.9 + "@babel/plugin-transform-computed-properties": 7.18.9_@babel+core@7.18.9 + "@babel/plugin-transform-destructuring": 7.18.13_@babel+core@7.18.9 + "@babel/plugin-transform-flow-strip-types": 7.18.9_@babel+core@7.18.9 + "@babel/plugin-transform-for-of": 7.18.8_@babel+core@7.18.9 + "@babel/plugin-transform-function-name": 7.18.9_@babel+core@7.18.9 + "@babel/plugin-transform-literals": 7.18.9_@babel+core@7.18.9 + "@babel/plugin-transform-member-expression-literals": 7.18.6_@babel+core@7.18.9 + "@babel/plugin-transform-modules-commonjs": 7.18.6_@babel+core@7.18.9 + "@babel/plugin-transform-object-super": 7.18.6_@babel+core@7.18.9 + "@babel/plugin-transform-parameters": 7.18.8_@babel+core@7.18.9 + "@babel/plugin-transform-property-literals": 7.18.6_@babel+core@7.18.9 + "@babel/plugin-transform-react-display-name": 7.18.6_@babel+core@7.18.9 + "@babel/plugin-transform-react-jsx": 7.18.6_@babel+core@7.18.9 + "@babel/plugin-transform-shorthand-properties": 7.18.6_@babel+core@7.18.9 + "@babel/plugin-transform-spread": 7.19.0_@babel+core@7.18.9 + "@babel/plugin-transform-template-literals": 7.18.9_@babel+core@7.18.9 + babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 + transitivePeerDependencies: + - supports-color + dev: true + + /balanced-match/1.0.2: + resolution: + { + integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, + } + + /base64-js/1.5.1: + resolution: + { + integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, + } + dev: true + + /binary-extensions/2.2.0: + resolution: + { + integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==, + } + engines: { node: ">=8" } + dev: true + + /bl/4.1.0: + resolution: + { + integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==, + } + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: true + + /brace-expansion/1.1.11: + resolution: + { + integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, + } + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + /braces/3.0.2: + resolution: + { + integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==, + } + engines: { node: ">=8" } + dependencies: + fill-range: 7.0.1 + + /browserslist/4.21.3: + resolution: + { + integrity: sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==, + } + engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + hasBin: true + dependencies: + caniuse-lite: 1.0.30001374 + electron-to-chromium: 1.4.211 + node-releases: 2.0.6 + update-browserslist-db: 1.0.5_browserslist@4.21.3 + dev: true + + /bser/2.1.1: + resolution: + { + integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==, + } + dependencies: + node-int64: 0.4.0 + dev: true + + /buffer-equal-constant-time/1.0.1: + resolution: { integrity: sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk= } + dev: true + + /buffer-from/1.1.2: + resolution: + { + integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, + } + dev: true + + /buffer/5.7.1: + resolution: + { + integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==, + } + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + + /busboy/1.6.0: + resolution: + { + integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==, + } + engines: { node: ">=10.16.0" } + dependencies: + streamsearch: 1.1.0 + + /bytes/3.1.2: + resolution: + { + integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==, + } + engines: { node: ">= 0.8" } + dev: false + + /cacheable-request/6.1.0: + resolution: + { + integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==, + } + engines: { node: ">=8" } + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.1.0 + keyv: 3.1.0 + lowercase-keys: 2.0.0 + normalize-url: 4.5.1 + responselike: 1.0.2 + dev: true + + /call-bind/1.0.2: + resolution: + { + integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==, + } + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.1.2 + + /callsites/3.1.0: + resolution: + { + integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, + } + engines: { node: ">=6" } + + /camel-case/4.1.2: + resolution: + { + integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==, + } + dependencies: + pascal-case: 3.1.2 + tslib: 2.4.0 + dev: true + + /camelcase/5.3.1: + resolution: + { + integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==, + } + engines: { node: ">=6" } + dev: true + + /caniuse-lite/1.0.30001374: + resolution: + { + integrity: sha512-mWvzatRx3w+j5wx/mpFN5v5twlPrabG8NqX2c6e45LCpymdoGqNvRkRutFUqpRTXKFQFNQJasvK0YT7suW6/Hw==, + } + dev: true + + /caniuse-lite/1.0.30001447: + resolution: + { + integrity: sha512-bdKU1BQDPeEXe9A39xJnGtY0uRq/z5osrnXUw0TcK+EYno45Y+U7QU9HhHEyzvMDffpYadFXi3idnSNkcwLkTw==, + } + dev: false + + /capital-case/1.0.4: + resolution: + { + integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==, + } + dependencies: + no-case: 3.0.4 + tslib: 2.4.0 + upper-case-first: 2.0.2 + dev: true + + /chalk/1.1.3: + resolution: + { + integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==, + } + engines: { node: ">=0.10.0" } + dependencies: + ansi-styles: 2.2.1 + escape-string-regexp: 1.0.5 + has-ansi: 2.0.0 + strip-ansi: 3.0.1 + supports-color: 2.0.0 + dev: true + + /chalk/2.4.2: + resolution: + { + integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==, + } + engines: { node: ">=4" } + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk/3.0.0: + resolution: + { + integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==, + } + engines: { node: ">=8" } + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + /chalk/4.1.2: + resolution: + { + integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, + } + engines: { node: ">=10" } + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + /change-case-all/1.0.14: + resolution: + { + integrity: sha512-CWVm2uT7dmSHdO/z1CXT/n47mWonyypzBbuCy5tN7uMg22BsfkhwT6oHmFCAk+gL1LOOxhdbB9SZz3J1KTY3gA==, + } + dependencies: + change-case: 4.1.2 + is-lower-case: 2.0.2 + is-upper-case: 2.0.2 + lower-case: 2.0.2 + lower-case-first: 2.0.2 + sponge-case: 1.0.1 + swap-case: 2.0.2 + title-case: 3.0.3 + upper-case: 2.0.2 + upper-case-first: 2.0.2 + dev: true + + /change-case/4.1.2: + resolution: + { + integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==, + } + dependencies: + camel-case: 4.1.2 + capital-case: 1.0.4 + constant-case: 3.0.4 + dot-case: 3.0.4 + header-case: 2.0.4 + no-case: 3.0.4 + param-case: 3.0.4 + pascal-case: 3.1.2 + path-case: 3.0.4 + sentence-case: 3.0.4 + snake-case: 3.0.4 + tslib: 2.4.0 + dev: true + + /chardet/0.7.0: + resolution: + { + integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==, + } + dev: true + + /chokidar/3.5.3: + resolution: + { + integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==, + } + engines: { node: ">= 8.10.0" } + dependencies: + anymatch: 3.1.2 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /clean-publish/4.0.1: + resolution: + { + integrity: sha512-6v0bh5kQD5FDlxBgXDVNNc6KmAB7iIP/GHD91q9xsGVZT5XB9Y8TNqB7dL5u9PTZlBeLpBw+A1AseRlEEJLSWA==, + } + engines: { node: ">= 16.0.0" } + hasBin: true + dependencies: + cross-spawn: 7.0.3 + fast-glob: 3.2.11 + lilconfig: 2.0.6 + micromatch: 4.0.5 + dev: true + + /cli-cursor/2.1.0: + resolution: + { + integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==, + } + engines: { node: ">=4" } + dependencies: + restore-cursor: 2.0.0 + dev: true + + /cli-cursor/3.1.0: + resolution: + { + integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==, + } + engines: { node: ">=8" } + dependencies: + restore-cursor: 3.1.0 + dev: true + + /cli-spinners/2.6.1: + resolution: + { + integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==, + } + engines: { node: ">=6" } + dev: true + + /cli-truncate/0.2.1: + resolution: + { + integrity: sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==, + } + engines: { node: ">=0.10.0" } + dependencies: + slice-ansi: 0.0.4 + string-width: 1.0.2 + dev: true + + /cli-width/3.0.0: + resolution: + { + integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==, + } + engines: { node: ">= 10" } + dev: true + + /client-only/0.0.1: + resolution: + { + integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==, + } + dev: false + + /cliui/6.0.0: + resolution: + { + integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==, + } + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + dev: true + + /cliui/7.0.4: + resolution: + { + integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==, + } + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /clone-response/1.0.3: + resolution: + { + integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==, + } + dependencies: + mimic-response: 1.0.1 + dev: true + + /clone/1.0.4: + resolution: + { + integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==, + } + engines: { node: ">=0.8" } + dev: true + + /clsx/1.2.1: + resolution: + { + integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==, + } + engines: { node: ">=6" } + dev: false + + /code-point-at/1.1.0: + resolution: + { + integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==, + } + engines: { node: ">=0.10.0" } + + /color-convert/1.9.3: + resolution: + { + integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==, + } + dependencies: + color-name: 1.1.3 + dev: true + + /color-convert/2.0.1: + resolution: + { + integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, + } + engines: { node: ">=7.0.0" } + dependencies: + color-name: 1.1.4 + + /color-name/1.1.3: + resolution: + { + integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==, + } + dev: true + + /color-name/1.1.4: + resolution: + { + integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, + } + + /combined-stream/1.0.8: + resolution: + { + integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, + } + engines: { node: ">= 0.8" } + dependencies: + delayed-stream: 1.0.0 + dev: true + + /commander/4.1.1: + resolution: + { + integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==, + } + engines: { node: ">= 6" } + dev: false + + /common-tags/1.8.2: + resolution: + { + integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==, + } + engines: { node: ">=4.0.0" } + dev: true + + /compute-scroll-into-view/1.0.17: + resolution: + { + integrity: sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==, + } + dev: false + + /concat-map/0.0.1: + resolution: + { + integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, + } + + /confusing-browser-globals/1.0.11: + resolution: + { + integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==, + } + dev: true + + /console-control-strings/1.1.0: + resolution: + { + integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==, + } + dev: false + + /constant-case/3.0.4: + resolution: + { + integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==, + } + dependencies: + no-case: 3.0.4 + tslib: 2.4.0 + upper-case: 2.0.2 + dev: true + + /convert-source-map/1.8.0: + resolution: + { + integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==, + } + dependencies: + safe-buffer: 5.1.2 + dev: true + + /cookie/0.4.2: + resolution: + { + integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==, + } + engines: { node: ">= 0.6" } + dev: false + + /core-js-pure/3.23.5: + resolution: + { + integrity: sha512-8t78LdpKSuCq4pJYCYk8hl7XEkAX+BP16yRIwL3AanTksxuEf7CM83vRyctmiEL8NDZ3jpUcv56fk9/zG3aIuw==, + } + requiresBuild: true + + /core-util-is/1.0.3: + resolution: + { + integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==, + } + dev: false + + /cosmiconfig-toml-loader/1.0.0: + resolution: + { + integrity: sha512-H/2gurFWVi7xXvCyvsWRLCMekl4tITJcX0QEsDMpzxtuxDyM59xLatYNg4s/k9AA/HdtCYfj2su8mgA0GSDLDA==, + } + dependencies: + "@iarna/toml": 2.2.5 + dev: true + + /cosmiconfig/7.0.1: + resolution: + { + integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==, + } + engines: { node: ">=10" } + dependencies: + "@types/parse-json": 4.0.0 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: true + + /create-require/1.1.1: + resolution: + { + integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==, + } + dev: true + + /cross-fetch/3.1.5: + resolution: + { + integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==, + } + dependencies: + node-fetch: 2.6.7 + transitivePeerDependencies: + - encoding + dev: true + + /cross-spawn/7.0.3: + resolution: + { + integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==, + } + engines: { node: ">= 8" } + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + /cross-undici-fetch/0.4.14: + resolution: + { + integrity: sha512-CCep44A/baoO8kYJBIR1cRO/tRAk29xzb/tH3O85OtgwZGkL5I0tJZ47ccZdrnAJxrl5tlaYhAOx09fJXMcUqQ==, + } + dependencies: + abort-controller: 3.0.0 + busboy: 1.6.0 + form-data-encoder: 1.7.2 + formdata-node: 4.3.3 + node-fetch: 2.6.7 + undici: 5.5.1 + web-streams-polyfill: 3.2.1 + transitivePeerDependencies: + - encoding + dev: true + + /css-vendor/2.0.8: + resolution: + { + integrity: sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==, + } + dependencies: + "@babel/runtime": 7.18.9 + is-in-browser: 1.1.3 + dev: false + + /csstype/2.6.20: + resolution: + { + integrity: sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==, + } + dev: false + + /csstype/3.1.0: + resolution: + { + integrity: sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==, + } + + /damerau-levenshtein/1.0.8: + resolution: + { + integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==, + } + + /dataloader/2.1.0: + resolution: + { + integrity: sha512-qTcEYLen3r7ojZNgVUaRggOI+KM7jrKxXeSHhogh/TWxYMeONEMqY+hmkobiYQozsGIyg9OYVzO4ZIfoB4I0pQ==, + } + dev: true + + /date-fns/1.30.1: + resolution: + { + integrity: sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==, + } + dev: true + + /debounce/1.2.1: + resolution: + { + integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==, + } + dev: true + + /debug/2.6.9: + resolution: + { + integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==, + } + peerDependencies: + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + + /debug/3.2.7: + resolution: + { + integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==, + } + peerDependencies: + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + + /debug/4.3.4: + resolution: + { + integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==, + } + engines: { node: ">=6.0" } + peerDependencies: + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + + /decamelize/1.2.0: + resolution: + { + integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==, + } + engines: { node: ">=0.10.0" } + dev: true + + /decompress-response/3.3.0: + resolution: + { + integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==, + } + engines: { node: ">=4" } + dependencies: + mimic-response: 1.0.1 + dev: true + + /deep-extend/0.6.0: + resolution: + { + integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==, + } + engines: { node: ">=4.0.0" } + dev: true + + /deep-is/0.1.4: + resolution: + { + integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, + } + + /defaults/1.0.3: + resolution: + { + integrity: sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==, + } + dependencies: + clone: 1.0.4 + dev: true + + /defer-to-connect/1.1.3: + resolution: + { + integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==, + } + dev: true + + /define-lazy-prop/2.0.0: + resolution: + { + integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==, + } + engines: { node: ">=8" } + + /define-properties/1.1.4: + resolution: + { + integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==, + } + engines: { node: ">= 0.4" } + dependencies: + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + + /delayed-stream/1.0.0: + resolution: + { + integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, + } + engines: { node: ">=0.4.0" } + dev: true + + /delegates/1.0.0: + resolution: + { + integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==, + } + dev: false + + /depd/2.0.0: + resolution: + { + integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==, + } + engines: { node: ">= 0.8" } + dev: false + + /dependency-graph/0.11.0: + resolution: + { + integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==, + } + engines: { node: ">= 0.6.0" } + dev: true + + /detect-indent/6.1.0: + resolution: + { + integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==, + } + engines: { node: ">=8" } + dev: true + + /diff/4.0.2: + resolution: + { + integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==, + } + engines: { node: ">=0.3.1" } + dev: true + + /dir-glob/3.0.1: + resolution: + { + integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==, + } + engines: { node: ">=8" } + dependencies: + path-type: 4.0.0 + + /doctrine/2.1.0: + resolution: + { + integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==, + } + engines: { node: ">=0.10.0" } + dependencies: + esutils: 2.0.3 + + /doctrine/3.0.0: + resolution: + { + integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==, + } + engines: { node: ">=6.0.0" } + dependencies: + esutils: 2.0.3 + + /dom-helpers/5.2.1: + resolution: + { + integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==, + } + dependencies: + "@babel/runtime": 7.18.9 + csstype: 3.1.0 + dev: false + + /dot-case/3.0.4: + resolution: + { + integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==, + } + dependencies: + no-case: 3.0.4 + tslib: 2.4.0 + dev: true + + /dotenv/16.0.1: + resolution: + { + integrity: sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==, + } + engines: { node: ">=12" } + dev: true + + /downshift/6.1.7_react@18.2.0: + resolution: + { + integrity: sha512-cVprZg/9Lvj/uhYRxELzlu1aezRcgPWBjTvspiGTVEU64gF5pRdSRKFVLcxqsZC637cLAGMbL40JavEfWnqgNg==, + } + peerDependencies: + react: ">=16.12.0" + dependencies: + "@babel/runtime": 7.18.9 + compute-scroll-into-view: 1.0.17 + prop-types: 15.8.1 + react: 18.2.0 + react-is: 17.0.2 + tslib: 2.4.0 + dev: false + + /dset/3.1.2: + resolution: + { + integrity: sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==, + } + engines: { node: ">=4" } + dev: true + + /duplexer3/0.1.5: + resolution: + { + integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==, + } + dev: true + + /ecdsa-sig-formatter/1.0.11: + resolution: + { + integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==, + } + dependencies: + safe-buffer: 5.2.1 + dev: true + + /electron-to-chromium/1.4.211: + resolution: + { + integrity: sha512-BZSbMpyFQU0KBJ1JG26XGeFI3i4op+qOYGxftmZXFZoHkhLgsSv4DHDJfl8ogII3hIuzGt51PaZ195OVu0yJ9A==, + } + dev: true + + /elegant-spinner/1.0.1: + resolution: + { + integrity: sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==, + } + engines: { node: ">=0.10.0" } + dev: true + + /emoji-regex/8.0.0: + resolution: + { + integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, + } + + /emoji-regex/9.2.2: + resolution: + { + integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==, + } + + /end-of-stream/1.4.4: + resolution: + { + integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==, + } + dependencies: + once: 1.4.0 + dev: true + + /enhanced-resolve/5.10.0: + resolution: + { + integrity: sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==, + } + engines: { node: ">=10.13.0" } + dependencies: + graceful-fs: 4.2.10 + tapable: 2.2.1 + + /error-ex/1.3.2: + resolution: + { + integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==, + } + dependencies: + is-arrayish: 0.2.1 + dev: true + + /es-abstract/1.20.1: + resolution: + { + integrity: sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + es-to-primitive: 1.2.1 + function-bind: 1.1.1 + function.prototype.name: 1.1.5 + get-intrinsic: 1.1.2 + get-symbol-description: 1.0.0 + has: 1.0.3 + has-property-descriptors: 1.0.0 + has-symbols: 1.0.3 + internal-slot: 1.0.3 + is-callable: 1.2.4 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-weakref: 1.0.2 + object-inspect: 1.12.2 + object-keys: 1.1.1 + object.assign: 4.1.2 + regexp.prototype.flags: 1.4.3 + string.prototype.trimend: 1.0.5 + string.prototype.trimstart: 1.0.5 + unbox-primitive: 1.0.2 + + /es-shim-unscopables/1.0.0: + resolution: + { + integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==, + } + dependencies: + has: 1.0.3 + + /es-to-primitive/1.2.1: + resolution: + { + integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==, + } + engines: { node: ">= 0.4" } + dependencies: + is-callable: 1.2.4 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + + /escalade/3.1.1: + resolution: + { + integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==, + } + engines: { node: ">=6" } + dev: true + + /escape-string-regexp/1.0.5: + resolution: + { + integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, + } + engines: { node: ">=0.8.0" } + dev: true + + /escape-string-regexp/4.0.0: + resolution: + { + integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, + } + engines: { node: ">=10" } + + /eslint-config-airbnb-base/15.0.0_hdzsmr7kawaomymueo2tso6fjq: + resolution: + { + integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==, + } + engines: { node: ^10.12.0 || >=12.0.0 } + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.2 + dependencies: + confusing-browser-globals: 1.0.11 + eslint: 8.23.1 + eslint-plugin-import: 2.26.0_bkwixupcywvgmrzjbgj7n47r6y + object.assign: 4.1.2 + object.entries: 1.1.5 + semver: 6.3.0 + dev: true + + /eslint-config-airbnb/19.0.4_vaa2l43rrt3zt475houvwxvax4: + resolution: + { + integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==, + } + engines: { node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.3 + eslint-plugin-jsx-a11y: ^6.5.1 + eslint-plugin-react: ^7.28.0 + eslint-plugin-react-hooks: ^4.3.0 + dependencies: + eslint: 8.23.1 + eslint-config-airbnb-base: 15.0.0_hdzsmr7kawaomymueo2tso6fjq + eslint-plugin-import: 2.26.0_bkwixupcywvgmrzjbgj7n47r6y + eslint-plugin-jsx-a11y: 6.6.0_eslint@8.23.1 + eslint-plugin-react: 7.31.8_eslint@8.23.1 + eslint-plugin-react-hooks: 4.6.0_eslint@8.23.1 + object.assign: 4.1.2 + object.entries: 1.1.5 + dev: true + + /eslint-config-next/13.1.4_irgkl5vooow2ydyo6aokmferha: + resolution: + { + integrity: sha512-r7n9V4/kkiDDVFfBwI3tviGUV/jUzGI0lY3JefxceYaU18gdk2kMgNPyhHobowu1+yHZpZi8iEzRtzeTrtGRLg==, + } + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: ">=3.3.1" + peerDependenciesMeta: + typescript: + optional: true + dependencies: + "@next/eslint-plugin-next": 13.1.4 + "@rushstack/eslint-patch": 1.2.0 + "@typescript-eslint/parser": 5.48.2_irgkl5vooow2ydyo6aokmferha + eslint: 8.23.1 + eslint-import-resolver-node: 0.3.6 + eslint-import-resolver-typescript: 3.5.3_hdzsmr7kawaomymueo2tso6fjq + eslint-plugin-import: 2.26.0_yvykkuql7q5wwoyd3vgrje6aqa + eslint-plugin-jsx-a11y: 6.6.0_eslint@8.23.1 + eslint-plugin-react: 7.31.8_eslint@8.23.1 + eslint-plugin-react-hooks: 4.6.0_eslint@8.23.1 + typescript: 4.8.3 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - supports-color + dev: false + + /eslint-config-prettier/8.5.0_eslint@8.23.1: + resolution: + { + integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==, + } + hasBin: true + peerDependencies: + eslint: ">=7.0.0" + dependencies: + eslint: 8.23.1 + dev: true + + /eslint-import-resolver-node/0.3.6: + resolution: + { + integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==, + } + dependencies: + debug: 3.2.7 + resolve: 1.22.1 + transitivePeerDependencies: + - supports-color + + /eslint-import-resolver-typescript/3.5.1_hdzsmr7kawaomymueo2tso6fjq: + resolution: + { + integrity: sha512-U7LUjNJPYjNsHvAUAkt/RU3fcTSpbllA0//35B4eLYTX74frmOepbt7F7J3D1IGtj9k21buOpaqtDd4ZlS/BYQ==, + } + engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 } + peerDependencies: + eslint: "*" + eslint-plugin-import: "*" + dependencies: + debug: 4.3.4 + enhanced-resolve: 5.10.0 + eslint: 8.23.1 + eslint-plugin-import: 2.26.0_bkwixupcywvgmrzjbgj7n47r6y + get-tsconfig: 4.2.0 + globby: 13.1.2 + is-core-module: 2.10.0 + is-glob: 4.0.3 + synckit: 0.8.4 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-import-resolver-typescript/3.5.3_hdzsmr7kawaomymueo2tso6fjq: + resolution: + { + integrity: sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==, + } + engines: { node: ^14.18.0 || >=16.0.0 } + peerDependencies: + eslint: "*" + eslint-plugin-import: "*" + dependencies: + debug: 4.3.4 + enhanced-resolve: 5.10.0 + eslint: 8.23.1 + eslint-plugin-import: 2.26.0_yvykkuql7q5wwoyd3vgrje6aqa + get-tsconfig: 4.2.0 + globby: 13.1.2 + is-core-module: 2.10.0 + is-glob: 4.0.3 + synckit: 0.8.4 + transitivePeerDependencies: + - supports-color + dev: false + + /eslint-module-utils/2.7.3_7liths4w263er5tix7tpkwznyq: + resolution: + { + integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==, + } + engines: { node: ">=4" } + peerDependencies: + "@typescript-eslint/parser": "*" + eslint-import-resolver-node: "*" + eslint-import-resolver-typescript: "*" + eslint-import-resolver-webpack: "*" + peerDependenciesMeta: + "@typescript-eslint/parser": + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + "@typescript-eslint/parser": 5.36.2_irgkl5vooow2ydyo6aokmferha + debug: 3.2.7 + eslint-import-resolver-node: 0.3.6 + eslint-import-resolver-typescript: 3.5.1_hdzsmr7kawaomymueo2tso6fjq + find-up: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-module-utils/2.7.3_ldxyliihv5g6tibz4or2rt2p7i: + resolution: + { + integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==, + } + engines: { node: ">=4" } + peerDependencies: + "@typescript-eslint/parser": "*" + eslint-import-resolver-node: "*" + eslint-import-resolver-typescript: "*" + eslint-import-resolver-webpack: "*" + peerDependenciesMeta: + "@typescript-eslint/parser": + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + "@typescript-eslint/parser": 5.48.2_irgkl5vooow2ydyo6aokmferha + debug: 3.2.7 + eslint-import-resolver-node: 0.3.6 + eslint-import-resolver-typescript: 3.5.3_hdzsmr7kawaomymueo2tso6fjq + find-up: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /eslint-plugin-import/2.26.0_bkwixupcywvgmrzjbgj7n47r6y: + resolution: + { + integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==, + } + engines: { node: ">=4" } + peerDependencies: + "@typescript-eslint/parser": "*" + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + "@typescript-eslint/parser": + optional: true + dependencies: + "@typescript-eslint/parser": 5.36.2_irgkl5vooow2ydyo6aokmferha + array-includes: 3.1.5 + array.prototype.flat: 1.3.0 + debug: 2.6.9 + doctrine: 2.1.0 + eslint: 8.23.1 + eslint-import-resolver-node: 0.3.6 + eslint-module-utils: 2.7.3_7liths4w263er5tix7tpkwznyq + has: 1.0.3 + is-core-module: 2.9.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.values: 1.1.5 + resolve: 1.22.1 + tsconfig-paths: 3.14.1 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-import/2.26.0_yvykkuql7q5wwoyd3vgrje6aqa: + resolution: + { + integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==, + } + engines: { node: ">=4" } + peerDependencies: + "@typescript-eslint/parser": "*" + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + "@typescript-eslint/parser": + optional: true + dependencies: + "@typescript-eslint/parser": 5.48.2_irgkl5vooow2ydyo6aokmferha + array-includes: 3.1.5 + array.prototype.flat: 1.3.0 + debug: 2.6.9 + doctrine: 2.1.0 + eslint: 8.23.1 + eslint-import-resolver-node: 0.3.6 + eslint-module-utils: 2.7.3_ldxyliihv5g6tibz4or2rt2p7i + has: 1.0.3 + is-core-module: 2.9.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.values: 1.1.5 + resolve: 1.22.1 + tsconfig-paths: 3.14.1 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: false + + /eslint-plugin-jsx-a11y/6.6.0_eslint@8.23.1: + resolution: + { + integrity: sha512-kTeLuIzpNhXL2CwLlc8AHI0aFRwWHcg483yepO9VQiHzM9bZwJdzTkzBszbuPrbgGmq2rlX/FaT2fJQsjUSHsw==, + } + engines: { node: ">=4.0" } + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + "@babel/runtime": 7.18.9 + aria-query: 4.2.2 + array-includes: 3.1.5 + ast-types-flow: 0.0.7 + axe-core: 4.4.3 + axobject-query: 2.2.0 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 8.23.1 + has: 1.0.3 + jsx-ast-utils: 3.3.2 + language-tags: 1.0.5 + minimatch: 3.1.2 + semver: 6.3.0 + + /eslint-plugin-react-hooks/4.6.0_eslint@8.23.1: + resolution: + { + integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==, + } + engines: { node: ">=10" } + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.23.1 + + /eslint-plugin-react/7.31.8_eslint@8.23.1: + resolution: + { + integrity: sha512-5lBTZmgQmARLLSYiwI71tiGVTLUuqXantZM6vlSY39OaDSV0M7+32K5DnLkmFrwTe+Ksz0ffuLUC91RUviVZfw==, + } + engines: { node: ">=4" } + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.5 + array.prototype.flatmap: 1.3.0 + doctrine: 2.1.0 + eslint: 8.23.1 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.2 + minimatch: 3.1.2 + object.entries: 1.1.5 + object.fromentries: 2.0.5 + object.hasown: 1.1.1 + object.values: 1.1.5 + prop-types: 15.8.1 + resolve: 2.0.0-next.4 + semver: 6.3.0 + string.prototype.matchall: 4.0.7 + + /eslint-plugin-simple-import-sort/8.0.0_eslint@8.23.1: + resolution: + { + integrity: sha512-bXgJQ+lqhtQBCuWY/FUWdB27j4+lqcvXv5rUARkzbeWLwea+S5eBZEQrhnO+WgX3ZoJHVj0cn943iyXwByHHQw==, + } + peerDependencies: + eslint: ">=5.0.0" + dependencies: + eslint: 8.23.1 + dev: true + + /eslint-scope/5.1.1: + resolution: + { + integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==, + } + engines: { node: ">=8.0.0" } + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope/7.1.1: + resolution: + { + integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + /eslint-utils/3.0.0_eslint@8.23.1: + resolution: + { + integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==, + } + engines: { node: ^10.0.0 || ^12.0.0 || >= 14.0.0 } + peerDependencies: + eslint: ">=5" + dependencies: + eslint: 8.23.1 + eslint-visitor-keys: 2.1.0 + + /eslint-visitor-keys/2.1.0: + resolution: + { + integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==, + } + engines: { node: ">=10" } + + /eslint-visitor-keys/3.3.0: + resolution: + { + integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + + /eslint/8.23.1: + resolution: + { + integrity: sha512-w7C1IXCc6fNqjpuYd0yPlcTKKmHlHHktRkzmBPZ+7cvNBQuiNjx0xaMTjAJGCafJhQkrFJooREv0CtrVzmHwqg==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + hasBin: true + dependencies: + "@eslint/eslintrc": 1.3.2 + "@humanwhocodes/config-array": 0.10.4 + "@humanwhocodes/gitignore-to-minimatch": 1.0.2 + "@humanwhocodes/module-importer": 1.0.1 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.1.1 + eslint-utils: 3.0.0_eslint@8.23.1 + eslint-visitor-keys: 3.3.0 + espree: 9.4.0 + esquery: 1.4.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.16.0 + globby: 11.1.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.0 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + js-sdsl: 4.1.4 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + regexpp: 3.2.0 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + /espree/9.4.0: + resolution: + { + integrity: sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + acorn: 8.8.0 + acorn-jsx: 5.3.2_acorn@8.8.0 + eslint-visitor-keys: 3.3.0 + + /esquery/1.4.0: + resolution: + { + integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==, + } + engines: { node: ">=0.10" } + dependencies: + estraverse: 5.3.0 + + /esrecurse/4.3.0: + resolution: + { + integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, + } + engines: { node: ">=4.0" } + dependencies: + estraverse: 5.3.0 + + /estraverse/4.3.0: + resolution: + { + integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==, + } + engines: { node: ">=4.0" } + dev: true + + /estraverse/5.3.0: + resolution: + { + integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, + } + engines: { node: ">=4.0" } + + /estree-walker/2.0.2: + resolution: + { + integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==, + } + dev: false + + /esutils/2.0.3: + resolution: + { + integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, + } + engines: { node: ">=0.10.0" } + + /event-target-shim/5.0.1: + resolution: + { + integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==, + } + engines: { node: ">=6" } + dev: true + + /execa/4.1.0: + resolution: + { + integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==, + } + engines: { node: ">=10" } + dependencies: + cross-spawn: 7.0.3 + get-stream: 5.2.0 + human-signals: 1.1.1 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /exenv/1.2.2: + resolution: + { + integrity: sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==, + } + dev: false + + /external-editor/3.1.0: + resolution: + { + integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==, + } + engines: { node: ">=4" } + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + dev: true + + /extract-files/11.0.0: + resolution: + { + integrity: sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ==, + } + engines: { node: ^12.20 || >= 14.13 } + dev: true + + /extract-files/9.0.0: + resolution: + { + integrity: sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==, + } + engines: { node: ^10.17.0 || ^12.0.0 || >= 13.7.0 } + dev: true + + /fast-deep-equal/3.1.3: + resolution: + { + integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, + } + + /fast-glob/3.2.11: + resolution: + { + integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==, + } + engines: { node: ">=8.6.0" } + dependencies: + "@nodelib/fs.stat": 2.0.5 + "@nodelib/fs.walk": 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + + /fast-json-stable-stringify/2.1.0: + resolution: + { + integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, + } + + /fast-levenshtein/2.0.6: + resolution: + { + integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, + } + + /fastq/1.13.0: + resolution: + { + integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==, + } + dependencies: + reusify: 1.0.4 + + /fb-watchman/2.0.1: + resolution: + { + integrity: sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==, + } + dependencies: + bser: 2.1.1 + dev: true + + /fbjs-css-vars/1.0.2: + resolution: + { + integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==, + } + dev: true + + /fbjs/3.0.4: + resolution: + { + integrity: sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==, + } + dependencies: + cross-fetch: 3.1.5 + fbjs-css-vars: 1.0.2 + loose-envify: 1.4.0 + object-assign: 4.1.1 + promise: 7.3.1 + setimmediate: 1.0.5 + ua-parser-js: 0.7.31 + transitivePeerDependencies: + - encoding + dev: true + + /figures/1.7.0: + resolution: + { + integrity: sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==, + } + engines: { node: ">=0.10.0" } + dependencies: + escape-string-regexp: 1.0.5 + object-assign: 4.1.1 + dev: true + + /figures/2.0.0: + resolution: + { + integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==, + } + engines: { node: ">=4" } + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /figures/3.2.0: + resolution: + { + integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==, + } + engines: { node: ">=8" } + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /file-entry-cache/6.0.1: + resolution: + { + integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==, + } + engines: { node: ^10.12.0 || >=12.0.0 } + dependencies: + flat-cache: 3.0.4 + + /fill-range/7.0.1: + resolution: + { + integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==, + } + engines: { node: ">=8" } + dependencies: + to-regex-range: 5.0.1 + + /find-up/2.1.0: + resolution: + { + integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==, + } + engines: { node: ">=4" } + dependencies: + locate-path: 2.0.0 + + /find-up/4.1.0: + resolution: + { + integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, + } + engines: { node: ">=8" } + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /find-up/5.0.0: + resolution: + { + integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, + } + engines: { node: ">=10" } + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + /flat-cache/3.0.4: + resolution: + { + integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==, + } + engines: { node: ^10.12.0 || >=12.0.0 } + dependencies: + flatted: 3.2.6 + rimraf: 3.0.2 + + /flatted/3.2.6: + resolution: + { + integrity: sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==, + } + + /form-data-encoder/1.7.2: + resolution: + { + integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==, + } + dev: true + + /form-data/3.0.1: + resolution: + { + integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==, + } + engines: { node: ">= 6" } + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /formdata-node/4.3.3: + resolution: + { + integrity: sha512-coTew7WODO2vF+XhpUdmYz4UBvlsiTMSNaFYZlrXIqYbFd4W7bMwnoALNLE6uvNgzTg2j1JDF0ZImEfF06VPAA==, + } + engines: { node: ">= 12.20" } + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 4.0.0-beta.1 + dev: true + + /fraction.js/4.2.0: + resolution: + { + integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==, + } + dev: true + + /fs.realpath/1.0.0: + resolution: + { + integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, + } + + /fsevents/2.3.2: + resolution: + { + integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==, + } + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + os: [darwin] + requiresBuild: true + optional: true + + /function-bind/1.1.1: + resolution: + { + integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==, + } + + /function.prototype.name/1.1.5: + resolution: + { + integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + functions-have-names: 1.2.3 + + /functional-red-black-tree/1.0.1: + resolution: + { + integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==, + } + dev: true + + /functions-have-names/1.2.3: + resolution: + { + integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==, + } + + /gauge/2.7.4: + resolution: + { + integrity: sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==, + } + dependencies: + aproba: 1.2.0 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + object-assign: 4.1.1 + signal-exit: 3.0.7 + string-width: 1.0.2 + strip-ansi: 3.0.1 + wide-align: 1.1.5 + dev: false + + /gensync/1.0.0-beta.2: + resolution: + { + integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==, + } + engines: { node: ">=6.9.0" } + dev: true + + /get-caller-file/2.0.5: + resolution: + { + integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, + } + engines: { node: 6.* || 8.* || >= 10.* } + dev: true + + /get-intrinsic/1.1.2: + resolution: + { + integrity: sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==, + } + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.3 + + /get-stream/4.1.0: + resolution: + { + integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==, + } + engines: { node: ">=6" } + dependencies: + pump: 3.0.0 + dev: true + + /get-stream/5.2.0: + resolution: + { + integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==, + } + engines: { node: ">=8" } + dependencies: + pump: 3.0.0 + dev: true + + /get-symbol-description/1.0.0: + resolution: + { + integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.2 + + /get-tsconfig/4.2.0: + resolution: + { + integrity: sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==, + } + + /glob-parent/5.1.2: + resolution: + { + integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, + } + engines: { node: ">= 6" } + dependencies: + is-glob: 4.0.3 + + /glob-parent/6.0.2: + resolution: + { + integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, + } + engines: { node: ">=10.13.0" } + dependencies: + is-glob: 4.0.3 + + /glob/7.1.6: + resolution: + { + integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==, + } + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: false + + /glob/7.1.7: + resolution: + { + integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==, + } + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: false + + /glob/7.2.3: + resolution: + { + integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==, + } + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + /globals/11.12.0: + resolution: + { + integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==, + } + engines: { node: ">=4" } + dev: true + + /globals/13.16.0: + resolution: + { + integrity: sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==, + } + engines: { node: ">=8" } + dependencies: + type-fest: 0.20.2 + + /globalyzer/0.1.0: + resolution: + { + integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==, + } + + /globby/11.1.0: + resolution: + { + integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==, + } + engines: { node: ">=10" } + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.11 + ignore: 5.2.0 + merge2: 1.4.1 + slash: 3.0.0 + + /globby/13.1.2: + resolution: + { + integrity: sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.2.11 + ignore: 5.2.0 + merge2: 1.4.1 + slash: 4.0.0 + + /globrex/0.1.2: + resolution: + { + integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==, + } + + /got/9.6.0: + resolution: + { + integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==, + } + engines: { node: ">=8.6" } + dependencies: + "@sindresorhus/is": 0.14.0 + "@szmarczak/http-timer": 1.1.2 + "@types/keyv": 3.1.4 + "@types/responselike": 1.0.0 + cacheable-request: 6.1.0 + decompress-response: 3.3.0 + duplexer3: 0.1.5 + get-stream: 4.1.0 + lowercase-keys: 1.0.1 + mimic-response: 1.0.1 + p-cancelable: 1.1.0 + to-readable-stream: 1.0.0 + url-parse-lax: 3.0.0 + dev: true + + /graceful-fs/4.2.10: + resolution: + { + integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==, + } + + /grapheme-splitter/1.0.4: + resolution: + { + integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==, + } + + /graphql-config/4.3.1_siupcgn3wlvluhjnbpgmgner4m: + resolution: + { + integrity: sha512-czBWzJSGaLJfOHBLuUTZVRTjfgohPfvlaeN1B5nXBVptFARpiFuS7iI4FnRhCGwm6qt1h2j1g05nkg0OIGA6bg==, + } + engines: { node: ">= 10.0.0" } + peerDependencies: + graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + "@endemolshinegroup/cosmiconfig-typescript-loader": 3.0.2_6wf3rui7fxpk2ozg5pxhvfantu + "@graphql-tools/graphql-file-loader": 7.4.0_graphql@16.5.0 + "@graphql-tools/json-file-loader": 7.4.0_graphql@16.5.0 + "@graphql-tools/load": 7.7.0_graphql@16.5.0 + "@graphql-tools/merge": 8.3.0_graphql@16.5.0 + "@graphql-tools/url-loader": 7.12.1_ewm3rx2a6dfbdevnsyuui3n5xm + "@graphql-tools/utils": 8.8.0_graphql@16.5.0 + cosmiconfig: 7.0.1 + cosmiconfig-toml-loader: 1.0.0 + graphql: 16.5.0 + minimatch: 4.2.1 + string-env-interpolation: 1.0.1 + transitivePeerDependencies: + - "@types/node" + - bufferutil + - encoding + - typescript + - utf-8-validate + dev: true + + /graphql-request/4.3.0_graphql@16.5.0: + resolution: + { + integrity: sha512-2v6hQViJvSsifK606AliqiNiijb1uwWp6Re7o0RTyH+uRTv/u7Uqm2g4Fjq/LgZIzARB38RZEvVBFOQOVdlBow==, + } + peerDependencies: + graphql: 14 - 16 + dependencies: + cross-fetch: 3.1.5 + extract-files: 9.0.0 + form-data: 3.0.1 + graphql: 16.5.0 + transitivePeerDependencies: + - encoding + dev: true + + /graphql-tag/2.12.6_graphql@16.5.0: + resolution: + { + integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==, + } + engines: { node: ">=10" } + peerDependencies: + graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + graphql: 16.5.0 + tslib: 2.4.0 + + /graphql-ws/5.9.1_graphql@16.5.0: + resolution: + { + integrity: sha512-mL/SWGBwIT9Meq0NlfS55yXXTOeWPMbK7bZBEZhFu46bcGk1coTx2Sdtzxdk+9yHWngD+Fk1PZDWaAutQa9tpw==, + } + engines: { node: ">=10" } + peerDependencies: + graphql: ">=0.11 <=16" + dependencies: + graphql: 16.5.0 + dev: true + + /graphql/16.5.0: + resolution: + { + integrity: sha512-qbHgh8Ix+j/qY+a/ZcJnFQ+j8ezakqPiHwPiZhV/3PgGlgf96QMBB5/f2rkiC9sgLoy/xvT6TSiaf2nTHJh5iA==, + } + engines: { node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0 } + + /graphql/16.6.0: + resolution: + { + integrity: sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==, + } + engines: { node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0 } + dev: false + + /has-ansi/2.0.0: + resolution: + { + integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==, + } + engines: { node: ">=0.10.0" } + dependencies: + ansi-regex: 2.1.1 + dev: true + + /has-bigints/1.0.2: + resolution: + { + integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==, + } + + /has-flag/3.0.0: + resolution: + { + integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==, + } + engines: { node: ">=4" } + dev: true + + /has-flag/4.0.0: + resolution: + { + integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, + } + engines: { node: ">=8" } + + /has-property-descriptors/1.0.0: + resolution: + { + integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==, + } + dependencies: + get-intrinsic: 1.1.2 + + /has-symbols/1.0.3: + resolution: + { + integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==, + } + engines: { node: ">= 0.4" } + + /has-tostringtag/1.0.0: + resolution: + { + integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==, + } + engines: { node: ">= 0.4" } + dependencies: + has-symbols: 1.0.3 + + /has-unicode/2.0.1: + resolution: + { + integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==, + } + dev: false + + /has/1.0.3: + resolution: + { + integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==, + } + engines: { node: ">= 0.4.0" } + dependencies: + function-bind: 1.1.1 + + /header-case/2.0.4: + resolution: + { + integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==, + } + dependencies: + capital-case: 1.0.4 + tslib: 2.4.0 + dev: true + + /hoist-non-react-statics/3.3.2: + resolution: + { + integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==, + } + dependencies: + react-is: 16.13.1 + dev: false + + /http-cache-semantics/4.1.0: + resolution: + { + integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==, + } + dev: true + + /http-errors/2.0.0: + resolution: + { + integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==, + } + engines: { node: ">= 0.8" } + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + dev: false + + /http-proxy-agent/5.0.0: + resolution: + { + integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==, + } + engines: { node: ">= 6" } + dependencies: + "@tootallnate/once": 2.0.0 + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /https-proxy-agent/5.0.1: + resolution: + { + integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==, + } + engines: { node: ">= 6" } + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + /human-signals/1.1.1: + resolution: + { + integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==, + } + engines: { node: ">=8.12.0" } + dev: true + + /husky/8.0.1: + resolution: + { + integrity: sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==, + } + engines: { node: ">=14" } + hasBin: true + dev: true + + /hyphenate-style-name/1.0.4: + resolution: + { + integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==, + } + dev: false + + /iconv-lite/0.4.24: + resolution: + { + integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==, + } + engines: { node: ">=0.10.0" } + dependencies: + safer-buffer: 2.1.2 + + /ieee754/1.2.1: + resolution: + { + integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, + } + dev: true + + /ignore/5.2.0: + resolution: + { + integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==, + } + engines: { node: ">= 4" } + + /immediate/3.0.6: + resolution: + { + integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==, + } + dev: false + + /immutable/3.7.6: + resolution: + { + integrity: sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==, + } + engines: { node: ">=0.8.0" } + dev: true + + /import-fresh/3.3.0: + resolution: + { + integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==, + } + engines: { node: ">=6" } + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + /import-from/4.0.0: + resolution: + { + integrity: sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==, + } + engines: { node: ">=12.2" } + dev: true + + /imurmurhash/0.1.4: + resolution: + { + integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, + } + engines: { node: ">=0.8.19" } + + /indent-string/3.2.0: + resolution: + { + integrity: sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==, + } + engines: { node: ">=4" } + dev: true + + /inflight/1.0.6: + resolution: + { + integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, + } + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + /inherits/2.0.4: + resolution: + { + integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, + } + + /ini/1.3.8: + resolution: + { + integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==, + } + dev: true + + /inquirer/8.2.4: + resolution: + { + integrity: sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==, + } + engines: { node: ">=12.0.0" } + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.5.6 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 7.0.0 + dev: true + + /internal-slot/1.0.3: + resolution: + { + integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==, + } + engines: { node: ">= 0.4" } + dependencies: + get-intrinsic: 1.1.2 + has: 1.0.3 + side-channel: 1.0.4 + + /invariant/2.2.4: + resolution: + { + integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==, + } + dependencies: + loose-envify: 1.4.0 + dev: true + + /is-absolute/1.0.0: + resolution: + { + integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==, + } + engines: { node: ">=0.10.0" } + dependencies: + is-relative: 1.0.0 + is-windows: 1.0.2 + dev: true + + /is-arrayish/0.2.1: + resolution: + { + integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, + } + dev: true + + /is-bigint/1.0.4: + resolution: + { + integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==, + } + dependencies: + has-bigints: 1.0.2 + + /is-binary-path/2.1.0: + resolution: + { + integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, + } + engines: { node: ">=8" } + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-boolean-object/1.1.2: + resolution: + { + integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + + /is-callable/1.2.4: + resolution: + { + integrity: sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==, + } + engines: { node: ">= 0.4" } + + /is-core-module/2.10.0: + resolution: + { + integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==, + } + dependencies: + has: 1.0.3 + + /is-core-module/2.9.0: + resolution: + { + integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==, + } + dependencies: + has: 1.0.3 + + /is-date-object/1.0.5: + resolution: + { + integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==, + } + engines: { node: ">= 0.4" } + dependencies: + has-tostringtag: 1.0.0 + + /is-docker/2.2.1: + resolution: + { + integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==, + } + engines: { node: ">=8" } + hasBin: true + + /is-extglob/2.1.1: + resolution: + { + integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, + } + engines: { node: ">=0.10.0" } + + /is-fullwidth-code-point/1.0.0: + resolution: + { + integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==, + } + engines: { node: ">=0.10.0" } + dependencies: + number-is-nan: 1.0.1 + + /is-fullwidth-code-point/2.0.0: + resolution: + { + integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==, + } + engines: { node: ">=4" } + dev: true + + /is-fullwidth-code-point/3.0.0: + resolution: + { + integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, + } + engines: { node: ">=8" } + + /is-glob/4.0.3: + resolution: + { + integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, + } + engines: { node: ">=0.10.0" } + dependencies: + is-extglob: 2.1.1 + + /is-in-browser/1.1.3: + resolution: + { + integrity: sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==, + } + dev: false + + /is-interactive/1.0.0: + resolution: + { + integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==, + } + engines: { node: ">=8" } + dev: true + + /is-lower-case/2.0.2: + resolution: + { + integrity: sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==, + } + dependencies: + tslib: 2.4.0 + dev: true + + /is-negative-zero/2.0.2: + resolution: + { + integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==, + } + engines: { node: ">= 0.4" } + + /is-number-object/1.0.7: + resolution: + { + integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==, + } + engines: { node: ">= 0.4" } + dependencies: + has-tostringtag: 1.0.0 + + /is-number/7.0.0: + resolution: + { + integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, + } + engines: { node: ">=0.12.0" } + + /is-observable/1.1.0: + resolution: + { + integrity: sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==, + } + engines: { node: ">=4" } + dependencies: + symbol-observable: 1.2.0 + dev: true + + /is-promise/2.2.2: + resolution: + { + integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==, + } + dev: true + + /is-regex/1.1.4: + resolution: + { + integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + + /is-relative/1.0.0: + resolution: + { + integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==, + } + engines: { node: ">=0.10.0" } + dependencies: + is-unc-path: 1.0.0 + dev: true + + /is-shared-array-buffer/1.0.2: + resolution: + { + integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==, + } + dependencies: + call-bind: 1.0.2 + + /is-stream/1.1.0: + resolution: + { + integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==, + } + engines: { node: ">=0.10.0" } + dev: true + + /is-stream/2.0.1: + resolution: + { + integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==, + } + engines: { node: ">=8" } + dev: true + + /is-string/1.0.7: + resolution: + { + integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==, + } + engines: { node: ">= 0.4" } + dependencies: + has-tostringtag: 1.0.0 + + /is-symbol/1.0.4: + resolution: + { + integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==, + } + engines: { node: ">= 0.4" } + dependencies: + has-symbols: 1.0.3 + + /is-unc-path/1.0.0: + resolution: + { + integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==, + } + engines: { node: ">=0.10.0" } + dependencies: + unc-path-regex: 0.1.2 + dev: true + + /is-unicode-supported/0.1.0: + resolution: + { + integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==, + } + engines: { node: ">=10" } + dev: true + + /is-upper-case/2.0.2: + resolution: + { + integrity: sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==, + } + dependencies: + tslib: 2.4.0 + dev: true + + /is-weakref/1.0.2: + resolution: + { + integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==, + } + dependencies: + call-bind: 1.0.2 + + /is-windows/1.0.2: + resolution: + { + integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==, + } + engines: { node: ">=0.10.0" } + dev: true + + /is-wsl/2.2.0: + resolution: + { + integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==, + } + engines: { node: ">=8" } + dependencies: + is-docker: 2.2.1 + + /isarray/1.0.0: + resolution: + { + integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==, + } + dev: false + + /isexe/2.0.0: + resolution: + { + integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, + } + + /isomorphic-fetch/3.0.0: + resolution: + { + integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==, + } + dependencies: + node-fetch: 2.6.7 + whatwg-fetch: 3.6.2 + transitivePeerDependencies: + - encoding + dev: true + + /isomorphic-ws/5.0.0_ws@8.8.1: + resolution: + { + integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==, + } + peerDependencies: + ws: "*" + dependencies: + ws: 8.8.1 + dev: true + + /jose/4.11.2: + resolution: + { + integrity: sha512-njj0VL2TsIxCtgzhO+9RRobBvws4oYyCM8TpvoUQwl/MbIM3NFJRR9+e6x0sS5xXaP1t6OCBkaBME98OV9zU5A==, + } + dev: false + + /js-sdsl/4.1.4: + resolution: + { + integrity: sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==, + } + + /js-tokens/4.0.0: + resolution: + { + integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, + } + + /js-yaml/4.1.0: + resolution: + { + integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, + } + hasBin: true + dependencies: + argparse: 2.0.1 + + /jsesc/2.5.2: + resolution: + { + integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==, + } + engines: { node: ">=4" } + hasBin: true + dev: true + + /json-buffer/3.0.0: + resolution: { integrity: sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= } + dev: true + + /json-parse-even-better-errors/2.3.1: + resolution: + { + integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, + } + dev: true + + /json-schema-traverse/0.4.1: + resolution: + { + integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, + } + + /json-stable-stringify-without-jsonify/1.0.1: + resolution: + { + integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, + } + + /json-stable-stringify/1.0.1: + resolution: + { + integrity: sha512-i/J297TW6xyj7sDFa7AmBPkQvLIxWr2kKPWI26tXydnZrzVAocNqn5DMNT1Mzk0vit1V5UkRM7C1KdVNp7Lmcg==, + } + dependencies: + jsonify: 0.0.0 + dev: true + + /json-to-pretty-yaml/1.2.2: + resolution: + { + integrity: sha512-rvm6hunfCcqegwYaG5T4yKJWxc9FXFgBVrcTZ4XfSVRwa5HA/Xs+vB/Eo9treYYHCeNM0nrSUr82V/M31Urc7A==, + } + engines: { node: ">= 0.2.0" } + dependencies: + remedial: 1.0.8 + remove-trailing-spaces: 1.0.8 + dev: true + + /json5/1.0.1: + resolution: + { + integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==, + } + hasBin: true + dependencies: + minimist: 1.2.6 + + /json5/2.2.1: + resolution: + { + integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==, + } + engines: { node: ">=6" } + hasBin: true + dev: true + + /jsonify/0.0.0: + resolution: + { + integrity: sha512-trvBk1ki43VZptdBI5rIlG4YOzyeH/WefQt5rj1grasPn4iiZWKet8nkgc4GlsAylaztn0qZfUYOiTsASJFdNA==, + } + dev: true + + /jsonwebtoken/8.5.1: + resolution: + { + integrity: sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==, + } + engines: { node: ">=4", npm: ">=1.4.28" } + dependencies: + jws: 3.2.2 + lodash.includes: 4.3.0 + lodash.isboolean: 3.0.3 + lodash.isinteger: 4.0.4 + lodash.isnumber: 3.0.3 + lodash.isplainobject: 4.0.6 + lodash.isstring: 4.0.1 + lodash.once: 4.1.1 + ms: 2.1.3 + semver: 5.7.1 + dev: true + + /jss-plugin-camel-case/10.9.0: + resolution: + { + integrity: sha512-UH6uPpnDk413/r/2Olmw4+y54yEF2lRIV8XIZyuYpgPYTITLlPOsq6XB9qeqv+75SQSg3KLocq5jUBXW8qWWww==, + } + dependencies: + "@babel/runtime": 7.18.9 + hyphenate-style-name: 1.0.4 + jss: 10.9.0 + dev: false + + /jss-plugin-default-unit/10.9.0: + resolution: + { + integrity: sha512-7Ju4Q9wJ/MZPsxfu4T84mzdn7pLHWeqoGd/D8O3eDNNJ93Xc8PxnLmV8s8ZPNRYkLdxZqKtm1nPQ0BM4JRlq2w==, + } + dependencies: + "@babel/runtime": 7.18.9 + jss: 10.9.0 + dev: false + + /jss-plugin-global/10.9.0: + resolution: + { + integrity: sha512-4G8PHNJ0x6nwAFsEzcuVDiBlyMsj2y3VjmFAx/uHk/R/gzJV+yRHICjT4MKGGu1cJq2hfowFWCyrr/Gg37FbgQ==, + } + dependencies: + "@babel/runtime": 7.18.9 + jss: 10.9.0 + dev: false + + /jss-plugin-nested/10.9.0: + resolution: + { + integrity: sha512-2UJnDrfCZpMYcpPYR16oZB7VAC6b/1QLsRiAutOt7wJaaqwCBvNsosLEu/fUyKNQNGdvg2PPJFDO5AX7dwxtoA==, + } + dependencies: + "@babel/runtime": 7.18.9 + jss: 10.9.0 + tiny-warning: 1.0.3 + dev: false + + /jss-plugin-props-sort/10.9.0: + resolution: + { + integrity: sha512-7A76HI8bzwqrsMOJTWKx/uD5v+U8piLnp5bvru7g/3ZEQOu1+PjHvv7bFdNO3DwNPC9oM0a//KwIJsIcDCjDzw==, + } + dependencies: + "@babel/runtime": 7.18.9 + jss: 10.9.0 + dev: false + + /jss-plugin-rule-value-function/10.9.0: + resolution: + { + integrity: sha512-IHJv6YrEf8pRzkY207cPmdbBstBaE+z8pazhPShfz0tZSDtRdQua5jjg6NMz3IbTasVx9FdnmptxPqSWL5tyJg==, + } + dependencies: + "@babel/runtime": 7.18.9 + jss: 10.9.0 + tiny-warning: 1.0.3 + dev: false + + /jss-plugin-vendor-prefixer/10.9.0: + resolution: + { + integrity: sha512-MbvsaXP7iiVdYVSEoi+blrW+AYnTDvHTW6I6zqi7JcwXdc6I9Kbm234nEblayhF38EftoenbM+5218pidmC5gA==, + } + dependencies: + "@babel/runtime": 7.18.9 + css-vendor: 2.0.8 + jss: 10.9.0 + dev: false + + /jss/10.9.0: + resolution: + { + integrity: sha512-YpzpreB6kUunQBbrlArlsMpXYyndt9JATbt95tajx0t4MTJJcCJdd4hdNpHmOIDiUJrF/oX5wtVFrS3uofWfGw==, + } + dependencies: + "@babel/runtime": 7.18.9 + csstype: 3.1.0 + is-in-browser: 1.1.3 + tiny-warning: 1.0.3 + dev: false + + /jsx-ast-utils/3.3.2: + resolution: + { + integrity: sha512-4ZCADZHRkno244xlNnn4AOG6sRQ7iBZ5BbgZ4vW4y5IZw7cVUD1PPeblm1xx/nfmMxPdt/LHsXZW8z/j58+l9Q==, + } + engines: { node: ">=4.0" } + dependencies: + array-includes: 3.1.5 + object.assign: 4.1.2 + + /jwa/1.4.1: + resolution: + { + integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==, + } + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + dev: true + + /jws/3.2.2: + resolution: + { + integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==, + } + dependencies: + jwa: 1.4.1 + safe-buffer: 5.2.1 + dev: true + + /keyv/3.1.0: + resolution: + { + integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==, + } + dependencies: + json-buffer: 3.0.0 + dev: true + + /language-subtag-registry/0.3.22: + resolution: + { + integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==, + } + + /language-tags/1.0.5: + resolution: + { + integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==, + } + dependencies: + language-subtag-registry: 0.3.22 + + /latest-version/5.1.0: + resolution: + { + integrity: sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==, + } + engines: { node: ">=8" } + dependencies: + package-json: 6.5.0 + dev: true + + /levn/0.4.1: + resolution: + { + integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, + } + engines: { node: ">= 0.8.0" } + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + /lie/3.1.1: + resolution: + { + integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==, + } + dependencies: + immediate: 3.0.6 + dev: false + + /lilconfig/2.0.6: + resolution: + { + integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==, + } + engines: { node: ">=10" } + dev: true + + /lines-and-columns/1.2.4: + resolution: + { + integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, + } + + /listr-silent-renderer/1.1.1: + resolution: + { + integrity: sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA==, + } + engines: { node: ">=4" } + dev: true + + /listr-update-renderer/0.5.0_listr@0.14.3: + resolution: + { + integrity: sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==, + } + engines: { node: ">=6" } + peerDependencies: + listr: ^0.14.2 + dependencies: + chalk: 1.1.3 + cli-truncate: 0.2.1 + elegant-spinner: 1.0.1 + figures: 1.7.0 + indent-string: 3.2.0 + listr: 0.14.3 + log-symbols: 1.0.2 + log-update: 2.3.0 + strip-ansi: 3.0.1 + dev: true + + /listr-verbose-renderer/0.5.0: + resolution: + { + integrity: sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==, + } + engines: { node: ">=4" } + dependencies: + chalk: 2.4.2 + cli-cursor: 2.1.0 + date-fns: 1.30.1 + figures: 2.0.0 + dev: true + + /listr/0.14.3: + resolution: + { + integrity: sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==, + } + engines: { node: ">=6" } + dependencies: + "@samverschueren/stream-to-observable": 0.3.1_rxjs@6.6.7 + is-observable: 1.1.0 + is-promise: 2.2.2 + is-stream: 1.1.0 + listr-silent-renderer: 1.1.1 + listr-update-renderer: 0.5.0_listr@0.14.3 + listr-verbose-renderer: 0.5.0 + p-map: 2.1.0 + rxjs: 6.6.7 + transitivePeerDependencies: + - zen-observable + - zenObservable + dev: true + + /localforage/1.10.0: + resolution: + { + integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==, + } + dependencies: + lie: 3.1.1 + dev: false + + /locate-path/2.0.0: + resolution: + { + integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==, + } + engines: { node: ">=4" } + dependencies: + p-locate: 2.0.0 + path-exists: 3.0.0 + + /locate-path/5.0.0: + resolution: + { + integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, + } + engines: { node: ">=8" } + dependencies: + p-locate: 4.1.0 + dev: true + + /locate-path/6.0.0: + resolution: + { + integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, + } + engines: { node: ">=10" } + dependencies: + p-locate: 5.0.0 + + /lodash-es/4.17.21: + resolution: + { + integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==, + } + dev: false + + /lodash.get/4.4.2: + resolution: + { + integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==, + } + dev: true + + /lodash.includes/4.3.0: + resolution: + { + integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==, + } + dev: true + + /lodash.isboolean/3.0.3: + resolution: + { + integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==, + } + dev: true + + /lodash.isinteger/4.0.4: + resolution: + { + integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==, + } + dev: true + + /lodash.isnumber/3.0.3: + resolution: + { + integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==, + } + dev: true + + /lodash.isplainobject/4.0.6: + resolution: + { + integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==, + } + dev: true + + /lodash.isstring/4.0.1: + resolution: + { + integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==, + } + dev: true + + /lodash.merge/4.6.2: + resolution: + { + integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, + } + + /lodash.once/4.1.1: + resolution: + { + integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==, + } + dev: true + + /lodash/4.17.21: + resolution: + { + integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, + } + + /log-symbols/1.0.2: + resolution: + { + integrity: sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==, + } + engines: { node: ">=0.10.0" } + dependencies: + chalk: 1.1.3 + dev: true + + /log-symbols/4.1.0: + resolution: + { + integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==, + } + engines: { node: ">=10" } + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true + + /log-update/2.3.0: + resolution: + { + integrity: sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==, + } + engines: { node: ">=4" } + dependencies: + ansi-escapes: 3.2.0 + cli-cursor: 2.1.0 + wrap-ansi: 3.0.1 + dev: true + + /loose-envify/1.4.0: + resolution: + { + integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==, + } + hasBin: true + dependencies: + js-tokens: 4.0.0 + + /lower-case-first/2.0.2: + resolution: + { + integrity: sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==, + } + dependencies: + tslib: 2.4.0 + dev: true + + /lower-case/2.0.2: + resolution: + { + integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==, + } + dependencies: + tslib: 2.4.0 + dev: true + + /lowercase-keys/1.0.1: + resolution: + { + integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==, + } + engines: { node: ">=0.10.0" } + dev: true + + /lowercase-keys/2.0.0: + resolution: + { + integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==, + } + engines: { node: ">=8" } + dev: true + + /lru-cache/6.0.0: + resolution: + { + integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==, + } + engines: { node: ">=10" } + dependencies: + yallist: 4.0.0 + + /lru_map/0.3.3: + resolution: + { + integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==, + } + dev: false + + /make-error/1.3.6: + resolution: + { + integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==, + } + dev: true + + /map-cache/0.2.2: + resolution: + { + integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==, + } + engines: { node: ">=0.10.0" } + dev: true + + /merge-stream/2.0.0: + resolution: + { + integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, + } + dev: true + + /merge2/1.4.1: + resolution: + { + integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, + } + engines: { node: ">= 8" } + + /meros/1.2.0_@types+node@18.7.16: + resolution: + { + integrity: sha512-3QRZIS707pZQnijHdhbttXRWwrHhZJ/gzolneoxKVz9N/xmsvY/7Ls8lpnI9gxbgxjcHsAVEW3mgwiZCo6kkJQ==, + } + engines: { node: ">=12" } + peerDependencies: + "@types/node": ">=12" + peerDependenciesMeta: + "@types/node": + optional: true + dependencies: + "@types/node": 18.7.16 + dev: true + + /micromatch/4.0.5: + resolution: + { + integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==, + } + engines: { node: ">=8.6" } + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + + /mime-db/1.52.0: + resolution: + { + integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, + } + engines: { node: ">= 0.6" } + dev: true + + /mime-types/2.1.35: + resolution: + { + integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, + } + engines: { node: ">= 0.6" } + dependencies: + mime-db: 1.52.0 + dev: true + + /mimic-fn/1.2.0: + resolution: + { + integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==, + } + engines: { node: ">=4" } + dev: true + + /mimic-fn/2.1.0: + resolution: + { + integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, + } + engines: { node: ">=6" } + dev: true + + /mimic-response/1.0.1: + resolution: + { + integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==, + } + engines: { node: ">=4" } + dev: true + + /minimatch/3.1.2: + resolution: + { + integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, + } + dependencies: + brace-expansion: 1.1.11 + + /minimatch/4.2.1: + resolution: + { + integrity: sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==, + } + engines: { node: ">=10" } + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimist/1.2.6: + resolution: + { + integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==, + } + + /mkdirp/0.5.6: + resolution: + { + integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==, + } + hasBin: true + dependencies: + minimist: 1.2.6 + dev: false + + /mkdirp/1.0.4: + resolution: + { + integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==, + } + engines: { node: ">=10" } + hasBin: true + dev: true + + /mri/1.2.0: + resolution: + { + integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==, + } + engines: { node: ">=4" } + dev: true + + /ms/2.0.0: + resolution: + { + integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==, + } + + /ms/2.1.2: + resolution: + { + integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, + } + + /ms/2.1.3: + resolution: + { + integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, + } + + /multimatch/4.0.0: + resolution: + { + integrity: sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==, + } + engines: { node: ">=8" } + dependencies: + "@types/minimatch": 3.0.5 + array-differ: 3.0.0 + array-union: 2.1.0 + arrify: 2.0.1 + minimatch: 3.1.2 + dev: true + + /mute-stream/0.0.8: + resolution: + { + integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==, + } + dev: true + + /mz/2.7.0: + resolution: + { + integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==, + } + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: false + + /nanoid/3.3.4: + resolution: + { + integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==, + } + engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + hasBin: true + + /natural-compare/1.4.0: + resolution: + { + integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, + } + + /next/13.1.0_biqbaboplfbrettd7655fr4n2y: + resolution: + { + integrity: sha512-lQMZH1V94L5IL/WaihQkTYabSY73aqgrkGPJB5uz+2O3ES4I3losV/maXLY7l7x5e+oNyE9N81upNQ8uRsR5/A==, + } + engines: { node: ">=14.6.0" } + hasBin: true + peerDependencies: + fibers: ">= 3.1.0" + node-sass: ^6.0.0 || ^7.0.0 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + dependencies: + "@next/env": 13.1.0 + "@swc/helpers": 0.4.14 + caniuse-lite: 1.0.30001447 + postcss: 8.4.14 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + styled-jsx: 5.1.1_react@18.2.0 + optionalDependencies: + "@next/swc-android-arm-eabi": 13.1.0 + "@next/swc-android-arm64": 13.1.0 + "@next/swc-darwin-arm64": 13.1.0 + "@next/swc-darwin-x64": 13.1.0 + "@next/swc-freebsd-x64": 13.1.0 + "@next/swc-linux-arm-gnueabihf": 13.1.0 + "@next/swc-linux-arm64-gnu": 13.1.0 + "@next/swc-linux-arm64-musl": 13.1.0 + "@next/swc-linux-x64-gnu": 13.1.0 + "@next/swc-linux-x64-musl": 13.1.0 + "@next/swc-win32-arm64-msvc": 13.1.0 + "@next/swc-win32-ia32-msvc": 13.1.0 + "@next/swc-win32-x64-msvc": 13.1.0 + transitivePeerDependencies: + - "@babel/core" + - babel-plugin-macros + dev: false + + /no-case/3.0.4: + resolution: + { + integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==, + } + dependencies: + lower-case: 2.0.2 + tslib: 2.4.0 + dev: true + + /node-domexception/1.0.0: + resolution: + { + integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==, + } + engines: { node: ">=10.5.0" } + dev: true + + /node-fetch/2.6.7: + resolution: + { + integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==, + } + engines: { node: 4.x || >=6.0.0 } + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + + /node-int64/0.4.0: + resolution: + { + integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==, + } + dev: true + + /node-releases/2.0.6: + resolution: + { + integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==, + } + dev: true + + /normalize-path/2.1.1: + resolution: + { + integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==, + } + engines: { node: ">=0.10.0" } + dependencies: + remove-trailing-separator: 1.1.0 + dev: true + + /normalize-path/3.0.0: + resolution: + { + integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, + } + engines: { node: ">=0.10.0" } + dev: true + + /normalize-range/0.1.2: + resolution: + { + integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==, + } + engines: { node: ">=0.10.0" } + dev: true + + /normalize-url/4.5.1: + resolution: + { + integrity: sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==, + } + engines: { node: ">=8" } + dev: true + + /npm-run-path/4.0.1: + resolution: + { + integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, + } + engines: { node: ">=8" } + dependencies: + path-key: 3.1.1 + dev: true + + /npmlog/4.1.2: + resolution: + { + integrity: sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==, + } + dependencies: + are-we-there-yet: 1.1.7 + console-control-strings: 1.1.0 + gauge: 2.7.4 + set-blocking: 2.0.0 + dev: false + + /nullthrows/1.1.1: + resolution: + { + integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==, + } + dev: true + + /number-is-nan/1.0.1: + resolution: + { + integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==, + } + engines: { node: ">=0.10.0" } + + /object-assign/4.1.1: + resolution: + { + integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==, + } + engines: { node: ">=0.10.0" } + + /object-inspect/1.12.2: + resolution: + { + integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==, + } + + /object-keys/1.1.1: + resolution: + { + integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==, + } + engines: { node: ">= 0.4" } + + /object.assign/4.1.2: + resolution: + { + integrity: sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + has-symbols: 1.0.3 + object-keys: 1.1.1 + + /object.entries/1.1.5: + resolution: + { + integrity: sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + + /object.fromentries/2.0.5: + resolution: + { + integrity: sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + + /object.hasown/1.1.1: + resolution: + { + integrity: sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==, + } + dependencies: + define-properties: 1.1.4 + es-abstract: 1.20.1 + + /object.values/1.1.5: + resolution: + { + integrity: sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + + /once/1.4.0: + resolution: + { + integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, + } + dependencies: + wrappy: 1.0.2 + + /onetime/2.0.1: + resolution: + { + integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==, + } + engines: { node: ">=4" } + dependencies: + mimic-fn: 1.2.0 + dev: true + + /onetime/5.1.2: + resolution: + { + integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, + } + engines: { node: ">=6" } + dependencies: + mimic-fn: 2.1.0 + dev: true + + /open/8.4.0: + resolution: + { + integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==, + } + engines: { node: ">=12" } + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + /optionator/0.9.1: + resolution: + { + integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==, + } + engines: { node: ">= 0.8.0" } + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.3 + + /ora/5.4.1: + resolution: + { + integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==, + } + engines: { node: ">=10" } + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.6.1 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: true + + /os-tmpdir/1.0.2: + resolution: + { + integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==, + } + engines: { node: ">=0.10.0" } + dev: true + + /p-cancelable/1.1.0: + resolution: + { + integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==, + } + engines: { node: ">=6" } + dev: true + + /p-limit/1.3.0: + resolution: + { + integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==, + } + engines: { node: ">=4" } + dependencies: + p-try: 1.0.0 + + /p-limit/2.3.0: + resolution: + { + integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, + } + engines: { node: ">=6" } + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit/3.1.0: + resolution: + { + integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, + } + engines: { node: ">=10" } + dependencies: + yocto-queue: 0.1.0 + + /p-locate/2.0.0: + resolution: + { + integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==, + } + engines: { node: ">=4" } + dependencies: + p-limit: 1.3.0 + + /p-locate/4.1.0: + resolution: + { + integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, + } + engines: { node: ">=8" } + dependencies: + p-limit: 2.3.0 + dev: true + + /p-locate/5.0.0: + resolution: + { + integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, + } + engines: { node: ">=10" } + dependencies: + p-limit: 3.1.0 + + /p-map/2.1.0: + resolution: + { + integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==, + } + engines: { node: ">=6" } + dev: true + + /p-try/1.0.0: + resolution: + { + integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==, + } + engines: { node: ">=4" } + + /p-try/2.2.0: + resolution: + { + integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, + } + engines: { node: ">=6" } + dev: true + + /package-json/6.5.0: + resolution: + { + integrity: sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==, + } + engines: { node: ">=8" } + dependencies: + got: 9.6.0 + registry-auth-token: 4.2.2 + registry-url: 5.1.0 + semver: 6.3.0 + dev: true + + /param-case/3.0.4: + resolution: + { + integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==, + } + dependencies: + dot-case: 3.0.4 + tslib: 2.4.0 + dev: true + + /parent-module/1.0.1: + resolution: + { + integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, + } + engines: { node: ">=6" } + dependencies: + callsites: 3.1.0 + + /parse-filepath/1.0.2: + resolution: + { + integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==, + } + engines: { node: ">=0.8" } + dependencies: + is-absolute: 1.0.0 + map-cache: 0.2.2 + path-root: 0.1.1 + dev: true + + /parse-json/5.2.0: + resolution: + { + integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==, + } + engines: { node: ">=8" } + dependencies: + "@babel/code-frame": 7.18.6 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + + /pascal-case/3.1.2: + resolution: + { + integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==, + } + dependencies: + no-case: 3.0.4 + tslib: 2.4.0 + dev: true + + /path-case/3.0.4: + resolution: + { + integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==, + } + dependencies: + dot-case: 3.0.4 + tslib: 2.4.0 + dev: true + + /path-exists/3.0.0: + resolution: + { + integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==, + } + engines: { node: ">=4" } + + /path-exists/4.0.0: + resolution: + { + integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, + } + engines: { node: ">=8" } + + /path-is-absolute/1.0.1: + resolution: + { + integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, + } + engines: { node: ">=0.10.0" } + + /path-key/3.1.1: + resolution: + { + integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, + } + engines: { node: ">=8" } + + /path-parse/1.0.7: + resolution: + { + integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, + } + + /path-root-regex/0.1.2: + resolution: + { + integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==, + } + engines: { node: ">=0.10.0" } + dev: true + + /path-root/0.1.1: + resolution: + { + integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==, + } + engines: { node: ">=0.10.0" } + dependencies: + path-root-regex: 0.1.2 + dev: true + + /path-type/4.0.0: + resolution: + { + integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, + } + engines: { node: ">=8" } + + /picocolors/1.0.0: + resolution: + { + integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==, + } + + /picomatch/2.3.1: + resolution: + { + integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, + } + engines: { node: ">=8.6" } + + /pirates/4.0.5: + resolution: + { + integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==, + } + engines: { node: ">= 6" } + dev: false + + /popper.js/1.16.1-lts: + resolution: + { + integrity: sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==, + } + dev: false + + /postcss-value-parser/4.2.0: + resolution: + { + integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==, + } + dev: true + + /postcss/8.4.14: + resolution: + { + integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==, + } + engines: { node: ^10 || ^12 || >=14 } + dependencies: + nanoid: 3.3.4 + picocolors: 1.0.0 + source-map-js: 1.0.2 + + /prelude-ls/1.2.1: + resolution: + { + integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, + } + engines: { node: ">= 0.8.0" } + + /prepend-http/2.0.0: + resolution: + { + integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==, + } + engines: { node: ">=4" } + dev: true + + /prettier/2.7.1: + resolution: + { + integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==, + } + engines: { node: ">=10.13.0" } + hasBin: true + dev: true + + /pretty-quick/3.1.3_prettier@2.7.1: + resolution: + { + integrity: sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA==, + } + engines: { node: ">=10.13" } + hasBin: true + peerDependencies: + prettier: ">=2.0.0" + dependencies: + chalk: 3.0.0 + execa: 4.1.0 + find-up: 4.1.0 + ignore: 5.2.0 + mri: 1.2.0 + multimatch: 4.0.0 + prettier: 2.7.1 + dev: true + + /process-nextick-args/2.0.1: + resolution: + { + integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==, + } + dev: false + + /progress/2.0.3: + resolution: + { + integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==, + } + engines: { node: ">=0.4.0" } + dev: false + + /promise/7.3.1: + resolution: + { + integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==, + } + dependencies: + asap: 2.0.6 + dev: true + + /prop-types/15.8.1: + resolution: + { + integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==, + } + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + /proxy-from-env/1.1.0: + resolution: + { + integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==, + } + dev: false + + /pump/3.0.0: + resolution: + { + integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==, + } + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: true + + /punycode/2.1.1: + resolution: + { + integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==, + } + engines: { node: ">=6" } + + /queue-microtask/1.2.3: + resolution: + { + integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, + } + + /raw-body/2.5.1: + resolution: + { + integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==, + } + engines: { node: ">= 0.8" } + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + dev: false + + /rc/1.2.8: + resolution: + { + integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==, + } + hasBin: true + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.6 + strip-json-comments: 2.0.1 + dev: true + + /react-dom/18.2.0_react@18.2.0: + resolution: + { + integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==, + } + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + dev: false + + /react-fast-compare/3.2.0: + resolution: + { + integrity: sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==, + } + dev: false + + /react-from-dom/0.6.2_react@18.2.0: + resolution: + { + integrity: sha512-qvWWTL/4xw4k/Dywd41RBpLQUSq97csuv15qrxN+izNeLYlD9wn5W8LspbfYe5CWbaSdkZ72BsaYBPQf2x4VbQ==, + } + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false + + /react-helmet/6.1.0_react@18.2.0: + resolution: + { + integrity: sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==, + } + peerDependencies: + react: ">=16.3.0" + dependencies: + object-assign: 4.1.1 + prop-types: 15.8.1 + react: 18.2.0 + react-fast-compare: 3.2.0 + react-side-effect: 2.1.2_react@18.2.0 + dev: false + + /react-inlinesvg/3.0.1_react@18.2.0: + resolution: + { + integrity: sha512-cBfoyfseNI2PkDA7ZKIlDoHq0eMfpoC3DhKBQNC+/X1M4ZQB+aXW+YiNPUDDDKXUsGDUIZWWiZWNFeauDIVdoA==, + } + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + exenv: 1.2.2 + react: 18.2.0 + react-from-dom: 0.6.2_react@18.2.0 + dev: false + + /react-is/16.13.1: + resolution: + { + integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==, + } + + /react-is/17.0.2: + resolution: + { + integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==, + } + dev: false + + /react-side-effect/2.1.2_react@18.2.0: + resolution: + { + integrity: sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==, + } + peerDependencies: + react: ^16.3.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false + + /react-transition-group/4.4.2_biqbaboplfbrettd7655fr4n2y: + resolution: + { + integrity: sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==, + } + peerDependencies: + react: ">=16.6.0" + react-dom: ">=16.6.0" + dependencies: + "@babel/runtime": 7.18.9 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false + + /react/18.2.0: + resolution: + { + integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==, + } + engines: { node: ">=0.10.0" } + dependencies: + loose-envify: 1.4.0 + dev: false + + /readable-stream/2.3.7: + resolution: + { + integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==, + } + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: false + + /readable-stream/3.6.0: + resolution: + { + integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==, + } + engines: { node: ">= 6" } + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: true + + /readdirp/3.6.0: + resolution: + { + integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, + } + engines: { node: ">=8.10.0" } + dependencies: + picomatch: 2.3.1 + dev: true + + /regenerator-runtime/0.13.9: + resolution: + { + integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==, + } + + /regexp.prototype.flags/1.4.3: + resolution: + { + integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + functions-have-names: 1.2.3 + + /regexpp/3.2.0: + resolution: + { + integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==, + } + engines: { node: ">=8" } + + /registry-auth-token/4.2.2: + resolution: + { + integrity: sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==, + } + engines: { node: ">=6.0.0" } + dependencies: + rc: 1.2.8 + dev: true + + /registry-url/5.1.0: + resolution: + { + integrity: sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==, + } + engines: { node: ">=8" } + dependencies: + rc: 1.2.8 + dev: true + + /relay-runtime/12.0.0: + resolution: + { + integrity: sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==, + } + dependencies: + "@babel/runtime": 7.18.9 + fbjs: 3.0.4 + invariant: 2.2.4 + transitivePeerDependencies: + - encoding + dev: true + + /remedial/1.0.8: + resolution: + { + integrity: sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==, + } + dev: true + + /remove-trailing-separator/1.1.0: + resolution: + { + integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==, + } + dev: true + + /remove-trailing-spaces/1.0.8: + resolution: + { + integrity: sha512-O3vsMYfWighyFbTd8hk8VaSj9UAGENxAtX+//ugIst2RMk5e03h6RoIS+0ylsFxY1gvmPuAY/PO4It+gPEeySA==, + } + dev: true + + /replaceall/0.1.6: + resolution: + { + integrity: sha512-sL26E4+8Kec7bwpRjHlQvbNZcpnGroT3PA7ywsgH6GjzxAg4IGNlNalLoRC/JmTed7cMhyDbi44pWw1kMhDxlw==, + } + engines: { node: ">= 0.8.x" } + dev: true + + /require-directory/2.1.1: + resolution: + { + integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, + } + engines: { node: ">=0.10.0" } + dev: true + + /require-main-filename/2.0.0: + resolution: + { + integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==, + } + dev: true + + /resolve-from/4.0.0: + resolution: + { + integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, + } + engines: { node: ">=4" } + + /resolve-from/5.0.0: + resolution: + { + integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==, + } + engines: { node: ">=8" } + dev: true + + /resolve/1.22.1: + resolution: + { + integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==, + } + hasBin: true + dependencies: + is-core-module: 2.10.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + /resolve/2.0.0-next.4: + resolution: + { + integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==, + } + hasBin: true + dependencies: + is-core-module: 2.10.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + /responselike/1.0.2: + resolution: + { + integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==, + } + dependencies: + lowercase-keys: 1.0.1 + dev: true + + /restore-cursor/2.0.0: + resolution: + { + integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==, + } + engines: { node: ">=4" } + dependencies: + onetime: 2.0.1 + signal-exit: 3.0.7 + dev: true + + /restore-cursor/3.1.0: + resolution: + { + integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==, + } + engines: { node: ">=8" } + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + + /retes/0.33.0: + resolution: + { + integrity: sha512-I6V1G2JkJ2JFIFSVuultNXepf7BW8SCaSUOq5IETM2fDjFim5Dg5F1zU/QbplNW0mqkk8QCw+I722v3nPkpRlA==, + } + dependencies: + busboy: 1.6.0 + zod: 3.19.1 + dev: false + + /reusify/1.0.4: + resolution: + { + integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==, + } + engines: { iojs: ">=1.0.0", node: ">=0.10.0" } + + /rimraf/3.0.2: + resolution: + { + integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==, + } + hasBin: true + dependencies: + glob: 7.2.3 + + /rollup/2.78.0: + resolution: + { + integrity: sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg==, + } + engines: { node: ">=10.0.0" } + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: false + + /run-async/2.4.1: + resolution: + { + integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==, + } + engines: { node: ">=0.12.0" } + dev: true + + /run-parallel/1.2.0: + resolution: + { + integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, + } + dependencies: + queue-microtask: 1.2.3 + + /rxjs/6.6.7: + resolution: + { + integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==, + } + engines: { npm: ">=2.0.0" } + dependencies: + tslib: 1.14.1 + dev: true + + /rxjs/7.5.6: + resolution: + { + integrity: sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==, + } + dependencies: + tslib: 2.4.0 + dev: true + + /safe-buffer/5.1.2: + resolution: + { + integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==, + } + + /safe-buffer/5.2.1: + resolution: + { + integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, + } + dev: true + + /safer-buffer/2.1.2: + resolution: + { + integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, + } + + /scheduler/0.23.0: + resolution: + { + integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==, + } + dependencies: + loose-envify: 1.4.0 + dev: false + + /scuid/1.1.0: + resolution: + { + integrity: sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg==, + } + dev: true + + /semver/5.7.1: + resolution: + { + integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==, + } + hasBin: true + dev: true + + /semver/6.3.0: + resolution: + { + integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==, + } + hasBin: true + + /semver/7.3.7: + resolution: + { + integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==, + } + engines: { node: ">=10" } + hasBin: true + dependencies: + lru-cache: 6.0.0 + + /sentence-case/3.0.4: + resolution: + { + integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==, + } + dependencies: + no-case: 3.0.4 + tslib: 2.4.0 + upper-case-first: 2.0.2 + dev: true + + /set-blocking/2.0.0: + resolution: + { + integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==, + } + + /setimmediate/1.0.5: + resolution: + { + integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==, + } + dev: true + + /setprototypeof/1.2.0: + resolution: + { + integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==, + } + dev: false + + /shebang-command/2.0.0: + resolution: + { + integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, + } + engines: { node: ">=8" } + dependencies: + shebang-regex: 3.0.0 + + /shebang-regex/3.0.0: + resolution: + { + integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, + } + engines: { node: ">=8" } + + /side-channel/1.0.4: + resolution: + { + integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==, + } + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.2 + object-inspect: 1.12.2 + + /signal-exit/3.0.7: + resolution: + { + integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, + } + + /signedsource/1.0.0: + resolution: + { + integrity: sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==, + } + dev: true + + /slash/3.0.0: + resolution: + { + integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, + } + engines: { node: ">=8" } + + /slash/4.0.0: + resolution: + { + integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==, + } + engines: { node: ">=12" } + + /slice-ansi/0.0.4: + resolution: { integrity: sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= } + engines: { node: ">=0.10.0" } + dev: true + + /snake-case/3.0.4: + resolution: + { + integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==, + } + dependencies: + dot-case: 3.0.4 + tslib: 2.4.0 + dev: true + + /source-map-js/1.0.2: + resolution: + { + integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==, + } + engines: { node: ">=0.10.0" } + + /source-map-support/0.5.21: + resolution: + { + integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==, + } + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map/0.6.1: + resolution: + { + integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, + } + engines: { node: ">=0.10.0" } + dev: true + + /sponge-case/1.0.1: + resolution: + { + integrity: sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==, + } + dependencies: + tslib: 2.4.0 + dev: true + + /statuses/2.0.1: + resolution: + { + integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==, + } + engines: { node: ">= 0.8" } + dev: false + + /streamsearch/1.1.0: + resolution: + { + integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==, + } + engines: { node: ">=10.0.0" } + + /string-env-interpolation/1.0.1: + resolution: + { + integrity: sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg==, + } + dev: true + + /string-width/1.0.2: + resolution: + { + integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==, + } + engines: { node: ">=0.10.0" } + dependencies: + code-point-at: 1.1.0 + is-fullwidth-code-point: 1.0.0 + strip-ansi: 3.0.1 + + /string-width/2.1.1: + resolution: + { + integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==, + } + engines: { node: ">=4" } + dependencies: + is-fullwidth-code-point: 2.0.0 + strip-ansi: 4.0.0 + dev: true + + /string-width/4.2.3: + resolution: + { + integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, + } + engines: { node: ">=8" } + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + /string.prototype.matchall/4.0.7: + resolution: + { + integrity: sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==, + } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + get-intrinsic: 1.1.2 + has-symbols: 1.0.3 + internal-slot: 1.0.3 + regexp.prototype.flags: 1.4.3 + side-channel: 1.0.4 + + /string.prototype.trimend/1.0.5: + resolution: + { + integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==, + } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + + /string.prototype.trimstart/1.0.5: + resolution: + { + integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==, + } + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + + /string_decoder/1.1.1: + resolution: + { + integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==, + } + dependencies: + safe-buffer: 5.1.2 + dev: false + + /string_decoder/1.3.0: + resolution: + { + integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, + } + dependencies: + safe-buffer: 5.2.1 + dev: true + + /strip-ansi/3.0.1: + resolution: + { + integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==, + } + engines: { node: ">=0.10.0" } + dependencies: + ansi-regex: 2.1.1 + + /strip-ansi/4.0.0: + resolution: + { + integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==, + } + engines: { node: ">=4" } + dependencies: + ansi-regex: 3.0.1 + dev: true + + /strip-ansi/6.0.1: + resolution: + { + integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, + } + engines: { node: ">=8" } + dependencies: + ansi-regex: 5.0.1 + + /strip-bom/3.0.0: + resolution: + { + integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, + } + engines: { node: ">=4" } + + /strip-final-newline/2.0.0: + resolution: + { + integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, + } + engines: { node: ">=6" } + dev: true + + /strip-json-comments/2.0.1: + resolution: + { + integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==, + } + engines: { node: ">=0.10.0" } + dev: true + + /strip-json-comments/3.1.1: + resolution: + { + integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, + } + engines: { node: ">=8" } + + /styled-jsx/5.1.1_react@18.2.0: + resolution: + { + integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==, + } + engines: { node: ">= 12.0.0" } + peerDependencies: + "@babel/core": "*" + babel-plugin-macros: "*" + react: ">= 16.8.0 || 17.x.x || ^18.0.0-0" + peerDependenciesMeta: + "@babel/core": + optional: true + babel-plugin-macros: + optional: true + dependencies: + client-only: 0.0.1 + react: 18.2.0 + dev: false + + /sucrase/3.25.0: + resolution: + { + integrity: sha512-WxTtwEYXSmZArPGStGBicyRsg5TBEFhT5b7N+tF+zauImP0Acy+CoUK0/byJ8JNPK/5lbpWIVuFagI4+0l85QQ==, + } + engines: { node: ">=8" } + hasBin: true + dependencies: + commander: 4.1.1 + glob: 7.1.6 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.5 + ts-interface-checker: 0.1.13 + dev: false + + /supports-color/2.0.0: + resolution: + { + integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==, + } + engines: { node: ">=0.8.0" } + dev: true + + /supports-color/5.5.0: + resolution: + { + integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==, + } + engines: { node: ">=4" } + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color/7.2.0: + resolution: + { + integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, + } + engines: { node: ">=8" } + dependencies: + has-flag: 4.0.0 + + /supports-preserve-symlinks-flag/1.0.0: + resolution: + { + integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, + } + engines: { node: ">= 0.4" } + + /swap-case/2.0.2: + resolution: + { + integrity: sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==, + } + dependencies: + tslib: 2.4.0 + dev: true + + /symbol-observable/1.2.0: + resolution: + { + integrity: sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==, + } + engines: { node: ">=0.10.0" } + dev: true + + /sync-fetch/0.4.1: + resolution: + { + integrity: sha512-JDtyFEvnKUzt1CxRtzzsGgkBanEv8XRmLyJo0F0nGkpCR8EjYmpOJJXz8GA/SWtlPU0nAYh0+CNMNnFworGyOA==, + } + engines: { node: ">=14" } + dependencies: + buffer: 5.7.1 + node-fetch: 2.6.7 + transitivePeerDependencies: + - encoding + dev: true + + /synckit/0.8.4: + resolution: + { + integrity: sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==, + } + engines: { node: ^14.18.0 || >=16.0.0 } + dependencies: + "@pkgr/utils": 2.3.1 + tslib: 2.4.0 + + /tapable/2.2.1: + resolution: + { + integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==, + } + engines: { node: ">=6" } + + /text-table/0.2.0: + resolution: + { + integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==, + } + + /thenify-all/1.6.0: + resolution: + { + integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==, + } + engines: { node: ">=0.8" } + dependencies: + thenify: 3.3.1 + dev: false + + /thenify/3.3.1: + resolution: + { + integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==, + } + dependencies: + any-promise: 1.3.0 + dev: false + + /through/2.3.8: + resolution: + { + integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==, + } + dev: true + + /tiny-glob/0.2.9: + resolution: + { + integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==, + } + dependencies: + globalyzer: 0.1.0 + globrex: 0.1.2 + + /tiny-warning/1.0.3: + resolution: + { + integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==, + } + dev: false + + /title-case/3.0.3: + resolution: + { + integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==, + } + dependencies: + tslib: 2.4.0 + dev: true + + /tmp/0.0.33: + resolution: + { + integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==, + } + engines: { node: ">=0.6.0" } + dependencies: + os-tmpdir: 1.0.2 + dev: true + + /to-fast-properties/2.0.0: + resolution: + { + integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==, + } + engines: { node: ">=4" } + dev: true + + /to-readable-stream/1.0.0: + resolution: + { + integrity: sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==, + } + engines: { node: ">=6" } + dev: true + + /to-regex-range/5.0.1: + resolution: + { + integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, + } + engines: { node: ">=8.0" } + dependencies: + is-number: 7.0.0 + + /toidentifier/1.0.1: + resolution: + { + integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==, + } + engines: { node: ">=0.6" } + dev: false + + /tr46/0.0.3: + resolution: + { + integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==, + } + + /ts-interface-checker/0.1.13: + resolution: + { + integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==, + } + dev: false + + /ts-log/2.2.4: + resolution: + { + integrity: sha512-DEQrfv6l7IvN2jlzc/VTdZJYsWUnQNCsueYjMkC/iXoEoi5fNan6MjeDqkvhfzbmHgdz9UxDUluX3V5HdjTydQ==, + } + dev: true + + /ts-node/9.1.1_typescript@4.8.3: + resolution: + { + integrity: sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==, + } + engines: { node: ">=10.0.0" } + hasBin: true + peerDependencies: + typescript: ">=2.7" + dependencies: + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + source-map-support: 0.5.21 + typescript: 4.8.3 + yn: 3.1.1 + dev: true + + /tsconfig-paths/3.14.1: + resolution: + { + integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==, + } + dependencies: + "@types/json5": 0.0.29 + json5: 1.0.1 + minimist: 1.2.6 + strip-bom: 3.0.0 + + /tslib/1.14.1: + resolution: + { + integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==, + } + + /tslib/2.3.1: + resolution: + { + integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==, + } + dev: true + + /tslib/2.4.0: + resolution: + { + integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==, + } + + /tsutils/3.21.0_typescript@4.8.3: + resolution: + { + integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==, + } + engines: { node: ">= 6" } + peerDependencies: + typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + dependencies: + tslib: 1.14.1 + typescript: 4.8.3 + + /type-check/0.4.0: + resolution: + { + integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==, + } + engines: { node: ">= 0.8.0" } + dependencies: + prelude-ls: 1.2.1 + + /type-fest/0.20.2: + resolution: + { + integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==, + } + engines: { node: ">=10" } + + /type-fest/0.21.3: + resolution: + { + integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==, + } + engines: { node: ">=10" } + dev: true + + /typescript/4.8.3: + resolution: + { + integrity: sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==, + } + engines: { node: ">=4.2.0" } + hasBin: true + + /ua-parser-js/0.7.31: + resolution: + { + integrity: sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==, + } + dev: true + + /unbox-primitive/1.0.2: + resolution: + { + integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==, + } + dependencies: + call-bind: 1.0.2 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + + /unc-path-regex/0.1.2: + resolution: + { + integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==, + } + engines: { node: ">=0.10.0" } + dev: true + + /undici/5.5.1: + resolution: + { + integrity: sha512-MEvryPLf18HvlCbLSzCW0U00IMftKGI5udnjrQbC5D4P0Hodwffhv+iGfWuJwg16Y/TK11ZFK8i+BPVW2z/eAw==, + } + engines: { node: ">=12.18" } + dev: true + + /unixify/1.0.0: + resolution: + { + integrity: sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==, + } + engines: { node: ">=0.10.0" } + dependencies: + normalize-path: 2.1.1 + dev: true + + /unpipe/1.0.0: + resolution: + { + integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==, + } + engines: { node: ">= 0.8" } + dev: false + + /update-browserslist-db/1.0.5_browserslist@4.21.3: + resolution: + { + integrity: sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==, + } + hasBin: true + peerDependencies: + browserslist: ">= 4.21.0" + dependencies: + browserslist: 4.21.3 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + + /upper-case-first/2.0.2: + resolution: + { + integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==, + } + dependencies: + tslib: 2.4.0 + dev: true + + /upper-case/2.0.2: + resolution: + { + integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==, + } + dependencies: + tslib: 2.4.0 + dev: true + + /uri-js/4.4.1: + resolution: + { + integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, + } + dependencies: + punycode: 2.1.1 + + /url-parse-lax/3.0.0: + resolution: + { + integrity: sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==, + } + engines: { node: ">=4" } + dependencies: + prepend-http: 2.0.0 + dev: true + + /urql/3.0.3_aez2jvt6lsvokp3l4ousdbdxf4: + resolution: + { + integrity: sha512-aVUAMRLdc5AOk239DxgXt6ZxTl/fEmjr7oyU5OGo8uvpqu42FkeJErzd2qBzhAQ3DyusoZIbqbBLPlnKo/yy2A==, + } + peerDependencies: + graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + react: ">= 16.8.0" + dependencies: + "@urql/core": 3.0.3_graphql@16.5.0 + graphql: 16.5.0 + react: 18.2.0 + wonka: 6.0.0 + dev: false + + /use-isomorphic-layout-effect/1.1.2_fn6mmk7tilns4p7ajkklhuudvi: + resolution: + { + integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==, + } + peerDependencies: + "@types/react": "*" + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + dependencies: + "@types/react": 18.0.19 + react: 18.2.0 + dev: false + + /usehooks-ts/2.9.1_biqbaboplfbrettd7655fr4n2y: + resolution: + { + integrity: sha512-2FAuSIGHlY+apM9FVlj8/oNhd+1y+Uwv5QNkMQz1oSfdHk4PXo1qoCw9I5M7j0vpH8CSWFJwXbVPeYDjLCx9PA==, + } + engines: { node: ">=16.15.0", npm: ">=8" } + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false + + /util-deprecate/1.0.2: + resolution: + { + integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, + } + + /uuid/8.3.2: + resolution: + { + integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==, + } + hasBin: true + dev: false + + /value-or-promise/1.0.11: + resolution: + { + integrity: sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==, + } + engines: { node: ">=12" } + dev: true + + /wcwidth/1.0.1: + resolution: + { + integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==, + } + dependencies: + defaults: 1.0.3 + dev: true + + /web-streams-polyfill/3.2.1: + resolution: + { + integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==, + } + engines: { node: ">= 8" } + dev: true + + /web-streams-polyfill/4.0.0-beta.1: + resolution: + { + integrity: sha512-3ux37gEX670UUphBF9AMCq8XM6iQ8Ac6A+DSRRjDoRBm1ufCkaCDdNVbaqq60PsEkdNlLKrGtv/YBP4EJXqNtQ==, + } + engines: { node: ">= 12" } + dev: true + + /webidl-conversions/3.0.1: + resolution: + { + integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==, + } + + /webpack-sources/3.2.3: + resolution: + { + integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==, + } + engines: { node: ">=10.13.0" } + dev: false + + /whatwg-fetch/3.6.2: + resolution: + { + integrity: sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==, + } + dev: true + + /whatwg-url/5.0.0: + resolution: + { + integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==, + } + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + /which-boxed-primitive/1.0.2: + resolution: + { + integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==, + } + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + + /which-module/2.0.0: + resolution: + { + integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==, + } + dev: true + + /which/2.0.2: + resolution: + { + integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, + } + engines: { node: ">= 8" } + hasBin: true + dependencies: + isexe: 2.0.0 + + /wide-align/1.1.5: + resolution: + { + integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==, + } + dependencies: + string-width: 4.2.3 + dev: false + + /wonka/6.0.0: + resolution: + { + integrity: sha512-TEiIOqkhQXbcmL1RrjxPCzTX15V5FSyJvZRSiTxvgTgrJMaOVKmzGTdRVh349CfaNo9dsIhWDyg1/GNq4NWrEg==, + } + dev: false + + /word-wrap/1.2.3: + resolution: + { + integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==, + } + engines: { node: ">=0.10.0" } + + /wrap-ansi/3.0.1: + resolution: + { + integrity: sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==, + } + engines: { node: ">=4" } + dependencies: + string-width: 2.1.1 + strip-ansi: 4.0.0 + dev: true + + /wrap-ansi/6.2.0: + resolution: + { + integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==, + } + engines: { node: ">=8" } + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi/7.0.0: + resolution: + { + integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, + } + engines: { node: ">=10" } + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrappy/1.0.2: + resolution: + { + integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, + } + + /ws/8.8.1: + resolution: + { + integrity: sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==, + } + engines: { node: ">=10.0.0" } + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /y18n/4.0.3: + resolution: + { + integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==, + } + dev: true + + /y18n/5.0.8: + resolution: + { + integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, + } + engines: { node: ">=10" } + dev: true + + /yallist/4.0.0: + resolution: + { + integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==, + } + + /yaml-ast-parser/0.0.43: + resolution: + { + integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==, + } + dev: true + + /yaml/1.10.2: + resolution: + { + integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==, + } + engines: { node: ">= 6" } + dev: true + + /yargs-parser/18.1.3: + resolution: + { + integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==, + } + engines: { node: ">=6" } + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: true + + /yargs-parser/21.0.1: + resolution: + { + integrity: sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==, + } + engines: { node: ">=12" } + dev: true + + /yargs/15.4.1: + resolution: + { + integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==, + } + engines: { node: ">=8" } + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.0 + y18n: 4.0.3 + yargs-parser: 18.1.3 + dev: true + + /yargs/17.5.1: + resolution: + { + integrity: sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==, + } + engines: { node: ">=12" } + dependencies: + cliui: 7.0.4 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.0.1 + dev: true + + /yn/3.1.1: + resolution: + { + integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==, + } + engines: { node: ">=6" } + dev: true + + /yocto-queue/0.1.0: + resolution: + { + integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, + } + engines: { node: ">=10" } + + /zod/3.19.1: + resolution: + { + integrity: sha512-LYjZsEDhCdYET9ikFu6dVPGp2YH9DegXjdJToSzD9rO6fy4qiRYFoyEYwps88OseJlPyl2NOe2iJuhEhL7IpEA==, + } + dev: false diff --git a/apps/slack/public/favicon.ico b/apps/slack/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 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 LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/apps/slack/public/vercel.svg b/apps/slack/public/vercel.svg new file mode 100644 index 0000000..fbf0e25 --- /dev/null +++ b/apps/slack/public/vercel.svg @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/apps/slack/sentry.client.config.js b/apps/slack/sentry.client.config.js new file mode 100644 index 0000000..d480b2d --- /dev/null +++ b/apps/slack/sentry.client.config.js @@ -0,0 +1,17 @@ +// This file configures the initialization of Sentry on the browser. +// The config you add here will be used whenever a page is visited. +// https://docs.sentry.io/platforms/javascript/guides/nextjs/ + +import * as Sentry from "@sentry/nextjs"; + +const SENTRY_DSN = process.env.SENTRY_DSN || process.env.NEXT_PUBLIC_SENTRY_DSN; + +Sentry.init({ + dsn: SENTRY_DSN, + // Adjust this value in production, or use tracesSampler for greater control + tracesSampleRate: 1.0, + // ... + // Note: if you want to override the automatic release value, do not set a + // `release` value here - use the environment variable `SENTRY_RELEASE`, so + // that it will also get attached to your source maps +}); diff --git a/apps/slack/sentry.edge.config.js b/apps/slack/sentry.edge.config.js new file mode 100644 index 0000000..1c3e861 --- /dev/null +++ b/apps/slack/sentry.edge.config.js @@ -0,0 +1,17 @@ +// This file configures the initialization of Sentry on the server. +// The config you add here will be used whenever middleware or an Edge route handles a request. +// https://docs.sentry.io/platforms/javascript/guides/nextjs/ + +import * as Sentry from "@sentry/nextjs"; + +const SENTRY_DSN = process.env.SENTRY_DSN || process.env.NEXT_PUBLIC_SENTRY_DSN; + +Sentry.init({ + dsn: SENTRY_DSN, + // Adjust this value in production, or use tracesSampler for greater control + tracesSampleRate: 1.0, + // ... + // Note: if you want to override the automatic release value, do not set a + // `release` value here - use the environment variable `SENTRY_RELEASE`, so + // that it will also get attached to your source maps +}); diff --git a/apps/slack/sentry.server.config.js b/apps/slack/sentry.server.config.js new file mode 100644 index 0000000..a7e581b --- /dev/null +++ b/apps/slack/sentry.server.config.js @@ -0,0 +1,17 @@ +// This file configures the initialization of Sentry on the server. +// The config you add here will be used whenever the server handles a request. +// https://docs.sentry.io/platforms/javascript/guides/nextjs/ + +import * as Sentry from "@sentry/nextjs"; + +const SENTRY_DSN = process.env.SENTRY_DSN || process.env.NEXT_PUBLIC_SENTRY_DSN; + +Sentry.init({ + dsn: SENTRY_DSN, + // Adjust this value in production, or use tracesSampler for greater control + tracesSampleRate: 1.0, + // ... + // Note: if you want to override the automatic release value, do not set a + // `release` value here - use the environment variable `SENTRY_RELEASE`, so + // that it will also get attached to your source maps +}); diff --git a/apps/slack/src/assets/saleor-logo-dark.svg b/apps/slack/src/assets/saleor-logo-dark.svg new file mode 100644 index 0000000..7cd344d --- /dev/null +++ b/apps/slack/src/assets/saleor-logo-dark.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/slack/src/assets/saleor-logo.svg b/apps/slack/src/assets/saleor-logo.svg new file mode 100644 index 0000000..57d3083 --- /dev/null +++ b/apps/slack/src/assets/saleor-logo.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/apps/slack/src/components/AccessWarning/AccessWarning.tsx b/apps/slack/src/components/AccessWarning/AccessWarning.tsx new file mode 100644 index 0000000..19cdb8e --- /dev/null +++ b/apps/slack/src/components/AccessWarning/AccessWarning.tsx @@ -0,0 +1,34 @@ +import { Typography } from "@material-ui/core"; +import React from "react"; + +type WarningCause = + | "not_in_iframe" + | "missing_access_token" + | "invalid_access_token" + | "unknown_cause"; + +interface AccessWarningProps { + cause?: WarningCause; +} + +const warnings: Record = { + not_in_iframe: "The view can only be displayed in the iframe.", + missing_access_token: "App doesn't have an access token.", + invalid_access_token: "Access token is invalid.", + unknown_cause: "Something went wrong.", +}; + +function AccessWarning({ cause = "unknown_cause" }: AccessWarningProps) { + return ( +
+ + App can't be accessed outside of the Saleor Dashboard + + + ❌ {warnings[cause]} + +
+ ); +} + +export default AccessWarning; diff --git a/apps/slack/src/components/AppColumnsLayout/AppColumnsLayout.tsx b/apps/slack/src/components/AppColumnsLayout/AppColumnsLayout.tsx new file mode 100644 index 0000000..94ee503 --- /dev/null +++ b/apps/slack/src/components/AppColumnsLayout/AppColumnsLayout.tsx @@ -0,0 +1,21 @@ +import { makeStyles } from "@saleor/macaw-ui"; +import { PropsWithChildren } from "react"; + +const useStyles = makeStyles({ + root: { + display: "grid", + gridTemplateColumns: "280px auto 280px", + alignItems: "start", + gap: 32, + maxWidth: 1180, + margin: "0 auto", + }, +}); + +type Props = PropsWithChildren<{}>; + +export const AppColumnsLayout = ({ children }: Props) => { + const styles = useStyles(); + + return
{children}
; +}; diff --git a/apps/slack/src/components/AppIcon/AppIcon.tsx b/apps/slack/src/components/AppIcon/AppIcon.tsx new file mode 100644 index 0000000..9799738 --- /dev/null +++ b/apps/slack/src/components/AppIcon/AppIcon.tsx @@ -0,0 +1,28 @@ +import { Typography } from "@material-ui/core"; +import { makeStyles } from "@saleor/macaw-ui"; + +const useStyles = makeStyles({ + appIconContainer: { + background: `rgb(95, 58, 199)`, + display: "flex", + flexDirection: "column", + justifyContent: "center", + alignItems: "center", + borderRadius: "50%", + color: "#fff", + width: 50, + height: 50, + }, +}); + +export const AppIcon = () => { + const styles = useStyles(); + + return ( +
+
+ S +
+
+ ); +}; diff --git a/apps/slack/src/components/ConfigurationError/ConfigurationError.tsx b/apps/slack/src/components/ConfigurationError/ConfigurationError.tsx new file mode 100644 index 0000000..7716c83 --- /dev/null +++ b/apps/slack/src/components/ConfigurationError/ConfigurationError.tsx @@ -0,0 +1,51 @@ +import { AplReadyResult } from "@saleor/app-sdk/APL"; +import { Alert } from "@saleor/macaw-ui"; + +const vercelInfo = ( +
+ +

+ App detected Vercel hosting. Check if Vercel is currently redeploying your app and try again + in few minutes +

+
+
+); + +export function ConfigurationError({ + isVercel, + appReady, +}: { + isVercel: boolean; + appReady: AplReadyResult; +}) { + return ( +
+

⚠️ Can't connect with the App API

+ {isVercel && vercelInfo} + {appReady.ready ? null : ( +
+

Environment variables validation is incorrect

+

{appReady.error.message}

+
+ )} + You may see this error because: +
    +
  • Internet connection has been lost
  • +
  • Application installation process is still in progress.
  • +
  • + Application is misconfigured. If you would like to know more how auth configuration is + kept,{" "} + + go to APL documentation + + . +
  • +
+
+ ); +} diff --git a/apps/slack/src/components/LoadingPage/LoadingPage.tsx b/apps/slack/src/components/LoadingPage/LoadingPage.tsx new file mode 100644 index 0000000..02b98e9 --- /dev/null +++ b/apps/slack/src/components/LoadingPage/LoadingPage.tsx @@ -0,0 +1,20 @@ +import { CircularProgress, Typography } from "@material-ui/core"; +import React from "react"; + +import { useStyles } from "./styles"; + +function LoadingPage() { + const classes = useStyles(); + + return ( +
+ + + + Attempting connection to Saleor Dashboard + +
+ ); +} + +export default LoadingPage; diff --git a/apps/slack/src/components/LoadingPage/styles.ts b/apps/slack/src/components/LoadingPage/styles.ts new file mode 100644 index 0000000..b392343 --- /dev/null +++ b/apps/slack/src/components/LoadingPage/styles.ts @@ -0,0 +1,14 @@ +import { makeStyles } from "@saleor/macaw-ui"; + +const useStyles = makeStyles((theme) => ({ + loaderContainer: { + display: "flex", + flexDirection: "column", + alignItems: "center", + }, + message: { + marginTop: theme.spacing(4), + }, +})); + +export { useStyles }; diff --git a/apps/slack/src/components/MainBar/MainBar.tsx b/apps/slack/src/components/MainBar/MainBar.tsx new file mode 100644 index 0000000..8495217 --- /dev/null +++ b/apps/slack/src/components/MainBar/MainBar.tsx @@ -0,0 +1,52 @@ +import { makeStyles } from "@saleor/macaw-ui"; +import { ReactNode } from "react"; +import { Paper, PaperProps } from "@material-ui/core"; + +import clsx from "clsx"; + +const useStyles = makeStyles((theme) => ({ + root: { + height: 96, + padding: "0 32px", + display: "flex", + alignItems: "center", + justifyContent: "space-between", + }, + leftColumn: { + marginRight: "auto", + }, + rightColumn: {}, + iconColumn: { + marginRight: 24, + }, + appName: { fontSize: 24, margin: 0 }, + appAuthor: { + fontSize: 12, + textTransform: "uppercase", + color: theme.palette.text.secondary, + fontWeight: 500, + margin: 0, + }, +})); + +type Props = { + name: string; + author: string; + rightColumnContent?: ReactNode; + icon?: ReactNode; +} & PaperProps; + +export const MainBar = ({ name, author, rightColumnContent, className, icon }: Props) => { + const styles = useStyles(); + + return ( + + {icon &&
{icon}
} +
+

{name}

+

{author}

+
+
{rightColumnContent}
+
+ ); +}; diff --git a/apps/slack/src/components/SlackAppMainBar/SlackAppMainBar.tsx b/apps/slack/src/components/SlackAppMainBar/SlackAppMainBar.tsx new file mode 100644 index 0000000..bd75da3 --- /dev/null +++ b/apps/slack/src/components/SlackAppMainBar/SlackAppMainBar.tsx @@ -0,0 +1,60 @@ +import { GitHub, OfflineBoltOutlined } from "@material-ui/icons"; +import { Button, makeStyles } from "@saleor/macaw-ui"; +import { MainBar } from "../MainBar/MainBar"; +import { useAppBridge, actions } from "@saleor/app-sdk/app-bridge"; +import { AppIcon } from "../AppIcon/AppIcon"; + +const useStyles = makeStyles({ + buttonsGrid: { display: "flex", gap: 10 }, + topBar: { + marginBottom: 32, + }, + indexActions: { + marginTop: 10, + }, +}); + +export const SlackAppMainBar = () => { + const { appBridge } = useAppBridge(); + const styles = useStyles(); + + const openInNewTab = (url: string) => { + appBridge?.dispatch( + actions.Redirect({ + to: url, + newContext: true, + }) + ); + }; + + return ( + } + className={styles.topBar} + name="Saleor Slack" + author="By Saleor Commerce" + rightColumnContent={ +
+ + +
+ } + /> + ); +}; diff --git a/apps/slack/src/hooks/theme-synchronizer.tsx b/apps/slack/src/hooks/theme-synchronizer.tsx new file mode 100644 index 0000000..b07b09d --- /dev/null +++ b/apps/slack/src/hooks/theme-synchronizer.tsx @@ -0,0 +1,38 @@ +import { useAppBridge } from "@saleor/app-sdk/app-bridge"; +import { useTheme } from "@saleor/macaw-ui"; +import { memo, useEffect } from "react"; + +/** + * Macaw-ui stores its theme mode in memory and local storage. To synchronize App with Dashboard, + * Macaw must be informed about this change from AppBridge. + * + * If you are not using Macaw, you can remove this. + */ +function _ThemeSynchronizer() { + const { appBridgeState, appBridge } = useAppBridge(); + const { setTheme, themeType } = useTheme(); + + // todo - replace this hook to appBridge.subscribe and react only only on initial theme event + // useEffect(() =>{ + // appBridge?.subscribe('theme',console.log) + // },[appBridge]) + + useEffect(() => { + if (!setTheme || !appBridgeState?.theme) { + return; + } + + if (themeType !== appBridgeState?.theme) { + setTheme(appBridgeState.theme); + /** + * Hack to fix macaw, which is going into infinite loop on light mode (probably de-sync local storage with react state) + * TODO Fix me when Macaw 2.0 is shipped + */ + window.localStorage.setItem("macaw-ui-theme", appBridgeState.theme); + } + }, [appBridgeState?.theme, setTheme, themeType]); + + return null; +} + +export const ThemeSynchronizer = memo(_ThemeSynchronizer); diff --git a/apps/slack/src/hooks/useAppApi.ts b/apps/slack/src/hooks/useAppApi.ts new file mode 100644 index 0000000..63f07ee --- /dev/null +++ b/apps/slack/src/hooks/useAppApi.ts @@ -0,0 +1,64 @@ +import { useAppBridge } from "@saleor/app-sdk/app-bridge"; +import { SALEOR_API_URL_HEADER } from "@saleor/app-sdk/const"; +import { useEffect, useState } from "react"; + +type Options = Record; + +interface UseFetchProps { + url: string; + options?: Options; + skip?: boolean; +} + +// This hook is meant to be used mainly for internal API calls +const useAppApi = ({ url, options, skip }: UseFetchProps) => { + const { appBridgeState } = useAppBridge(); + + const [data, setData] = useState(); + const [error, setError] = useState(); + const [loading, setLoading] = useState(false); + + const fetchOptions: RequestInit = { + ...options, + headers: [ + [SALEOR_API_URL_HEADER, appBridgeState?.saleorApiUrl!], + ["authorization-bearer", appBridgeState?.token!], + ], + }; + + useEffect(() => { + const fetchData = async () => { + setLoading(true); + setError(undefined); + + try { + const res = await fetch(url, fetchOptions); + + if (!res.ok) { + throw new Error(`Error status: ${res.status}`); + } + + const json = await res.json(); + setData(json); + } catch (e) { + setError(e as unknown); + } finally { + setLoading(false); + } + }; + + if (appBridgeState?.ready && !skip) { + fetchData(); + } + + return () => { + setLoading(false); + setError(undefined); + setData(undefined); + }; + }, [url, options, skip]); + + return { data, error, loading }; +}; + +export default useAppApi; diff --git a/apps/slack/src/lib/graphql.ts b/apps/slack/src/lib/graphql.ts new file mode 100644 index 0000000..1448c8a --- /dev/null +++ b/apps/slack/src/lib/graphql.ts @@ -0,0 +1,48 @@ +import { AuthConfig, authExchange } from "@urql/exchange-auth"; +import { + cacheExchange, + createClient as urqlCreateClient, + dedupExchange, + fetchExchange, +} from "urql"; + +interface IAuthState { + token: string; +} + +export const createClient = (url: string, getAuth: AuthConfig["getAuth"]) => + urqlCreateClient({ + url, + exchanges: [ + dedupExchange, + cacheExchange, + authExchange({ + addAuthToOperation: ({ authState, operation }) => { + if (!authState || !authState?.token) { + return operation; + } + + const fetchOptions = + typeof operation.context.fetchOptions === "function" + ? operation.context.fetchOptions() + : operation.context.fetchOptions || {}; + + return { + ...operation, + context: { + ...operation.context, + fetchOptions: { + ...fetchOptions, + headers: { + ...fetchOptions.headers, + "Authorization-Bearer": authState.token, + }, + }, + }, + }; + }, + getAuth, + }), + fetchExchange, + ], + }); diff --git a/apps/slack/src/lib/is-in-iframe.ts b/apps/slack/src/lib/is-in-iframe.ts new file mode 100644 index 0000000..e1f481c --- /dev/null +++ b/apps/slack/src/lib/is-in-iframe.ts @@ -0,0 +1,7 @@ +export function isInIframe() { + try { + return window.self !== window.top; + } catch (e) { + return true; + } +} diff --git a/apps/slack/src/lib/metadata.ts b/apps/slack/src/lib/metadata.ts new file mode 100644 index 0000000..400074c --- /dev/null +++ b/apps/slack/src/lib/metadata.ts @@ -0,0 +1,61 @@ +import { EncryptedMetadataManager, MetadataEntry } from "@saleor/app-sdk/settings-manager"; +import { Client } from "urql"; + +import { + FetchAppDetailsDocument, + FetchAppDetailsQuery, + UpdateAppMetadataDocument, +} from "../../generated/graphql"; +import { settingsManagerSecretKey } from "./saleor-app"; + +// Function is using urql graphql client to fetch all available metadata. +// Before returning query result, we are transforming response to list of objects with key and value fields +// which can be used by the manager. +// Result of this query is cached by the manager. +export async function fetchAllMetadata(client: Client): Promise { + const { error, data } = await client + .query(FetchAppDetailsDocument, {}) + .toPromise(); + + if (error) { + console.debug("Error during fetching the metadata: ", error); + return []; + } + + return data?.app?.privateMetadata.map((md) => ({ key: md.key, value: md.value })) || []; +} + +// Mutate function takes urql client and metadata entries, and construct mutation to the API. +// Before data are send, additional query for required App ID is made. +// The manager will use updated entries returned by this mutation to update it's cache. +export async function mutateMetadata(client: Client, appId: string, metadata: MetadataEntry[]) { + const { error: mutationError, data: mutationData } = await client + .mutation(UpdateAppMetadataDocument, { + id: appId, + input: metadata, + }) + .toPromise(); + + if (mutationError) { + console.debug("Mutation error: ", mutationError); + throw new Error(`Mutation error: ${mutationError.message}`); + } + + return ( + mutationData?.updatePrivateMetadata?.item?.privateMetadata.map((md) => ({ + key: md.key, + value: md.value, + })) || [] + ); +} + +export const createSettingsManager = (client: Client, appId: string) => + // EncryptedMetadataManager gives you interface to manipulate metadata and cache values in memory. + // We recommend it for production, because all values are encrypted. + // If your use case require plain text values, you can use MetadataManager. + new EncryptedMetadataManager({ + // Secret key should be randomly created for production and set as environment variable + encryptionKey: settingsManagerSecretKey, + fetchMetadata: () => fetchAllMetadata(client), + mutateMetadata: (metadata) => mutateMetadata(client, appId, metadata), + }); diff --git a/apps/slack/src/lib/no-ssr-wrapper.tsx b/apps/slack/src/lib/no-ssr-wrapper.tsx new file mode 100644 index 0000000..4917e33 --- /dev/null +++ b/apps/slack/src/lib/no-ssr-wrapper.tsx @@ -0,0 +1,8 @@ +import React, { PropsWithChildren } from "react"; +import dynamic from "next/dynamic"; + +const Wrapper = (props: PropsWithChildren<{}>) => {props.children}; + +export const NoSSRWrapper = dynamic(() => Promise.resolve(Wrapper), { + ssr: false, +}); diff --git a/apps/slack/src/lib/saleor-app.ts b/apps/slack/src/lib/saleor-app.ts new file mode 100644 index 0000000..99ee378 --- /dev/null +++ b/apps/slack/src/lib/saleor-app.ts @@ -0,0 +1,51 @@ +import { APL, FileAPL, SaleorCloudAPL, UpstashAPL } from "@saleor/app-sdk/APL"; +import { SaleorApp } from "@saleor/app-sdk/saleor-app"; + +/** + * By default, auth data are stored in the `.auth-data.json` (FileAPL). + * For multi-tenant applications and deployments please use UpstashAPL. + * + * To read more about storing auth data, read the + * [APL documentation](https://github.com/saleor/saleor-app-sdk/blob/main/docs/apl.md) + */ + +let apl: APL; +switch (process.env.APL) { + case "upstash": + // Require `UPSTASH_URL` and `UPSTASH_TOKEN` environment variables + apl = new UpstashAPL(); + break; + case "saleor-cloud": { + if (!process.env.REST_APL_ENDPOINT || !process.env.REST_APL_TOKEN) { + throw new Error("Rest APL is not configured - missing env variables. Check saleor-app.ts"); + } + + apl = new SaleorCloudAPL({ + resourceUrl: process.env.REST_APL_ENDPOINT as string, + token: process.env.REST_APL_TOKEN as string, + }); + break; + } + default: + apl = new FileAPL(); +} + +// TODO: Investigate why no-ssr-wrapper does not prevent this code from execution during the build time +// if (!process.env.SECRET_KEY && process.env.NODE_ENV === "production") { +// throw new Error( +// "For production deployment SECRET_KEY is mandatory to use EncryptedSettingsManager." +// ); +// } + +// Use placeholder value for the development +export const settingsManagerSecretKey = process.env.SECRET_KEY || "CHANGE_ME"; + +/** + * Prohibit installation from Saleors other than specified by the regex. + * Regex source is ENV so if ENV is not set, all installations will be allowed. + */ +export const allowedUrlsPattern = process.env.ALLOWED_DOMAIN_PATTERN; + +export const saleorApp = new SaleorApp({ + apl, +}); diff --git a/apps/slack/src/lib/slack.ts b/apps/slack/src/lib/slack.ts new file mode 100644 index 0000000..bfc253a --- /dev/null +++ b/apps/slack/src/lib/slack.ts @@ -0,0 +1,52 @@ +import { OrderCreatedWebhookPayloadFragment } from "../../generated/graphql"; + +export const sendSlackMessage = async ( + to: string, + data: { + order: Exclude; + saleorDomain: string; + } +) => { + const { + saleorDomain, + order: { id, number, user, shippingAddress, subtotal, shippingPrice, total }, + } = data; + + const response = await fetch(to, { + method: "POST", + body: JSON.stringify({ + blocks: [ + { + type: "section", + text: { + type: "mrkdwn", + text: `Order has been created 🎉`, + }, + }, + { + type: "section", + text: { + type: "mrkdwn", + text: `*Customer*\n${user?.firstName} ${user?.lastName}\n${user?.email}`, + }, + }, + { + type: "section", + text: { + type: "mrkdwn", + text: `*Shipping Address*\n${shippingAddress?.streetAddress1}\n${shippingAddress?.postalCode} ${shippingAddress?.city}\n${shippingAddress?.country.country}`, + }, + }, + { + type: "section", + text: { + type: "mrkdwn", + text: `*Subtotal*\n${subtotal.gross.amount} ${subtotal.gross.currency}\n*Shipping*\n${shippingPrice.gross.amount} ${shippingPrice.gross.currency}\n*Total*\n${total.gross.amount} ${total.gross.currency}`, + }, + }, + ], + }), + }); + + return response; +}; diff --git a/apps/slack/src/pages/_app.tsx b/apps/slack/src/pages/_app.tsx new file mode 100644 index 0000000..bb9d01c --- /dev/null +++ b/apps/slack/src/pages/_app.tsx @@ -0,0 +1,64 @@ +import "../styles/globals.css"; + +import { Theme } from "@material-ui/core/styles"; +import { AppBridge, AppBridgeProvider } from "@saleor/app-sdk/app-bridge"; +import { RoutePropagator } from "@saleor/app-sdk/app-bridge/next"; +import { ThemeProvider as MacawUIThemeProvider } from "@saleor/macaw-ui"; +import React, { PropsWithChildren, useEffect } from "react"; + +import { AppLayoutProps } from "../../types"; +import { ThemeSynchronizer } from "../hooks/theme-synchronizer"; +import { NoSSRWrapper } from "../lib/no-ssr-wrapper"; + +const themeOverrides: Partial = { + overrides: { + MuiTableCell: { + body: { + paddingBottom: 8, + paddingTop: 8, + }, + root: { + height: 56, + paddingBottom: 4, + paddingTop: 4, + }, + }, + }, +}; + +/** + * Ensure instance is a singleton. + * TODO: This is React 18 issue, consider hiding this workaround inside app-sdk + */ +const appBridgeInstance = + typeof window !== "undefined" ? new AppBridge({ autoNotifyReady: false }) : undefined; + +// That's a hack required by Macaw-UI incompatibility with React@18 +const ThemeProvider = MacawUIThemeProvider as React.FC< + PropsWithChildren<{ overrides: Partial; ssr: boolean; defaultTheme?: "light" | "dark" }> +>; + +function SaleorApp({ Component, pageProps }: AppLayoutProps) { + const getLayout = Component.getLayout ?? ((page) => page); + + useEffect(() => { + const jssStyles = document.querySelector("#jss-server-side"); + if (jssStyles) { + jssStyles?.parentElement?.removeChild(jssStyles); + } + }, []); + + return ( + + + + + + {getLayout()} + + + + ); +} + +export default SaleorApp; diff --git a/apps/slack/src/pages/_document.tsx b/apps/slack/src/pages/_document.tsx new file mode 100644 index 0000000..51a520b --- /dev/null +++ b/apps/slack/src/pages/_document.tsx @@ -0,0 +1,19 @@ +import { Head, Html, Main, NextScript } from "next/document"; + +export default function Document() { + return ( + + + + + + +
+ + + + ); +} diff --git a/apps/slack/src/pages/_error.js b/apps/slack/src/pages/_error.js new file mode 100644 index 0000000..55c3486 --- /dev/null +++ b/apps/slack/src/pages/_error.js @@ -0,0 +1,39 @@ +/** + * NOTE: This requires `@sentry/nextjs` version 7.3.0 or higher. + * + * NOTE: If using this with `next` version 12.2.0 or lower, uncomment the + * penultimate line in `CustomErrorComponent`. + * + * This page is loaded by Nextjs: + * - on the server, when data-fetching methods throw or reject + * - on the client, when `getInitialProps` throws or rejects + * - on the client, when a React lifecycle method throws or rejects, and it's + * caught by the built-in Nextjs error boundary + * + * See: + * - https://nextjs.org/docs/basic-features/data-fetching/overview + * - https://nextjs.org/docs/api-reference/data-fetching/get-initial-props + * - https://reactjs.org/docs/error-boundaries.html + */ + +import * as Sentry from "@sentry/nextjs"; +import NextErrorComponent from "next/error"; + +const CustomErrorComponent = (props) => { + // If you're using a Nextjs version prior to 12.2.1, uncomment this to + // compensate for https://github.com/vercel/next.js/issues/8592 + // Sentry.captureUnderscoreErrorException(props); + + return ; +}; + +CustomErrorComponent.getInitialProps = async (contextData) => { + // In case this is running in a serverless function, await this in order to give Sentry + // time to send the error before the lambda exits + await Sentry.captureUnderscoreErrorException(contextData); + + // This will contain the status code of the response + return NextErrorComponent.getInitialProps(contextData); +}; + +export default CustomErrorComponent; diff --git a/apps/slack/src/pages/_error.tsx b/apps/slack/src/pages/_error.tsx new file mode 100644 index 0000000..d431a7f --- /dev/null +++ b/apps/slack/src/pages/_error.tsx @@ -0,0 +1,75 @@ +import * as Sentry from "@sentry/nextjs"; +import { NextPageContext } from "next"; +import NextErrorComponent, { ErrorProps } from "next/error"; + +interface ErrorPageProps { + err: Error; + statusCode: number; + hasGetInitialPropsRun: boolean; +} + +interface AppErrorProps extends ErrorProps { + err?: Error; + hasGetInitialPropsRun?: boolean; +} + +function MyError({ statusCode, hasGetInitialPropsRun, err }: ErrorPageProps) { + if (!hasGetInitialPropsRun && err) { + // getInitialProps is not called when an exception is thrown + // at the top level of a module while it is being loaded. + // As a workaround, we pass err via _app.js so it can be captured + // Read more: https://github.com/vercel/next.js/issues/8592. + Sentry.captureException(err); + // Flushing is not required in this case as it only happens on the client + } + + return ; +} + +MyError.getInitialProps = async (context: NextPageContext) => { + const errorInitialProps: AppErrorProps = await NextErrorComponent.getInitialProps(context); + + const { res, err, asPath } = context; + + // Workaround for https://github.com/vercel/next.js/issues/8592, mark when + // getInitialProps has run + errorInitialProps.hasGetInitialPropsRun = true; + + // Returning early because we don't want to log 404 errors to Sentry. + if (res?.statusCode === 404) { + return errorInitialProps; + } + + // Running on the server, the response object (`res`) is available. + // + // Next.js will pass an err on the server if a page's data fetching methods + // threw or returned a Promise that rejected + // + // Running on the client (browser), Next.js will provide an err if: + // + // - a page's `getInitialProps` threw or returned a Promise that rejected + // - an exception was thrown somewhere in the React lifecycle (render, + // componentDidMount, etc) that was caught by Next.js's React Error + // Boundary. Read more about what types of exceptions are caught by Error + // Boundaries: https://reactjs.org/docs/error-boundaries.html + + if (err) { + Sentry.captureException(err); + + // Flushing before returning is necessary if deploying to Vercel, see + // https://vercel.com/docs/platform/limits#streaming-responses + await Sentry.flush(2000); + + return errorInitialProps; + } + + // If this point is reached, getInitialProps was called without any + // information about what the error might be. This is unexpected and may + // indicate a bug introduced in Next.js, so record it in Sentry + Sentry.captureException(new Error(`_error.js getInitialProps missing data at path: ${asPath}`)); + await Sentry.flush(2000); + + return errorInitialProps; +}; + +export default MyError; diff --git a/apps/slack/src/pages/api/configuration.ts b/apps/slack/src/pages/api/configuration.ts new file mode 100644 index 0000000..ebb9fa3 --- /dev/null +++ b/apps/slack/src/pages/api/configuration.ts @@ -0,0 +1,57 @@ +import { createProtectedHandler, ProtectedHandlerContext } from "@saleor/app-sdk/handlers/next"; +import { NextApiRequest, NextApiResponse } from "next"; + +import { createClient } from "../../lib/graphql"; +import { createSettingsManager } from "../../lib/metadata"; +import { saleorApp } from "../../lib/saleor-app"; + +const WEBHOOK_URL = "WEBHOOK_URL"; + +interface PostRequestBody { + data: { key: string; value: string }[]; +} + +export const handler = async ( + req: NextApiRequest, + res: NextApiResponse, + ctx: ProtectedHandlerContext +) => { + const { + authData: { token, saleorApiUrl, appId }, + } = ctx; + + const client = createClient(saleorApiUrl, async () => Promise.resolve({ token })); + + const settings = createSettingsManager(client, appId); + + switch (req.method!) { + case "GET": + res.status(200).json({ + success: true, + data: [{ key: WEBHOOK_URL, value: await settings.get(WEBHOOK_URL) }], + }); + return; + case "POST": { + const reqBody = req.body as PostRequestBody; + const newWebhookUrl = (await reqBody.data?.find((entry) => entry.key === WEBHOOK_URL))?.value; + if (!newWebhookUrl) { + console.error("New value for the webhook URL has not been found"); + res.status(400).json({ + success: false, + message: "Wrong request body", + }); + return; + } + await settings.set({ key: WEBHOOK_URL, value: newWebhookUrl }); + res.status(200).json({ + success: true, + data: [{ key: WEBHOOK_URL, value: await settings.get(WEBHOOK_URL) }], + }); + return; + } + default: + res.status(405).end(); + } +}; + +export default createProtectedHandler(handler, saleorApp.apl, ["MANAGE_APPS", "MANAGE_ORDERS"]); diff --git a/apps/slack/src/pages/api/manifest.ts b/apps/slack/src/pages/api/manifest.ts new file mode 100644 index 0000000..72390ef --- /dev/null +++ b/apps/slack/src/pages/api/manifest.ts @@ -0,0 +1,24 @@ +import { createManifestHandler } from "@saleor/app-sdk/handlers/next"; +import { AppManifest } from "@saleor/app-sdk/types"; + +import packageJson from "../../../package.json"; +import { orderCreatedWebhook } from "./webhooks/order-created"; + +const handler = createManifestHandler({ + async manifestFactory(context) { + const manifest: AppManifest = { + name: packageJson.name, + tokenTargetUrl: `${context.appBaseUrl}/api/register`, + appUrl: context.appBaseUrl, + permissions: ["MANAGE_ORDERS"], + id: "saleor.app", + version: packageJson.version, + webhooks: [orderCreatedWebhook.getWebhookManifest(context.appBaseUrl)], + extensions: [], + }; + + return manifest; + }, +}); + +export default handler; diff --git a/apps/slack/src/pages/api/register.ts b/apps/slack/src/pages/api/register.ts new file mode 100644 index 0000000..4217557 --- /dev/null +++ b/apps/slack/src/pages/api/register.ts @@ -0,0 +1,26 @@ +import { createAppRegisterHandler } from "@saleor/app-sdk/handlers/next"; + +import { allowedUrlsPattern, saleorApp } from "../../lib/saleor-app"; + +const handler = createAppRegisterHandler({ + apl: saleorApp.apl, + allowedSaleorUrls: [ + (url) => { + if (allowedUrlsPattern) { + const regex = new RegExp(allowedUrlsPattern); + if (regex.test(url)) { + console.debug(`Registration from the URL ${url} has been accepted`); + return true; + } + console.debug( + `Registration from the URL ${url} has been rejected, since it's not meet the regex pattern ${allowedUrlsPattern}` + ); + return false; + } + + return true; + }, + ], +}); + +export default handler; diff --git a/apps/slack/src/pages/api/slack-app-manifest.ts b/apps/slack/src/pages/api/slack-app-manifest.ts new file mode 100644 index 0000000..133ce0c --- /dev/null +++ b/apps/slack/src/pages/api/slack-app-manifest.ts @@ -0,0 +1,31 @@ +import { NextApiRequest, NextApiResponse } from "next"; + +export const handler = async (req: NextApiRequest, res: NextApiResponse) => { + const manifest = { + display_information: { + name: "Saleor", + description: "Receive notifications to your Slack channel", + background_color: "#231e49", + }, + features: { + bot_user: { + display_name: "Saleor", + always_online: false, + }, + }, + oauth_config: { + scopes: { + bot: ["incoming-webhook"], + }, + }, + settings: { + org_deploy_enabled: false, + socket_mode_enabled: false, + token_rotation_enabled: false, + }, + }; + + return res.status(200).json(manifest); +}; + +export default handler; diff --git a/apps/slack/src/pages/api/webhooks/order-created.ts b/apps/slack/src/pages/api/webhooks/order-created.ts new file mode 100644 index 0000000..0185c89 --- /dev/null +++ b/apps/slack/src/pages/api/webhooks/order-created.ts @@ -0,0 +1,118 @@ +import { NextWebhookApiHandler, SaleorAsyncWebhook } from "@saleor/app-sdk/handlers/next"; +import { gql } from "urql"; + +import { OrderCreatedWebhookPayloadFragment } from "../../../../generated/graphql"; +import { createClient } from "../../../lib/graphql"; +import { createSettingsManager } from "../../../lib/metadata"; +import { saleorApp } from "../../../lib/saleor-app"; +import { sendSlackMessage } from "../../../lib/slack"; + +const OrderCreatedWebhookPayload = gql` + fragment OrderCreatedWebhookPayload on OrderCreated { + order { + id + number + user { + email + firstName + lastName + } + shippingAddress { + streetAddress1 + city + postalCode + country { + country + } + } + subtotal { + gross { + amount + currency + } + } + shippingPrice { + gross { + amount + currency + } + } + total { + gross { + amount + currency + } + } + } + } +`; + +const OrderCreatedGraphqlSubscription = gql` + ${OrderCreatedWebhookPayload} + subscription OrderCreated { + event { + ...OrderCreatedWebhookPayload + } + } +`; + +export const orderCreatedWebhook = new SaleorAsyncWebhook({ + name: "Order Created in Saleor", + webhookPath: "api/webhooks/order-created", + asyncEvent: "ORDER_CREATED", + apl: saleorApp.apl, + subscriptionQueryAst: OrderCreatedGraphqlSubscription, +}); + +const handler: NextWebhookApiHandler = async ( + req, + res, + context +) => { + const { payload, authData } = context; + + const { saleorApiUrl, token, appId } = authData; + + const client = createClient(saleorApiUrl, async () => Promise.resolve({ token })); + + const settings = createSettingsManager(client, appId); + + const webhookUrl = await settings.get("WEBHOOK_URL"); + + if (!webhookUrl) { + return res.status(400).send({ + success: false, + message: + "The application has not been configured yet - Missing webhook URL configuration value", + }); + } + + if (!payload.order) { + return res.status(400).send({ success: false, message: "Order not found in request payload" }); + } + + const response = await sendSlackMessage(webhookUrl, { + saleorDomain: authData.domain, + order: payload.order, + }); + + if (response.status !== 200) { + const errorMessage = await response.text(); + console.error(`Slack API responded with code ${response.status}: ${errorMessage}`); + + return res.status(500).send({ + success: false, + message: `Slack API responded with status ${response.status}. Message: ${errorMessage}`, + }); + } + + return res.status(200).send({ success: true, message: "Slack message sent!" }); +}; + +export default orderCreatedWebhook.createHandler(handler); + +export const config = { + api: { + bodyParser: false, + }, +}; diff --git a/apps/slack/src/pages/configuration.tsx b/apps/slack/src/pages/configuration.tsx new file mode 100644 index 0000000..8483029 --- /dev/null +++ b/apps/slack/src/pages/configuration.tsx @@ -0,0 +1,250 @@ +import { + Card, + CardContent, + CardHeader, + List, + ListItem, + TextField, + Typography, +} from "@material-ui/core"; +import Skeleton from "@material-ui/lab/Skeleton"; +import { AplReadyResult, VercelAPL } from "@saleor/app-sdk/APL"; +import { useAppBridge, withAuthorization } from "@saleor/app-sdk/app-bridge"; +import { SALEOR_API_URL_HEADER, SALEOR_AUTHORIZATION_BEARER_HEADER } from "@saleor/app-sdk/const"; +import { ConfirmButton, ConfirmButtonTransitionState, makeStyles } from "@saleor/macaw-ui"; +import { GetServerSideProps } from "next"; +import { ChangeEvent, ReactElement, SyntheticEvent, useEffect, useState } from "react"; + +import AccessWarning from "../components/AccessWarning/AccessWarning"; +import { ConfigurationError } from "../components/ConfigurationError/ConfigurationError"; +import useAppApi from "../hooks/useAppApi"; +import { saleorApp } from "../lib/saleor-app"; +import useDashboardNotifier from "../utils/useDashboardNotifier"; +import { Link } from "@material-ui/core"; +import { SlackAppMainBar } from "../components/SlackAppMainBar/SlackAppMainBar"; +import { AppColumnsLayout } from "../components/AppColumnsLayout/AppColumnsLayout"; + +interface ConfigurationField { + key: string; + value: string; +} + +const useStyles = makeStyles((theme) => ({ + confirmButton: { + marginLeft: "auto", + }, + fieldContainer: { + marginBottom: theme.spacing(2), + }, + additionalInfo: { + marginBottom: theme.spacing(3), + }, +})); + +type PageProps = { + isVercel: boolean; + appReady: AplReadyResult; +}; + +export const getServerSideProps: GetServerSideProps = async () => { + const isVercel = saleorApp.apl instanceof VercelAPL; + const isAppReady = await saleorApp.isReady(); + + return { + props: { + isVercel, + appReady: isAppReady, + }, + }; +}; + +function Configuration({ isVercel, appReady }: PageProps) { + const classes = useStyles(); + const { appBridgeState } = useAppBridge(); + const [notify] = useDashboardNotifier(); + const [configuration, setConfiguration] = useState(); + const [transitionState, setTransitionState] = useState("default"); + + const { data: configurationData, error } = useAppApi<{ data: ConfigurationField[] }>({ + url: "/api/configuration", + }); + + useEffect(() => { + if (configurationData && !configuration) { + setConfiguration(configurationData.data); + } + }, [configurationData, configuration]); + + const handleSubmit = (event: SyntheticEvent) => { + event.preventDefault(); + setTransitionState("loading"); + + fetch("/api/configuration", { + method: "POST", + headers: [ + ["content-type", "application/json"], + [SALEOR_API_URL_HEADER, appBridgeState?.saleorApiUrl!], + [SALEOR_AUTHORIZATION_BEARER_HEADER, appBridgeState?.token!], + ], + body: JSON.stringify({ data: configuration }), + }) + .then(async (response) => { + setTransitionState(response.status === 200 ? "success" : "error"); + await notify({ + status: "success", + title: "Success", + text: "Configuration updated successfully", + }); + }) + .catch(async () => { + setTransitionState("error"); + await notify({ + status: "error", + title: "Configuration update failed", + }); + }); + }; + + const onChange = (event: ChangeEvent) => { + const { name, value } = event.target as HTMLInputElement; + setConfiguration((prev) => + prev!.map((prevField) => (prevField.key === name ? { ...prevField, value } : prevField)) + ); + }; + + if (error) { + console.error("Can't establish connection with the App API: ", error); + return ; + } + + if (configuration === undefined) { + return ; + } + + return ( +
+ {configuration!.map(({ key, value }) => ( +
+ +
+ ))} +

+ This webhook will be called when new order is created and `order_created` event is + triggered. +

+
+ +
+
+ ); +} + +function Instructions() { + const { appBridge } = useAppBridge(); + + const { data } = useAppApi({ + url: "/api/slack-app-manifest", + }); + + const slackUrl = new URL("https://api.slack.com/apps"); + slackUrl.searchParams.append("new_app", "1"); + slackUrl.searchParams.append("manifest_json", JSON.stringify(data)); + + const openExternalUrl = (to: string) => { + appBridge?.dispatch({ + type: "redirect", + payload: { + newContext: true, + actionId: "redirect_from_slack_app", + to, + }, + }); + }; + + return ( + <> + How to configure + + + { + e.preventDefault(); + openExternalUrl(slackUrl.href); + }} + href={slackUrl.href} + > + Install Slack application + + + + Copy incoming Webhook URL from Slack app configuration and paste it below into + `WEBHOOK_URL` field + + Save configuration + + Useful links + + + { + e.preventDefault(); + openExternalUrl("https://github.com/saleor/saleor-app-slack"); + }} + href="https://github.com/saleor/saleor-app-slack" + > + Visit repository & readme + + + + { + e.preventDefault(); + openExternalUrl("https://api.slack.com/messaging/webhooks"); + }} + href="https://api.slack.com/messaging/webhooks" + > + Read about Slack apps that use incoming webhooks + + + + + ); +} + +const ConfigurationWithAuth = withAuthorization({ + notIframe: , + unmounted: null, + noDashboardToken: , + dashboardTokenInvalid: , +})(Configuration); + +ConfigurationWithAuth.getLayout = (page: ReactElement) => ( +
+ + +
+ + + {page} + + + + + + + + +
+); + +export default ConfigurationWithAuth; diff --git a/apps/slack/src/pages/index.tsx b/apps/slack/src/pages/index.tsx new file mode 100644 index 0000000..1d5fa62 --- /dev/null +++ b/apps/slack/src/pages/index.tsx @@ -0,0 +1,141 @@ +import { NextPage } from "next"; +import { useAppBridge } from "@saleor/app-sdk/app-bridge"; +import { useRouter } from "next/router"; +import React, { FormEventHandler, useEffect } from "react"; +import { useIsMounted } from "usehooks-ts"; +import Image from "next/image"; +import SaleorLogoImage from "../assets/saleor-logo.svg"; +import SaleorLogoImageDark from "../assets/saleor-logo-dark.svg"; +import { InputAdornment, LinearProgress, TextField, Typography } from "@material-ui/core"; +import { Button, makeStyles, useTheme } from "@saleor/macaw-ui"; +import { isInIframe } from "../lib/is-in-iframe"; + +const useStyles = makeStyles({ + root: { + maxWidth: 960, + margin: "50px auto", + }, + headline: { + marginTop: 70, + lineHeight: 1.5, + }, + grid: { + display: "grid", + gridTemplateColumns: "50% 50%", + gap: 116, + marginTop: 48, + }, + form: { + marginTop: 24, + }, + submitButton: { + marginTop: 12, + }, + buttons: { + marginTop: 24, + "& > *": { + marginBottom: 12, + }, + }, +}); + +const Input = () => { + return ( + .saleor.cloud, + }} + /> + ); +}; + +/** + * Common landing page in case of app being open outside the Dashboard. + * Allows quick installation with Saleor env input + * + * Can be safely removed + */ +const IndexPage: NextPage = () => { + const styles = useStyles(); + const { appBridgeState } = useAppBridge(); + const isMounted = useIsMounted(); + const { replace } = useRouter(); + const { themeType } = useTheme(); + + const onFormSubmit: FormEventHandler = (e) => { + e.preventDefault(); + + const appOrigin = window.location.origin; + const appManifestUrl = new URL("api/manifest", appOrigin); + const saleorUrlSlug = new FormData(e.currentTarget).get("saleor-url") as string; + const saleorUrl = new URL("https://" + saleorUrlSlug.replace("https://", "") + ".saleor.cloud"); + + const installationUrl = new URL( + `dashboard/apps/install?manifestUrl=${appManifestUrl}`, + saleorUrl + ).href; + + window.location.href = installationUrl; + }; + + useEffect(() => { + if (isMounted() && appBridgeState?.ready) { + replace("/configuration"); + } + }, [isMounted, appBridgeState?.ready]); + + /** + * TODO Check also some timeout and show error if appBridge never handshakes + */ + if (isInIframe()) { + return ; + } + + return ( +
+ Saleor logo + + The Slack App has to be
+ launched in the Saleor Dashboard +
+
+
+ + Provide you Saleor URL +
to quickly install the app +
+
+ + +
+
+
+ + Or check the instructions +
and see how to install the app +
+
+ + +
+
+
+
+ ); +}; + +export default IndexPage; diff --git a/apps/slack/src/styles/globals.css b/apps/slack/src/styles/globals.css new file mode 100644 index 0000000..a70ca08 --- /dev/null +++ b/apps/slack/src/styles/globals.css @@ -0,0 +1,26 @@ +body { + font-family: Inter, -apple-system, "system-ui", "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, + "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; + color: #111; + padding: 1rem 2rem; +} + +code { + background: #f6f8fa; + border: 1px solid #eaeaea; + border-radius: 5px; + display: inline-block; + margin-top: 10px; + padding: 0.75rem; + font-family: Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, + Bitstream Vera Sans Mono, Courier New, monospace; +} + +code::before { + content: "$ "; + opacity: 0.6; +} + +li { + padding-bottom: 1rem; +} diff --git a/apps/slack/src/utils/useDashboardNotifier.ts b/apps/slack/src/utils/useDashboardNotifier.ts new file mode 100644 index 0000000..199a4a4 --- /dev/null +++ b/apps/slack/src/utils/useDashboardNotifier.ts @@ -0,0 +1,12 @@ +import { actions, NotificationPayload, useAppBridge } from "@saleor/app-sdk/app-bridge"; + +const useDashboardNotifier = () => { + const { appBridge, appBridgeState } = useAppBridge(); + + const notify = (payload: NotificationPayload) => + appBridgeState?.ready && appBridge?.dispatch(actions.Notification(payload)); + + return [notify]; +}; + +export default useDashboardNotifier; diff --git a/apps/slack/tsconfig.json b/apps/slack/tsconfig.json new file mode 100644 index 0000000..99710e8 --- /dev/null +++ b/apps/slack/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], + "exclude": ["node_modules"] +} diff --git a/apps/slack/types.ts b/apps/slack/types.ts new file mode 100644 index 0000000..f4d6c4a --- /dev/null +++ b/apps/slack/types.ts @@ -0,0 +1,17 @@ +import { NextPage } from "next"; +import { AppProps as NextAppProps } from "next/app"; +import { NextComponentType, NextPageContext } from "next/types"; +import { ReactElement, ReactNode } from "react"; + +export type PageWithLayout = NextPage & { + getLayout?: (page: ReactElement) => ReactNode; +}; + +export type AppProps = { + pageProps: NextAppProps["pageProps"]; + Component: NextComponentType & { layoutProps: any }; +}; + +export type AppLayoutProps = AppProps & { + Component: PageWithLayout; +}; diff --git a/package.json b/package.json index 2bb1ae2..8e496ed 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "@changesets/cli": "^2.26.0", "eslint-config-saleor": "workspace:*", "prettier": "^2.8.3", - "turbo": "^1.7.3", + "turbo": "^1.7.4", "eslint": "^8.33.0" }, "engines": { diff --git a/packages/eslint-config-saleor/index.js b/packages/eslint-config-saleor/index.js index 92a34b9..fc7ea9d 100644 --- a/packages/eslint-config-saleor/index.js +++ b/packages/eslint-config-saleor/index.js @@ -1,10 +1,12 @@ module.exports = { extends: ["next", "turbo", "prettier"], - rules: {}, - // todo - check this, it was default in turbo - // parserOptions: { - // babelOptions: { - // presets: [require.resolve("next/babel")], - // }, - // }, -}; + rules: { + "@next/next/no-html-link-for-pages": "off", + "react/jsx-key": "off", + }, + parserOptions: { + babelOptions: { + presets: [require.resolve("next/babel")], + }, + }, +}; \ No newline at end of file diff --git a/packages/eslint-config-saleor/package.json b/packages/eslint-config-saleor/package.json index e82c5f8..13afd13 100644 --- a/packages/eslint-config-saleor/package.json +++ b/packages/eslint-config-saleor/package.json @@ -5,9 +5,11 @@ "license": "MIT", "dependencies": { "eslint-config-next": "^13.1.6", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-react": "7.28.0", - "eslint-config-turbo": "^0.0.7" + "eslint-config-prettier": "^8.6.0", + "eslint-plugin-react": "7.32.2", + "eslint-config-turbo": "^0.0.7", + "eslint": "^8.33.0", + "typescript": "^4.9.5" }, "publishConfig": { "access": "public" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 58e5674..cb1d18e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,13 +8,13 @@ importers: eslint: ^8.33.0 eslint-config-saleor: workspace:* prettier: ^2.8.3 - turbo: ^1.7.3 + turbo: ^1.7.4 devDependencies: '@changesets/cli': 2.26.0 eslint: 8.33.0 eslint-config-saleor: link:packages/eslint-config-saleor prettier: 2.8.3 - turbo: 1.7.3 + turbo: 1.7.4 apps/data-importer: specifiers: @@ -368,17 +368,100 @@ importers: prettier: 2.8.3 typescript: 4.8.4 + apps/slack: + specifiers: + '@graphql-codegen/cli': 2.7.0 + '@graphql-codegen/introspection': 2.1.1 + '@graphql-codegen/typed-document-node': ^2.2.14 + '@graphql-codegen/typescript': 2.6.0 + '@graphql-codegen/typescript-operations': 2.4.3 + '@graphql-codegen/typescript-urql': ^3.5.13 + '@graphql-codegen/urql-introspection': 2.1.1 + '@graphql-typed-document-node/core': ^3.1.1 + '@material-ui/core': ^4.12.4 + '@material-ui/icons': ^4.11.3 + '@material-ui/lab': 4.0.0-alpha.61 + '@saleor/app-sdk': 0.27.1 + '@saleor/macaw-ui': ^0.7.2 + '@sentry/nextjs': ^7.30.0 + '@types/node': ^18.7.16 + '@types/react': ^18.0.19 + '@types/react-dom': ^18.0.6 + '@typescript-eslint/eslint-plugin': ^5.36.2 + '@typescript-eslint/parser': ^5.36.2 + '@urql/exchange-auth': ^1.0.0 + autoprefixer: ^10.4.7 + clean-publish: ^4.0.1 + clsx: ^1.2.1 + eslint-config-next: 13.1.4 + eslint-config-saleor: workspace:* + graphql: ^16.5.0 + graphql-tag: ^2.12.6 + jose: ^4.11.2 + next: 13.1.0 + postcss: ^8.4.14 + pretty-quick: ^3.1.3 + react: 18.2.0 + react-dom: 18.2.0 + react-helmet: ^6.1.0 + typescript: 4.8.3 + urql: ^3.0.3 + usehooks-ts: ^2.9.1 + dependencies: + '@material-ui/core': 4.12.4_5ndqzdd6t4rivxsukjv3i3ak2q + '@material-ui/icons': 4.11.3_x54wk6dsnsxe7g7vvfmytp77te + '@material-ui/lab': 4.0.0-alpha.61_x54wk6dsnsxe7g7vvfmytp77te + '@saleor/app-sdk': 0.27.1_s75y6mxmikaw2mhqmuko6w7njm + '@saleor/macaw-ui': 0.7.2_2dwar4pp5qoelfawvjffoi6dne + '@sentry/nextjs': 7.36.0_next@13.1.0+react@18.2.0 + '@urql/exchange-auth': 1.0.0_graphql@16.6.0 + clsx: 1.2.1 + eslint-config-next: 13.1.4_typescript@4.8.3 + graphql: 16.6.0 + graphql-tag: 2.12.6_graphql@16.6.0 + jose: 4.11.4 + next: 13.1.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-helmet: 6.1.0_react@18.2.0 + urql: 3.0.3_onqnqwb3ubg5opvemcqf7c2qhy + usehooks-ts: 2.9.1_biqbaboplfbrettd7655fr4n2y + devDependencies: + '@graphql-codegen/cli': 2.7.0_d3dx4krdt4fsynqrp5lqxelwe4 + '@graphql-codegen/introspection': 2.1.1_graphql@16.6.0 + '@graphql-codegen/typed-document-node': 2.3.13_graphql@16.6.0 + '@graphql-codegen/typescript': 2.6.0_graphql@16.6.0 + '@graphql-codegen/typescript-operations': 2.4.3_graphql@16.6.0 + '@graphql-codegen/typescript-urql': 3.7.3_sy4knu3obj4ys7pjcqbyfxmqle + '@graphql-codegen/urql-introspection': 2.1.1_graphql@16.6.0 + '@graphql-typed-document-node/core': 3.1.1_graphql@16.6.0 + '@types/node': 18.13.0 + '@types/react': 18.0.27 + '@types/react-dom': 18.0.10 + '@typescript-eslint/eslint-plugin': 5.51.0_tmcqyxthgnqsjnfifazzby2acy + '@typescript-eslint/parser': 5.51.0_typescript@4.8.3 + autoprefixer: 10.4.13_postcss@8.4.21 + clean-publish: 4.1.1 + eslint-config-saleor: link:../../packages/eslint-config-saleor + postcss: 8.4.21 + pretty-quick: 3.1.3 + typescript: 4.8.3 + packages/eslint-config-saleor: specifiers: + eslint: ^8.33.0 eslint-config-next: ^13.1.6 - eslint-config-prettier: ^8.3.0 + eslint-config-prettier: ^8.6.0 eslint-config-turbo: ^0.0.7 - eslint-plugin-react: 7.28.0 + eslint-plugin-react: 7.32.2 + typescript: ^4.9.5 dependencies: - eslint-config-next: 13.1.6 - eslint-config-prettier: 8.6.0 - eslint-config-turbo: 0.0.7 - eslint-plugin-react: 7.28.0 + eslint: 8.33.0 + eslint-config-next: 13.1.6_4vsywjlpuriuw3tl5oq6zy5a64 + eslint-config-prettier: 8.6.0_eslint@8.33.0 + eslint-config-turbo: 0.0.7_eslint@8.33.0 + eslint-plugin-react: 7.32.2_eslint@8.33.0 + typescript: 4.9.5 packages/shared: specifiers: {} @@ -1589,7 +1672,6 @@ packages: strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - dev: true /@fast-csv/format/4.3.5: resolution: {integrity: sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==} @@ -1843,6 +1925,60 @@ packages: - zenObservable dev: true + /@graphql-codegen/cli/2.7.0_d3dx4krdt4fsynqrp5lqxelwe4: + resolution: {integrity: sha512-qlBcS6jGfZ/xWXwqiyRLHGRuLC9gUdF8AwGHN7LdAYEP5MjL7pIXb02W5JuvMn47rrvr2Q22H9ECppZX65oSAg==} + hasBin: true + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@graphql-codegen/core': 2.5.1_graphql@16.6.0 + '@graphql-codegen/plugin-helpers': 2.7.2_graphql@16.6.0 + '@graphql-tools/apollo-engine-loader': 7.3.25_d3dx4krdt4fsynqrp5lqxelwe4 + '@graphql-tools/code-file-loader': 7.3.20_graphql@16.6.0 + '@graphql-tools/git-loader': 7.2.19_graphql@16.6.0 + '@graphql-tools/github-loader': 7.3.26_d3dx4krdt4fsynqrp5lqxelwe4 + '@graphql-tools/graphql-file-loader': 7.5.16_graphql@16.6.0 + '@graphql-tools/json-file-loader': 7.4.17_graphql@16.6.0 + '@graphql-tools/load': 7.8.12_graphql@16.6.0 + '@graphql-tools/prisma-loader': 7.2.62_d3dx4krdt4fsynqrp5lqxelwe4 + '@graphql-tools/url-loader': 7.17.11_d3dx4krdt4fsynqrp5lqxelwe4 + '@graphql-tools/utils': 8.13.1_graphql@16.6.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + change-case-all: 1.0.14 + chokidar: 3.5.3 + common-tags: 1.8.2 + cosmiconfig: 7.1.0 + debounce: 1.2.1 + detect-indent: 6.1.0 + graphql: 16.6.0 + graphql-config: 4.4.1_d3dx4krdt4fsynqrp5lqxelwe4 + inquirer: 8.2.5 + is-glob: 4.0.3 + json-to-pretty-yaml: 1.2.2 + latest-version: 5.1.0 + listr: 0.14.3 + listr-update-renderer: 0.5.0_listr@0.14.3 + log-symbols: 4.1.0 + mkdirp: 1.0.4 + string-env-interpolation: 1.0.1 + ts-log: 2.2.5 + wrap-ansi: 7.0.0 + yaml: 1.10.2 + yargs: 17.6.2 + transitivePeerDependencies: + - '@babel/core' + - '@types/node' + - bufferutil + - cosmiconfig-toml-loader + - cosmiconfig-typescript-loader + - encoding + - supports-color + - utf-8-validate + - zen-observable + - zenObservable + dev: true + /@graphql-codegen/core/2.5.1_graphql@16.6.0: resolution: {integrity: sha512-alctBVl2hMnBXDLwkgmnFPrZVIiBDsWJSmxJcM4GKg1PB23+xuov35GE47YAyAhQItE1B1fbYnbb1PtGiDZ4LA==} peerDependencies: @@ -2774,7 +2910,6 @@ packages: minimatch: 3.1.2 transitivePeerDependencies: - supports-color - dev: true /@humanwhocodes/config-array/0.9.5: resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} @@ -2790,11 +2925,9 @@ packages: /@humanwhocodes/module-importer/1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - dev: true /@humanwhocodes/object-schema/1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} - dev: true /@iarna/toml/2.2.5: resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} @@ -3158,6 +3291,10 @@ packages: resolution: {integrity: sha512-9P9THmRFVKGKt9DYqeC2aKIxm8rlvkK38V1P1sRE7qyoPBIs8l9oo79QoSdPtOWfzkbDAVUqvbQGgTMsb8BtJg==} dev: false + /@next/env/13.1.0: + resolution: {integrity: sha512-6iNixFzCndH+Bl4FetQzOMjxCJqg8fs0LAlZviig1K6mIjOWH2m2oPcHcOg1Ta5VCe7Bx5KG1Hs+NrWDUkBt9A==} + dev: false + /@next/env/13.1.2: resolution: {integrity: sha512-PpT4UZIX66VMTqXt4HKEJ+/PwbS+tWmmhZlazaws1a+dbUA5pPdjntQ46Jvj616i3ZKN9doS9LHx3y50RLjAWg==} dev: false @@ -3172,6 +3309,12 @@ packages: glob: 7.1.7 dev: true + /@next/eslint-plugin-next/13.1.4: + resolution: {integrity: sha512-a/T30+7Q1scom5t3L+wEBkYzCa+bhT/3DTxzxlNy4Xckw2InzcckQGeIi/larDgh5r2fSSJswhYAZEcKtuJiig==} + dependencies: + glob: 7.1.7 + dev: false + /@next/eslint-plugin-next/13.1.6: resolution: {integrity: sha512-o7cauUYsXjzSJkay8wKjpKJf2uLzlggCsGUkPu3lP09Pv97jYlekTC20KJrjQKmSv5DXV0R/uks2ZXhqjNkqAw==} dependencies: @@ -3187,6 +3330,15 @@ packages: dev: false optional: true + /@next/swc-android-arm-eabi/13.1.0: + resolution: {integrity: sha512-ANBZZRjZBV+Sii11ZVxbxSvfIi6dZwu4w+XnJBDmz+0/wtAigpjYWyMkuWZ/RCD7INdusOlU4EgJ99WzWGIDjA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: false + optional: true + /@next/swc-android-arm-eabi/13.1.2: resolution: {integrity: sha512-7mRz1owoGsbfIcdOJA3kk7KEwPZ+OvVT1z9DkR/yru4QdVLF69h/1SHy0vlUNQMxDRllabhxCfkoZCB34GOGAg==} engines: {node: '>= 10'} @@ -3214,6 +3366,15 @@ packages: dev: false optional: true + /@next/swc-android-arm64/13.1.0: + resolution: {integrity: sha512-nPwbkS3aZjCIe61wztgjXjIeylijOP8uGtDGjjJVUF3B/5GLVx3ngZu6tjPTMEgaLM0u//HuGK+aZolWUQWE4g==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false + optional: true + /@next/swc-android-arm64/13.1.2: resolution: {integrity: sha512-mgjZ2eJSayovQm1LcE54BLSI4jjnnnLtq5GY5g+DdPuUiCT644gKtjZ/w2BQvuIecCqqBO+Ph9yzo/wUTq7NLg==} engines: {node: '>= 10'} @@ -3241,6 +3402,15 @@ packages: dev: false optional: true + /@next/swc-darwin-arm64/13.1.0: + resolution: {integrity: sha512-0hUydiAW18jK2uGPnZRdnRQtdB/3ZoPo84A6zH7MJHxAWw9lzVsv3kMg9kgVBBlrivzqdNN8rdgA+eYNxzXU9w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + /@next/swc-darwin-arm64/13.1.2: resolution: {integrity: sha512-RikoQqy109r2222UJlyGs4dZw2BibkfPqpeFdW5JEGv+L2PStlHID8DwyVYbmHfQ0VIBGvbf/NAUtFakAWlhwg==} engines: {node: '>= 10'} @@ -3268,6 +3438,15 @@ packages: dev: false optional: true + /@next/swc-darwin-x64/13.1.0: + resolution: {integrity: sha512-3S3iQqJIysklj0Q9gnanuYMzF8H9p+fUVhvSHxVVLcKH4HsE8EGddNkXsaOyznL1kC6vGKw7h6uz1ojaXEafCA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + /@next/swc-darwin-x64/13.1.2: resolution: {integrity: sha512-JbDZjaTvL8gyPC5TAH6OnD4jmXPkyUxRYPvu08ZmhT/XAFBb/Cso0BdXyDax/BPCG70mimP9d3hXNKNq+A0VtQ==} engines: {node: '>= 10'} @@ -3295,6 +3474,15 @@ packages: dev: false optional: true + /@next/swc-freebsd-x64/13.1.0: + resolution: {integrity: sha512-wAgzwm/em48GIuWq3OYr0BpncMy7c+UA3hsyX+xKh/vb/sOIpQly7JTa+GNdk17s7kprhMfsgzPG3da36NLpkA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + /@next/swc-freebsd-x64/13.1.2: resolution: {integrity: sha512-ax4j8VrdFQ/xc3W7Om0u1vnDxVApQHKsChBbAMynCrnycZmpbqK4MZu4ZkycT+mx2eccCiqZROpbzDbEdPosEw==} engines: {node: '>= 10'} @@ -3322,6 +3510,15 @@ packages: dev: false optional: true + /@next/swc-linux-arm-gnueabihf/13.1.0: + resolution: {integrity: sha512-Cr2hzL7ad+4nj9KrR1Cz1RDcsWa61X6I7gc6PToRYIY4gL480Sijq19xo7dlXQPnr1viVzbNiNnNXZASHv7uvw==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@next/swc-linux-arm-gnueabihf/13.1.2: resolution: {integrity: sha512-NcRHTesnCxnUvSJa637PQJffBBkmqi5XS/xVWGY7dI6nyJ+pC96Oj7kd+mcjnFUQI5lHKbg39qBWKtOzbezc4w==} engines: {node: '>= 10'} @@ -3349,6 +3546,15 @@ packages: dev: false optional: true + /@next/swc-linux-arm64-gnu/13.1.0: + resolution: {integrity: sha512-EjCIKfeZB9h72evL2yGNwBvE5Im96Zn7o2zxImlvCiUYb/xXDqn4hzhck035BSP3g3sGDLfijFTE1wKRyXIk4w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@next/swc-linux-arm64-gnu/13.1.2: resolution: {integrity: sha512-AxJdjocLtPrsBY4P2COSBIc3crT5bpjgGenNuINoensOlXhBkYM0aRDYZdydwXOhG+kN2ngUvfgitop9pa204w==} engines: {node: '>= 10'} @@ -3376,6 +3582,15 @@ packages: dev: false optional: true + /@next/swc-linux-arm64-musl/13.1.0: + resolution: {integrity: sha512-WAsZtCtPXlz/7/bnW9ryw856xEun+c6xSwZwbcvrMxtcSiW3z0LD91Nsj3AkexsjRtBjeEpNeVtDExqF2VKKSA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@next/swc-linux-arm64-musl/13.1.2: resolution: {integrity: sha512-JmNimDkcCRq7P5zpkdqeaSZ69qKDntEPtyIaMNWqy5M0WUJxGim0Fs6Qzxayiyvuuh9Guxks4woQ/j/ZvX/c8Q==} engines: {node: '>= 10'} @@ -3403,6 +3618,15 @@ packages: dev: false optional: true + /@next/swc-linux-x64-gnu/13.1.0: + resolution: {integrity: sha512-Tjd5gieI3X9vPce5yF+GsQxOl0jwUkyOrTR1g5PQr+bT/9Qos/yPL48H1L5ayEp0hxgLVPW7skGal7lVnAoVEQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@next/swc-linux-x64-gnu/13.1.2: resolution: {integrity: sha512-TsLsjZwUlgmvI42neTuIoD6K9RlXCUzqPtvIClgXxVO0um0DiZwK+M+0zX/uVXhMVphfPY2c5YeR1zFSIONY4A==} engines: {node: '>= 10'} @@ -3430,6 +3654,15 @@ packages: dev: false optional: true + /@next/swc-linux-x64-musl/13.1.0: + resolution: {integrity: sha512-H9UMEQv40e9pkgdX4mCms0dDf2dimmZ6WXhDTWF/yIh9icgcsHaP73BJ9IFlgvh80wLiUgWZ3LAX4vXnXzidmg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@next/swc-linux-x64-musl/13.1.2: resolution: {integrity: sha512-eSkyXgCXydEFPTkcncQOGepafedPte6JT/OofB9uvruucrrMVBagCASOuPxodWEMrlfEKSXVnExMKIlfmQMD7A==} engines: {node: '>= 10'} @@ -3457,6 +3690,15 @@ packages: dev: false optional: true + /@next/swc-win32-arm64-msvc/13.1.0: + resolution: {integrity: sha512-LFFIKjW/cPl4wvG8HF/6oYPJZ+Jy32G3FUflC8UW1Od6W9yOSEvadhk9fMyDZN4cgsNOcVc3uVSMpcuuCpbDGw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + /@next/swc-win32-arm64-msvc/13.1.2: resolution: {integrity: sha512-DmXFaRTgt2KrV9dmRLifDJE+cYiutHVFIw5/C9BtnwXH39uf3YbPxeD98vNrtqqqZVVLXY/1ySaSIwzYnqeY9g==} engines: {node: '>= 10'} @@ -3484,6 +3726,15 @@ packages: dev: false optional: true + /@next/swc-win32-ia32-msvc/13.1.0: + resolution: {integrity: sha512-MBLaoHZSenMdxhB3Ww1VNEhjyPT3uLjzAi5Ygk48LLLbOGu5KxQolhINRrqGuJWqJRNWSJ9JSFBfJrZwQzrUew==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + /@next/swc-win32-ia32-msvc/13.1.2: resolution: {integrity: sha512-3+nBkuFs/wT+lmRVQNH5SyDT7I4vUlNPntosEaEP63FuYQdPLaxz0GvcR66MdFSFh2fsvazpe4wciOwVS4FItQ==} engines: {node: '>= 10'} @@ -3511,6 +3762,15 @@ packages: dev: false optional: true + /@next/swc-win32-x64-msvc/13.1.0: + resolution: {integrity: sha512-fFTfIQvnmpbKoyh4v3ezlGqtERlgc2Sx8qJwPuYqoVi0V08wCx9wp2Iq1CINxP3UMHkEeNX7gYpDOd+9Cw9EiQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + /@next/swc-win32-x64-msvc/13.1.2: resolution: {integrity: sha512-avsyveEvcvH42PvKjR4Pb8JlLttuGURr2H3ZhS2b85pHOiZ7yjH3rMUoGnNzuLMApyxYaCvd4MedPrLhnNhkog==} engines: {node: '>= 10'} @@ -3718,6 +3978,27 @@ packages: - supports-color dev: false + /@saleor/app-sdk/0.27.1_s75y6mxmikaw2mhqmuko6w7njm: + resolution: {integrity: sha512-ZNbucokKCdBE1qa+YLHvjBVazYcRuUExBdaPW9aNxfeYyXgQNCdHqJx9oA/S1lMEVSbZSIRcn8Sx1+X/eEV8BA==} + peerDependencies: + next: '>=12' + react: '>=17' + react-dom: '>=17' + dependencies: + debug: 4.3.4 + fast-glob: 3.2.12 + graphql: 16.6.0 + jose: 4.11.4 + next: 13.1.0_biqbaboplfbrettd7655fr4n2y + raw-body: 2.5.1 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + retes: 0.33.0 + uuid: 8.3.2 + transitivePeerDependencies: + - supports-color + dev: false + /@saleor/macaw-ui/0.7.2_2dwar4pp5qoelfawvjffoi6dne: resolution: {integrity: sha512-Fli7fhTWuHu7q2CzxwTUpB4x9HYaxHSAzCLZLA23VY1ieIWbCxbsXadMiMGWp/nuYitswMr6JXMm+1SDe9K8LQ==} engines: {node: '>=16 <19'} @@ -3894,6 +4175,36 @@ packages: - supports-color dev: false + /@sentry/nextjs/7.36.0_next@13.1.0+react@18.2.0: + resolution: {integrity: sha512-7IUwBjCjo3rWuvEG16D1wKb0D+aMyCU920VGCAQVZaqTZAgrgAKfpTa1Sk0fmDxYglW1EBI9QM+WEnOa9RleLw==} + engines: {node: '>=8'} + peerDependencies: + next: ^10.0.8 || ^11.0 || ^12.0 || ^13.0 + react: 16.x || 17.x || 18.x + webpack: '>= 4.0.0' + peerDependenciesMeta: + webpack: + optional: true + dependencies: + '@rollup/plugin-commonjs': 24.0.0_rollup@2.78.0 + '@sentry/core': 7.36.0 + '@sentry/integrations': 7.36.0 + '@sentry/node': 7.36.0 + '@sentry/react': 7.36.0_react@18.2.0 + '@sentry/tracing': 7.36.0 + '@sentry/types': 7.36.0 + '@sentry/utils': 7.36.0 + '@sentry/webpack-plugin': 1.20.0 + chalk: 3.0.0 + next: 13.1.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + rollup: 2.78.0 + tslib: 1.14.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + /@sentry/nextjs/7.36.0_next@13.1.2+react@18.2.0: resolution: {integrity: sha512-7IUwBjCjo3rWuvEG16D1wKb0D+aMyCU920VGCAQVZaqTZAgrgAKfpTa1Sk0fmDxYglW1EBI9QM+WEnOa9RleLw==} engines: {node: '>=8'} @@ -4368,6 +4679,10 @@ packages: resolution: {integrity: sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==} dev: true + /@types/json-schema/7.0.11: + resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} + dev: true + /@types/json-stable-stringify/1.0.34: resolution: {integrity: sha512-s2cfwagOQAS8o06TcwKfr9Wx11dNGbH2E9vJz1cqV+a/LOyhWNLUNd6JSRYNzvB4d29UuJX2M0Dj9vE1T8fRXw==} dev: true @@ -4490,13 +4805,44 @@ packages: resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} dev: true + /@types/semver/7.3.13: + resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} + dev: true + /@types/ws/8.5.4: resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==} dependencies: '@types/node': 18.13.0 dev: true - /@typescript-eslint/parser/5.51.0: + /@typescript-eslint/eslint-plugin/5.51.0_tmcqyxthgnqsjnfifazzby2acy: + resolution: {integrity: sha512-wcAwhEWm1RgNd7dxD/o+nnLW8oH+6RK1OGnmbmkj/GGoDPV1WWMVP0FXYQBivKHdwM1pwii3bt//RC62EriIUQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/parser': 5.51.0_typescript@4.8.3 + '@typescript-eslint/scope-manager': 5.51.0 + '@typescript-eslint/type-utils': 5.51.0_typescript@4.8.3 + '@typescript-eslint/utils': 5.51.0_typescript@4.8.3 + debug: 4.3.4 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + regexpp: 3.2.0 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.8.3 + typescript: 4.8.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser/5.51.0_4vsywjlpuriuw3tl5oq6zy5a64: resolution: {integrity: sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4508,8 +4854,10 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.51.0 '@typescript-eslint/types': 5.51.0 - '@typescript-eslint/typescript-estree': 5.51.0 + '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.9.5 debug: 4.3.4 + eslint: 8.33.0 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: false @@ -4534,6 +4882,24 @@ packages: - supports-color dev: true + /@typescript-eslint/parser/5.51.0_typescript@4.8.3: + resolution: {integrity: sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.51.0 + '@typescript-eslint/types': 5.51.0 + '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.8.3 + debug: 4.3.4 + typescript: 4.8.3 + transitivePeerDependencies: + - supports-color + /@typescript-eslint/scope-manager/5.51.0: resolution: {integrity: sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4541,11 +4907,30 @@ packages: '@typescript-eslint/types': 5.51.0 '@typescript-eslint/visitor-keys': 5.51.0 + /@typescript-eslint/type-utils/5.51.0_typescript@4.8.3: + resolution: {integrity: sha512-QHC5KKyfV8sNSyHqfNa0UbTbJ6caB8uhcx2hYcWVvJAZYJRBo5HyyZfzMdRx8nvS+GyMg56fugMzzWnojREuQQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.8.3 + '@typescript-eslint/utils': 5.51.0_typescript@4.8.3 + debug: 4.3.4 + tsutils: 3.21.0_typescript@4.8.3 + typescript: 4.8.3 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/types/5.51.0: resolution: {integrity: sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - /@typescript-eslint/typescript-estree/5.51.0: + /@typescript-eslint/typescript-estree/5.51.0_typescript@4.8.3: resolution: {integrity: sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4560,10 +4945,10 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.8 - tsutils: 3.21.0 + tsutils: 3.21.0_typescript@4.8.3 + typescript: 4.8.3 transitivePeerDependencies: - supports-color - dev: false /@typescript-eslint/typescript-estree/5.51.0_typescript@4.8.4: resolution: {integrity: sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==} @@ -4586,6 +4971,46 @@ packages: - supports-color dev: true + /@typescript-eslint/typescript-estree/5.51.0_typescript@4.9.5: + resolution: {integrity: sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.51.0 + '@typescript-eslint/visitor-keys': 5.51.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/utils/5.51.0_typescript@4.8.3: + resolution: {integrity: sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@types/json-schema': 7.0.11 + '@types/semver': 7.3.13 + '@typescript-eslint/scope-manager': 5.51.0 + '@typescript-eslint/types': 5.51.0 + '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.8.3 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /@typescript-eslint/visitor-keys/5.51.0: resolution: {integrity: sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4823,7 +5248,6 @@ packages: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: 8.8.2 - dev: true /acorn-walk/8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} @@ -4862,7 +5286,6 @@ packages: fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true /algoliasearch-helper/3.11.3_algoliasearch@4.14.2: resolution: {integrity: sha512-TbaEvLwiuGygHQIB8y+OsJKQQ40+JKUua5B91X66tMUHyyhbNHvqyr0lqd3wCoyKx7WybyQrC0WJvzoIeh24Aw==} @@ -5026,7 +5449,6 @@ packages: /argparse/2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true /aria-hidden/1.2.2_3stiutgnnbnfnf3uowm5cip22i: resolution: {integrity: sha512-6y/ogyDTk/7YAe91T3E2PR1ALVKyM2QbTio5HwM+N1Q6CMlCKhvClyIjkckBswa0f2xJhjsfzIGa1yVSe1UMVA==} @@ -5554,7 +5976,6 @@ packages: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - dev: true /change-case-all/1.0.14: resolution: {integrity: sha512-CWVm2uT7dmSHdO/z1CXT/n47mWonyypzBbuCy5tN7uMg22BsfkhwT6oHmFCAk+gL1LOOxhdbB9SZz3J1KTY3gA==} @@ -6256,7 +6677,6 @@ packages: engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 - dev: true /dom-accessibility-api/0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} @@ -6535,7 +6955,31 @@ packages: - supports-color dev: true - /eslint-config-next/13.1.6: + /eslint-config-next/13.1.4_typescript@4.8.3: + resolution: {integrity: sha512-r7n9V4/kkiDDVFfBwI3tviGUV/jUzGI0lY3JefxceYaU18gdk2kMgNPyhHobowu1+yHZpZi8iEzRtzeTrtGRLg==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@next/eslint-plugin-next': 13.1.4 + '@rushstack/eslint-patch': 1.2.0 + '@typescript-eslint/parser': 5.51.0_typescript@4.8.3 + eslint-import-resolver-node: 0.3.7 + eslint-import-resolver-typescript: 3.5.3_5rfvta7qn57kxm7ir36ta6fixq + eslint-plugin-import: 2.27.5_4woqni3yla7wvvtsvqk3qwjtf4 + eslint-plugin-jsx-a11y: 6.7.1 + eslint-plugin-react: 7.32.2 + eslint-plugin-react-hooks: 4.6.0 + typescript: 4.8.3 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - supports-color + dev: false + + /eslint-config-next/13.1.6_4vsywjlpuriuw3tl5oq6zy5a64: resolution: {integrity: sha512-0cg7h5wztg/SoLAlxljZ0ZPUQ7i6QKqRiP4M2+MgTZtxWwNKb2JSwNc18nJ6/kXBI6xYvPraTbQSIhAuVw6czw==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 @@ -6546,25 +6990,20 @@ packages: dependencies: '@next/eslint-plugin-next': 13.1.6 '@rushstack/eslint-patch': 1.2.0 - '@typescript-eslint/parser': 5.51.0 + '@typescript-eslint/parser': 5.51.0_4vsywjlpuriuw3tl5oq6zy5a64 + eslint: 8.33.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.3_5rfvta7qn57kxm7ir36ta6fixq - eslint-plugin-import: 2.27.5_4woqni3yla7wvvtsvqk3qwjtf4 - eslint-plugin-jsx-a11y: 6.7.1 - eslint-plugin-react: 7.32.2 - eslint-plugin-react-hooks: 4.6.0 + eslint-import-resolver-typescript: 3.5.3_ohdts44xlqyeyrlje4qnefqeay + eslint-plugin-import: 2.27.5_kuqv7qxblf6fgldep4hddd7xwa + eslint-plugin-jsx-a11y: 6.7.1_eslint@8.33.0 + eslint-plugin-react: 7.32.2_eslint@8.33.0 + eslint-plugin-react-hooks: 4.6.0_eslint@8.33.0 + typescript: 4.9.5 transitivePeerDependencies: - eslint-import-resolver-webpack - supports-color dev: false - /eslint-config-prettier/8.6.0: - resolution: {integrity: sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - dev: false - /eslint-config-prettier/8.6.0_eslint@8.27.0: resolution: {integrity: sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==} hasBin: true @@ -6574,12 +7013,22 @@ packages: eslint: 8.27.0 dev: true - /eslint-config-turbo/0.0.7: + /eslint-config-prettier/8.6.0_eslint@8.33.0: + resolution: {integrity: sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.33.0 + dev: false + + /eslint-config-turbo/0.0.7_eslint@8.33.0: resolution: {integrity: sha512-WbrGlyfs94rOXrhombi1wjIAYGdV2iosgJRndOZtmDQeq5GLTzYmBUCJQZWtLBEBUPCj96RxZ2OL7Cn+xv/Azg==} peerDependencies: eslint: '>6.6.0' dependencies: - eslint-plugin-turbo: 0.0.7 + eslint: 8.33.0 + eslint-plugin-turbo: 0.0.7_eslint@8.33.0 dev: false /eslint-import-resolver-node/0.3.7: @@ -6628,6 +7077,26 @@ packages: - supports-color dev: false + /eslint-import-resolver-typescript/3.5.3_ohdts44xlqyeyrlje4qnefqeay: + resolution: {integrity: sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + dependencies: + debug: 4.3.4 + enhanced-resolve: 5.12.0 + eslint: 8.33.0 + eslint-plugin-import: 2.27.5_kuqv7qxblf6fgldep4hddd7xwa + get-tsconfig: 4.4.0 + globby: 13.1.3 + is-core-module: 2.11.0 + is-glob: 4.0.3 + synckit: 0.8.5 + transitivePeerDependencies: + - supports-color + dev: false + /eslint-module-utils/2.7.4_ayntagxiesqd2engtsqrvzzbfq: resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} @@ -6679,7 +7148,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.51.0 + '@typescript-eslint/parser': 5.51.0_typescript@4.8.3 debug: 3.2.7 eslint-import-resolver-node: 0.3.7 eslint-import-resolver-typescript: 3.5.3_5rfvta7qn57kxm7ir36ta6fixq @@ -6687,6 +7156,36 @@ packages: - supports-color dev: false + /eslint-module-utils/2.7.4_wj7ubv6viehxm3sdjw6f37lxha: + resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 5.51.0_4vsywjlpuriuw3tl5oq6zy5a64 + debug: 3.2.7 + eslint: 8.33.0 + eslint-import-resolver-node: 0.3.7 + eslint-import-resolver-typescript: 3.5.3_ohdts44xlqyeyrlje4qnefqeay + transitivePeerDependencies: + - supports-color + dev: false + /eslint-plugin-import/2.27.5_4woqni3yla7wvvtsvqk3qwjtf4: resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} @@ -6697,7 +7196,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.51.0 + '@typescript-eslint/parser': 5.51.0_typescript@4.8.3 array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -6752,6 +7251,39 @@ packages: - supports-color dev: true + /eslint-plugin-import/2.27.5_kuqv7qxblf6fgldep4hddd7xwa: + resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 5.51.0_4vsywjlpuriuw3tl5oq6zy5a64 + array-includes: 3.1.6 + array.prototype.flat: 1.3.1 + array.prototype.flatmap: 1.3.1 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.33.0 + eslint-import-resolver-node: 0.3.7 + eslint-module-utils: 2.7.4_wj7ubv6viehxm3sdjw6f37lxha + has: 1.0.3 + is-core-module: 2.11.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.values: 1.1.6 + resolve: 1.22.1 + semver: 6.3.0 + tsconfig-paths: 3.14.1 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: false + /eslint-plugin-jsx-a11y/6.7.1: resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} @@ -6801,6 +7333,31 @@ packages: semver: 6.3.0 dev: true + /eslint-plugin-jsx-a11y/6.7.1_eslint@8.33.0: + resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + '@babel/runtime': 7.20.13 + aria-query: 5.1.3 + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + ast-types-flow: 0.0.7 + axe-core: 4.6.3 + axobject-query: 3.1.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 8.33.0 + has: 1.0.3 + jsx-ast-utils: 3.3.3 + language-tags: 1.0.5 + minimatch: 3.1.2 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + semver: 6.3.0 + dev: false + /eslint-plugin-react-hooks/4.6.0: resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} @@ -6817,26 +7374,13 @@ packages: eslint: 8.27.0 dev: true - /eslint-plugin-react/7.28.0: - resolution: {integrity: sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw==} - engines: {node: '>=4'} + /eslint-plugin-react-hooks/4.6.0_eslint@8.33.0: + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - array-includes: 3.1.6 - array.prototype.flatmap: 1.3.1 - doctrine: 2.1.0 - estraverse: 5.3.0 - jsx-ast-utils: 3.3.3 - minimatch: 3.1.2 - object.entries: 1.1.6 - object.fromentries: 2.0.6 - object.hasown: 1.1.2 - object.values: 1.1.6 - prop-types: 15.8.1 - resolve: 2.0.0-next.4 - semver: 6.3.0 - string.prototype.matchall: 4.0.8 + eslint: 8.33.0 dev: false /eslint-plugin-react/7.32.2: @@ -6886,18 +7430,60 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-turbo/0.0.7: + /eslint-plugin-react/7.32.2_eslint@8.33.0: + resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + array.prototype.tosorted: 1.1.1 + doctrine: 2.1.0 + eslint: 8.33.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.3 + minimatch: 3.1.2 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + object.hasown: 1.1.2 + object.values: 1.1.6 + prop-types: 15.8.1 + resolve: 2.0.0-next.4 + semver: 6.3.0 + string.prototype.matchall: 4.0.8 + dev: false + + /eslint-plugin-turbo/0.0.7_eslint@8.33.0: resolution: {integrity: sha512-iajOH8eD4jha3duztGVBD1BEmvNrQBaA/y3HFHf91vMDRYRwH7BpHSDFtxydDpk5ghlhRxG299SFxz7D6z4MBQ==} peerDependencies: eslint: '>6.6.0' + dependencies: + eslint: 8.33.0 dev: false + /eslint-scope/5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + /eslint-scope/7.1.1: resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 + + /eslint-utils/3.0.0: + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint-visitor-keys: 2.1.0 dev: true /eslint-utils/3.0.0_eslint@8.15.0: @@ -6928,12 +7514,10 @@ packages: dependencies: eslint: 8.33.0 eslint-visitor-keys: 2.1.0 - dev: true /eslint-visitor-keys/2.1.0: resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} engines: {node: '>=10'} - dev: true /eslint-visitor-keys/3.3.0: resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} @@ -7077,7 +7661,6 @@ packages: text-table: 0.2.0 transitivePeerDependencies: - supports-color - dev: true /espree/9.4.1: resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} @@ -7086,7 +7669,6 @@ packages: acorn: 8.8.2 acorn-jsx: 5.3.2_acorn@8.8.2 eslint-visitor-keys: 3.3.0 - dev: true /esprima/4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} @@ -7098,13 +7680,16 @@ packages: engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 - dev: true /esrecurse/4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 + + /estraverse/4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} dev: true /estraverse/5.3.0: @@ -7200,7 +7785,6 @@ packages: /fast-json-stable-stringify/2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true /fast-levenshtein/2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} @@ -7297,7 +7881,6 @@ packages: engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.0.4 - dev: true /file-saver/2.0.5: resolution: {integrity: sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==} @@ -7348,7 +7931,6 @@ packages: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - dev: true /find-yarn-workspace-root2/1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} @@ -7363,11 +7945,9 @@ packages: dependencies: flatted: 3.2.7 rimraf: 3.0.2 - dev: true /flatted/3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - dev: true /follow-redirects/1.15.2: resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} @@ -7579,7 +8159,6 @@ packages: engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 - dev: true /glob/7.1.7: resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} @@ -7621,7 +8200,6 @@ packages: engines: {node: '>=8'} dependencies: type-fest: 0.20.2 - dev: true /globalthis/1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} @@ -7688,7 +8266,6 @@ packages: /grapheme-splitter/1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true /graphql-config/4.3.6_tlz2ma6byvlbw5iffqokhee6bi: resolution: {integrity: sha512-i7mAPwc0LAZPnYu2bI8B6yXU5820Wy/ArvmOseDLZIu0OU1UTULEuexHo6ZcHXeT9NvGGaUPQZm8NV3z79YydA==} @@ -8052,7 +8629,6 @@ packages: /imurmurhash/0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - dev: true /indent-string/3.2.0: resolution: {integrity: sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==} @@ -8294,7 +8870,6 @@ packages: /is-path-inside/3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} - dev: true /is-plain-obj/1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} @@ -8491,7 +9066,6 @@ packages: /js-sdsl/4.3.0: resolution: {integrity: sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==} - dev: true /js-sha3/0.8.0: resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} @@ -8513,7 +9087,6 @@ packages: hasBin: true dependencies: argparse: 2.0.1 - dev: true /jsdom/20.0.3: resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} @@ -8569,11 +9142,9 @@ packages: /json-schema-traverse/0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true /json-stable-stringify-without-jsonify/1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true /json-stable-stringify/1.0.2: resolution: {integrity: sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==} @@ -8767,7 +9338,6 @@ packages: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - dev: true /lie/3.1.1: resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} @@ -8908,7 +9478,6 @@ packages: engines: {node: '>=10'} dependencies: p-locate: 5.0.0 - dev: true /lodash-es/4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} @@ -9370,9 +9939,12 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + /natural-compare-lite/1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + dev: true + /natural-compare/1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true /next-urql/4.0.0_react@18.2.0+urql@3.0.3: resolution: {integrity: sha512-c/dLhNg9bP+ku7GJDAYlsNnKEazrjcDnRx8/mBsGnjMj4c0yM+p2PBGbirWXkYL7Z2ogOHnSqHTt8swB9sJvQg==} @@ -9430,6 +10002,50 @@ packages: - babel-plugin-macros dev: false + /next/13.1.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-lQMZH1V94L5IL/WaihQkTYabSY73aqgrkGPJB5uz+2O3ES4I3losV/maXLY7l7x5e+oNyE9N81upNQ8uRsR5/A==} + engines: {node: '>=14.6.0'} + hasBin: true + peerDependencies: + fibers: '>= 3.1.0' + node-sass: ^6.0.0 || ^7.0.0 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + dependencies: + '@next/env': 13.1.0 + '@swc/helpers': 0.4.14 + caniuse-lite: 1.0.30001450 + postcss: 8.4.14 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + styled-jsx: 5.1.1_react@18.2.0 + optionalDependencies: + '@next/swc-android-arm-eabi': 13.1.0 + '@next/swc-android-arm64': 13.1.0 + '@next/swc-darwin-arm64': 13.1.0 + '@next/swc-darwin-x64': 13.1.0 + '@next/swc-freebsd-x64': 13.1.0 + '@next/swc-linux-arm-gnueabihf': 13.1.0 + '@next/swc-linux-arm64-gnu': 13.1.0 + '@next/swc-linux-arm64-musl': 13.1.0 + '@next/swc-linux-x64-gnu': 13.1.0 + '@next/swc-linux-x64-musl': 13.1.0 + '@next/swc-win32-arm64-msvc': 13.1.0 + '@next/swc-win32-ia32-msvc': 13.1.0 + '@next/swc-win32-x64-msvc': 13.1.0 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + dev: false + /next/13.1.2_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-Rdnnb2YH///w78FEOR/IQ6TXga+qpth4OqFSem48ng1PYYKr6XBsIk1XVaRcIGM3o6iiHnun0nJvkJHDf+ICyQ==} engines: {node: '>=14.6.0'} @@ -9813,7 +10429,6 @@ packages: prelude-ls: 1.2.1 type-check: 0.4.0 word-wrap: 1.2.3 - dev: true /ora/5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} @@ -9863,7 +10478,6 @@ packages: engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 - dev: true /p-limit/4.0.0: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} @@ -9883,7 +10497,6 @@ packages: engines: {node: '>=10'} dependencies: p-limit: 3.1.0 - dev: true /p-map/2.1.0: resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} @@ -9973,7 +10586,6 @@ packages: /path-exists/4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - dev: true /path-is-absolute/1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} @@ -10145,7 +10757,6 @@ packages: /prelude-ls/1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - dev: true /prepend-http/2.0.0: resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} @@ -10166,6 +10777,21 @@ packages: ansi-styles: 5.2.0 react-is: 17.0.2 + /pretty-quick/3.1.3: + resolution: {integrity: sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA==} + engines: {node: '>=10.13'} + hasBin: true + peerDependencies: + prettier: '>=2.0.0' + dependencies: + chalk: 3.0.0 + execa: 4.1.0 + find-up: 4.1.0 + ignore: 5.2.4 + mri: 1.2.0 + multimatch: 4.0.0 + dev: true + /pretty-quick/3.1.3_prettier@2.8.3: resolution: {integrity: sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA==} engines: {node: '>=10.13'} @@ -10753,7 +11379,6 @@ packages: /regexpp/3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} - dev: true /registry-auth-token/4.2.2: resolution: {integrity: sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==} @@ -11547,7 +12172,6 @@ packages: /text-table/0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true /thread-stream/2.3.0: resolution: {integrity: sha512-kaDqm1DET9pp3NXwR8382WHbnpXnRkN9xGN9dQt3B2+dmXiW8X1SOwmFOxAErEQ47ObhZ96J6yhZNXuyCOL7KA==} @@ -11739,14 +12363,14 @@ packages: /tslib/2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} - /tsutils/3.21.0: + /tsutils/3.21.0_typescript@4.8.3: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - dev: false + typescript: 4.8.3 /tsutils/3.21.0_typescript@4.8.4: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} @@ -11758,6 +12382,16 @@ packages: typescript: 4.8.4 dev: true + /tsutils/3.21.0_typescript@4.9.5: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 4.9.5 + dev: false + /tty-table/4.1.6: resolution: {integrity: sha512-kRj5CBzOrakV4VRRY5kUWbNYvo/FpOsz65DzI5op9P+cHov3+IqPbo1JE1ZnQGkHdZgNFDsrEjrfqqy/Ply9fw==} engines: {node: '>=8.0.0'} @@ -11772,65 +12406,65 @@ packages: yargs: 17.6.2 dev: true - /turbo-darwin-64/1.7.3: - resolution: {integrity: sha512-7j9+j1CVztmdevnClT3rG/GRhULf3ukwmv+l48l8uwsXNI53zLso+UYMql6RsjZDbD6sESwh0CHeKNwGmOylFA==} + /turbo-darwin-64/1.7.4: + resolution: {integrity: sha512-ZyYrQlUl8K/mYN1e6R7bEhPPYjMakz0DYMaexkyD7TAijQtWmTSd4a+I7VknOYNEssnUZ/v41GU3gPV1JAzxxQ==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /turbo-darwin-arm64/1.7.3: - resolution: {integrity: sha512-puS9+pqpiy4MrIvWRBTg3qfO2+JPXR7reQcXQ7qUreuyAJnSw9H9/TIHjeK6FFxUfQbmruylPtH6dNpfcML9CA==} + /turbo-darwin-arm64/1.7.4: + resolution: {integrity: sha512-CKIXg9uqp1a+Yeq/c4U0alPOqvwLUq5SBZf1PGYhGqJsfG0fRBtJfkUjHuBsuJIOGXg8rCmcGSWGIsIF6fqYuw==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /turbo-linux-64/1.7.3: - resolution: {integrity: sha512-BnbpgcK8Wag6fhnff7tMaecswmFHN/T56VIDnjcwcJnK9H3jdwpjwZlmcDtkoslzjPj3VuqHyqLDMvSb3ejXSg==} + /turbo-linux-64/1.7.4: + resolution: {integrity: sha512-RIUl4RUFFyzD2T024vL7509Ygwcw+SEa8NOwPfaN6TtJHK7RZV/SBP3fLNVOptG9WRLnOWX3OvsLMbiOqDLLyA==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /turbo-linux-arm64/1.7.3: - resolution: {integrity: sha512-+epY+0dfjmAJNZHfj7rID2hENRaeM3D0Ijqkhh/M53o46fQMwPNqI5ff9erh+f9r8sWuTpVnRlZeu7TE1P/Okw==} + /turbo-linux-arm64/1.7.4: + resolution: {integrity: sha512-Bg65F0AjYYYxqE6RPf2H5TIGuA/EyWMeGOATHVSZOWAbYcnG3Ly03GZii8AHnUi7ntWBdjwvXf/QbOS1ayNB6A==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /turbo-windows-64/1.7.3: - resolution: {integrity: sha512-/2Z8WB4fASlq/diO6nhmHYuDCRPm3dkdUE6yhwQarXPOm936m4zj3xGQA2eSWMpvfst4xjVxxU7P7HOIOyWChA==} + /turbo-windows-64/1.7.4: + resolution: {integrity: sha512-rTaV50XZ2BRxRHOHqt1UsWfeDmYLbn8UKE6g2D2ED+uW+kmnTvR9s01nmlGWd2sAuWcRYQyQ2V+O09VfKPKcQw==} cpu: [x64] os: [win32] requiresBuild: true dev: true optional: true - /turbo-windows-arm64/1.7.3: - resolution: {integrity: sha512-UD9Uhop42xj1l1ba5LRdwqRq1Of+RgqQuv+QMd1xOAZ2FXn/91uhkfLv+H4Pkiw7XdUohOxpj/FcOvjCiiUxGw==} + /turbo-windows-arm64/1.7.4: + resolution: {integrity: sha512-h8sxdKPvHTnWUPtwnYszFMmSO0P/iUUwmYY9n7iYThA71zSao28UeZ0H0Gw75cY3MPjvkjn2C4EBAUGPjuZJLw==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /turbo/1.7.3: - resolution: {integrity: sha512-mrqo72vPQO6ykmARThaNP/KXPDuBDSqDXfkUxD8hX1ET3YSFbOWJixlHU32tPtiFIhScIKbEGShEVWBrLeM0wg==} + /turbo/1.7.4: + resolution: {integrity: sha512-8RLedDoUL0kkVKWEZ/RMM70BvKLyDFen06QuKKhYC2XNOfNKqFDqzIdcY/vGick869bNIWalChoy4O07k0HLsA==} hasBin: true requiresBuild: true optionalDependencies: - turbo-darwin-64: 1.7.3 - turbo-darwin-arm64: 1.7.3 - turbo-linux-64: 1.7.3 - turbo-linux-arm64: 1.7.3 - turbo-windows-64: 1.7.3 - turbo-windows-arm64: 1.7.3 + turbo-darwin-64: 1.7.4 + turbo-darwin-arm64: 1.7.4 + turbo-linux-64: 1.7.4 + turbo-linux-arm64: 1.7.4 + turbo-windows-64: 1.7.4 + turbo-windows-arm64: 1.7.4 dev: true /type-check/0.3.2: @@ -11844,7 +12478,6 @@ packages: engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 - dev: true /type-detect/4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} @@ -11858,7 +12491,6 @@ packages: /type-fest/0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} - dev: true /type-fest/0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} @@ -11882,6 +12514,11 @@ packages: for-each: 0.3.3 is-typed-array: 1.1.10 + /typescript/4.8.3: + resolution: {integrity: sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==} + engines: {node: '>=4.2.0'} + hasBin: true + /typescript/4.8.4: resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==} engines: {node: '>=4.2.0'} @@ -11892,7 +12529,6 @@ packages: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true - dev: true /ua-parser-js/0.7.33: resolution: {integrity: sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==} @@ -12014,7 +12650,6 @@ packages: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.0 - dev: true /url-join/5.0.0: resolution: {integrity: sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==} @@ -12588,7 +13223,6 @@ packages: /yocto-queue/0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - dev: true /yocto-queue/1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} diff --git a/turbo.json b/turbo.json index b5244e7..27ce204 100644 --- a/turbo.json +++ b/turbo.json @@ -49,6 +49,23 @@ "SENTRY_AUTH_TOKEN" ] }, + "build#saleor-app-slack": { + "env": [ + "APL", + "APP_DEBUG", + "NODE_ENV", + "SECRET_KEY", + "ALLOWED_DOMAIN_PATTERN", + "REST_APL_ENDPOINT", + "REST_APL_TOKEN", + "NEXT_PUBLIC_SENTRY_DSN", + "SENTRY_DSN", + "NEXT_PUBLIC_SENTRY_DSN", + "SENTRY_ORG", + "SENTRY_PROJECT", + "SENTRY_AUTH_TOKEN" + ] + }, "lint": { "outputs": [] },