diff --git a/bun.lock b/bun.lock index 60cff7fb..f18bfa0f 100644 --- a/bun.lock +++ b/bun.lock @@ -97,6 +97,25 @@ "@opensearch-project/opensearch", ], }, + "packages/meilisearch-plugin": { + "name": "@vendure-community/meilisearch-plugin", + "version": "1.0.0", + "dependencies": { + "deepmerge": "^4.3.1", + "meilisearch": "^0.55.0", + }, + "devDependencies": { + "@vendure/common": "3.6.0-minor-202603280303", + "@vendure/core": "3.6.0-minor-202603280303", + "@vendure/testing": "3.6.0-minor-202603280303", + "rimraf": "^5.0.5", + "typescript": "5.8.2", + }, + "peerDependencies": { + "@vendure/common": "^3.6.0-0", + "@vendure/core": "^3.6.0-0", + }, + }, "packages/mollie-plugin": { "name": "@vendure-community/mollie-plugin", "version": "1.0.0", @@ -969,6 +988,8 @@ "@vendure-community/elasticsearch-plugin": ["@vendure-community/elasticsearch-plugin@workspace:packages/elasticsearch-plugin"], + "@vendure-community/meilisearch-plugin": ["@vendure-community/meilisearch-plugin@workspace:packages/meilisearch-plugin"], + "@vendure-community/mollie-plugin": ["@vendure-community/mollie-plugin@workspace:packages/mollie-plugin"], "@vendure-community/pub-sub-plugin": ["@vendure-community/pub-sub-plugin@workspace:packages/pub-sub-plugin"], @@ -1965,6 +1986,8 @@ "media-typer": ["media-typer@0.3.0", "", {}, "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="], + "meilisearch": ["meilisearch@0.55.0", "", {}, "sha512-qSMeiezfDgIqciIeYzh5E4pXDZZD7CtHeWDCs43kN3trLgl5FtfmBAIkljL3huFaOx08feYtC8FfIFUpVwq6rg=="], + "meow": ["meow@8.1.2", "", { "dependencies": { "@types/minimist": "^1.2.0", "camelcase-keys": "^6.2.2", "decamelize-keys": "^1.1.0", "hard-rejection": "^2.1.0", "minimist-options": "4.1.0", "normalize-package-data": "^3.0.0", "read-pkg-up": "^7.0.1", "redent": "^3.0.0", "trim-newlines": "^3.0.0", "type-fest": "^0.18.0", "yargs-parser": "^20.2.3" } }, "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q=="], "merge-descriptors": ["merge-descriptors@2.0.0", "", {}, "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g=="], diff --git a/dev-server/dev-config.ts b/dev-server/dev-config.ts index 0c135a35..48aac26b 100644 --- a/dev-server/dev-config.ts +++ b/dev-server/dev-config.ts @@ -24,6 +24,7 @@ import { DataSourceOptions } from 'typeorm'; // import { StellatePlugin } from '../packages/stellate-plugin/src/stellate-plugin'; // import { PubSubPlugin } from '../packages/pub-sub-plugin/src/plugin'; // import { PunchOutGatewayPlugin } from '../packages/punchout-gateway-plugin/src/punchout-gateway-plugin'; +// import { MeilisearchPlugin } from '../packages/meilisearch-plugin/src/plugin'; /** * Dev server config for testing community plugins during development. @@ -72,6 +73,33 @@ export const devConfig: VendureConfig = { assetUploadDir: path.join(__dirname, 'assets'), }), DefaultSearchPlugin.init({ bufferUpdates: false, indexStockStatus: false }), + // To use MeilisearchPlugin, comment out DefaultSearchPlugin above and uncomment below: + // MeilisearchPlugin.init({ + // host: process.env.MEILISEARCH_HOST || 'http://localhost:7700', + // apiKey: process.env.MEILISEARCH_API_KEY || '', + // synonyms: { + // phone: ['mobile', 'smartphone', 'cellphone'], + // laptop: ['notebook', 'portable computer'], + // tv: ['television', 'monitor', 'screen'], + // shoe: ['sneaker', 'boot', 'footwear'], + // }, + // stopWords: ['the', 'a', 'an', 'is', 'for', 'and', 'of', 'to', 'in'], + // typoTolerance: { + // enabled: true, + // minWordSizeForOneTypo: 4, + // minWordSizeForTwoTypos: 8, + // disableOnAttributes: ['sku'], + // }, + // searchConfig: { + // matchingStrategy: 'frequency', + // attributesToHighlight: ['productName', 'description'], + // highlightPreTag: '', + // highlightPostTag: '', + // attributesToCrop: ['description'], + // cropLength: 30, + // showRankingScore: true, + // }, + // }), DefaultJobQueuePlugin.init({}), // --- Community plugins --- diff --git a/docs/docs/reference/elasticsearch-plugin/elasticsearch-options.mdx b/docs/docs/reference/elasticsearch-plugin/elasticsearch-options.mdx index eab2c9ab..c82984ea 100644 --- a/docs/docs/reference/elasticsearch-plugin/elasticsearch-options.mdx +++ b/docs/docs/reference/elasticsearch-plugin/elasticsearch-options.mdx @@ -8,11 +8,9 @@ Configuration options for the [ElasticsearchPlugin](/reference/elasticsearch-plu ```ts title="Signature" interface ElasticsearchOptions { - host?: string; - port?: number; + adapter: () => SearchClientAdapter; connectionAttempts?: number; connectionAttemptInterval?: number; - clientOptions?: ClientOptions; indexPrefix?: string; indexSettings?: object; indexMappingProperties?: { @@ -41,34 +39,46 @@ interface ElasticsearchOptions {
-### host +### adapter - + SearchClientAdapter`} /> -The host of the Elasticsearch server. May also be specified in `clientOptions.node`. -### port +Factory that produces a `SearchClientAdapter` on demand. - +The plugin invokes this factory **once per NestJS provider** that +needs a search backend — currently the read-side `ElasticsearchService` +and the write-side `ElasticsearchIndexerController`. Each provider +therefore owns an independent client / connection pool, so tearing +one down during `onModuleDestroy` cannot starve in-flight requests +on the other. A single shared instance would be torn down twice and +take both providers offline; hence the factory shape. -The port of the Elasticsearch server. May also be specified in `clientOptions.node`. +The typical call site is a thin arrow wrapping one of the first-party +factories, e.g.: + +*Example* + +```ts +ElasticsearchPlugin.init({ + adapter: () => createElasticsearchAdapter({ host, port }), +}); +``` + +Backend-specific configuration (host, port, auth, AWS SigV4, etc.) +lives on the inner factory, so swapping backends only touches the +factory call and none of the shared plugin options below. ### connectionAttempts -Maximum amount of attempts made to connect to the ElasticSearch server on startup. +Maximum amount of attempts made to connect to the search server on +startup. ### connectionAttemptInterval -Interval in milliseconds between attempts to connect to the ElasticSearch server on startup. -### clientOptions - - - -Options to pass directly to the -[Elasticsearch Node.js client](https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/index.html). For example, to -set authentication or other more advanced options. -Note that if the `node` or `nodes` option is specified, it will override the values provided in the `host` and `port` options. +Interval in milliseconds between attempts to connect to the search +server on startup. ### indexPrefix @@ -361,7 +371,7 @@ extend input SearchResultSortParameter {
- + Configuration options for the internal Elasticsearch query which is generated when performing a search. @@ -639,7 +649,7 @@ searchConfig: { - + Configuration for [boosting](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html#field-boost) the scores of given fields when performing a search against a term. diff --git a/docs/docs/reference/elasticsearch-plugin/index.mdx b/docs/docs/reference/elasticsearch-plugin/index.mdx index f2be0ed5..bcb7c8f3 100644 --- a/docs/docs/reference/elasticsearch-plugin/index.mdx +++ b/docs/docs/reference/elasticsearch-plugin/index.mdx @@ -2,61 +2,178 @@ title: "ElasticsearchPlugin" generated: true --- - - -This plugin allows your product search to be powered by [Elasticsearch](https://github.com/elastic/elasticsearch) — a powerful open source search -engine. This is a drop-in replacement for the DefaultSearchPlugin which exposes many powerful configuration options enabling your storefront -to support a wide range of use-cases such as indexing of custom properties, fine control over search index configuration, and to leverage -advanced Elasticsearch features like spacial search. + + +This plugin powers your product search via a pluggable search backend. It +ships with ready-made adapters for +[Elasticsearch](https://github.com/elastic/elasticsearch) and +[OpenSearch](https://github.com/opensearch-project/OpenSearch), and lets +you provide your own adapter by implementing +`SearchClientAdapter`. This is a drop-in replacement for the +DefaultSearchPlugin which exposes many powerful configuration options +enabling your storefront to support a wide range of use-cases such as +indexing of custom properties, fine control over search index +configuration, and advanced features like spatial search. ## Version Requirements -**ElasticSearch v9.1.0 is supported** - -The version of ElasticSearch that is deployed, the version of the JS library @elastic/elasticsearch installed in your Vendure project and the version -of the JS library @elastic/elasticsearch used in the @vendure/elasticsearch-plugin must all match to avoid any issues. ElasticSearch does not allow @latest -in its repository so these versions must be updated regularly. - -| Package | Version | -| ------------- | ------------- | -| ElasticSearch | v9.1.0 | -| @elastic/elasticsearch | v9.1.0 | -| @vendure/elasticsearch-plugin | v3.5.0 | -| Last updated | Dec 2, 2025 | +Vendure v3.6+ requires Elasticsearch v9.1 or newer. When using OpenSearch, the +3.x client / 3.x server line is supported. + +The version of the search engine that is deployed, the version of the +JavaScript client installed in your Vendure project and the version of that +same client used internally by `@vendure-community/elasticsearch-plugin` must +all match to avoid any issues. Neither client allows `@latest` in its public +repository, so these versions must be updated regularly. + +| Package | Minimum version | +| ---------------------------------------- | --------------- | +| `@vendure/core` | `3.6.0` | +| `@vendure-community/elasticsearch-plugin`| `2.0.0` | +| Elasticsearch (server + client) | `9.1.0` | +| OpenSearch (server + client) | `3.0.0` | + +With Elasticsearch v8+, basic authentication, SSL, and TLS are enabled by +default and may result in your client and plugin not being able to connect to +Elasticsearch successfully if your client is not configured appropriately. You +must also set `xpack.license.self_generated.type=basic` if you are using the +free Community Edition of Elasticsearch. + +Review the Elasticsearch docker +[example](https://github.com/vendure-ecommerce/vendure/blob/master/docker-compose.yml) +here for development and testing without authentication and security enabled. +Refer to the Elasticsearch documentation to enable authentication and security +in production. -With ElasticSearch v8+, basic authentication, SSL, and TLS are enabled by default and may result in your client and plugin not being able to connect to -ElasticSearch successfully if your client is not configured appropriately. You must also set `xpack.license.self_generated.type=basic` if you are -using the free Community Edition of ElasticSearch. +## Installation -Review the ElasticSearch docker [example](https://github.com/vendure-ecommerce/vendure/blob/master/docker-compose.yml) here for development -and testing without authentication and security enabled. Refer to ElasticSearch documentation to enable authentication and security in production. +Install the plugin plus exactly **one** of the two search clients: -## Installation +```shell +# Elasticsearch +npm install @vendure-community/elasticsearch-plugin @elastic/elasticsearch +``` ```shell -npm install @elastic/elasticsearch @vendure/elasticsearch-plugin +# OpenSearch +npm install @vendure-community/elasticsearch-plugin @opensearch-project/opensearch ``` -Make sure to remove the `DefaultSearchPlugin` if it is still in the VendureConfig plugins array. +Both clients are declared as `optional` peer dependencies — only install the +one you use. Make sure to remove the `DefaultSearchPlugin` from your +`VendureConfig` plugins array. ## Setup -Then add the `ElasticsearchPlugin`, calling the `.init()` method with `ElasticsearchOptions`: +Build the adapter for the backend you want to use and pass it to +`ElasticsearchPlugin.init()`. + +### Elasticsearch ```ts -import { ElasticsearchPlugin } from '@vendure/elasticsearch-plugin'; +import { ElasticsearchPlugin, createElasticsearchAdapter } from '@vendure-community/elasticsearch-plugin'; const config: VendureConfig = { - // Add an instance of the plugin to the plugins array plugins: [ ElasticsearchPlugin.init({ - host: 'http://localhost', - port: 9200, + // `adapter` is a factory: the plugin invokes it once per internal + // NestJS provider so each gets its own client / connection pool. + adapter: () => + createElasticsearchAdapter({ + host: 'http://localhost', + port: 9200, + // Any additional @elastic/elasticsearch ClientOptions + // (auth, tls, cloud, headers, etc.) may be provided via `clientOptions`. + // clientOptions: { auth: { username: 'elastic', password: 'changeme' } }, + }), + indexPrefix: 'vendure-', + }), + ], +}; +``` + +### OpenSearch + +```ts +import { ElasticsearchPlugin, createOpenSearchAdapter } from '@vendure-community/elasticsearch-plugin'; + +const config: VendureConfig = { + plugins: [ + ElasticsearchPlugin.init({ + adapter: () => + createOpenSearchAdapter({ + host: 'http://localhost', + port: 9200, + // Any additional @opensearch-project/opensearch ClientOptions + // (auth, ssl, awssigv4, headers, etc.) may be provided via `clientOptions`. + }), + indexPrefix: 'vendure-', }), ], }; ``` +### Custom adapter + +`SearchClientAdapter` is a public TypeScript interface. You can implement your +own adapter (e.g. to use a managed/hosted service with a custom SDK, or to +inject a test double) and pass it directly: + +```ts +import { ElasticsearchPlugin, SearchClientAdapter } from '@vendure-community/elasticsearch-plugin'; + +class MyCustomAdapter implements SearchClientAdapter { /* ... */ } + +ElasticsearchPlugin.init({ + // Return a fresh instance per call. The plugin invokes the factory once + // per internal provider (the read-side service and the write-side indexer), + // so each gets its own client and connection pool — bulk indexing cannot + // saturate the pool serving live search queries, and shutdown closes them + // independently. + adapter: () => new MyCustomAdapter(), +}); +``` + +If you need direct access to the underlying client (for example to issue a +query that is not on the `SearchClientAdapter` surface), each built-in adapter +exposes its native client via `adapter.getRawClient()`. + +## Migrating from v1.x + +Versions prior to `2.0.0` shipped as `@vendure/elasticsearch-plugin` and +accepted `host` / `port` directly in `ElasticsearchPlugin.init(...)`. The +v2 release introduces the adapter pattern so the same plugin can power both +Elasticsearch and OpenSearch. + +**Before (v1.x):** + +```ts +ElasticsearchPlugin.init({ + host: 'http://localhost', + port: 9200, +}); +``` + +**After (v2.x):** + +```ts +ElasticsearchPlugin.init({ + adapter: () => + createElasticsearchAdapter({ + host: 'http://localhost', + port: 9200, + }), +}); +``` + +Note the arrow: `adapter` accepts a **factory** that produces a +`SearchClientAdapter`, not an adapter instance directly. The plugin calls +the factory once per internal provider so each owns its own client. + +The `clientOptions` property that previously lived at the top level of +`ElasticsearchOptions` now lives on the adapter factory options and is passed +through to the underlying client constructor verbatim. + ## Search API Extensions This plugin extends the default search query of the Shop API, allowing richer querying of your product data. diff --git a/docs/docs/reference/meilisearch-plugin/index.mdx b/docs/docs/reference/meilisearch-plugin/index.mdx new file mode 100644 index 00000000..ee756893 --- /dev/null +++ b/docs/docs/reference/meilisearch-plugin/index.mdx @@ -0,0 +1,431 @@ +--- +title: "MeilisearchPlugin" +generated: true +--- + + +This plugin allows your product search to be powered by +[Meilisearch](https://www.meilisearch.com/) - a powerful, fast, open-source search engine. +This is a drop-in replacement for the DefaultSearchPlugin which exposes configuration options +enabling your storefront to support a wide range of use-cases such as indexing of custom +properties, facet filtering, and price range searches. + +## Installation + +`yarn add meilisearch` + +or + +`npm install meilisearch` + +Make sure to remove the `DefaultSearchPlugin` if it is still in the VendureConfig plugins array. + +Then add the `MeilisearchPlugin`, calling the `.init()` method with [MeilisearchOptions](/reference/meilisearch-plugin/meilisearch-options#meilisearchoptions): + +*Example* + +```ts +import { MeilisearchPlugin } from './plugins/meilisearch/src/plugin'; + +const config: VendureConfig = { + plugins: [ + MeilisearchPlugin.init({ + host: 'http://localhost:7700', + apiKey: 'your-master-key', + synonyms: { + phone: ['mobile', 'smartphone'], + laptop: ['notebook'], + }, + stopWords: ['the', 'a', 'an'], + }), + ], +}; +``` + +## Features + +- Full-text search with typo tolerance, synonyms, and stop words +- Faceted search, collection filtering, price range filtering +- Price range buckets for building filter UIs +- Configurable matching strategy, highlighting, cropping, and ranking +- Custom product & variant field mappings +- Buffered index updates +- Health check endpoint + +## Requirements + +- Vendure `^3.0.0` +- A running [Meilisearch](https://www.meilisearch.com/docs/learn/getting_started/cloud_quick_start) instance (v1.6+) + +## Installation + +```bash +# npm +npm install @vendure-community/meilisearch-plugin + +# yarn +yarn add @vendure-community/meilisearch-plugin + +# pnpm +pnpm add @vendure-community/meilisearch-plugin +``` + +## Quick Start + +### Minimal Setup (Full-Text Search Only) + +```ts +import { MeilisearchPlugin } from '@vendure-community/meilisearch-plugin'; + +export const config: VendureConfig = { + plugins: [ + MeilisearchPlugin.init({ + host: 'http://localhost:7700', + apiKey: 'your-master-key', + }), + ], +}; +``` + +After startup, run the `reindex` mutation from the Admin API to populate the search index. + +## Full Configuration Reference + +```ts +MeilisearchPlugin.init({ + + // ─── Connection ──────────────────────────────────────────── + host: 'http://localhost:7700', // Meilisearch server URL + apiKey: 'your-master-key', // Master/admin API key + connectionAttempts: 10, // Retry attempts on startup + connectionAttemptInterval: 5000, // ms between retries + + // ─── Indexing ────────────────────────────────────────────── + indexPrefix: 'vendure-', // Index name prefix (useful for multi-project) + reindexProductsChunkSize: 2500, // Products loaded per DB query during reindex + reindexBatchSize: 1000, // Documents sent to Meilisearch per batch + bufferUpdates: false, // Buffer updates instead of immediate indexing + + // ─── Search Query Config ─────────────────────────────────── + searchConfig: { + // Matching + matchingStrategy: 'frequency', // 'last' | 'all' | 'frequency' + attributesToSearchOn: ['productName', 'description', 'sku'], + rankingScoreThreshold: 0.15, // 0.0-1.0, filter out weak results + + // Highlighting + attributesToHighlight: ['productName', 'description'], + highlightPreTag: '', + highlightPostTag: '', + + // Cropping + attributesToCrop: ['description'], + cropLength: 30, + cropMarker: '...', + + // Debug / scoring + showRankingScore: true, + showRankingScoreDetails: false, + showMatchesPosition: false, + + // Response + attributesToRetrieve: ['*'], // Fields to return + + // Internal limits + facetValueMaxSize: 50, + collectionMaxSize: 50, + totalItemsMaxSize: 10000, + priceRangeBucketInterval: 1000, // Price bucket width (in currency subunits) + + // Hooks + mapQuery: (query, input, searchConfig, channelId, enabledOnly, ctx) => { + // Modify the raw Meilisearch query before it's sent + return query; + }, + mapSort: (sort, input) => sort, + }, + + // ─── Typo Tolerance ──────────────────────────────────────── + typoTolerance: { + enabled: true, + minWordSizeForOneTypo: 4, // Default: 5 + minWordSizeForTwoTypos: 8, // Default: 9 + disableOnWords: ['iPhone', 'Samsung'], + disableOnAttributes: ['sku'], + }, + + // ─── Synonyms ────────────────────────────────────────────── + synonyms: { + phone: ['mobile', 'smartphone', 'cellphone'], + laptop: ['notebook'], + tv: ['television', 'monitor'], + }, + + // ─── Stop Words ──────────────────────────────────────────── + stopWords: ['the', 'a', 'an', 'is', 'for', 'and', 'of'], + + // ─── Ranking Rules ───────────────────────────────────────── + rankingRules: [ + 'words', 'typo', 'proximity', 'attribute', + 'sort', 'exactness', 'productInStock:desc', + ], + + // ─── Custom Mappings ─────────────────────────────────────── + customProductMappings: { + reviewRating: { + graphQlType: 'Float', + valueFn: (product, variants, languageCode, injector, ctx) => { + return product.customFields?.reviewRating ?? 0; + }, + }, + }, + customProductVariantMappings: { + warehouse: { + graphQlType: 'String', + valueFn: (variant, languageCode, injector, ctx) => { + return variant.customFields?.warehouse ?? ''; + }, + }, + }, + + // ─── Hydration (extra DB relations for custom mappings) ──── + hydrateProductRelations: ['customFields'], + hydrateProductVariantRelations: ['customFields'], + + // ─── Extend GraphQL Input ────────────────────────────────── + extendSearchInputType: { + reviewRating: 'Float', + }, + extendSearchSortType: ['reviewRating'], +}) +``` + +## Matching Strategy + +Controls how Meilisearch matches multi-word queries: + +| Strategy | Behavior | Use When | +|---|---|---| +| `'last'` (default) | Returns results even if not all terms match. Drops least important terms progressively. | You want maximum results / fuzzy matching | +| `'frequency'` | Prioritizes rare/meaningful terms, drops common ones. | Balanced — good default for e-commerce | +| `'all'` | Only returns documents matching **every** query term. | You want strict/exact matching | + +## Typo Tolerance + +Meilisearch has built-in typo tolerance. The `typoTolerance` config lets you tune it: + +```ts +typoTolerance: { + enabled: true, + minWordSizeForOneTypo: 4, // "shrt" matches "shirt" (4+ chars = 1 typo allowed) + minWordSizeForTwoTypos: 8, // "smartphne" matches "smartphone" (8+ chars = 2 typos) + disableOnWords: ['iPhone'], // Brand names must be exact + disableOnAttributes: ['sku'], // SKU must be exact +} +``` + +Lower values = more fuzzy. Higher values = more strict. + +| Strictness | `minWordSizeForOneTypo` | `minWordSizeForTwoTypos` | +|---|---|---| +| Loose | 3 | 6 | +| Balanced | 4 | 8 | +| Default | 5 | 9 | +| Strict | 6 | 10 | + +## Synonyms + +Synonyms let users find products regardless of which word they use. Define synonym groups and the plugin **automatically expands them bidirectionally** — you only need to define one direction: + +```ts +synonyms: { + laptop: ['notebook', 'portable computer'], + shoe: ['sneaker', 'footwear'], +} +``` + +The plugin generates all reverse mappings automatically, so searching "notebook" finds laptops and searching "laptop" finds notebooks. No need to manually define both directions. + +Synonyms are word-level, not product-level — a small set of 20-30 synonym groups covers your entire catalog regardless of size. + +## Highlighting & Cropping + +Configure highlighting and cropping in `searchConfig` to help frontends show users *why* a result matched: + +```ts +searchConfig: { + attributesToHighlight: ['productName', 'description'], + highlightPreTag: '', + highlightPostTag: '', + attributesToCrop: ['description'], + cropLength: 30, +} +``` + +Results include `formattedProductName` and `formattedDescription` fields with matched terms wrapped in highlight tags and long text cropped around the match: + +```graphql +{ + search(input: { term: "carbon" }) { + items { + productName # "Road Bike" + formattedProductName # "Road Bike" + description # full raw description + formattedDescription # "…full carbon chassis with cyclocross-specific…" + } + } +} +``` + +These fields are `null` when highlighting/cropping is not configured — frontends can fall back to `productName` / `description`. + +## Price Range Buckets + +The `priceRangeBucketInterval` controls how search results are grouped into price bands in the response. This data powers price filter UIs: + +```ts +searchConfig: { + priceRangeBucketInterval: 2000, // Each bucket spans $20 (2000 cents) +} +``` + +Response includes: +```json +{ + "prices": { + "range": { "min": 500, "max": 15000 }, + "buckets": [ + { "to": 2000, "count": 23 }, + { "to": 4000, "count": 45 }, + { "to": 6000, "count": 12 } + ] + } +} +``` + +This is **separate** from the `priceRange` input filter, which lets users filter results by price. + +## Multi-Project Setup + +If multiple Vendure projects share the same Meilisearch instance, use different `indexPrefix` values: + +```ts +// Project A +MeilisearchPlugin.init({ indexPrefix: 'shop-a-', ... }) + +// Project B +MeilisearchPlugin.init({ indexPrefix: 'shop-b-', ... }) +``` + +This creates separate indexes (`shop-a-variants`, `shop-b-variants`) so reindexing one doesn't affect the other. + +## Admin API + +The plugin extends the Admin API with: + +```graphql +# Rebuild the entire search index +mutation { reindex { ... } } + +# Run buffered updates (when bufferUpdates: true) +mutation { runPendingSearchIndexUpdates { ... } } +``` + +## Custom Mappings + +Add extra data to the search index: + +```ts +customProductMappings: { + brand: { + graphQlType: 'String', + public: true, // Exposed in GraphQL (default: true) + valueFn: (product, variants, languageCode, injector, ctx) => { + return product.customFields?.brand ?? ''; + }, + }, +}, +``` + +Access in GraphQL: + +```graphql +query { + search(input: { term: "shoes" }) { + items { + customProductMappings { + brand + } + } + } +} +``` + +## Hooks + +### `mapQuery` + +Intercept and modify the raw Meilisearch query before it's sent: + +```ts +searchConfig: { + mapQuery: (query, input, searchConfig, channelId, enabledOnly, ctx) => { + // Example: boost in-stock products for logged-in users + if (ctx.activeUser) { + query.sort = ['inStock:desc', ...(query.sort || [])]; + } + return query; + }, +} +``` + +### `mapSort` + +Modify the sort parameters: + +```ts +searchConfig: { + mapSort: (sort, input) => { + if (input.sort?.myCustomField) { + sort.push(`variant-myCustomField:${input.sort.myCustomField === 'ASC' ? 'asc' : 'desc'}`); + } + return sort; + }, +} +``` + +## Exported Types + +```ts +import { + MeilisearchPlugin, + MeilisearchOptions, + SearchConfig, + MatchingStrategy, + TypoToleranceConfig, +} from '@vendure-community/meilisearch-plugin'; +``` + +## License + +GPL-3.0-or-later + +```ts title="Signature" +class MeilisearchPlugin implements OnApplicationBootstrap { + init(options: MeilisearchOptions) => Type; +} +``` +* Implements: OnApplicationBootstrap + + + +
+ +### init + +MeilisearchOptions) => Type<MeilisearchPlugin>`} /> + + + + +
diff --git a/docs/docs/reference/meilisearch-plugin/meilisearch-options.mdx b/docs/docs/reference/meilisearch-plugin/meilisearch-options.mdx new file mode 100644 index 00000000..50d39482 --- /dev/null +++ b/docs/docs/reference/meilisearch-plugin/meilisearch-options.mdx @@ -0,0 +1,206 @@ +--- +title: "MeilisearchOptions" +generated: true +--- + + +Configuration options for the MeilisearchPlugin. + +*Example* + +```ts +MeilisearchPlugin.init({ + host: 'http://localhost:7700', + apiKey: 'masterKey', + synonyms: { + phone: ['mobile', 'smartphone'], + laptop: ['notebook'], + }, +}) +``` + +```ts title="Signature" +interface MeilisearchOptions { + host?: string; + apiKey?: string; + connectionAttempts?: number; + connectionAttemptInterval?: number; + indexPrefix?: string; + reindexProductsChunkSize?: number; + reindexBatchSize?: number; + searchConfig?: SearchConfig; + customProductMappings?: { + [fieldName: string]: CustomMapping< + [Product, ProductVariant[], LanguageCode, Injector, RequestContext] + >; + }; + customProductVariantMappings?: { + [fieldName: string]: CustomMapping<[ProductVariant, LanguageCode, Injector, RequestContext]>; + }; + bufferUpdates?: boolean; + hydrateProductRelations?: Array>; + hydrateProductVariantRelations?: Array>; + extendSearchInputType?: { + [name: string]: PrimitiveTypeVariations; + }; + extendSearchSortType?: string[]; + synonyms?: Record; + stopWords?: string[]; + rankingRules?: string[]; + typoTolerance?: TypoToleranceConfig; +} +``` + +
+ +### host + + + +The host URL of the Meilisearch server. +### apiKey + + + +The API key for the Meilisearch server. +This is the master key or admin key used for indexing operations. +### connectionAttempts + + + +Maximum amount of attempts made to connect to the Meilisearch server on startup. +### connectionAttemptInterval + + + +Interval in milliseconds between attempts to connect to the Meilisearch server on startup. +### indexPrefix + + + +Prefix for the indices created by the plugin. +### reindexProductsChunkSize + + + +Products limit chunk size for each loop iteration when indexing products. +### reindexBatchSize + + + +Batch size for document additions during reindexing. +Meilisearch handles documents in batches for optimal performance. +### searchConfig + +SearchConfig`} /> + +Configuration of the internal Meilisearch search query. +### customProductMappings + +; }`} /> + +Custom product mappings for additional data in the search index. +### customProductVariantMappings + +; }`} /> + +Custom product variant mappings for additional data in the search index. +### bufferUpdates + + + +If set to `true`, updates to Products, ProductVariants and Collections will not immediately +trigger an update to the search index. Instead, all these changes will be buffered and will +only be run via a call to the `runPendingSearchIndexUpdates` mutation in the Admin API. +### hydrateProductRelations + +>`} default={`[]`} /> + +Additional product relations that will be fetched from DB while reindexing. +### hydrateProductVariantRelations + +>`} default={`[]`} /> + +Additional variant relations that will be fetched from DB while reindexing. +### extendSearchInputType + +; }`} default={`{}`} /> + +Allows the `SearchInput` type to be extended with new input fields. +### extendSearchSortType + + + +Adds a list of sort parameters. +### synonyms + +`} default={`undefined (no synonyms)`} /> + +A map of synonyms. Each key is a word, and its value is an array of +synonymous words. This allows users to find products regardless of +which synonym they use. + +Synonyms are **automatically expanded bidirectionally** — you only need +to define one direction (e.g. `laptop: ['notebook']`) and the reverse +mapping (`notebook: ['laptop']`) is generated automatically. + +*Example* + +```ts +synonyms: { + phone: ['mobile', 'smartphone', 'cellphone'], + laptop: ['notebook', 'portable computer'], + tv: ['television', 'monitor', 'screen'], +} +``` +### stopWords + + + +A list of words to ignore during search. Common stop words like +"the", "a", "is" can be filtered out for cleaner results. + +*Example* + +```ts +stopWords: ['the', 'a', 'an', 'is', 'for', 'and', 'of', 'to', 'in'] +``` +### rankingRules + + + +Custom ranking rules for controlling how search results are ordered. +Meilisearch applies these rules in order using a bucket sort algorithm - +the first rule has the most impact. + +Built-in rules: `'words'`, `'typo'`, `'proximity'`, `'attribute'`, `'sort'`, `'exactness'` + +You can also add custom ranking rules using attribute names followed by `:asc` or `:desc`. + +*Example* + +```ts +// Prioritize in-stock products, then sort by price +rankingRules: ['words', 'typo', 'proximity', 'attribute', 'sort', 'exactness', 'productInStock:desc'] +``` +### typoTolerance + + + +Configuration for typo tolerance. Allows you to control how Meilisearch +handles misspellings in search queries. + +*Example* + +```ts +typoTolerance: { + enabled: true, + disableOnAttributes: ['sku'], // SKU must match exactly + disableOnWords: ['iPhone'], // Brand names must be exact + minWordSizeForOneTypo: 4, + minWordSizeForTwoTypos: 8, +} +``` + + +
diff --git a/docs/docs/reference/sentry-plugin/index.mdx b/docs/docs/reference/sentry-plugin/index.mdx index 42d58ac8..aa04c5c1 100644 --- a/docs/docs/reference/sentry-plugin/index.mdx +++ b/docs/docs/reference/sentry-plugin/index.mdx @@ -123,7 +123,7 @@ You should then be able to see the error in your Sentry dashboard (it may take a ```ts title="Signature" class SentryPlugin { - static options: SentryPluginOptions = {} as any; + static options: SentryPluginOptions = {}; init(options?: SentryPluginOptions) => ; } ``` diff --git a/docs/docs/reference/stellate-plugin/index.mdx b/docs/docs/reference/stellate-plugin/index.mdx index e0d0d3c9..9d50baf4 100644 --- a/docs/docs/reference/stellate-plugin/index.mdx +++ b/docs/docs/reference/stellate-plugin/index.mdx @@ -30,7 +30,7 @@ define how the plugin will respond to Vendure events in order to trigger calls t Stellate [Purging API](https://stellate.co/docs/graphql-edge-cache/purging-api). ```ts -import { StellatePlugin, defaultPurgeRules } from '@vendure/stellate-plugin'; +import { StellatePlugin, defaultPurgeRules } from '@vendure-community/stellate-plugin'; import { VendureConfig } from '@vendure/core'; export const config: VendureConfig = { @@ -169,7 +169,7 @@ export default config; You can then add a custom `PurgeRule` to the StellatePlugin configuration: ```ts -import { StellatePlugin, defaultPurgeRules } from "@vendure/stellate-plugin"; +import { StellatePlugin, defaultPurgeRules } from "@vendure-community/stellate-plugin"; import { VendureConfig } from "@vendure/core"; import { ArticleEvent } from "./plugins/cms/events/article-event"; @@ -201,7 +201,7 @@ If you want to log the calls that _would_ be made to the Stellate Purge API when Note that debugLogging generates a lot of debug-level logging, so it is recommended to only enable this when needed. ```ts -import { StellatePlugin, defaultPurgeRules } from '@vendure/stellate-plugin'; +import { StellatePlugin, defaultPurgeRules } from '@vendure-community/stellate-plugin'; import { VendureConfig } from '@vendure/core'; export const config: VendureConfig = { diff --git a/docs/manifest.json b/docs/manifest.json index 95950797..c9891d84 100644 --- a/docs/manifest.json +++ b/docs/manifest.json @@ -27,10 +27,24 @@ "title": "ElasticsearchOptions", "slug": "elasticsearch-options", "file": "docs/reference/elasticsearch-plugin/elasticsearch-options.mdx", - "lastModified": "2026-03-31T14:38:46+02:00" + "lastModified": "2026-05-12T01:31:47+05:30" } ], - "lastModified": "2026-04-03T11:44:49+02:00" + "lastModified": "2026-05-12T01:31:47+05:30" + }, + { + "title": "MeilisearchPlugin", + "slug": "meilisearch-plugin", + "file": "docs/reference/meilisearch-plugin/index.mdx", + "children": [ + { + "title": "MeilisearchOptions", + "slug": "meilisearch-options", + "file": "docs/reference/meilisearch-plugin/meilisearch-options.mdx", + "lastModified": "2026-05-12T01:31:47+05:30" + } + ], + "lastModified": "2026-05-12T01:31:47+05:30" }, { "title": "MolliePlugin", @@ -92,7 +106,7 @@ "lastModified": "2026-03-31T14:38:46+02:00" } ], - "lastModified": "2026-05-06T10:08:17+02:00" + "lastModified": "2026-05-12T01:31:47+05:30" }, { "title": "StellatePlugin", @@ -118,7 +132,7 @@ "lastModified": "2026-03-31T14:38:46+02:00" } ], - "lastModified": "2026-05-06T10:08:17+02:00" + "lastModified": "2026-05-12T01:31:47+05:30" }, { "title": "StripePlugin", diff --git a/packages/meilisearch-plugin/.gitignore b/packages/meilisearch-plugin/.gitignore new file mode 100644 index 00000000..c1ab65f4 --- /dev/null +++ b/packages/meilisearch-plugin/.gitignore @@ -0,0 +1,4 @@ +preview/output +yarn-error.log +lib +e2e/__data__/*.sqlite diff --git a/packages/meilisearch-plugin/CHANGELOG.md b/packages/meilisearch-plugin/CHANGELOG.md new file mode 100644 index 00000000..6da39cd9 --- /dev/null +++ b/packages/meilisearch-plugin/CHANGELOG.md @@ -0,0 +1,19 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## 1.0.0 + +Initial release as `@vendure-community/meilisearch-plugin`. + +### Features + +* **meilisearch-plugin:** Meilisearch-powered product search as a drop-in replacement for DefaultSearchPlugin +* **meilisearch-plugin:** AI hybrid search support with configurable embedders +* **meilisearch-plugin:** similar documents query using AI embeddings +* **meilisearch-plugin:** typo tolerance, synonyms, stop words configuration +* **meilisearch-plugin:** custom product and variant mappings +* **meilisearch-plugin:** price range filtering and price bucket aggregation +* **meilisearch-plugin:** in-stock filtering with stock movement event handling +* **meilisearch-plugin:** zero-downtime reindexing via atomic index swaps diff --git a/packages/meilisearch-plugin/README.md b/packages/meilisearch-plugin/README.md new file mode 100644 index 00000000..010df838 --- /dev/null +++ b/packages/meilisearch-plugin/README.md @@ -0,0 +1,371 @@ +# @vendure-community/meilisearch-plugin + +A Vendure plugin that replaces the default search with [Meilisearch](https://www.meilisearch.com/) — a fast, typo-tolerant search engine with full-text search. + +## Features + +- Full-text search with typo tolerance, synonyms, and stop words +- Faceted search, collection filtering, price range filtering +- Price range buckets for building filter UIs +- Configurable matching strategy, highlighting, cropping, and ranking +- Custom product & variant field mappings +- Buffered index updates +- Health check endpoint + +## Requirements + +- Vendure `^3.0.0` +- A running [Meilisearch](https://www.meilisearch.com/docs/learn/getting_started/cloud_quick_start) instance (v1.6+) + +## Installation + +```bash +# npm +npm install @vendure-community/meilisearch-plugin + +# yarn +yarn add @vendure-community/meilisearch-plugin + +# pnpm +pnpm add @vendure-community/meilisearch-plugin +``` + +## Quick Start + +### Minimal Setup (Full-Text Search Only) + +```ts +import { MeilisearchPlugin } from '@vendure-community/meilisearch-plugin'; + +export const config: VendureConfig = { + plugins: [ + MeilisearchPlugin.init({ + host: 'http://localhost:7700', + apiKey: 'your-master-key', + }), + ], +}; +``` + +After startup, run the `reindex` mutation from the Admin API to populate the search index. + +## Full Configuration Reference + +```ts +MeilisearchPlugin.init({ + + // ─── Connection ──────────────────────────────────────────── + host: 'http://localhost:7700', // Meilisearch server URL + apiKey: 'your-master-key', // Master/admin API key + connectionAttempts: 10, // Retry attempts on startup + connectionAttemptInterval: 5000, // ms between retries + + // ─── Indexing ────────────────────────────────────────────── + indexPrefix: 'vendure-', // Index name prefix (useful for multi-project) + reindexProductsChunkSize: 2500, // Products loaded per DB query during reindex + reindexBatchSize: 1000, // Documents sent to Meilisearch per batch + bufferUpdates: false, // Buffer updates instead of immediate indexing + + // ─── Search Query Config ─────────────────────────────────── + searchConfig: { + // Matching + matchingStrategy: 'frequency', // 'last' | 'all' | 'frequency' + attributesToSearchOn: ['productName', 'description', 'sku'], + rankingScoreThreshold: 0.15, // 0.0-1.0, filter out weak results + + // Highlighting + attributesToHighlight: ['productName', 'description'], + highlightPreTag: '', + highlightPostTag: '', + + // Cropping + attributesToCrop: ['description'], + cropLength: 30, + cropMarker: '...', + + // Debug / scoring + showRankingScore: true, + showRankingScoreDetails: false, + showMatchesPosition: false, + + // Response + attributesToRetrieve: ['*'], // Fields to return + + // Internal limits + facetValueMaxSize: 50, + collectionMaxSize: 50, + totalItemsMaxSize: 10000, + priceRangeBucketInterval: 1000, // Price bucket width (in currency subunits) + + // Hooks + mapQuery: (query, input, searchConfig, channelId, enabledOnly, ctx) => { + // Modify the raw Meilisearch query before it's sent + return query; + }, + mapSort: (sort, input) => sort, + }, + + // ─── Typo Tolerance ──────────────────────────────────────── + typoTolerance: { + enabled: true, + minWordSizeForOneTypo: 4, // Default: 5 + minWordSizeForTwoTypos: 8, // Default: 9 + disableOnWords: ['iPhone', 'Samsung'], + disableOnAttributes: ['sku'], + }, + + // ─── Synonyms ────────────────────────────────────────────── + synonyms: { + phone: ['mobile', 'smartphone', 'cellphone'], + laptop: ['notebook'], + tv: ['television', 'monitor'], + }, + + // ─── Stop Words ──────────────────────────────────────────── + stopWords: ['the', 'a', 'an', 'is', 'for', 'and', 'of'], + + // ─── Ranking Rules ───────────────────────────────────────── + rankingRules: [ + 'words', 'typo', 'proximity', 'attribute', + 'sort', 'exactness', 'productInStock:desc', + ], + + // ─── Custom Mappings ─────────────────────────────────────── + customProductMappings: { + reviewRating: { + graphQlType: 'Float', + valueFn: (product, variants, languageCode, injector, ctx) => { + return product.customFields?.reviewRating ?? 0; + }, + }, + }, + customProductVariantMappings: { + warehouse: { + graphQlType: 'String', + valueFn: (variant, languageCode, injector, ctx) => { + return variant.customFields?.warehouse ?? ''; + }, + }, + }, + + // ─── Hydration (extra DB relations for custom mappings) ──── + hydrateProductRelations: ['customFields'], + hydrateProductVariantRelations: ['customFields'], + + // ─── Extend GraphQL Input ────────────────────────────────── + extendSearchInputType: { + reviewRating: 'Float', + }, + extendSearchSortType: ['reviewRating'], +}) +``` + +## Matching Strategy + +Controls how Meilisearch matches multi-word queries: + +| Strategy | Behavior | Use When | +|---|---|---| +| `'last'` (default) | Returns results even if not all terms match. Drops least important terms progressively. | You want maximum results / fuzzy matching | +| `'frequency'` | Prioritizes rare/meaningful terms, drops common ones. | Balanced — good default for e-commerce | +| `'all'` | Only returns documents matching **every** query term. | You want strict/exact matching | + +## Typo Tolerance + +Meilisearch has built-in typo tolerance. The `typoTolerance` config lets you tune it: + +```ts +typoTolerance: { + enabled: true, + minWordSizeForOneTypo: 4, // "shrt" matches "shirt" (4+ chars = 1 typo allowed) + minWordSizeForTwoTypos: 8, // "smartphne" matches "smartphone" (8+ chars = 2 typos) + disableOnWords: ['iPhone'], // Brand names must be exact + disableOnAttributes: ['sku'], // SKU must be exact +} +``` + +Lower values = more fuzzy. Higher values = more strict. + +| Strictness | `minWordSizeForOneTypo` | `minWordSizeForTwoTypos` | +|---|---|---| +| Loose | 3 | 6 | +| Balanced | 4 | 8 | +| Default | 5 | 9 | +| Strict | 6 | 10 | + +## Synonyms + +Synonyms let users find products regardless of which word they use. Define synonym groups and the plugin **automatically expands them bidirectionally** — you only need to define one direction: + +```ts +synonyms: { + laptop: ['notebook', 'portable computer'], + shoe: ['sneaker', 'footwear'], +} +``` + +The plugin generates all reverse mappings automatically, so searching "notebook" finds laptops and searching "laptop" finds notebooks. No need to manually define both directions. + +Synonyms are word-level, not product-level — a small set of 20-30 synonym groups covers your entire catalog regardless of size. + +## Highlighting & Cropping + +Configure highlighting and cropping in `searchConfig` to help frontends show users *why* a result matched: + +```ts +searchConfig: { + attributesToHighlight: ['productName', 'description'], + highlightPreTag: '', + highlightPostTag: '', + attributesToCrop: ['description'], + cropLength: 30, +} +``` + +Results include `formattedProductName` and `formattedDescription` fields with matched terms wrapped in highlight tags and long text cropped around the match: + +```graphql +{ + search(input: { term: "carbon" }) { + items { + productName # "Road Bike" + formattedProductName # "Road Bike" + description # full raw description + formattedDescription # "…full carbon chassis with cyclocross-specific…" + } + } +} +``` + +These fields are `null` when highlighting/cropping is not configured — frontends can fall back to `productName` / `description`. + +## Price Range Buckets + +The `priceRangeBucketInterval` controls how search results are grouped into price bands in the response. This data powers price filter UIs: + +```ts +searchConfig: { + priceRangeBucketInterval: 2000, // Each bucket spans $20 (2000 cents) +} +``` + +Response includes: +```json +{ + "prices": { + "range": { "min": 500, "max": 15000 }, + "buckets": [ + { "to": 2000, "count": 23 }, + { "to": 4000, "count": 45 }, + { "to": 6000, "count": 12 } + ] + } +} +``` + +This is **separate** from the `priceRange` input filter, which lets users filter results by price. + +## Multi-Project Setup + +If multiple Vendure projects share the same Meilisearch instance, use different `indexPrefix` values: + +```ts +// Project A +MeilisearchPlugin.init({ indexPrefix: 'shop-a-', ... }) + +// Project B +MeilisearchPlugin.init({ indexPrefix: 'shop-b-', ... }) +``` + +This creates separate indexes (`shop-a-variants`, `shop-b-variants`) so reindexing one doesn't affect the other. + +## Admin API + +The plugin extends the Admin API with: + +```graphql +# Rebuild the entire search index +mutation { reindex { ... } } + +# Run buffered updates (when bufferUpdates: true) +mutation { runPendingSearchIndexUpdates { ... } } +``` + +## Custom Mappings + +Add extra data to the search index: + +```ts +customProductMappings: { + brand: { + graphQlType: 'String', + public: true, // Exposed in GraphQL (default: true) + valueFn: (product, variants, languageCode, injector, ctx) => { + return product.customFields?.brand ?? ''; + }, + }, +}, +``` + +Access in GraphQL: + +```graphql +query { + search(input: { term: "shoes" }) { + items { + customProductMappings { + brand + } + } + } +} +``` + +## Hooks + +### `mapQuery` + +Intercept and modify the raw Meilisearch query before it's sent: + +```ts +searchConfig: { + mapQuery: (query, input, searchConfig, channelId, enabledOnly, ctx) => { + // Example: boost in-stock products for logged-in users + if (ctx.activeUser) { + query.sort = ['inStock:desc', ...(query.sort || [])]; + } + return query; + }, +} +``` + +### `mapSort` + +Modify the sort parameters: + +```ts +searchConfig: { + mapSort: (sort, input) => { + if (input.sort?.myCustomField) { + sort.push(`variant-myCustomField:${input.sort.myCustomField === 'ASC' ? 'asc' : 'desc'}`); + } + return sort; + }, +} +``` + +## Exported Types + +```ts +import { + MeilisearchPlugin, + MeilisearchOptions, + SearchConfig, + MatchingStrategy, + TypoToleranceConfig, +} from '@vendure-community/meilisearch-plugin'; +``` + +## License + +GPL-3.0-or-later diff --git a/packages/meilisearch-plugin/e2e/await-running-jobs.ts b/packages/meilisearch-plugin/e2e/await-running-jobs.ts new file mode 100644 index 00000000..4ab2d6e3 --- /dev/null +++ b/packages/meilisearch-plugin/e2e/await-running-jobs.ts @@ -0,0 +1,42 @@ +import { SimpleGraphQLClient } from '@vendure/testing'; + +import { getRunningJobsDocument } from './graphql/shared-definitions'; +import { ResultOf, VariablesOf } from './graphql/graphql-admin'; + +/** + * For mutation which trigger background jobs, this can be used to "pause" the execution of + * the test until those jobs have completed; + */ +export async function awaitRunningJobs( + adminClient: SimpleGraphQLClient, + timeout: number = 5000, + delay = 100, +) { + let runningJobs = 0; + const startTime = +new Date(); + let timedOut = false; + // Allow a brief period for the jobs to start in the case that + // e.g. event debouncing is used before triggering the job. + await new Promise(resolve => setTimeout(resolve, delay)); + do { + const { jobs } = await adminClient.query, VariablesOf>( + getRunningJobsDocument, + { + options: { + filter: { + isSettled: { + eq: false, + }, + }, + }, + }, + ); + runningJobs = jobs.totalItems; + timedOut = timeout < +new Date() - startTime; + } while (runningJobs > 0 && !timedOut); + + if (runningJobs > 0) { + /* eslint-disable no-console */ + console.log(`awaitRunningJobs time out with ${runningJobs} jobs still running`); + } +} diff --git a/packages/meilisearch-plugin/e2e/check-connection.js b/packages/meilisearch-plugin/e2e/check-connection.js new file mode 100644 index 00000000..386c8c9a --- /dev/null +++ b/packages/meilisearch-plugin/e2e/check-connection.js @@ -0,0 +1,35 @@ +const { MeiliSearch } = require('meilisearch'); +const { meilisearchHost, meilisearchPort, meilisearchApiKey } = require('./constants'); + +const client = new MeiliSearch({ + host: `${meilisearchHost}:${meilisearchPort}`, + apiKey: meilisearchApiKey, +}); + +/** + * When contributing to Vendure, developers who made changes unrelated to + * this plugin should not be expected to set up a Meilisearch instance + * locally just so they can get the pre-push hook to pass. So if no + * instance is available, we skip the tests. + */ +async function checkConnection() { + try { + await client.health(); + // If the connection is available, we exit with 1 in order to invoke the + // actual e2e test script (since we are using the `||` operator in the "e2e" script) + return 1; + } catch (e) { + console.log( + `Could not connect to Meilisearch instance at "${meilisearchHost}:${meilisearchPort}"`, + ); + console.log(`Skipping e2e tests for MeilisearchPlugin`); + process.env.SKIP_MEILISEARCH_E2E_TESTS = true; + // If no meilisearch available, we exit with 0 so that the npm script + // exits + return 0; + } +} + +checkConnection().then((result) => { + process.exit(result); +}); diff --git a/packages/meilisearch-plugin/e2e/config/tsconfig.e2e.json b/packages/meilisearch-plugin/e2e/config/tsconfig.e2e.json new file mode 100644 index 00000000..93ce4a4e --- /dev/null +++ b/packages/meilisearch-plugin/e2e/config/tsconfig.e2e.json @@ -0,0 +1,4 @@ +{ + "extends": "../../../../e2e-common/tsconfig.e2e.json", + "include": ["../**/*.e2e-spec.ts", "../**/*.d.ts"] +} diff --git a/packages/meilisearch-plugin/e2e/constants.js b/packages/meilisearch-plugin/e2e/constants.js new file mode 100644 index 00000000..b4883cbb --- /dev/null +++ b/packages/meilisearch-plugin/e2e/constants.js @@ -0,0 +1,11 @@ +const meilisearchHost = process.env.CI + ? (process.env.E2E_MEILISEARCH_HOST || 'http://127.0.0.1') + : 'http://127.0.0.1'; +const meilisearchPort = process.env.CI ? +(process.env.E2E_MEILISEARCH_PORT || 7700) : 7700; +const meilisearchApiKey = process.env.MEILISEARCH_API_KEY || ''; + +module.exports = { + meilisearchHost, + meilisearchPort, + meilisearchApiKey, +}; diff --git a/packages/meilisearch-plugin/e2e/e2e-helpers.ts b/packages/meilisearch-plugin/e2e/e2e-helpers.ts new file mode 100644 index 00000000..a359cd17 --- /dev/null +++ b/packages/meilisearch-plugin/e2e/e2e-helpers.ts @@ -0,0 +1,382 @@ +import { MeiliSearch } from 'meilisearch'; +import { LogicalOperator, SortOrder } from '@vendure/common/lib/generated-types'; +import { SimpleGraphQLClient } from '@vendure/testing'; +import { expect } from 'vitest'; + +import { searchProductsShopDocument } from './graphql/shop-definitions'; + +import { searchGetPricesDocument, searchProductsAdminDocument } from './meilisearch-plugin.e2e-spec'; +import { VariablesOf } from './graphql/graphql-admin'; + +// eslint-disable-next-line @typescript-eslint/no-var-requires +const { meilisearchHost, meilisearchPort, meilisearchApiKey } = require('./constants'); + +type SearchInput = VariablesOf['input']; + +export function doAdminSearchQuery(client: SimpleGraphQLClient, input: SearchInput) { + return client.query(searchProductsAdminDocument, { input }); +} + +export async function testGroupByProduct(client: SimpleGraphQLClient) { + const result = await client.query(searchProductsShopDocument, { + input: { + groupByProduct: true, + }, + }); + expect(result.search.totalItems).toBe(21); +} + +export async function testGroupBySKU(client: SimpleGraphQLClient) { + const result = await client.query(searchProductsShopDocument, { + input: { + term: 'bonsai', + groupBySKU: true, + }, + }); + expect(result.search.totalItems).toBe(1); +} + +export async function testNoGrouping(client: SimpleGraphQLClient) { + const result = await client.query(searchProductsShopDocument, { + input: { + groupByProduct: false, + groupBySKU: false, + }, + }); + expect(result.search.totalItems).toBe(35); +} + +export async function testMatchSearchTerm(client: SimpleGraphQLClient) { + const result = await client.query(searchProductsShopDocument, { + input: { + term: 'camera', + groupByProduct: true, + }, + }); + expect(result.search.items.map(i => i.productName).sort()).toEqual([ + 'Camera Lens', + 'Instant Camera', + 'SLR Camera', + ]); +} + +export async function testMatchFacetIdsAnd(client: SimpleGraphQLClient) { + const result = await client.query(searchProductsShopDocument, { + input: { + facetValueIds: ['T_1', 'T_2'], + facetValueOperator: LogicalOperator.AND, + groupByProduct: true, + sort: { + name: SortOrder.ASC, + }, + }, + }); + expect(result.search.items.map(i => i.productName)).toEqual([ + 'Clacky Keyboard', + 'Curvy Monitor', + 'Gaming PC', + 'Hard Drive', + 'Laptop', + 'USB Cable', + ]); +} + +export async function testMatchFacetIdsOr(client: SimpleGraphQLClient) { + const result = await client.query(searchProductsShopDocument, { + input: { + facetValueIds: ['T_1', 'T_5'], + facetValueOperator: LogicalOperator.OR, + groupByProduct: true, + sort: { + name: SortOrder.ASC, + }, + take: 20, + }, + }); + expect(result.search.items.map(i => i.productName)).toEqual([ + 'Bonsai Tree', + 'Bonsai Tree (Ch2)', + 'Camera Lens', + 'Clacky Keyboard', + 'Curvy Monitor', + 'Gaming PC', + 'Hard Drive', + 'Instant Camera', + 'Laptop', + 'Orchid', + 'SLR Camera', + 'Spiky Cactus', + 'Tripod', + 'USB Cable', + ]); +} + +export async function testMatchFacetValueFiltersAnd(client: SimpleGraphQLClient) { + const result = await client.query(searchProductsShopDocument, { + input: { + groupByProduct: true, + facetValueFilters: [{ and: 'T_1' }, { and: 'T_2' }], + }, + }); + expect(result.search.items.map(i => i.productName).sort((a, b) => a.localeCompare(b))).toEqual( + ['Laptop', 'Curvy Monitor', 'Gaming PC', 'Hard Drive', 'Clacky Keyboard', 'USB Cable'].sort((a, b) => + a.localeCompare(b), + ), + ); +} + +export async function testMatchFacetValueFiltersOr(client: SimpleGraphQLClient) { + const result = await client.query(searchProductsShopDocument, { + input: { + groupByProduct: true, + facetValueFilters: [{ or: ['T_1', 'T_5'] }], + sort: { + name: SortOrder.ASC, + }, + take: 20, + }, + }); + expect(result.search.items.map(i => i.productName).sort((a, b) => a.localeCompare(b))).toEqual( + [ + 'Bonsai Tree', + 'Bonsai Tree (Ch2)', + 'Camera Lens', + 'Clacky Keyboard', + 'Curvy Monitor', + 'Gaming PC', + 'Hard Drive', + 'Instant Camera', + 'Laptop', + 'Orchid', + 'SLR Camera', + 'Spiky Cactus', + 'Tripod', + 'USB Cable', + ].sort((a, b) => a.localeCompare(b)), + ); +} + +export async function testMatchFacetValueFiltersOrWithAnd(client: SimpleGraphQLClient) { + const result = await client.query(searchProductsShopDocument, { + input: { + groupByProduct: true, + facetValueFilters: [{ and: 'T_1' }, { or: ['T_2', 'T_3'] }], + }, + }); + expect(result.search.items.map(i => i.productName).sort((a, b) => a.localeCompare(b))).toEqual( + [ + 'Laptop', + 'Curvy Monitor', + 'Gaming PC', + 'Hard Drive', + 'Clacky Keyboard', + 'USB Cable', + 'Instant Camera', + 'Camera Lens', + 'Tripod', + 'SLR Camera', + ].sort((a, b) => a.localeCompare(b)), + ); +} + +export async function testMatchFacetValueFiltersWithFacetIdsOr(client: SimpleGraphQLClient) { + const result = await client.query(searchProductsShopDocument, { + input: { + facetValueIds: ['T_2', 'T_3'], + facetValueOperator: LogicalOperator.OR, + facetValueFilters: [{ and: 'T_1' }], + groupByProduct: true, + }, + }); + expect(result.search.items.map(i => i.productName).sort((a, b) => a.localeCompare(b))).toEqual( + [ + 'Laptop', + 'Curvy Monitor', + 'Gaming PC', + 'Hard Drive', + 'Clacky Keyboard', + 'USB Cable', + 'Instant Camera', + 'Camera Lens', + 'Tripod', + 'SLR Camera', + ].sort((a, b) => a.localeCompare(b)), + ); +} + +export async function testMatchFacetValueFiltersWithFacetIdsAnd(client: SimpleGraphQLClient) { + const result = await client.query(searchProductsShopDocument, { + input: { + facetValueIds: ['T_1'], + facetValueFilters: [{ and: 'T_3' }], + facetValueOperator: LogicalOperator.AND, + groupByProduct: true, + }, + }); + expect(result.search.items.map(i => i.productName).sort((a, b) => a.localeCompare(b))).toEqual( + ['Instant Camera', 'Camera Lens', 'Tripod', 'SLR Camera'].sort((a, b) => a.localeCompare(b)), + ); +} + +export async function testMatchCollectionId(client: SimpleGraphQLClient) { + const result = await client.query(searchProductsShopDocument, { + input: { + collectionId: 'T_2', + groupByProduct: true, + }, + }); + expect(result.search.items.map(i => i.productName).sort((a, b) => a.localeCompare(b))).toEqual([ + 'Bonsai Tree', + 'Bonsai Tree (Ch2)', + 'Orchid', + 'Spiky Cactus', + ]); +} + +export async function testMatchCollectionSlug(client: SimpleGraphQLClient) { + const result = await client.query(searchProductsShopDocument, { + input: { + collectionSlug: 'plants', + groupByProduct: true, + }, + }); + expect(result.search.items.map(i => i.productName).sort((a, b) => a.localeCompare(b))).toEqual([ + 'Bonsai Tree', + 'Bonsai Tree (Ch2)', + 'Orchid', + 'Spiky Cactus', + ]); +} + +async function testMatchCollections(client: SimpleGraphQLClient, searchInput: Partial) { + const result = await client.query(searchProductsShopDocument, { + input: { + groupByProduct: true, + ...searchInput, + sort: { name: SortOrder.ASC }, + }, + }); + // Should return products from both Plants (T_2) and Electronics (T_3) collections + expect(result.search.items.length).toBeGreaterThan(4); + expect(result.search.totalItems).toBeGreaterThan(4); + + // Verify that products from both collections are included by checking collectionIds + const allCollectionIds = result.search.items.flatMap(i => i.collectionIds); + + // Should contain products from Plants collection (T_2) + expect(allCollectionIds.filter(id => id === 'T_2').length).toBeGreaterThan(0); + + // Should contain products from Electronics collection (T_3) + expect(allCollectionIds.filter(id => id === 'T_3').length).toBeGreaterThan(0); +} + +export async function testMatchCollectionIds(client: SimpleGraphQLClient) { + return testMatchCollections(client, { collectionIds: ['T_2', 'T_3'] }); +} + +export async function testMatchCollectionSlugs(client: SimpleGraphQLClient) { + return testMatchCollections(client, { collectionSlugs: ['plants', 'electronics'] }); +} + +async function testCollectionEdgeCases( + client: SimpleGraphQLClient, + duplicateInput: Partial, + nonExistentInput: Partial, +) { + // Test with duplicates - should handle gracefully + const resultWithDuplicates = await client.query(searchProductsShopDocument, { + input: { + groupByProduct: true, + ...duplicateInput, + }, + }); + // Should still return Plants collection products, de-duplicated + expect( + resultWithDuplicates.search.items.map(i => i.productName).sort((a, b) => a.localeCompare(b)), + ).toEqual(['Bonsai Tree', 'Bonsai Tree (Ch2)', 'Orchid', 'Spiky Cactus']); + + // Test with non-existent collection - should return no results + const resultNonExistent = await client.query(searchProductsShopDocument, { + input: { + groupByProduct: true, + ...nonExistentInput, + }, + }); + expect(resultNonExistent.search.items).toEqual([]); + expect(resultNonExistent.search.totalItems).toBe(0); +} + +export async function testCollectionIdsEdgeCases(client: SimpleGraphQLClient) { + return testCollectionEdgeCases( + client, + { collectionIds: ['T_2', 'T_2', 'T_2'] }, + { collectionIds: ['T_999'] }, + ); +} + +export async function testCollectionSlugsEdgeCases(client: SimpleGraphQLClient) { + return testCollectionEdgeCases( + client, + { collectionSlugs: ['plants', 'plants', 'plants'] }, + { collectionSlugs: ['non-existent-collection'] }, + ); +} + +export async function testSinglePrices(client: SimpleGraphQLClient) { + const result = await client.query(searchGetPricesDocument, { + input: { + groupByProduct: false, + take: 3, + sort: { + price: SortOrder.ASC, + }, + }, + }); + expect(result.search.items).toEqual([ + { + price: { value: 799 }, + priceWithTax: { value: 959 }, + }, + { + price: { value: 1498 }, + priceWithTax: { value: 1798 }, + }, + { + price: { value: 1550 }, + priceWithTax: { value: 1860 }, + }, + ]); +} + +export async function testPriceRanges(client: SimpleGraphQLClient) { + const result = await client.query(searchGetPricesDocument, { + input: { + groupByProduct: true, + take: 3, + term: 'laptop', + }, + }); + expect(result.search.items).toEqual([ + { + price: { min: 129900, max: 229900 }, + priceWithTax: { min: 155880, max: 275880 }, + }, + ]); +} + +export async function dropMeilisearchIndices(indexPrefix: string) { + const client = new MeiliSearch({ + host: `${meilisearchHost as string}:${meilisearchPort as string}`, + apiKey: meilisearchApiKey as string, + }); + try { + const indexes = await client.getIndexes(); + for (const index of indexes.results) { + if (index.uid.startsWith(indexPrefix)) { + await client.deleteIndex(index.uid); + } + } + } catch (e) { + // Ignore errors if no indices exist + } +} diff --git a/packages/meilisearch-plugin/e2e/fixtures/assets/alexandru-acea-686569-unsplash.jpg b/packages/meilisearch-plugin/e2e/fixtures/assets/alexandru-acea-686569-unsplash.jpg new file mode 100644 index 00000000..b23dd4e4 Binary files /dev/null and b/packages/meilisearch-plugin/e2e/fixtures/assets/alexandru-acea-686569-unsplash.jpg differ diff --git a/packages/meilisearch-plugin/e2e/fixtures/assets/derick-david-409858-unsplash.jpg b/packages/meilisearch-plugin/e2e/fixtures/assets/derick-david-409858-unsplash.jpg new file mode 100644 index 00000000..acb46a7f Binary files /dev/null and b/packages/meilisearch-plugin/e2e/fixtures/assets/derick-david-409858-unsplash.jpg differ diff --git a/packages/meilisearch-plugin/e2e/fixtures/assets/florian-olivo-1166419-unsplash.jpg b/packages/meilisearch-plugin/e2e/fixtures/assets/florian-olivo-1166419-unsplash.jpg new file mode 100644 index 00000000..49e477c9 Binary files /dev/null and b/packages/meilisearch-plugin/e2e/fixtures/assets/florian-olivo-1166419-unsplash.jpg differ diff --git a/packages/meilisearch-plugin/e2e/fixtures/assets/vincent-botta-736919-unsplash.jpg b/packages/meilisearch-plugin/e2e/fixtures/assets/vincent-botta-736919-unsplash.jpg new file mode 100644 index 00000000..5d9c10f6 Binary files /dev/null and b/packages/meilisearch-plugin/e2e/fixtures/assets/vincent-botta-736919-unsplash.jpg differ diff --git a/packages/meilisearch-plugin/e2e/fixtures/e2e-products-full.csv b/packages/meilisearch-plugin/e2e/fixtures/e2e-products-full.csv new file mode 100644 index 00000000..965b30af --- /dev/null +++ b/packages/meilisearch-plugin/e2e/fixtures/e2e-products-full.csv @@ -0,0 +1,36 @@ +name , slug , description , assets , facets , optionGroups , optionValues , sku , price , taxCategory , stockOnHand , trackInventory , variantAssets , variantFacets +Laptop , laptop , "Now equipped with seventh-generation Intel Core processors, Laptop is snappier than ever. From daily tasks like launching apps and opening files to more advanced computing, you can power through your day thanks to faster SSDs and Turbo Boost processing up to 3.6GHz." , derick-david-409858-unsplash.jpg , category:electronics|category:computers , "screen size|RAM" , "13 inch|8GB" , L2201308 , 1299.00 , standard , 100 , true , , + , , , , , , "15 inch|8GB" , L2201508 , 1399.00 , standard , 100 , true , , + , , , , , , "13 inch|16GB" , L2201316 , 2199.00 , standard , 100 , true , , + , , , , , , "15 inch|16GB" , L2201516 , 2299.00 , standard , 0 , true , , +Curvy Monitor , curvy-monitor , "Discover a truly immersive viewing experience with this monitor curved more deeply than any other. Wrapping around your field of vision the 1,800 R screencreates a wider field of view, enhances depth perception, and minimises peripheral distractions to draw you deeper in to your content." , alexandru-acea-686569-unsplash.jpg , category:electronics|category:computers , monitor size , 24 inch , C24F390 , 143.74 , standard , 100 , true , , + , , , , , , 27 inch , C27F390 , 169.94 , standard , 100 , true , , +Gaming PC , gaming-pc , "This pc is optimised for gaming, and is also VR ready. The Intel Core-i7 CPU and High Performance GPU give the computer the raw power it needs to function at a high level." , florian-olivo-1166419-unsplash.jpg , category:electronics|category:computers , "cpu|HDD" , "i7-8700|240GB SSD" , CGS480VR1063 , 1087.20 , standard , 100 , true , , + , , , , , , "R7-2700|240GB SSD" , CGS480VR1064 , 1099.95 , standard , 100 , true , , + , , , , , , "i7-8700|120GB SSD" , CGS480VR1065 , 931.20 , standard , 100 , true , , + , , , , , , "R7-2700|120GB SSD" , CGS480VR1066 , 949.20 , standard , 100 , true , , +Hard Drive , hard-drive , "Boost your PC storage with this internal hard drive, designed just for desktop and all-in-one PCs." , vincent-botta-736919-unsplash.jpg , category:electronics|category:computers , "HDD capacity" , 1TB , IHD455T1 , 37.99 , standard , 100 , true , , + , , , , , , 2TB , IHD455T2 , 53.74 , standard , 100 , true , , + , , , , , , 3TB , IHD455T3 , 78.96 , standard , 100 , true , , + , , , , , , 4TB , IHD455T4 , 92.99 , standard , 100 , true , , + , , , , , , 6TB , IHD455T6 , 134.35 , standard , 100 , true , , +Clacky Keyboard , clacky-keyboard , "Let all your colleagues know that you are typing on this exclusive, colorful klicky-klacky keyboard. Huge travel on each keypress ensures maximum klack on each and every keystroke." , , category:electronics|category:computers , , , A4TKLA45535 , 74.89 , standard , 100 , true , , +USB Cable , usb-cable , "Solid conductors eliminate strand-interaction distortion and reduce jitter. As the surface is made of high-purity silver, the performance is very close to that of a solid silver cable, but priced much closer to solid copper cable." , , category:electronics|category:computers , , , USBCIN01.5MI , 69.00 , standard , 100 , true , , +Instant Camera , instant-camera , "With its nostalgic design and simple point-and-shoot functionality, the Instant Camera is the perfect pick to get started with instant photography." , , category:electronics|category:photo , , , IC22MWDD , 174.99 , standard , 100 , true , , +Camera Lens , camera-lens , "This lens is a Di type lens using an optical system with improved multi-coating designed to function with digital SLR cameras as well as film cameras." , , category:electronics|category:photo , , , B0012UUP02 , 104.00 , standard , 100 , true , , +Tripod , tripod , "Capture vivid, professional-style photographs with help from this lightweight tripod. The adjustable-height tripod makes it easy to achieve reliable stability and score just the right angle when going after that award-winning shot." , , category:electronics|category:photo , , , B00XI87KV8 , 14.98 , standard , 100 , true , , +SLR Camera , slr-camera , "Retro styled, portable in size and built around a powerful 24-megapixel APS-C CMOS sensor, this digital camera is the ideal companion for creative everyday photography. Packed full of high spec features such as an advanced hybrid autofocus system able to keep pace with even the most active subjects, a speedy 6fps continuous-shooting mode, high-resolution electronic viewfinder and intuitive swivelling touchscreen, it brings professional image making into everyone’s grasp." , , category:electronics|category:photo , , , B07D75V44S , 521.00 , standard , 100 , true , , +Road Bike , road-bike , "Featuring a full carbon chassis - complete with cyclocross-specific carbon fork - and a component setup geared for hard use on the race circuit, it's got the low weight, exceptional efficiency and brilliant handling you'll need to stay at the front of the pack." , , category:sports equipment , , , RB000844334 , 2499.00 , standard , 100 , true , , +Skipping Rope , skipping-rope , "When you're working out you need a quality rope that doesn't tangle at every couple of jumps and with this sipping rope you won't have this problem." , , category:sports equipment , , , B07CNGXVXT , 7.99 , standard , 100 , true , , +Boxing Gloves , boxing-gloves , "Training gloves designed for optimum training. Our gloves promote proper punching technique because they are conformed to the natural shape of your fist. Dense, innovative two-layer foam provides better shock absorbency and full padding on the front, back and wrist to promote proper punching technique." , , category:sports equipment , , , B000ZYLPPU , 33.04 , standard , 100 , true , , +Tent , tent , "With tons of space inside (for max. 4 persons), full head height throughout the entire tent and an unusual and striking shape, this tent offers you everything you need." , , category:sports equipment , , , 2000023510 , 214.93 , standard , 100 , true , , +Cruiser Skateboard , cruiser-skateboard , "Based on the 1970s iconic shape, but made to a larger 69cm size, with updated, quality component, these skateboards are great for beginners to learn the foot spacing required, and are perfect for all-day cruising." , , category:sports equipment , , , 799872520 , 24.99 , standard , 100 , true , , +Football , football , "This football features high-contrast graphics for high-visibility during play, while its machine-stitched tpu casing offers consistent performance." , , category:sports equipment , , , SC3137-056 , 57.07 , standard , 100 , true , , +Running Shoe , running-shoe , "With its ultra-light, uber-responsive magic foam and a carbon fiber plate that feels like it’s propelling you forward, the Running Shoe is ready to push you to victories both large and small" , , category:sports equipment , shoe size , Size 40 , RS0040 , 99.99 , standard , 100 , true , , + , , , , , , Size 42 , RS0042 , 99.99 , standard , 100 , true , , + , , , , , , Size 44 , RS0044 , 99.99 , standard , 100 , true , , + , , , , , , Size 46 , RS0046 , 99.99 , standard , 100 , true , , +Spiky Cactus , spiky-cactus , "A spiky yet elegant house cactus - perfect for the home or office. Origin and habitat: Probably native only to the Andes of Peru" , , category:home & garden|category:plants , , , SC011001 , 15.50 , standard , 100 , true , , +Orchid , orchid , "Gloriously elegant. It can go along with any interior as it is a neutral color and the most popular Phalaenopsis overall. 2 to 3 foot stems host large white flowers that can last for over 2 months." , , category:home & garden|category:plants , , , ROR00221 , 65.00 , standard , 100 , true , , +Bonsai Tree , bonsai-tree , "Excellent semi-evergreen bonsai. Indoors or out but needs some winter protection. All trees sent will leave the nursery in excellent condition and will be of equal quality or better than the photograph shown." , , category:home & garden|category:plants , , , B01MXFLUSV , 19.99 , standard , 0 , true , , +Bonsai Tree (Ch2) , bonsai-tree-ch2 , "SAME PRODUCT IN A DIFFERENT CHANNEL WITH SAME SKU to test groupBySKU - Excellent semi-evergreen bonsai. Indoors or out but needs some winter protection. All trees sent will leave the nursery in excellent condition and will be of equal quality or better than the photograph shown." , , category:home & garden|category:plants , , , B01MXFLUSV , 19.99 , standard , 0 , true , , diff --git a/packages/meilisearch-plugin/e2e/graphql/fragments-admin.ts b/packages/meilisearch-plugin/e2e/graphql/fragments-admin.ts new file mode 100644 index 00000000..8eb7285d --- /dev/null +++ b/packages/meilisearch-plugin/e2e/graphql/fragments-admin.ts @@ -0,0 +1,791 @@ +import { graphql } from './graphql-admin'; + +export const administratorFragment = graphql(` + fragment Administrator on Administrator { + id + firstName + lastName + emailAddress + user { + id + identifier + lastLogin + roles { + id + code + description + permissions + } + } + } +`); + +export const assetFragment = graphql(` + fragment Asset on Asset { + id + name + fileSize + mimeType + type + preview + source + } +`); + +export const productVariantFragment = graphql( + ` + fragment ProductVariant on ProductVariant { + id + createdAt + updatedAt + enabled + languageCode + name + currencyCode + price + priceWithTax + prices { + currencyCode + price + } + stockOnHand + trackInventory + taxRateApplied { + id + name + value + } + taxCategory { + id + name + } + sku + options { + id + code + languageCode + groupId + name + } + facetValues { + id + code + name + facet { + id + name + } + } + featuredAsset { + ...Asset + } + assets { + ...Asset + } + translations { + id + languageCode + name + } + channels { + id + code + } + } + `, + [assetFragment], +); + +export const productWithVariantsFragment = graphql( + ` + fragment ProductWithVariants on Product { + id + enabled + languageCode + name + slug + description + featuredAsset { + ...Asset + } + assets { + ...Asset + } + translations { + languageCode + name + slug + description + } + optionGroups { + id + languageCode + code + name + } + variants { + ...ProductVariant + } + facetValues { + id + code + name + facet { + id + name + } + } + channels { + id + code + } + } + `, + [productVariantFragment, assetFragment], +); + +export const roleFragment = graphql(` + fragment Role on Role { + id + code + description + permissions + channels { + id + code + token + } + } +`); + +export const configurableFragment = graphql(` + fragment ConfigurableOperation on ConfigurableOperation { + args { + name + value + } + code + } +`); + +export const collectionFragment = graphql( + ` + fragment Collection on Collection { + id + name + slug + description + isPrivate + languageCode + featuredAsset { + ...Asset + } + assets { + ...Asset + } + filters { + ...ConfigurableOperation + } + translations { + id + languageCode + name + slug + description + } + parent { + id + name + } + children { + id + name + position + } + } + `, + [assetFragment, configurableFragment], +); + +export const facetValueFragment = graphql(` + fragment FacetValue on FacetValue { + id + languageCode + code + name + translations { + id + languageCode + name + } + facet { + id + name + } + } +`); + +export const facetWithValuesFragment = graphql( + ` + fragment FacetWithValues on Facet { + id + languageCode + isPrivate + code + name + translations { + id + languageCode + name + } + values { + ...FacetValue + } + } + `, + [facetValueFragment], +); + +export const countryFragment = graphql(` + fragment Country on Region { + id + code + name + enabled + translations { + id + languageCode + name + } + } +`); + +export const addressFragment = graphql(` + fragment Address on Address { + id + fullName + company + streetLine1 + streetLine2 + city + province + postalCode + country { + id + code + name + } + phoneNumber + defaultShippingAddress + defaultBillingAddress + } +`); + +export const customerFragment = graphql( + ` + fragment Customer on Customer { + id + title + firstName + lastName + phoneNumber + emailAddress + user { + id + identifier + verified + lastLogin + } + addresses { + ...Address + } + } + `, + [addressFragment], +); + +export const adjustmentFragment = graphql(` + fragment Adjustment on Adjustment { + adjustmentSource + amount + description + type + } +`); + +export const shippingAddressFragment = graphql(` + fragment ShippingAddress on OrderAddress { + fullName + company + streetLine1 + streetLine2 + city + province + postalCode + country + countryCode + phoneNumber + } +`); + +export const orderFragment = graphql(` + fragment Order on Order { + id + createdAt + updatedAt + code + active + state + total + totalWithTax + totalQuantity + currencyCode + customer { + id + firstName + lastName + } + } +`); + +export const canceledOrderFragment = graphql(` + fragment CanceledOrder on Order { + id + state + lines { + id + quantity + } + } +`); + +export const paymentFragment = graphql(` + fragment Payment on Payment { + id + transactionId + amount + method + state + nextStates + metadata + refunds { + id + total + reason + } + } +`); + +export const refundFragment = graphql(` + fragment Refund on Refund { + id + state + items + transactionId + shipping + total + metadata + } +`); + +export const orderWithLinesFragment = graphql( + ` + fragment OrderWithLines on Order { + id + createdAt + updatedAt + code + state + active + customer { + id + firstName + lastName + } + lines { + id + featuredAsset { + preview + } + productVariant { + id + name + sku + } + taxLines { + description + taxRate + } + unitPrice + unitPriceWithTax + quantity + unitPrice + unitPriceWithTax + taxRate + linePriceWithTax + } + surcharges { + id + description + sku + price + priceWithTax + } + subTotal + subTotalWithTax + total + totalWithTax + totalQuantity + currencyCode + shipping + shippingWithTax + shippingLines { + priceWithTax + shippingMethod { + id + code + name + description + } + } + shippingAddress { + ...ShippingAddress + } + payments { + ...Payment + } + fulfillments { + id + state + method + trackingCode + lines { + orderLineId + quantity + } + } + total + } + `, + [shippingAddressFragment, paymentFragment], +); + +export const orderWithModificationsFragment = graphql( + ` + fragment OrderWithModifications on Order { + id + state + subTotal + subTotalWithTax + shipping + shippingWithTax + total + totalWithTax + lines { + id + quantity + orderPlacedQuantity + linePrice + linePriceWithTax + unitPriceWithTax + discountedLinePriceWithTax + proratedLinePriceWithTax + proratedUnitPriceWithTax + discounts { + description + amountWithTax + } + productVariant { + id + name + } + } + surcharges { + id + description + sku + price + priceWithTax + taxRate + } + payments { + ...Payment + } + modifications { + id + note + priceChange + isSettled + lines { + orderLineId + quantity + } + surcharges { + id + } + payment { + id + state + amount + method + } + refund { + id + state + total + paymentId + } + } + promotions { + id + name + couponCode + } + discounts { + description + adjustmentSource + amount + amountWithTax + } + shippingAddress { + ...ShippingAddress + } + billingAddress { + ...ShippingAddress + } + shippingLines { + id + discountedPriceWithTax + shippingMethod { + id + name + } + } + } + `, + [paymentFragment, shippingAddressFragment], +); + +export const promotionFragment = graphql( + ` + fragment Promotion on Promotion { + id + createdAt + updatedAt + couponCode + startsAt + endsAt + name + description + enabled + perCustomerUsageLimit + usageLimit + conditions { + ...ConfigurableOperation + } + actions { + ...ConfigurableOperation + } + translations { + id + languageCode + name + description + } + } + `, + [configurableFragment], +); + +export const zoneFragment = graphql( + ` + fragment Zone on Zone { + id + name + members { + ...Country + } + } + `, + [countryFragment], +); + +export const taxRateFragment = graphql(` + fragment TaxRate on TaxRate { + id + name + enabled + value + category { + id + name + } + zone { + id + name + } + customerGroup { + id + name + } + } +`); + +export const currentUserFragment = graphql(` + fragment CurrentUser on CurrentUser { + id + identifier + channels { + code + token + permissions + } + } +`); + +export const variantWithStockFragment = graphql(` + fragment VariantWithStock on ProductVariant { + id + stockOnHand + stockAllocated + stockMovements { + items { + ... on StockMovement { + id + type + quantity + } + } + totalItems + } + } +`); + +export const fulfillmentFragment = graphql(` + fragment Fulfillment on Fulfillment { + id + state + nextStates + method + trackingCode + lines { + orderLineId + quantity + } + } +`); + +export const channelFragment = graphql(` + fragment Channel on Channel { + id + code + token + currencyCode + availableCurrencyCodes + defaultCurrencyCode + defaultLanguageCode + defaultShippingZone { + id + } + defaultTaxZone { + id + } + pricesIncludeTax + } +`); + +export const globalSettingsFragment = graphql(` + fragment GlobalSettings on GlobalSettings { + id + availableLanguages + trackInventory + outOfStockThreshold + serverConfig { + orderProcess { + name + to + } + permittedAssetTypes + permissions { + name + description + assignable + } + customFieldConfig { + Customer { + ... on CustomField { + name + } + } + } + } + } +`); + +export const customerGroupFragment = graphql(` + fragment CustomerGroup on CustomerGroup { + id + name + customers { + items { + id + } + totalItems + } + } +`); + +export const productOptionGroupFragment = graphql(` + fragment ProductOptionGroup on ProductOptionGroup { + id + code + name + options { + id + code + name + } + translations { + id + languageCode + name + } + } +`); + +export const productWithOptionsFragment = graphql(` + fragment ProductWithOptions on Product { + id + optionGroups { + id + code + options { + id + code + } + } + } +`); + +export const shippingMethodFragment = graphql(` + fragment ShippingMethod on ShippingMethod { + id + code + name + description + calculator { + code + args { + name + value + } + } + checker { + code + args { + name + value + } + } + } +`); diff --git a/packages/meilisearch-plugin/e2e/graphql/fragments-shop.ts b/packages/meilisearch-plugin/e2e/graphql/fragments-shop.ts new file mode 100644 index 00000000..e69de29b diff --git a/packages/meilisearch-plugin/e2e/graphql/graphql-admin.ts b/packages/meilisearch-plugin/e2e/graphql/graphql-admin.ts new file mode 100644 index 00000000..78c1c70b --- /dev/null +++ b/packages/meilisearch-plugin/e2e/graphql/graphql-admin.ts @@ -0,0 +1,15 @@ +import { initGraphQLTada } from 'gql.tada'; +import type { introspection } from './graphql-env-admin.d.ts'; + +export const graphql = initGraphQLTada<{ + disableMasking: true; + introspection: introspection; + scalars: { + DateTime: string; + JSON: any; + Money: number; + }; +}>(); + +export { readFragment } from 'gql.tada'; +export type { FragmentOf, ResultOf, VariablesOf } from 'gql.tada'; diff --git a/packages/meilisearch-plugin/e2e/graphql/graphql-env-admin.d.ts b/packages/meilisearch-plugin/e2e/graphql/graphql-env-admin.d.ts new file mode 100644 index 00000000..d4365e8e --- /dev/null +++ b/packages/meilisearch-plugin/e2e/graphql/graphql-env-admin.d.ts @@ -0,0 +1,533 @@ +/* eslint-disable */ +/* prettier-ignore */ + +export type introspection_types = { + 'AddFulfillmentToOrderResult': { kind: 'UNION'; name: 'AddFulfillmentToOrderResult'; fields: {}; possibleTypes: 'CreateFulfillmentError' | 'EmptyOrderLineSelectionError' | 'Fulfillment' | 'FulfillmentStateTransitionError' | 'InsufficientStockOnHandError' | 'InvalidFulfillmentHandlerError' | 'ItemsAlreadyFulfilledError'; }; + 'AddItemInput': { kind: 'INPUT_OBJECT'; name: 'AddItemInput'; isOneOf: false; inputFields: [{ name: 'productVariantId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'quantity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }]; }; + 'AddItemToDraftOrderInput': { kind: 'INPUT_OBJECT'; name: 'AddItemToDraftOrderInput'; isOneOf: false; inputFields: [{ name: 'productVariantId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'quantity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }]; }; + 'AddManualPaymentToOrderResult': { kind: 'UNION'; name: 'AddManualPaymentToOrderResult'; fields: {}; possibleTypes: 'ManualPaymentStateError' | 'Order'; }; + 'AddNoteToCustomerInput': { kind: 'INPUT_OBJECT'; name: 'AddNoteToCustomerInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'note'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'isPublic'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }]; }; + 'AddNoteToOrderInput': { kind: 'INPUT_OBJECT'; name: 'AddNoteToOrderInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'note'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'isPublic'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }]; }; + 'Address': { kind: 'OBJECT'; name: 'Address'; fields: { 'city': { name: 'city'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'company': { name: 'company'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'country': { name: 'country'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Country'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'defaultBillingAddress': { name: 'defaultBillingAddress'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'defaultShippingAddress': { name: 'defaultShippingAddress'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'fullName': { name: 'fullName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'phoneNumber': { name: 'phoneNumber'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'postalCode': { name: 'postalCode'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'province': { name: 'province'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'streetLine1': { name: 'streetLine1'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'streetLine2': { name: 'streetLine2'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'AdjustDraftOrderLineInput': { kind: 'INPUT_OBJECT'; name: 'AdjustDraftOrderLineInput'; isOneOf: false; inputFields: [{ name: 'orderLineId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'quantity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }]; }; + 'Adjustment': { kind: 'OBJECT'; name: 'Adjustment'; fields: { 'adjustmentSource': { name: 'adjustmentSource'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'amount': { name: 'amount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'data': { name: 'data'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'AdjustmentType'; ofType: null; }; } }; }; }; + 'AdjustmentType': { name: 'AdjustmentType'; enumValues: 'PROMOTION' | 'DISTRIBUTED_ORDER_PROMOTION' | 'OTHER'; }; + 'Administrator': { kind: 'OBJECT'; name: 'Administrator'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'emailAddress': { name: 'emailAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'firstName': { name: 'firstName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'lastName': { name: 'lastName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'user': { name: 'user'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'User'; ofType: null; }; } }; }; }; + 'AdministratorFilterParameter': { kind: 'INPUT_OBJECT'; name: 'AdministratorFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'firstName'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'lastName'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'emailAddress'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AdministratorFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AdministratorFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'AdministratorList': { kind: 'OBJECT'; name: 'AdministratorList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Administrator'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'AdministratorListOptions': { kind: 'INPUT_OBJECT'; name: 'AdministratorListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'AdministratorSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'AdministratorFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'AdministratorPaymentInput': { kind: 'INPUT_OBJECT'; name: 'AdministratorPaymentInput'; isOneOf: false; inputFields: [{ name: 'paymentMethod'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'metadata'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'AdministratorRefundInput': { kind: 'INPUT_OBJECT'; name: 'AdministratorRefundInput'; isOneOf: false; inputFields: [{ name: 'paymentId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'reason'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'amount'; type: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; defaultValue: null }]; }; + 'AdministratorSortParameter': { kind: 'INPUT_OBJECT'; name: 'AdministratorSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'firstName'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'lastName'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'emailAddress'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'Allocation': { kind: 'OBJECT'; name: 'Allocation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'orderLine': { name: 'orderLine'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'OrderLine'; ofType: null; }; } }; 'productVariant': { name: 'productVariant'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductVariant'; ofType: null; }; } }; 'quantity': { name: 'quantity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'StockMovementType'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'AlreadyRefundedError': { kind: 'OBJECT'; name: 'AlreadyRefundedError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'refundId': { name: 'refundId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; }; }; + 'ApiKey': { kind: 'OBJECT'; name: 'ApiKey'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'lastUsedAt': { name: 'lastUsedAt'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; } }; 'lookupId': { name: 'lookupId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'owner': { name: 'owner'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'User'; ofType: null; }; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ApiKeyTranslation'; ofType: null; }; }; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'user': { name: 'user'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'User'; ofType: null; }; } }; }; }; + 'ApiKeyFilterParameter': { kind: 'INPUT_OBJECT'; name: 'ApiKeyFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'lookupId'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'lastUsedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ApiKeyFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ApiKeyFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'ApiKeyList': { kind: 'OBJECT'; name: 'ApiKeyList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ApiKey'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'ApiKeyListOptions': { kind: 'INPUT_OBJECT'; name: 'ApiKeyListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'ApiKeySortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'ApiKeyFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'ApiKeySortParameter': { kind: 'INPUT_OBJECT'; name: 'ApiKeySortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'lookupId'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'lastUsedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'ApiKeyTranslation': { kind: 'OBJECT'; name: 'ApiKeyTranslation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'ApplyCouponCodeResult': { kind: 'UNION'; name: 'ApplyCouponCodeResult'; fields: {}; possibleTypes: 'CouponCodeExpiredError' | 'CouponCodeInvalidError' | 'CouponCodeLimitError' | 'Order'; }; + 'Asset': { kind: 'OBJECT'; name: 'Asset'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'fileSize': { name: 'fileSize'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'focalPoint': { name: 'focalPoint'; type: { kind: 'OBJECT'; name: 'Coordinate'; ofType: null; } }; 'height': { name: 'height'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'mimeType': { name: 'mimeType'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'preview': { name: 'preview'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'source': { name: 'source'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'tags': { name: 'tags'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Tag'; ofType: null; }; }; }; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AssetTranslation'; ofType: null; }; }; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'AssetType'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'width': { name: 'width'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'AssetFilterParameter': { kind: 'INPUT_OBJECT'; name: 'AssetFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'type'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'fileSize'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'mimeType'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'width'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'height'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'source'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'preview'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AssetFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AssetFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'AssetList': { kind: 'OBJECT'; name: 'AssetList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Asset'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'AssetListOptions': { kind: 'INPUT_OBJECT'; name: 'AssetListOptions'; isOneOf: false; inputFields: [{ name: 'tags'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'tagsOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }, { name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'AssetSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'AssetFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'AssetSortParameter': { kind: 'INPUT_OBJECT'; name: 'AssetSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'fileSize'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'mimeType'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'width'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'height'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'source'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'preview'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'AssetTranslation': { kind: 'OBJECT'; name: 'AssetTranslation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'AssetTranslationInput': { kind: 'INPUT_OBJECT'; name: 'AssetTranslationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'AssetType': { name: 'AssetType'; enumValues: 'IMAGE' | 'VIDEO' | 'BINARY'; }; + 'AssignAssetsToChannelInput': { kind: 'INPUT_OBJECT'; name: 'AssignAssetsToChannelInput'; isOneOf: false; inputFields: [{ name: 'assetIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'channelId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }]; }; + 'AssignCollectionsToChannelInput': { kind: 'INPUT_OBJECT'; name: 'AssignCollectionsToChannelInput'; isOneOf: false; inputFields: [{ name: 'collectionIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'channelId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }]; }; + 'AssignFacetsToChannelInput': { kind: 'INPUT_OBJECT'; name: 'AssignFacetsToChannelInput'; isOneOf: false; inputFields: [{ name: 'facetIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'channelId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }]; }; + 'AssignPaymentMethodsToChannelInput': { kind: 'INPUT_OBJECT'; name: 'AssignPaymentMethodsToChannelInput'; isOneOf: false; inputFields: [{ name: 'paymentMethodIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'channelId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }]; }; + 'AssignProductOptionGroupsToChannelInput': { kind: 'INPUT_OBJECT'; name: 'AssignProductOptionGroupsToChannelInput'; isOneOf: false; inputFields: [{ name: 'productOptionGroupIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'channelId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }]; }; + 'AssignProductVariantsToChannelInput': { kind: 'INPUT_OBJECT'; name: 'AssignProductVariantsToChannelInput'; isOneOf: false; inputFields: [{ name: 'productVariantIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'channelId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'priceFactor'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }]; }; + 'AssignProductsToChannelInput': { kind: 'INPUT_OBJECT'; name: 'AssignProductsToChannelInput'; isOneOf: false; inputFields: [{ name: 'productIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'channelId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'priceFactor'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }]; }; + 'AssignPromotionsToChannelInput': { kind: 'INPUT_OBJECT'; name: 'AssignPromotionsToChannelInput'; isOneOf: false; inputFields: [{ name: 'promotionIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'channelId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }]; }; + 'AssignShippingMethodsToChannelInput': { kind: 'INPUT_OBJECT'; name: 'AssignShippingMethodsToChannelInput'; isOneOf: false; inputFields: [{ name: 'shippingMethodIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'channelId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }]; }; + 'AssignStockLocationsToChannelInput': { kind: 'INPUT_OBJECT'; name: 'AssignStockLocationsToChannelInput'; isOneOf: false; inputFields: [{ name: 'stockLocationIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'channelId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }]; }; + 'AuthenticationInput': { kind: 'INPUT_OBJECT'; name: 'AuthenticationInput'; isOneOf: false; inputFields: [{ name: 'native'; type: { kind: 'INPUT_OBJECT'; name: 'NativeAuthInput'; ofType: null; }; defaultValue: null }]; }; + 'AuthenticationMethod': { kind: 'OBJECT'; name: 'AuthenticationMethod'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'strategy': { name: 'strategy'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'AuthenticationResult': { kind: 'UNION'; name: 'AuthenticationResult'; fields: {}; possibleTypes: 'CurrentUser' | 'InvalidCredentialsError'; }; + 'Boolean': unknown; + 'BooleanCustomFieldConfig': { kind: 'OBJECT'; name: 'BooleanCustomFieldConfig'; fields: { 'deprecated': { name: 'deprecated'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'deprecationReason': { name: 'deprecationReason'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'internal': { name: 'internal'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nullable': { name: 'nullable'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'readonly': { name: 'readonly'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'requiresPermission': { name: 'requiresPermission'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'BooleanListOperators': { kind: 'INPUT_OBJECT'; name: 'BooleanListOperators'; isOneOf: false; inputFields: [{ name: 'inList'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }]; }; + 'BooleanOperators': { kind: 'INPUT_OBJECT'; name: 'BooleanOperators'; isOneOf: false; inputFields: [{ name: 'eq'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'isNull'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; }; + 'BooleanStructFieldConfig': { kind: 'OBJECT'; name: 'BooleanStructFieldConfig'; fields: { 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'CancelActiveOrderError': { kind: 'OBJECT'; name: 'CancelActiveOrderError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'orderState': { name: 'orderState'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'CancelOrderInput': { kind: 'INPUT_OBJECT'; name: 'CancelOrderInput'; isOneOf: false; inputFields: [{ name: 'orderId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'lines'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'OrderLineInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'cancelShipping'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'reason'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; }; + 'CancelOrderResult': { kind: 'UNION'; name: 'CancelOrderResult'; fields: {}; possibleTypes: 'CancelActiveOrderError' | 'EmptyOrderLineSelectionError' | 'MultipleOrderError' | 'Order' | 'OrderStateTransitionError' | 'QuantityTooGreatError'; }; + 'CancelPaymentError': { kind: 'OBJECT'; name: 'CancelPaymentError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'paymentErrorMessage': { name: 'paymentErrorMessage'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'CancelPaymentResult': { kind: 'UNION'; name: 'CancelPaymentResult'; fields: {}; possibleTypes: 'CancelPaymentError' | 'Payment' | 'PaymentStateTransitionError'; }; + 'Cancellation': { kind: 'OBJECT'; name: 'Cancellation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'orderLine': { name: 'orderLine'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'OrderLine'; ofType: null; }; } }; 'productVariant': { name: 'productVariant'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductVariant'; ofType: null; }; } }; 'quantity': { name: 'quantity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'StockMovementType'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'Channel': { kind: 'OBJECT'; name: 'Channel'; fields: { 'availableCurrencyCodes': { name: 'availableCurrencyCodes'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'CurrencyCode'; ofType: null; }; }; }; } }; 'availableLanguageCodes': { name: 'availableLanguageCodes'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; }; } }; 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'currencyCode': { name: 'currencyCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'CurrencyCode'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'defaultCurrencyCode': { name: 'defaultCurrencyCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'CurrencyCode'; ofType: null; }; } }; 'defaultLanguageCode': { name: 'defaultLanguageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'defaultShippingZone': { name: 'defaultShippingZone'; type: { kind: 'OBJECT'; name: 'Zone'; ofType: null; } }; 'defaultTaxZone': { name: 'defaultTaxZone'; type: { kind: 'OBJECT'; name: 'Zone'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'outOfStockThreshold': { name: 'outOfStockThreshold'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'pricesIncludeTax': { name: 'pricesIncludeTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'seller': { name: 'seller'; type: { kind: 'OBJECT'; name: 'Seller'; ofType: null; } }; 'token': { name: 'token'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'trackInventory': { name: 'trackInventory'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'ChannelDefaultLanguageError': { kind: 'OBJECT'; name: 'ChannelDefaultLanguageError'; fields: { 'channelCode': { name: 'channelCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'language': { name: 'language'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'ChannelFilterParameter': { kind: 'INPUT_OBJECT'; name: 'ChannelFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'token'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'defaultLanguageCode'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'currencyCode'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'defaultCurrencyCode'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'trackInventory'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanOperators'; ofType: null; }; defaultValue: null }, { name: 'outOfStockThreshold'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'pricesIncludeTax'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ChannelFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ChannelFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'ChannelList': { kind: 'OBJECT'; name: 'ChannelList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Channel'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'ChannelListOptions': { kind: 'INPUT_OBJECT'; name: 'ChannelListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'ChannelSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'ChannelFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'ChannelSortParameter': { kind: 'INPUT_OBJECT'; name: 'ChannelSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'token'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'outOfStockThreshold'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'Collection': { kind: 'OBJECT'; name: 'Collection'; fields: { 'assets': { name: 'assets'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Asset'; ofType: null; }; }; }; } }; 'breadcrumbs': { name: 'breadcrumbs'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CollectionBreadcrumb'; ofType: null; }; }; }; } }; 'children': { name: 'children'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Collection'; ofType: null; }; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'featuredAsset': { name: 'featuredAsset'; type: { kind: 'OBJECT'; name: 'Asset'; ofType: null; } }; 'filters': { name: 'filters'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ConfigurableOperation'; ofType: null; }; }; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'inheritFilters': { name: 'inheritFilters'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'isPrivate': { name: 'isPrivate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'parent': { name: 'parent'; type: { kind: 'OBJECT'; name: 'Collection'; ofType: null; } }; 'parentId': { name: 'parentId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'position': { name: 'position'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'productVariantCount': { name: 'productVariantCount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'productVariants': { name: 'productVariants'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductVariantList'; ofType: null; }; } }; 'slug': { name: 'slug'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CollectionTranslation'; ofType: null; }; }; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'CollectionBreadcrumb': { kind: 'OBJECT'; name: 'CollectionBreadcrumb'; fields: { 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'slug': { name: 'slug'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'CollectionFilterParameter': { kind: 'INPUT_OBJECT'; name: 'CollectionFilterParameter'; isOneOf: false; inputFields: [{ name: 'isPrivate'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanOperators'; ofType: null; }; defaultValue: null }, { name: 'inheritFilters'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanOperators'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'slug'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'position'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'parentId'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'productVariantCount'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'CollectionFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'CollectionFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'CollectionList': { kind: 'OBJECT'; name: 'CollectionList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Collection'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'CollectionListOptions': { kind: 'INPUT_OBJECT'; name: 'CollectionListOptions'; isOneOf: false; inputFields: [{ name: 'topLevelOnly'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'CollectionSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'CollectionFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'CollectionResult': { kind: 'OBJECT'; name: 'CollectionResult'; fields: { 'collection': { name: 'collection'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Collection'; ofType: null; }; } }; 'count': { name: 'count'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'CollectionSortParameter': { kind: 'INPUT_OBJECT'; name: 'CollectionSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'slug'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'position'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'parentId'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'productVariantCount'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'CollectionTranslation': { kind: 'OBJECT'; name: 'CollectionTranslation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'slug': { name: 'slug'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'ConfigArg': { kind: 'OBJECT'; name: 'ConfigArg'; fields: { 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'value': { name: 'value'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'ConfigArgDefinition': { kind: 'OBJECT'; name: 'ConfigArgDefinition'; fields: { 'defaultValue': { name: 'defaultValue'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'label': { name: 'label'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'required': { name: 'required'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'ConfigArgInput': { kind: 'INPUT_OBJECT'; name: 'ConfigArgInput'; isOneOf: false; inputFields: [{ name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'value'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }]; }; + 'ConfigurableOperation': { kind: 'OBJECT'; name: 'ConfigurableOperation'; fields: { 'args': { name: 'args'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ConfigArg'; ofType: null; }; }; }; } }; 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'ConfigurableOperationDefinition': { kind: 'OBJECT'; name: 'ConfigurableOperationDefinition'; fields: { 'args': { name: 'args'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ConfigArgDefinition'; ofType: null; }; }; }; } }; 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'ConfigurableOperationInput': { kind: 'INPUT_OBJECT'; name: 'ConfigurableOperationInput'; isOneOf: false; inputFields: [{ name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'arguments'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ConfigArgInput'; ofType: null; }; }; }; }; defaultValue: null }]; }; + 'Coordinate': { kind: 'OBJECT'; name: 'Coordinate'; fields: { 'x': { name: 'x'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; } }; 'y': { name: 'y'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; } }; }; }; + 'CoordinateInput': { kind: 'INPUT_OBJECT'; name: 'CoordinateInput'; isOneOf: false; inputFields: [{ name: 'x'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; }; defaultValue: null }, { name: 'y'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; }; defaultValue: null }]; }; + 'Country': { kind: 'OBJECT'; name: 'Country'; fields: { 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'enabled': { name: 'enabled'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'parent': { name: 'parent'; type: { kind: 'INTERFACE'; name: 'Region'; ofType: null; } }; 'parentId': { name: 'parentId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'RegionTranslation'; ofType: null; }; }; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'CountryFilterParameter': { kind: 'INPUT_OBJECT'; name: 'CountryFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'type'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'enabled'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanOperators'; ofType: null; }; defaultValue: null }, { name: 'parentId'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'CountryFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'CountryFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'CountryList': { kind: 'OBJECT'; name: 'CountryList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Country'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'CountryListOptions': { kind: 'INPUT_OBJECT'; name: 'CountryListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'CountrySortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'CountryFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'CountrySortParameter': { kind: 'INPUT_OBJECT'; name: 'CountrySortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'type'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'parentId'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'CountryTranslationInput': { kind: 'INPUT_OBJECT'; name: 'CountryTranslationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CouponCodeExpiredError': { kind: 'OBJECT'; name: 'CouponCodeExpiredError'; fields: { 'couponCode': { name: 'couponCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'CouponCodeInvalidError': { kind: 'OBJECT'; name: 'CouponCodeInvalidError'; fields: { 'couponCode': { name: 'couponCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'CouponCodeLimitError': { kind: 'OBJECT'; name: 'CouponCodeLimitError'; fields: { 'couponCode': { name: 'couponCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'limit': { name: 'limit'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'CreateAddressInput': { kind: 'INPUT_OBJECT'; name: 'CreateAddressInput'; isOneOf: false; inputFields: [{ name: 'fullName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'company'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'streetLine1'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'streetLine2'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'city'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'province'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'postalCode'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'countryCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'phoneNumber'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'defaultShippingAddress'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'defaultBillingAddress'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CreateAdministratorInput': { kind: 'INPUT_OBJECT'; name: 'CreateAdministratorInput'; isOneOf: false; inputFields: [{ name: 'firstName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'lastName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'emailAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'password'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'roleIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CreateApiKeyInput': { kind: 'INPUT_OBJECT'; name: 'CreateApiKeyInput'; isOneOf: false; inputFields: [{ name: 'roleIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'CreateApiKeyTranslationInput'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CreateApiKeyResult': { kind: 'OBJECT'; name: 'CreateApiKeyResult'; fields: { 'apiKey': { name: 'apiKey'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'entityId': { name: 'entityId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; }; }; + 'CreateApiKeyTranslationInput': { kind: 'INPUT_OBJECT'; name: 'CreateApiKeyTranslationInput'; isOneOf: false; inputFields: [{ name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CreateAssetInput': { kind: 'INPUT_OBJECT'; name: 'CreateAssetInput'; isOneOf: false; inputFields: [{ name: 'file'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Upload'; ofType: null; }; }; defaultValue: null }, { name: 'tags'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'translations'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AssetTranslationInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CreateAssetResult': { kind: 'UNION'; name: 'CreateAssetResult'; fields: {}; possibleTypes: 'Asset' | 'MimeTypeError'; }; + 'CreateChannelInput': { kind: 'INPUT_OBJECT'; name: 'CreateChannelInput'; isOneOf: false; inputFields: [{ name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'token'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'defaultLanguageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; }; defaultValue: null }, { name: 'availableLanguageCodes'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; }; }; defaultValue: null }, { name: 'pricesIncludeTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }, { name: 'currencyCode'; type: { kind: 'ENUM'; name: 'CurrencyCode'; ofType: null; }; defaultValue: null }, { name: 'defaultCurrencyCode'; type: { kind: 'ENUM'; name: 'CurrencyCode'; ofType: null; }; defaultValue: null }, { name: 'availableCurrencyCodes'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'CurrencyCode'; ofType: null; }; }; }; defaultValue: null }, { name: 'trackInventory'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'outOfStockThreshold'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'defaultTaxZoneId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'defaultShippingZoneId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'sellerId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CreateChannelResult': { kind: 'UNION'; name: 'CreateChannelResult'; fields: {}; possibleTypes: 'Channel' | 'LanguageNotAvailableError'; }; + 'CreateCollectionInput': { kind: 'INPUT_OBJECT'; name: 'CreateCollectionInput'; isOneOf: false; inputFields: [{ name: 'isPrivate'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'featuredAssetId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'assetIds'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; defaultValue: null }, { name: 'parentId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'inheritFilters'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'filters'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ConfigurableOperationInput'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'CreateCollectionTranslationInput'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CreateCollectionTranslationInput': { kind: 'INPUT_OBJECT'; name: 'CreateCollectionTranslationInput'; isOneOf: false; inputFields: [{ name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'slug'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CreateCountryInput': { kind: 'INPUT_OBJECT'; name: 'CreateCountryInput'; isOneOf: false; inputFields: [{ name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'CountryTranslationInput'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'enabled'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CreateCustomerGroupInput': { kind: 'INPUT_OBJECT'; name: 'CreateCustomerGroupInput'; isOneOf: false; inputFields: [{ name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'customerIds'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CreateCustomerInput': { kind: 'INPUT_OBJECT'; name: 'CreateCustomerInput'; isOneOf: false; inputFields: [{ name: 'title'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'firstName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'lastName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'phoneNumber'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'emailAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CreateCustomerResult': { kind: 'UNION'; name: 'CreateCustomerResult'; fields: {}; possibleTypes: 'Customer' | 'EmailAddressConflictError'; }; + 'CreateFacetInput': { kind: 'INPUT_OBJECT'; name: 'CreateFacetInput'; isOneOf: false; inputFields: [{ name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'isPrivate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }, { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'FacetTranslationInput'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'values'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'CreateFacetValueWithFacetInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CreateFacetValueInput': { kind: 'INPUT_OBJECT'; name: 'CreateFacetValueInput'; isOneOf: false; inputFields: [{ name: 'facetId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'FacetValueTranslationInput'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CreateFacetValueWithFacetInput': { kind: 'INPUT_OBJECT'; name: 'CreateFacetValueWithFacetInput'; isOneOf: false; inputFields: [{ name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'FacetValueTranslationInput'; ofType: null; }; }; }; }; defaultValue: null }]; }; + 'CreateFulfillmentError': { kind: 'OBJECT'; name: 'CreateFulfillmentError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'fulfillmentHandlerError': { name: 'fulfillmentHandlerError'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'CreateGroupOptionInput': { kind: 'INPUT_OBJECT'; name: 'CreateGroupOptionInput'; isOneOf: false; inputFields: [{ name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ProductOptionGroupTranslationInput'; ofType: null; }; }; }; }; defaultValue: null }]; }; + 'CreatePaymentMethodInput': { kind: 'INPUT_OBJECT'; name: 'CreatePaymentMethodInput'; isOneOf: false; inputFields: [{ name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'enabled'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }, { name: 'checker'; type: { kind: 'INPUT_OBJECT'; name: 'ConfigurableOperationInput'; ofType: null; }; defaultValue: null }, { name: 'handler'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ConfigurableOperationInput'; ofType: null; }; }; defaultValue: null }, { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'PaymentMethodTranslationInput'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CreateProductInput': { kind: 'INPUT_OBJECT'; name: 'CreateProductInput'; isOneOf: false; inputFields: [{ name: 'featuredAssetId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'enabled'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'assetIds'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; defaultValue: null }, { name: 'facetValueIds'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; defaultValue: null }, { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ProductTranslationInput'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CreateProductOptionGroupInput': { kind: 'INPUT_OBJECT'; name: 'CreateProductOptionGroupInput'; isOneOf: false; inputFields: [{ name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ProductOptionGroupTranslationInput'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'options'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'CreateGroupOptionInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CreateProductOptionInput': { kind: 'INPUT_OBJECT'; name: 'CreateProductOptionInput'; isOneOf: false; inputFields: [{ name: 'productOptionGroupId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ProductOptionGroupTranslationInput'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CreateProductVariantInput': { kind: 'INPUT_OBJECT'; name: 'CreateProductVariantInput'; isOneOf: false; inputFields: [{ name: 'productId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'enabled'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ProductVariantTranslationInput'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'facetValueIds'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; defaultValue: null }, { name: 'sku'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'price'; type: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; defaultValue: null }, { name: 'prices'; type: { kind: 'LIST'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'CreateProductVariantPriceInput'; ofType: null; }; }; defaultValue: null }, { name: 'taxCategoryId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'optionIds'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; defaultValue: null }, { name: 'featuredAssetId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'assetIds'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; defaultValue: null }, { name: 'stockOnHand'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'stockLevels'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'StockLevelInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'outOfStockThreshold'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'useGlobalOutOfStockThreshold'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'trackInventory'; type: { kind: 'ENUM'; name: 'GlobalFlag'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CreateProductVariantOptionInput': { kind: 'INPUT_OBJECT'; name: 'CreateProductVariantOptionInput'; isOneOf: false; inputFields: [{ name: 'optionGroupId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ProductOptionTranslationInput'; ofType: null; }; }; }; }; defaultValue: null }]; }; + 'CreateProductVariantPriceInput': { kind: 'INPUT_OBJECT'; name: 'CreateProductVariantPriceInput'; isOneOf: false; inputFields: [{ name: 'currencyCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'CurrencyCode'; ofType: null; }; }; defaultValue: null }, { name: 'price'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CreatePromotionInput': { kind: 'INPUT_OBJECT'; name: 'CreatePromotionInput'; isOneOf: false; inputFields: [{ name: 'enabled'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }, { name: 'startsAt'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; defaultValue: null }, { name: 'endsAt'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; defaultValue: null }, { name: 'couponCode'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'perCustomerUsageLimit'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'usageLimit'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'conditions'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ConfigurableOperationInput'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'actions'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ConfigurableOperationInput'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'PromotionTranslationInput'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CreatePromotionResult': { kind: 'UNION'; name: 'CreatePromotionResult'; fields: {}; possibleTypes: 'MissingConditionsError' | 'Promotion'; }; + 'CreateProvinceInput': { kind: 'INPUT_OBJECT'; name: 'CreateProvinceInput'; isOneOf: false; inputFields: [{ name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ProvinceTranslationInput'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'enabled'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CreateRoleInput': { kind: 'INPUT_OBJECT'; name: 'CreateRoleInput'; isOneOf: false; inputFields: [{ name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'permissions'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'channelIds'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; defaultValue: null }]; }; + 'CreateSellerInput': { kind: 'INPUT_OBJECT'; name: 'CreateSellerInput'; isOneOf: false; inputFields: [{ name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CreateShippingMethodInput': { kind: 'INPUT_OBJECT'; name: 'CreateShippingMethodInput'; isOneOf: false; inputFields: [{ name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'fulfillmentHandler'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'checker'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ConfigurableOperationInput'; ofType: null; }; }; defaultValue: null }, { name: 'calculator'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ConfigurableOperationInput'; ofType: null; }; }; defaultValue: null }, { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ShippingMethodTranslationInput'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CreateStockLocationInput': { kind: 'INPUT_OBJECT'; name: 'CreateStockLocationInput'; isOneOf: false; inputFields: [{ name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'description'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CreateTagInput': { kind: 'INPUT_OBJECT'; name: 'CreateTagInput'; isOneOf: false; inputFields: [{ name: 'value'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }]; }; + 'CreateTaxCategoryInput': { kind: 'INPUT_OBJECT'; name: 'CreateTaxCategoryInput'; isOneOf: false; inputFields: [{ name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'isDefault'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CreateTaxRateInput': { kind: 'INPUT_OBJECT'; name: 'CreateTaxRateInput'; isOneOf: false; inputFields: [{ name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'enabled'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }, { name: 'value'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; }; defaultValue: null }, { name: 'categoryId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'zoneId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'customerGroupId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CreateZoneInput': { kind: 'INPUT_OBJECT'; name: 'CreateZoneInput'; isOneOf: false; inputFields: [{ name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'memberIds'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CurrencyCode': { name: 'CurrencyCode'; enumValues: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRU' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STN' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYU' | 'UZS' | 'VES' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL'; }; + 'CurrentUser': { kind: 'OBJECT'; name: 'CurrentUser'; fields: { 'channels': { name: 'channels'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CurrentUserChannel'; ofType: null; }; }; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'identifier': { name: 'identifier'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'CurrentUserChannel': { kind: 'OBJECT'; name: 'CurrentUserChannel'; fields: { 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'permissions': { name: 'permissions'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; }; } }; 'token': { name: 'token'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'CustomField': { kind: 'INTERFACE'; name: 'CustomField'; fields: { 'deprecated': { name: 'deprecated'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'deprecationReason': { name: 'deprecationReason'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'internal': { name: 'internal'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nullable': { name: 'nullable'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'readonly': { name: 'readonly'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'requiresPermission': { name: 'requiresPermission'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; possibleTypes: 'BooleanCustomFieldConfig' | 'DateTimeCustomFieldConfig' | 'FloatCustomFieldConfig' | 'IntCustomFieldConfig' | 'LocaleStringCustomFieldConfig' | 'LocaleTextCustomFieldConfig' | 'RelationCustomFieldConfig' | 'StringCustomFieldConfig' | 'StructCustomFieldConfig' | 'TextCustomFieldConfig'; }; + 'CustomFieldConfig': { kind: 'UNION'; name: 'CustomFieldConfig'; fields: {}; possibleTypes: 'BooleanCustomFieldConfig' | 'DateTimeCustomFieldConfig' | 'FloatCustomFieldConfig' | 'IntCustomFieldConfig' | 'LocaleStringCustomFieldConfig' | 'LocaleTextCustomFieldConfig' | 'RelationCustomFieldConfig' | 'StringCustomFieldConfig' | 'StructCustomFieldConfig' | 'TextCustomFieldConfig'; }; + 'CustomFields': { kind: 'OBJECT'; name: 'CustomFields'; fields: { 'Address': { name: 'Address'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'Administrator': { name: 'Administrator'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'ApiKey': { name: 'ApiKey'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'Asset': { name: 'Asset'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'Channel': { name: 'Channel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'Collection': { name: 'Collection'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'Customer': { name: 'Customer'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'CustomerGroup': { name: 'CustomerGroup'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'Facet': { name: 'Facet'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'FacetValue': { name: 'FacetValue'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'Fulfillment': { name: 'Fulfillment'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'GlobalSettings': { name: 'GlobalSettings'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'HistoryEntry': { name: 'HistoryEntry'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'Order': { name: 'Order'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'OrderLine': { name: 'OrderLine'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'Payment': { name: 'Payment'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'PaymentMethod': { name: 'PaymentMethod'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'Product': { name: 'Product'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'ProductOption': { name: 'ProductOption'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'ProductOptionGroup': { name: 'ProductOptionGroup'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'ProductVariant': { name: 'ProductVariant'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'ProductVariantPrice': { name: 'ProductVariantPrice'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'Promotion': { name: 'Promotion'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'Refund': { name: 'Refund'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'Region': { name: 'Region'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'Seller': { name: 'Seller'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'Session': { name: 'Session'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'ShippingLine': { name: 'ShippingLine'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'ShippingMethod': { name: 'ShippingMethod'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'StockLevel': { name: 'StockLevel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'StockLocation': { name: 'StockLocation'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'StockMovement': { name: 'StockMovement'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'TaxCategory': { name: 'TaxCategory'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'TaxRate': { name: 'TaxRate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'User': { name: 'User'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'Zone': { name: 'Zone'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; }; }; + 'Customer': { kind: 'OBJECT'; name: 'Customer'; fields: { 'addresses': { name: 'addresses'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Address'; ofType: null; }; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'emailAddress': { name: 'emailAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'firstName': { name: 'firstName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'groups': { name: 'groups'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CustomerGroup'; ofType: null; }; }; }; } }; 'history': { name: 'history'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'HistoryEntryList'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'lastName': { name: 'lastName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'orders': { name: 'orders'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'OrderList'; ofType: null; }; } }; 'phoneNumber': { name: 'phoneNumber'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'title': { name: 'title'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'user': { name: 'user'; type: { kind: 'OBJECT'; name: 'User'; ofType: null; } }; }; }; + 'CustomerFilterParameter': { kind: 'INPUT_OBJECT'; name: 'CustomerFilterParameter'; isOneOf: false; inputFields: [{ name: 'postalCode'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'title'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'firstName'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'lastName'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'phoneNumber'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'emailAddress'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'CustomerFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'CustomerFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'CustomerGroup': { kind: 'OBJECT'; name: 'CustomerGroup'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'customers': { name: 'customers'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CustomerList'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'CustomerGroupFilterParameter': { kind: 'INPUT_OBJECT'; name: 'CustomerGroupFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'CustomerGroupFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'CustomerGroupFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'CustomerGroupList': { kind: 'OBJECT'; name: 'CustomerGroupList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CustomerGroup'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'CustomerGroupListOptions': { kind: 'INPUT_OBJECT'; name: 'CustomerGroupListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'CustomerGroupSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'CustomerGroupFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'CustomerGroupSortParameter': { kind: 'INPUT_OBJECT'; name: 'CustomerGroupSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'CustomerList': { kind: 'OBJECT'; name: 'CustomerList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Customer'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'CustomerListOptions': { kind: 'INPUT_OBJECT'; name: 'CustomerListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'CustomerSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'CustomerFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'CustomerSortParameter': { kind: 'INPUT_OBJECT'; name: 'CustomerSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'title'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'firstName'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'lastName'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'phoneNumber'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'emailAddress'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'DateListOperators': { kind: 'INPUT_OBJECT'; name: 'DateListOperators'; isOneOf: false; inputFields: [{ name: 'inList'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; }; defaultValue: null }]; }; + 'DateOperators': { kind: 'INPUT_OBJECT'; name: 'DateOperators'; isOneOf: false; inputFields: [{ name: 'eq'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; defaultValue: null }, { name: 'before'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; defaultValue: null }, { name: 'after'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; defaultValue: null }, { name: 'between'; type: { kind: 'INPUT_OBJECT'; name: 'DateRange'; ofType: null; }; defaultValue: null }, { name: 'isNull'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; }; + 'DateRange': { kind: 'INPUT_OBJECT'; name: 'DateRange'; isOneOf: false; inputFields: [{ name: 'start'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; }; defaultValue: null }, { name: 'end'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; }; defaultValue: null }]; }; + 'DateTime': unknown; + 'DateTimeCustomFieldConfig': { kind: 'OBJECT'; name: 'DateTimeCustomFieldConfig'; fields: { 'deprecated': { name: 'deprecated'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'deprecationReason': { name: 'deprecationReason'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'internal': { name: 'internal'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'max': { name: 'max'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'min': { name: 'min'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nullable': { name: 'nullable'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'readonly': { name: 'readonly'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'requiresPermission': { name: 'requiresPermission'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; } }; 'step': { name: 'step'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'DateTimeStructFieldConfig': { kind: 'OBJECT'; name: 'DateTimeStructFieldConfig'; fields: { 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'max': { name: 'max'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'min': { name: 'min'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'step': { name: 'step'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'DeleteAssetInput': { kind: 'INPUT_OBJECT'; name: 'DeleteAssetInput'; isOneOf: false; inputFields: [{ name: 'assetId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'force'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'deleteFromAllChannels'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; }; + 'DeleteAssetsInput': { kind: 'INPUT_OBJECT'; name: 'DeleteAssetsInput'; isOneOf: false; inputFields: [{ name: 'assetIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'force'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'deleteFromAllChannels'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; }; + 'DeleteStockLocationInput': { kind: 'INPUT_OBJECT'; name: 'DeleteStockLocationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'transferToLocationId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }]; }; + 'DeletionResponse': { kind: 'OBJECT'; name: 'DeletionResponse'; fields: { 'message': { name: 'message'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'result': { name: 'result'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'DeletionResult'; ofType: null; }; } }; }; }; + 'DeletionResult': { name: 'DeletionResult'; enumValues: 'DELETED' | 'NOT_DELETED'; }; + 'Discount': { kind: 'OBJECT'; name: 'Discount'; fields: { 'adjustmentSource': { name: 'adjustmentSource'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'amount': { name: 'amount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'amountWithTax': { name: 'amountWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'AdjustmentType'; ofType: null; }; } }; }; }; + 'DuplicateEntityError': { kind: 'OBJECT'; name: 'DuplicateEntityError'; fields: { 'duplicationError': { name: 'duplicationError'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'DuplicateEntityInput': { kind: 'INPUT_OBJECT'; name: 'DuplicateEntityInput'; isOneOf: false; inputFields: [{ name: 'entityName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'entityId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'duplicatorInput'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ConfigurableOperationInput'; ofType: null; }; }; defaultValue: null }]; }; + 'DuplicateEntityResult': { kind: 'UNION'; name: 'DuplicateEntityResult'; fields: {}; possibleTypes: 'DuplicateEntityError' | 'DuplicateEntitySuccess'; }; + 'DuplicateEntitySuccess': { kind: 'OBJECT'; name: 'DuplicateEntitySuccess'; fields: { 'newEntityId': { name: 'newEntityId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; }; }; + 'EmailAddressConflictError': { kind: 'OBJECT'; name: 'EmailAddressConflictError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'EmptyOrderLineSelectionError': { kind: 'OBJECT'; name: 'EmptyOrderLineSelectionError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'EntityCustomFields': { kind: 'OBJECT'; name: 'EntityCustomFields'; fields: { 'customFields': { name: 'customFields'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CustomFieldConfig'; ofType: null; }; }; }; } }; 'entityName': { name: 'entityName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'EntityDuplicatorDefinition': { kind: 'OBJECT'; name: 'EntityDuplicatorDefinition'; fields: { 'args': { name: 'args'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ConfigArgDefinition'; ofType: null; }; }; }; } }; 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'forEntities': { name: 'forEntities'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; } }; 'requiresPermission': { name: 'requiresPermission'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; }; } }; }; }; + 'ErrorCode': { name: 'ErrorCode'; enumValues: 'UNKNOWN_ERROR' | 'MIME_TYPE_ERROR' | 'LANGUAGE_NOT_AVAILABLE_ERROR' | 'DUPLICATE_ENTITY_ERROR' | 'FACET_IN_USE_ERROR' | 'CHANNEL_DEFAULT_LANGUAGE_ERROR' | 'SETTLE_PAYMENT_ERROR' | 'CANCEL_PAYMENT_ERROR' | 'EMPTY_ORDER_LINE_SELECTION_ERROR' | 'ITEMS_ALREADY_FULFILLED_ERROR' | 'INVALID_FULFILLMENT_HANDLER_ERROR' | 'CREATE_FULFILLMENT_ERROR' | 'INSUFFICIENT_STOCK_ON_HAND_ERROR' | 'MULTIPLE_ORDER_ERROR' | 'CANCEL_ACTIVE_ORDER_ERROR' | 'PAYMENT_ORDER_MISMATCH_ERROR' | 'REFUND_ORDER_STATE_ERROR' | 'NOTHING_TO_REFUND_ERROR' | 'ALREADY_REFUNDED_ERROR' | 'QUANTITY_TOO_GREAT_ERROR' | 'REFUND_AMOUNT_ERROR' | 'REFUND_STATE_TRANSITION_ERROR' | 'PAYMENT_STATE_TRANSITION_ERROR' | 'FULFILLMENT_STATE_TRANSITION_ERROR' | 'ORDER_MODIFICATION_STATE_ERROR' | 'NO_CHANGES_SPECIFIED_ERROR' | 'PAYMENT_METHOD_MISSING_ERROR' | 'REFUND_PAYMENT_ID_MISSING_ERROR' | 'MANUAL_PAYMENT_STATE_ERROR' | 'PRODUCT_OPTION_GROUP_IN_USE_ERROR' | 'PRODUCT_OPTION_IN_USE_ERROR' | 'MISSING_CONDITIONS_ERROR' | 'NATIVE_AUTH_STRATEGY_ERROR' | 'INVALID_CREDENTIALS_ERROR' | 'ORDER_STATE_TRANSITION_ERROR' | 'EMAIL_ADDRESS_CONFLICT_ERROR' | 'GUEST_CHECKOUT_ERROR' | 'ORDER_LIMIT_ERROR' | 'NEGATIVE_QUANTITY_ERROR' | 'INSUFFICIENT_STOCK_ERROR' | 'COUPON_CODE_INVALID_ERROR' | 'COUPON_CODE_EXPIRED_ERROR' | 'COUPON_CODE_LIMIT_ERROR' | 'ORDER_MODIFICATION_ERROR' | 'INELIGIBLE_SHIPPING_METHOD_ERROR' | 'NO_ACTIVE_ORDER_ERROR' | 'ORDER_INTERCEPTOR_ERROR'; }; + 'ErrorResult': { kind: 'INTERFACE'; name: 'ErrorResult'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; possibleTypes: 'AlreadyRefundedError' | 'CancelActiveOrderError' | 'CancelPaymentError' | 'ChannelDefaultLanguageError' | 'CouponCodeExpiredError' | 'CouponCodeInvalidError' | 'CouponCodeLimitError' | 'CreateFulfillmentError' | 'DuplicateEntityError' | 'EmailAddressConflictError' | 'EmptyOrderLineSelectionError' | 'FacetInUseError' | 'FulfillmentStateTransitionError' | 'GuestCheckoutError' | 'IneligibleShippingMethodError' | 'InsufficientStockError' | 'InsufficientStockOnHandError' | 'InvalidCredentialsError' | 'InvalidFulfillmentHandlerError' | 'ItemsAlreadyFulfilledError' | 'LanguageNotAvailableError' | 'ManualPaymentStateError' | 'MimeTypeError' | 'MissingConditionsError' | 'MultipleOrderError' | 'NativeAuthStrategyError' | 'NegativeQuantityError' | 'NoActiveOrderError' | 'NoChangesSpecifiedError' | 'NothingToRefundError' | 'OrderInterceptorError' | 'OrderLimitError' | 'OrderModificationError' | 'OrderModificationStateError' | 'OrderStateTransitionError' | 'PaymentMethodMissingError' | 'PaymentOrderMismatchError' | 'PaymentStateTransitionError' | 'ProductOptionGroupInUseError' | 'ProductOptionInUseError' | 'QuantityTooGreatError' | 'RefundAmountError' | 'RefundOrderStateError' | 'RefundPaymentIdMissingError' | 'RefundStateTransitionError' | 'SettlePaymentError'; }; + 'Facet': { kind: 'OBJECT'; name: 'Facet'; fields: { 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'isPrivate': { name: 'isPrivate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FacetTranslation'; ofType: null; }; }; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'valueList': { name: 'valueList'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FacetValueList'; ofType: null; }; } }; 'values': { name: 'values'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FacetValue'; ofType: null; }; }; }; } }; }; }; + 'FacetFilterParameter': { kind: 'INPUT_OBJECT'; name: 'FacetFilterParameter'; isOneOf: false; inputFields: [{ name: 'isPrivate'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanOperators'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'FacetFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'FacetFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'FacetInUseError': { kind: 'OBJECT'; name: 'FacetInUseError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'facetCode': { name: 'facetCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'productCount': { name: 'productCount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'variantCount': { name: 'variantCount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'FacetList': { kind: 'OBJECT'; name: 'FacetList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Facet'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'FacetListOptions': { kind: 'INPUT_OBJECT'; name: 'FacetListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'FacetSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'FacetFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'FacetSortParameter': { kind: 'INPUT_OBJECT'; name: 'FacetSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'FacetTranslation': { kind: 'OBJECT'; name: 'FacetTranslation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'FacetTranslationInput': { kind: 'INPUT_OBJECT'; name: 'FacetTranslationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'FacetValue': { kind: 'OBJECT'; name: 'FacetValue'; fields: { 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'facet': { name: 'facet'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Facet'; ofType: null; }; } }; 'facetId': { name: 'facetId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FacetValueTranslation'; ofType: null; }; }; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'FacetValueFilterInput': { kind: 'INPUT_OBJECT'; name: 'FacetValueFilterInput'; isOneOf: false; inputFields: [{ name: 'and'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; defaultValue: null }]; }; + 'FacetValueFilterParameter': { kind: 'INPUT_OBJECT'; name: 'FacetValueFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'facetId'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'FacetValueFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'FacetValueFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'FacetValueList': { kind: 'OBJECT'; name: 'FacetValueList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FacetValue'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'FacetValueListOptions': { kind: 'INPUT_OBJECT'; name: 'FacetValueListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'FacetValueSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'FacetValueFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'FacetValueResult': { kind: 'OBJECT'; name: 'FacetValueResult'; fields: { 'count': { name: 'count'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'facetValue': { name: 'facetValue'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FacetValue'; ofType: null; }; } }; }; }; + 'FacetValueSortParameter': { kind: 'INPUT_OBJECT'; name: 'FacetValueSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'facetId'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'FacetValueTranslation': { kind: 'OBJECT'; name: 'FacetValueTranslation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'FacetValueTranslationInput': { kind: 'INPUT_OBJECT'; name: 'FacetValueTranslationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'Float': unknown; + 'FloatCustomFieldConfig': { kind: 'OBJECT'; name: 'FloatCustomFieldConfig'; fields: { 'deprecated': { name: 'deprecated'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'deprecationReason': { name: 'deprecationReason'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'internal': { name: 'internal'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'max': { name: 'max'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; } }; 'min': { name: 'min'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nullable': { name: 'nullable'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'readonly': { name: 'readonly'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'requiresPermission': { name: 'requiresPermission'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; } }; 'step': { name: 'step'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'FloatStructFieldConfig': { kind: 'OBJECT'; name: 'FloatStructFieldConfig'; fields: { 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'max': { name: 'max'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; } }; 'min': { name: 'min'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'step': { name: 'step'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'FulfillOrderInput': { kind: 'INPUT_OBJECT'; name: 'FulfillOrderInput'; isOneOf: false; inputFields: [{ name: 'lines'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'OrderLineInput'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'handler'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ConfigurableOperationInput'; ofType: null; }; }; defaultValue: null }]; }; + 'Fulfillment': { kind: 'OBJECT'; name: 'Fulfillment'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'lines': { name: 'lines'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FulfillmentLine'; ofType: null; }; }; }; } }; 'method': { name: 'method'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nextStates': { name: 'nextStates'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; } }; 'state': { name: 'state'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'summary': { name: 'summary'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FulfillmentLine'; ofType: null; }; }; }; } }; 'trackingCode': { name: 'trackingCode'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'FulfillmentLine': { kind: 'OBJECT'; name: 'FulfillmentLine'; fields: { 'fulfillment': { name: 'fulfillment'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Fulfillment'; ofType: null; }; } }; 'fulfillmentId': { name: 'fulfillmentId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'orderLine': { name: 'orderLine'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'OrderLine'; ofType: null; }; } }; 'orderLineId': { name: 'orderLineId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'quantity': { name: 'quantity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'FulfillmentStateTransitionError': { kind: 'OBJECT'; name: 'FulfillmentStateTransitionError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'fromState': { name: 'fromState'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'toState': { name: 'toState'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'transitionError': { name: 'transitionError'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'GlobalFlag': { name: 'GlobalFlag'; enumValues: 'TRUE' | 'FALSE' | 'INHERIT'; }; + 'GlobalSettings': { kind: 'OBJECT'; name: 'GlobalSettings'; fields: { 'availableLanguages': { name: 'availableLanguages'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; }; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'outOfStockThreshold': { name: 'outOfStockThreshold'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'serverConfig': { name: 'serverConfig'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ServerConfig'; ofType: null; }; } }; 'trackInventory': { name: 'trackInventory'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'GuestCheckoutError': { kind: 'OBJECT'; name: 'GuestCheckoutError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'errorDetail': { name: 'errorDetail'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'HistoryEntry': { kind: 'OBJECT'; name: 'HistoryEntry'; fields: { 'administrator': { name: 'administrator'; type: { kind: 'OBJECT'; name: 'Administrator'; ofType: null; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'data': { name: 'data'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'isPublic': { name: 'isPublic'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'HistoryEntryType'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'HistoryEntryFilterParameter': { kind: 'INPUT_OBJECT'; name: 'HistoryEntryFilterParameter'; isOneOf: false; inputFields: [{ name: 'isPublic'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanOperators'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'type'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'HistoryEntryFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'HistoryEntryFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'HistoryEntryList': { kind: 'OBJECT'; name: 'HistoryEntryList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'HistoryEntry'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'HistoryEntryListOptions': { kind: 'INPUT_OBJECT'; name: 'HistoryEntryListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'HistoryEntrySortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'HistoryEntryFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'HistoryEntrySortParameter': { kind: 'INPUT_OBJECT'; name: 'HistoryEntrySortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'HistoryEntryType': { name: 'HistoryEntryType'; enumValues: 'CUSTOMER_REGISTERED' | 'CUSTOMER_VERIFIED' | 'CUSTOMER_DETAIL_UPDATED' | 'CUSTOMER_ADDED_TO_GROUP' | 'CUSTOMER_REMOVED_FROM_GROUP' | 'CUSTOMER_ADDRESS_CREATED' | 'CUSTOMER_ADDRESS_UPDATED' | 'CUSTOMER_ADDRESS_DELETED' | 'CUSTOMER_PASSWORD_UPDATED' | 'CUSTOMER_PASSWORD_RESET_REQUESTED' | 'CUSTOMER_PASSWORD_RESET_VERIFIED' | 'CUSTOMER_EMAIL_UPDATE_REQUESTED' | 'CUSTOMER_EMAIL_UPDATE_VERIFIED' | 'CUSTOMER_NOTE' | 'ORDER_STATE_TRANSITION' | 'ORDER_PAYMENT_TRANSITION' | 'ORDER_FULFILLMENT' | 'ORDER_CANCELLATION' | 'ORDER_REFUND_TRANSITION' | 'ORDER_FULFILLMENT_TRANSITION' | 'ORDER_NOTE' | 'ORDER_COUPON_APPLIED' | 'ORDER_COUPON_REMOVED' | 'ORDER_MODIFIED' | 'ORDER_CUSTOMER_UPDATED' | 'ORDER_CURRENCY_UPDATED'; }; + 'ID': unknown; + 'IDListOperators': { kind: 'INPUT_OBJECT'; name: 'IDListOperators'; isOneOf: false; inputFields: [{ name: 'inList'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }]; }; + 'IDOperators': { kind: 'INPUT_OBJECT'; name: 'IDOperators'; isOneOf: false; inputFields: [{ name: 'eq'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'notEq'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'in'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'notIn'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'isNull'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; }; + 'ImportInfo': { kind: 'OBJECT'; name: 'ImportInfo'; fields: { 'errors': { name: 'errors'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; } }; 'imported': { name: 'imported'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'processed': { name: 'processed'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'IneligibleShippingMethodError': { kind: 'OBJECT'; name: 'IneligibleShippingMethodError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'InsufficientStockError': { kind: 'OBJECT'; name: 'InsufficientStockError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'order': { name: 'order'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Order'; ofType: null; }; } }; 'quantityAvailable': { name: 'quantityAvailable'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'InsufficientStockOnHandError': { kind: 'OBJECT'; name: 'InsufficientStockOnHandError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'productVariantId': { name: 'productVariantId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'productVariantName': { name: 'productVariantName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'stockOnHand': { name: 'stockOnHand'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'Int': unknown; + 'IntCustomFieldConfig': { kind: 'OBJECT'; name: 'IntCustomFieldConfig'; fields: { 'deprecated': { name: 'deprecated'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'deprecationReason': { name: 'deprecationReason'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'internal': { name: 'internal'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'max': { name: 'max'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'min': { name: 'min'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nullable': { name: 'nullable'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'readonly': { name: 'readonly'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'requiresPermission': { name: 'requiresPermission'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; } }; 'step': { name: 'step'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'IntStructFieldConfig': { kind: 'OBJECT'; name: 'IntStructFieldConfig'; fields: { 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'max': { name: 'max'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'min': { name: 'min'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'step': { name: 'step'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'InvalidCredentialsError': { kind: 'OBJECT'; name: 'InvalidCredentialsError'; fields: { 'authenticationError': { name: 'authenticationError'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'InvalidFulfillmentHandlerError': { kind: 'OBJECT'; name: 'InvalidFulfillmentHandlerError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'ItemsAlreadyFulfilledError': { kind: 'OBJECT'; name: 'ItemsAlreadyFulfilledError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'JSON': unknown; + 'Job': { kind: 'OBJECT'; name: 'Job'; fields: { 'attempts': { name: 'attempts'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'data': { name: 'data'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'duration': { name: 'duration'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'error': { name: 'error'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'isSettled': { name: 'isSettled'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'progress': { name: 'progress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; } }; 'queueName': { name: 'queueName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'result': { name: 'result'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'retries': { name: 'retries'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'settledAt': { name: 'settledAt'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; } }; 'startedAt': { name: 'startedAt'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; } }; 'state': { name: 'state'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'JobState'; ofType: null; }; } }; }; }; + 'JobBufferSize': { kind: 'OBJECT'; name: 'JobBufferSize'; fields: { 'bufferId': { name: 'bufferId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'size': { name: 'size'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'JobFilterParameter': { kind: 'INPUT_OBJECT'; name: 'JobFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'startedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'settledAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'queueName'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'state'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'progress'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'isSettled'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanOperators'; ofType: null; }; defaultValue: null }, { name: 'duration'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'retries'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'attempts'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'JobFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'JobFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'JobList': { kind: 'OBJECT'; name: 'JobList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Job'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'JobListOptions': { kind: 'INPUT_OBJECT'; name: 'JobListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'JobSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'JobFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'JobQueue': { kind: 'OBJECT'; name: 'JobQueue'; fields: { 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'running': { name: 'running'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; }; }; + 'JobSortParameter': { kind: 'INPUT_OBJECT'; name: 'JobSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'startedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'settledAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'queueName'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'progress'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'duration'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'retries'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'attempts'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'JobState': { name: 'JobState'; enumValues: 'PENDING' | 'RUNNING' | 'COMPLETED' | 'RETRYING' | 'FAILED' | 'CANCELLED'; }; + 'LanguageCode': { name: 'LanguageCode'; enumValues: 'af' | 'ak' | 'sq' | 'am' | 'ar' | 'hy' | 'as' | 'az' | 'bm' | 'bn' | 'eu' | 'be' | 'bs' | 'br' | 'bg' | 'my' | 'ca' | 'ce' | 'zh' | 'zh_Hans' | 'zh_Hant' | 'cu' | 'kw' | 'co' | 'hr' | 'cs' | 'da' | 'nl' | 'nl_BE' | 'dz' | 'en' | 'en_AU' | 'en_CA' | 'en_GB' | 'en_US' | 'eo' | 'et' | 'ee' | 'fo' | 'fi' | 'fr' | 'fr_CA' | 'fr_CH' | 'ff' | 'gl' | 'lg' | 'ka' | 'de' | 'de_AT' | 'de_CH' | 'el' | 'gu' | 'ht' | 'ha' | 'he' | 'hi' | 'hu' | 'is' | 'ig' | 'id' | 'ia' | 'ga' | 'it' | 'ja' | 'jv' | 'kl' | 'kn' | 'ks' | 'kk' | 'km' | 'ki' | 'rw' | 'ko' | 'ku' | 'ky' | 'lo' | 'la' | 'lv' | 'ln' | 'lt' | 'lu' | 'lb' | 'mk' | 'mg' | 'ms' | 'ml' | 'mt' | 'gv' | 'mi' | 'mr' | 'mn' | 'ne' | 'nd' | 'se' | 'nb' | 'nn' | 'ny' | 'or' | 'om' | 'os' | 'ps' | 'fa' | 'fa_AF' | 'pl' | 'pt' | 'pt_BR' | 'pt_PT' | 'pa' | 'qu' | 'ro' | 'ro_MD' | 'rm' | 'rn' | 'ru' | 'sm' | 'sg' | 'sa' | 'gd' | 'sr' | 'sn' | 'ii' | 'sd' | 'si' | 'sk' | 'sl' | 'so' | 'st' | 'es' | 'es_ES' | 'es_MX' | 'su' | 'sw' | 'sw_CD' | 'sv' | 'tg' | 'ta' | 'tt' | 'te' | 'th' | 'bo' | 'ti' | 'to' | 'tr' | 'tk' | 'uk' | 'ur' | 'ug' | 'uz' | 'vi' | 'vo' | 'cy' | 'fy' | 'wo' | 'xh' | 'yi' | 'yo' | 'zu'; }; + 'LanguageNotAvailableError': { kind: 'OBJECT'; name: 'LanguageNotAvailableError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'LocaleStringCustomFieldConfig': { kind: 'OBJECT'; name: 'LocaleStringCustomFieldConfig'; fields: { 'deprecated': { name: 'deprecated'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'deprecationReason': { name: 'deprecationReason'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'internal': { name: 'internal'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'length': { name: 'length'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nullable': { name: 'nullable'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'pattern': { name: 'pattern'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'readonly': { name: 'readonly'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'requiresPermission': { name: 'requiresPermission'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'LocaleTextCustomFieldConfig': { kind: 'OBJECT'; name: 'LocaleTextCustomFieldConfig'; fields: { 'deprecated': { name: 'deprecated'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'deprecationReason': { name: 'deprecationReason'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'internal': { name: 'internal'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nullable': { name: 'nullable'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'readonly': { name: 'readonly'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'requiresPermission': { name: 'requiresPermission'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'LocalizedString': { kind: 'OBJECT'; name: 'LocalizedString'; fields: { 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'value': { name: 'value'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'LogicalOperator': { name: 'LogicalOperator'; enumValues: 'AND' | 'OR'; }; + 'ManualPaymentInput': { kind: 'INPUT_OBJECT'; name: 'ManualPaymentInput'; isOneOf: false; inputFields: [{ name: 'orderId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'method'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'transactionId'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'metadata'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'ManualPaymentStateError': { kind: 'OBJECT'; name: 'ManualPaymentStateError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'MetricInterval': { name: 'MetricInterval'; enumValues: 'Daily'; }; + 'MetricSummary': { kind: 'OBJECT'; name: 'MetricSummary'; fields: { 'entries': { name: 'entries'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'MetricSummaryEntry'; ofType: null; }; }; }; } }; 'interval': { name: 'interval'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'MetricInterval'; ofType: null; }; } }; 'title': { name: 'title'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'MetricType'; ofType: null; }; } }; }; }; + 'MetricSummaryEntry': { kind: 'OBJECT'; name: 'MetricSummaryEntry'; fields: { 'label': { name: 'label'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'value': { name: 'value'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; } }; }; }; + 'MetricSummaryInput': { kind: 'INPUT_OBJECT'; name: 'MetricSummaryInput'; isOneOf: false; inputFields: [{ name: 'interval'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'MetricInterval'; ofType: null; }; }; defaultValue: null }, { name: 'types'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'MetricType'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'refresh'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; }; + 'MetricType': { name: 'MetricType'; enumValues: 'OrderCount' | 'OrderTotal' | 'AverageOrderValue'; }; + 'MimeTypeError': { kind: 'OBJECT'; name: 'MimeTypeError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'fileName': { name: 'fileName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'mimeType': { name: 'mimeType'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'MissingConditionsError': { kind: 'OBJECT'; name: 'MissingConditionsError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'ModifyOrderInput': { kind: 'INPUT_OBJECT'; name: 'ModifyOrderInput'; isOneOf: false; inputFields: [{ name: 'dryRun'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }, { name: 'orderId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'addItems'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AddItemInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'adjustOrderLines'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'OrderLineInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'surcharges'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SurchargeInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'updateShippingAddress'; type: { kind: 'INPUT_OBJECT'; name: 'UpdateOrderAddressInput'; ofType: null; }; defaultValue: null }, { name: 'updateBillingAddress'; type: { kind: 'INPUT_OBJECT'; name: 'UpdateOrderAddressInput'; ofType: null; }; defaultValue: null }, { name: 'note'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'refund'; type: { kind: 'INPUT_OBJECT'; name: 'AdministratorRefundInput'; ofType: null; }; defaultValue: null }, { name: 'refunds'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AdministratorRefundInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'options'; type: { kind: 'INPUT_OBJECT'; name: 'ModifyOrderOptions'; ofType: null; }; defaultValue: null }, { name: 'couponCodes'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'shippingMethodIds'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; defaultValue: null }]; }; + 'ModifyOrderOptions': { kind: 'INPUT_OBJECT'; name: 'ModifyOrderOptions'; isOneOf: false; inputFields: [{ name: 'freezePromotions'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'recalculateShipping'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; }; + 'ModifyOrderResult': { kind: 'UNION'; name: 'ModifyOrderResult'; fields: {}; possibleTypes: 'CouponCodeExpiredError' | 'CouponCodeInvalidError' | 'CouponCodeLimitError' | 'IneligibleShippingMethodError' | 'InsufficientStockError' | 'NegativeQuantityError' | 'NoChangesSpecifiedError' | 'Order' | 'OrderLimitError' | 'OrderModificationStateError' | 'PaymentMethodMissingError' | 'RefundPaymentIdMissingError'; }; + 'Money': unknown; + 'MoveCollectionInput': { kind: 'INPUT_OBJECT'; name: 'MoveCollectionInput'; isOneOf: false; inputFields: [{ name: 'collectionId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'parentId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'index'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }]; }; + 'MultipleOrderError': { kind: 'OBJECT'; name: 'MultipleOrderError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'Mutation': { kind: 'OBJECT'; name: 'Mutation'; fields: { 'addCustomersToGroup': { name: 'addCustomersToGroup'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CustomerGroup'; ofType: null; }; } }; 'addFulfillmentToOrder': { name: 'addFulfillmentToOrder'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'AddFulfillmentToOrderResult'; ofType: null; }; } }; 'addItemToDraftOrder': { name: 'addItemToDraftOrder'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'UpdateOrderItemsResult'; ofType: null; }; } }; 'addManualPaymentToOrder': { name: 'addManualPaymentToOrder'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'AddManualPaymentToOrderResult'; ofType: null; }; } }; 'addMembersToZone': { name: 'addMembersToZone'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Zone'; ofType: null; }; } }; 'addNoteToCustomer': { name: 'addNoteToCustomer'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Customer'; ofType: null; }; } }; 'addNoteToOrder': { name: 'addNoteToOrder'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Order'; ofType: null; }; } }; 'addOptionGroupToProduct': { name: 'addOptionGroupToProduct'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Product'; ofType: null; }; } }; 'adjustDraftOrderLine': { name: 'adjustDraftOrderLine'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'UpdateOrderItemsResult'; ofType: null; }; } }; 'applyCouponCodeToDraftOrder': { name: 'applyCouponCodeToDraftOrder'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'ApplyCouponCodeResult'; ofType: null; }; } }; 'assignAssetsToChannel': { name: 'assignAssetsToChannel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Asset'; ofType: null; }; }; }; } }; 'assignCollectionsToChannel': { name: 'assignCollectionsToChannel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Collection'; ofType: null; }; }; }; } }; 'assignFacetsToChannel': { name: 'assignFacetsToChannel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Facet'; ofType: null; }; }; }; } }; 'assignPaymentMethodsToChannel': { name: 'assignPaymentMethodsToChannel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PaymentMethod'; ofType: null; }; }; }; } }; 'assignProductOptionGroupsToChannel': { name: 'assignProductOptionGroupsToChannel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductOptionGroup'; ofType: null; }; }; }; } }; 'assignProductVariantsToChannel': { name: 'assignProductVariantsToChannel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductVariant'; ofType: null; }; }; }; } }; 'assignProductsToChannel': { name: 'assignProductsToChannel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Product'; ofType: null; }; }; }; } }; 'assignPromotionsToChannel': { name: 'assignPromotionsToChannel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Promotion'; ofType: null; }; }; }; } }; 'assignRoleToAdministrator': { name: 'assignRoleToAdministrator'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Administrator'; ofType: null; }; } }; 'assignShippingMethodsToChannel': { name: 'assignShippingMethodsToChannel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ShippingMethod'; ofType: null; }; }; }; } }; 'assignStockLocationsToChannel': { name: 'assignStockLocationsToChannel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'StockLocation'; ofType: null; }; }; }; } }; 'authenticate': { name: 'authenticate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'AuthenticationResult'; ofType: null; }; } }; 'cancelJob': { name: 'cancelJob'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Job'; ofType: null; }; } }; 'cancelOrder': { name: 'cancelOrder'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CancelOrderResult'; ofType: null; }; } }; 'cancelPayment': { name: 'cancelPayment'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CancelPaymentResult'; ofType: null; }; } }; 'createAdministrator': { name: 'createAdministrator'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Administrator'; ofType: null; }; } }; 'createApiKey': { name: 'createApiKey'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CreateApiKeyResult'; ofType: null; }; } }; 'createAssets': { name: 'createAssets'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CreateAssetResult'; ofType: null; }; }; }; } }; 'createChannel': { name: 'createChannel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CreateChannelResult'; ofType: null; }; } }; 'createCollection': { name: 'createCollection'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Collection'; ofType: null; }; } }; 'createCountry': { name: 'createCountry'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Country'; ofType: null; }; } }; 'createCustomer': { name: 'createCustomer'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CreateCustomerResult'; ofType: null; }; } }; 'createCustomerAddress': { name: 'createCustomerAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Address'; ofType: null; }; } }; 'createCustomerGroup': { name: 'createCustomerGroup'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CustomerGroup'; ofType: null; }; } }; 'createDraftOrder': { name: 'createDraftOrder'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Order'; ofType: null; }; } }; 'createFacet': { name: 'createFacet'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Facet'; ofType: null; }; } }; 'createFacetValue': { name: 'createFacetValue'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FacetValue'; ofType: null; }; } }; 'createFacetValues': { name: 'createFacetValues'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FacetValue'; ofType: null; }; }; }; } }; 'createPaymentMethod': { name: 'createPaymentMethod'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PaymentMethod'; ofType: null; }; } }; 'createProduct': { name: 'createProduct'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Product'; ofType: null; }; } }; 'createProductOption': { name: 'createProductOption'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductOption'; ofType: null; }; } }; 'createProductOptionGroup': { name: 'createProductOptionGroup'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductOptionGroup'; ofType: null; }; } }; 'createProductVariants': { name: 'createProductVariants'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductVariant'; ofType: null; }; }; } }; 'createPromotion': { name: 'createPromotion'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'CreatePromotionResult'; ofType: null; }; } }; 'createProvince': { name: 'createProvince'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Province'; ofType: null; }; } }; 'createRole': { name: 'createRole'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Role'; ofType: null; }; } }; 'createSeller': { name: 'createSeller'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Seller'; ofType: null; }; } }; 'createShippingMethod': { name: 'createShippingMethod'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ShippingMethod'; ofType: null; }; } }; 'createStockLocation': { name: 'createStockLocation'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'StockLocation'; ofType: null; }; } }; 'createTag': { name: 'createTag'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Tag'; ofType: null; }; } }; 'createTaxCategory': { name: 'createTaxCategory'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TaxCategory'; ofType: null; }; } }; 'createTaxRate': { name: 'createTaxRate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TaxRate'; ofType: null; }; } }; 'createZone': { name: 'createZone'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Zone'; ofType: null; }; } }; 'deleteAdministrator': { name: 'deleteAdministrator'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; } }; 'deleteAdministrators': { name: 'deleteAdministrators'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; }; }; } }; 'deleteApiKeys': { name: 'deleteApiKeys'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; }; }; } }; 'deleteAsset': { name: 'deleteAsset'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; } }; 'deleteAssets': { name: 'deleteAssets'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; } }; 'deleteChannel': { name: 'deleteChannel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; } }; 'deleteChannels': { name: 'deleteChannels'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; }; }; } }; 'deleteCollection': { name: 'deleteCollection'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; } }; 'deleteCollections': { name: 'deleteCollections'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; }; }; } }; 'deleteCountries': { name: 'deleteCountries'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; }; }; } }; 'deleteCountry': { name: 'deleteCountry'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; } }; 'deleteCustomer': { name: 'deleteCustomer'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; } }; 'deleteCustomerAddress': { name: 'deleteCustomerAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Success'; ofType: null; }; } }; 'deleteCustomerGroup': { name: 'deleteCustomerGroup'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; } }; 'deleteCustomerGroups': { name: 'deleteCustomerGroups'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; }; }; } }; 'deleteCustomerNote': { name: 'deleteCustomerNote'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; } }; 'deleteCustomers': { name: 'deleteCustomers'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; }; }; } }; 'deleteDraftOrder': { name: 'deleteDraftOrder'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; } }; 'deleteFacet': { name: 'deleteFacet'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; } }; 'deleteFacetValues': { name: 'deleteFacetValues'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; }; }; } }; 'deleteFacets': { name: 'deleteFacets'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; }; }; } }; 'deleteOrderNote': { name: 'deleteOrderNote'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; } }; 'deletePaymentMethod': { name: 'deletePaymentMethod'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; } }; 'deletePaymentMethods': { name: 'deletePaymentMethods'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; }; }; } }; 'deleteProduct': { name: 'deleteProduct'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; } }; 'deleteProductOption': { name: 'deleteProductOption'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; } }; 'deleteProductOptionGroup': { name: 'deleteProductOptionGroup'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; } }; 'deleteProductOptionGroups': { name: 'deleteProductOptionGroups'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; }; }; } }; 'deleteProductVariant': { name: 'deleteProductVariant'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; } }; 'deleteProductVariants': { name: 'deleteProductVariants'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; }; }; } }; 'deleteProducts': { name: 'deleteProducts'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; }; }; } }; 'deletePromotion': { name: 'deletePromotion'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; } }; 'deletePromotions': { name: 'deletePromotions'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; }; }; } }; 'deleteProvince': { name: 'deleteProvince'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; } }; 'deleteRole': { name: 'deleteRole'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; } }; 'deleteRoles': { name: 'deleteRoles'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; }; }; } }; 'deleteSeller': { name: 'deleteSeller'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; } }; 'deleteSellers': { name: 'deleteSellers'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; }; }; } }; 'deleteShippingMethod': { name: 'deleteShippingMethod'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; } }; 'deleteShippingMethods': { name: 'deleteShippingMethods'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; }; }; } }; 'deleteStockLocation': { name: 'deleteStockLocation'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; } }; 'deleteStockLocations': { name: 'deleteStockLocations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; }; }; } }; 'deleteTag': { name: 'deleteTag'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; } }; 'deleteTaxCategories': { name: 'deleteTaxCategories'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; }; }; } }; 'deleteTaxCategory': { name: 'deleteTaxCategory'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; } }; 'deleteTaxRate': { name: 'deleteTaxRate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; } }; 'deleteTaxRates': { name: 'deleteTaxRates'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; }; }; } }; 'deleteZone': { name: 'deleteZone'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; } }; 'deleteZones': { name: 'deleteZones'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'DeletionResponse'; ofType: null; }; }; }; } }; 'duplicateEntity': { name: 'duplicateEntity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'DuplicateEntityResult'; ofType: null; }; } }; 'flushBufferedJobs': { name: 'flushBufferedJobs'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Success'; ofType: null; }; } }; 'importProducts': { name: 'importProducts'; type: { kind: 'OBJECT'; name: 'ImportInfo'; ofType: null; } }; 'login': { name: 'login'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'NativeAuthenticationResult'; ofType: null; }; } }; 'logout': { name: 'logout'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Success'; ofType: null; }; } }; 'modifyOrder': { name: 'modifyOrder'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'ModifyOrderResult'; ofType: null; }; } }; 'moveCollection': { name: 'moveCollection'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Collection'; ofType: null; }; } }; 'refundOrder': { name: 'refundOrder'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'RefundOrderResult'; ofType: null; }; } }; 'reindex': { name: 'reindex'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Job'; ofType: null; }; } }; 'removeCollectionsFromChannel': { name: 'removeCollectionsFromChannel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Collection'; ofType: null; }; }; }; } }; 'removeCouponCodeFromDraftOrder': { name: 'removeCouponCodeFromDraftOrder'; type: { kind: 'OBJECT'; name: 'Order'; ofType: null; } }; 'removeCustomersFromGroup': { name: 'removeCustomersFromGroup'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CustomerGroup'; ofType: null; }; } }; 'removeDraftOrderLine': { name: 'removeDraftOrderLine'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'RemoveOrderItemsResult'; ofType: null; }; } }; 'removeFacetsFromChannel': { name: 'removeFacetsFromChannel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'RemoveFacetFromChannelResult'; ofType: null; }; }; }; } }; 'removeMembersFromZone': { name: 'removeMembersFromZone'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Zone'; ofType: null; }; } }; 'removeOptionGroupFromProduct': { name: 'removeOptionGroupFromProduct'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'RemoveOptionGroupFromProductResult'; ofType: null; }; } }; 'removePaymentMethodsFromChannel': { name: 'removePaymentMethodsFromChannel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PaymentMethod'; ofType: null; }; }; }; } }; 'removeProductOptionGroupsFromChannel': { name: 'removeProductOptionGroupsFromChannel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'RemoveProductOptionGroupFromChannelResult'; ofType: null; }; }; }; } }; 'removeProductVariantsFromChannel': { name: 'removeProductVariantsFromChannel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductVariant'; ofType: null; }; }; }; } }; 'removeProductsFromChannel': { name: 'removeProductsFromChannel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Product'; ofType: null; }; }; }; } }; 'removePromotionsFromChannel': { name: 'removePromotionsFromChannel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Promotion'; ofType: null; }; }; }; } }; 'removeSettledJobs': { name: 'removeSettledJobs'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'removeShippingMethodsFromChannel': { name: 'removeShippingMethodsFromChannel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ShippingMethod'; ofType: null; }; }; }; } }; 'removeStockLocationsFromChannel': { name: 'removeStockLocationsFromChannel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'StockLocation'; ofType: null; }; }; }; } }; 'rotateApiKey': { name: 'rotateApiKey'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'RotateApiKeyResult'; ofType: null; }; } }; 'runPendingSearchIndexUpdates': { name: 'runPendingSearchIndexUpdates'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Success'; ofType: null; }; } }; 'runScheduledTask': { name: 'runScheduledTask'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Success'; ofType: null; }; } }; 'setCustomerForDraftOrder': { name: 'setCustomerForDraftOrder'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'SetCustomerForDraftOrderResult'; ofType: null; }; } }; 'setDraftOrderBillingAddress': { name: 'setDraftOrderBillingAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Order'; ofType: null; }; } }; 'setDraftOrderCustomFields': { name: 'setDraftOrderCustomFields'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Order'; ofType: null; }; } }; 'setDraftOrderShippingAddress': { name: 'setDraftOrderShippingAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Order'; ofType: null; }; } }; 'setDraftOrderShippingMethod': { name: 'setDraftOrderShippingMethod'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'SetOrderShippingMethodResult'; ofType: null; }; } }; 'setOrderCustomFields': { name: 'setOrderCustomFields'; type: { kind: 'OBJECT'; name: 'Order'; ofType: null; } }; 'setOrderCustomer': { name: 'setOrderCustomer'; type: { kind: 'OBJECT'; name: 'Order'; ofType: null; } }; 'setSettingsStoreValue': { name: 'setSettingsStoreValue'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'SetSettingsStoreValueResult'; ofType: null; }; } }; 'setSettingsStoreValues': { name: 'setSettingsStoreValues'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'SetSettingsStoreValueResult'; ofType: null; }; }; }; } }; 'settlePayment': { name: 'settlePayment'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'SettlePaymentResult'; ofType: null; }; } }; 'settleRefund': { name: 'settleRefund'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'SettleRefundResult'; ofType: null; }; } }; 'transitionFulfillmentToState': { name: 'transitionFulfillmentToState'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'TransitionFulfillmentToStateResult'; ofType: null; }; } }; 'transitionOrderToState': { name: 'transitionOrderToState'; type: { kind: 'UNION'; name: 'TransitionOrderToStateResult'; ofType: null; } }; 'transitionPaymentToState': { name: 'transitionPaymentToState'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'TransitionPaymentToStateResult'; ofType: null; }; } }; 'unsetDraftOrderBillingAddress': { name: 'unsetDraftOrderBillingAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Order'; ofType: null; }; } }; 'unsetDraftOrderShippingAddress': { name: 'unsetDraftOrderShippingAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Order'; ofType: null; }; } }; 'updateActiveAdministrator': { name: 'updateActiveAdministrator'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Administrator'; ofType: null; }; } }; 'updateAdministrator': { name: 'updateAdministrator'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Administrator'; ofType: null; }; } }; 'updateApiKey': { name: 'updateApiKey'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ApiKey'; ofType: null; }; } }; 'updateAsset': { name: 'updateAsset'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Asset'; ofType: null; }; } }; 'updateChannel': { name: 'updateChannel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'UpdateChannelResult'; ofType: null; }; } }; 'updateCollection': { name: 'updateCollection'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Collection'; ofType: null; }; } }; 'updateCountry': { name: 'updateCountry'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Country'; ofType: null; }; } }; 'updateCustomer': { name: 'updateCustomer'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'UpdateCustomerResult'; ofType: null; }; } }; 'updateCustomerAddress': { name: 'updateCustomerAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Address'; ofType: null; }; } }; 'updateCustomerGroup': { name: 'updateCustomerGroup'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CustomerGroup'; ofType: null; }; } }; 'updateCustomerNote': { name: 'updateCustomerNote'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'HistoryEntry'; ofType: null; }; } }; 'updateFacet': { name: 'updateFacet'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Facet'; ofType: null; }; } }; 'updateFacetValue': { name: 'updateFacetValue'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FacetValue'; ofType: null; }; } }; 'updateFacetValues': { name: 'updateFacetValues'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FacetValue'; ofType: null; }; }; }; } }; 'updateGlobalSettings': { name: 'updateGlobalSettings'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'UpdateGlobalSettingsResult'; ofType: null; }; } }; 'updateOrderNote': { name: 'updateOrderNote'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'HistoryEntry'; ofType: null; }; } }; 'updatePaymentMethod': { name: 'updatePaymentMethod'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PaymentMethod'; ofType: null; }; } }; 'updateProduct': { name: 'updateProduct'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Product'; ofType: null; }; } }; 'updateProductOption': { name: 'updateProductOption'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductOption'; ofType: null; }; } }; 'updateProductOptionGroup': { name: 'updateProductOptionGroup'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductOptionGroup'; ofType: null; }; } }; 'updateProductVariant': { name: 'updateProductVariant'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductVariant'; ofType: null; }; } }; 'updateProductVariants': { name: 'updateProductVariants'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductVariant'; ofType: null; }; }; } }; 'updateProducts': { name: 'updateProducts'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Product'; ofType: null; }; }; }; } }; 'updatePromotion': { name: 'updatePromotion'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'UpdatePromotionResult'; ofType: null; }; } }; 'updateProvince': { name: 'updateProvince'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Province'; ofType: null; }; } }; 'updateRole': { name: 'updateRole'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Role'; ofType: null; }; } }; 'updateScheduledTask': { name: 'updateScheduledTask'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ScheduledTask'; ofType: null; }; } }; 'updateSeller': { name: 'updateSeller'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Seller'; ofType: null; }; } }; 'updateShippingMethod': { name: 'updateShippingMethod'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ShippingMethod'; ofType: null; }; } }; 'updateStockLocation': { name: 'updateStockLocation'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'StockLocation'; ofType: null; }; } }; 'updateTag': { name: 'updateTag'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Tag'; ofType: null; }; } }; 'updateTaxCategory': { name: 'updateTaxCategory'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TaxCategory'; ofType: null; }; } }; 'updateTaxRate': { name: 'updateTaxRate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TaxRate'; ofType: null; }; } }; 'updateZone': { name: 'updateZone'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Zone'; ofType: null; }; } }; }; }; + 'NativeAuthInput': { kind: 'INPUT_OBJECT'; name: 'NativeAuthInput'; isOneOf: false; inputFields: [{ name: 'username'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'password'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }]; }; + 'NativeAuthStrategyError': { kind: 'OBJECT'; name: 'NativeAuthStrategyError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'NativeAuthenticationResult': { kind: 'UNION'; name: 'NativeAuthenticationResult'; fields: {}; possibleTypes: 'CurrentUser' | 'InvalidCredentialsError' | 'NativeAuthStrategyError'; }; + 'NegativeQuantityError': { kind: 'OBJECT'; name: 'NegativeQuantityError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'NoActiveOrderError': { kind: 'OBJECT'; name: 'NoActiveOrderError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'NoChangesSpecifiedError': { kind: 'OBJECT'; name: 'NoChangesSpecifiedError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'Node': { kind: 'INTERFACE'; name: 'Node'; fields: { 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; }; possibleTypes: 'Address' | 'Administrator' | 'Allocation' | 'ApiKey' | 'ApiKeyTranslation' | 'Asset' | 'AuthenticationMethod' | 'Cancellation' | 'Channel' | 'Collection' | 'Country' | 'Customer' | 'CustomerGroup' | 'Facet' | 'FacetValue' | 'Fulfillment' | 'HistoryEntry' | 'Job' | 'Order' | 'OrderLine' | 'OrderModification' | 'Payment' | 'PaymentMethod' | 'Product' | 'ProductOption' | 'ProductOptionGroup' | 'ProductVariant' | 'Promotion' | 'Province' | 'Refund' | 'Release' | 'Return' | 'Role' | 'Sale' | 'Seller' | 'ShippingMethod' | 'StockAdjustment' | 'StockLevel' | 'StockLocation' | 'Surcharge' | 'Tag' | 'TaxCategory' | 'TaxRate' | 'User' | 'Zone'; }; + 'NothingToRefundError': { kind: 'OBJECT'; name: 'NothingToRefundError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'NumberListOperators': { kind: 'INPUT_OBJECT'; name: 'NumberListOperators'; isOneOf: false; inputFields: [{ name: 'inList'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; }; defaultValue: null }]; }; + 'NumberOperators': { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; isOneOf: false; inputFields: [{ name: 'eq'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'lt'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'lte'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'gt'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'gte'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'between'; type: { kind: 'INPUT_OBJECT'; name: 'NumberRange'; ofType: null; }; defaultValue: null }, { name: 'isNull'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; }; + 'NumberRange': { kind: 'INPUT_OBJECT'; name: 'NumberRange'; isOneOf: false; inputFields: [{ name: 'start'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; }; defaultValue: null }, { name: 'end'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; }; defaultValue: null }]; }; + 'Order': { kind: 'OBJECT'; name: 'Order'; fields: { 'active': { name: 'active'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'aggregateOrder': { name: 'aggregateOrder'; type: { kind: 'OBJECT'; name: 'Order'; ofType: null; } }; 'aggregateOrderId': { name: 'aggregateOrderId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; } }; 'billingAddress': { name: 'billingAddress'; type: { kind: 'OBJECT'; name: 'OrderAddress'; ofType: null; } }; 'channels': { name: 'channels'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Channel'; ofType: null; }; }; }; } }; 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'couponCodes': { name: 'couponCodes'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'currencyCode': { name: 'currencyCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'CurrencyCode'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'customer': { name: 'customer'; type: { kind: 'OBJECT'; name: 'Customer'; ofType: null; } }; 'discounts': { name: 'discounts'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Discount'; ofType: null; }; }; }; } }; 'fulfillments': { name: 'fulfillments'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Fulfillment'; ofType: null; }; }; } }; 'history': { name: 'history'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'HistoryEntryList'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'lines': { name: 'lines'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'OrderLine'; ofType: null; }; }; }; } }; 'modifications': { name: 'modifications'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'OrderModification'; ofType: null; }; }; }; } }; 'nextStates': { name: 'nextStates'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; } }; 'orderPlacedAt': { name: 'orderPlacedAt'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; } }; 'payments': { name: 'payments'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Payment'; ofType: null; }; }; } }; 'promotions': { name: 'promotions'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Promotion'; ofType: null; }; }; }; } }; 'sellerOrders': { name: 'sellerOrders'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Order'; ofType: null; }; }; } }; 'shipping': { name: 'shipping'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'shippingAddress': { name: 'shippingAddress'; type: { kind: 'OBJECT'; name: 'OrderAddress'; ofType: null; } }; 'shippingLines': { name: 'shippingLines'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ShippingLine'; ofType: null; }; }; }; } }; 'shippingWithTax': { name: 'shippingWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'state': { name: 'state'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'subTotal': { name: 'subTotal'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'subTotalWithTax': { name: 'subTotalWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'surcharges': { name: 'surcharges'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Surcharge'; ofType: null; }; }; }; } }; 'taxSummary': { name: 'taxSummary'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'OrderTaxSummary'; ofType: null; }; }; }; } }; 'total': { name: 'total'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'totalQuantity': { name: 'totalQuantity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'totalWithTax': { name: 'totalWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'OrderType'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'OrderAddress': { kind: 'OBJECT'; name: 'OrderAddress'; fields: { 'city': { name: 'city'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'company': { name: 'company'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'country': { name: 'country'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'countryCode': { name: 'countryCode'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'fullName': { name: 'fullName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'phoneNumber': { name: 'phoneNumber'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'postalCode': { name: 'postalCode'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'province': { name: 'province'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'streetLine1': { name: 'streetLine1'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'streetLine2': { name: 'streetLine2'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; }; }; + 'OrderFilterParameter': { kind: 'INPUT_OBJECT'; name: 'OrderFilterParameter'; isOneOf: false; inputFields: [{ name: 'customerLastName'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'transactionId'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'aggregateOrderId'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'type'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'orderPlacedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'state'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'active'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanOperators'; ofType: null; }; defaultValue: null }, { name: 'totalQuantity'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'subTotal'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'subTotalWithTax'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'currencyCode'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'shipping'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'shippingWithTax'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'total'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'totalWithTax'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'OrderFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'OrderFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'OrderInterceptorError': { kind: 'OBJECT'; name: 'OrderInterceptorError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'interceptorError': { name: 'interceptorError'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'OrderLimitError': { kind: 'OBJECT'; name: 'OrderLimitError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'maxItems': { name: 'maxItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'OrderLine': { kind: 'OBJECT'; name: 'OrderLine'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'discountedLinePrice': { name: 'discountedLinePrice'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'discountedLinePriceWithTax': { name: 'discountedLinePriceWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'discountedUnitPrice': { name: 'discountedUnitPrice'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'discountedUnitPriceWithTax': { name: 'discountedUnitPriceWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'discounts': { name: 'discounts'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Discount'; ofType: null; }; }; }; } }; 'featuredAsset': { name: 'featuredAsset'; type: { kind: 'OBJECT'; name: 'Asset'; ofType: null; } }; 'fulfillmentLines': { name: 'fulfillmentLines'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FulfillmentLine'; ofType: null; }; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'linePrice': { name: 'linePrice'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'linePriceWithTax': { name: 'linePriceWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'lineTax': { name: 'lineTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'order': { name: 'order'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Order'; ofType: null; }; } }; 'orderPlacedQuantity': { name: 'orderPlacedQuantity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'productVariant': { name: 'productVariant'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductVariant'; ofType: null; }; } }; 'proratedLinePrice': { name: 'proratedLinePrice'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'proratedLinePriceWithTax': { name: 'proratedLinePriceWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'proratedUnitPrice': { name: 'proratedUnitPrice'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'proratedUnitPriceWithTax': { name: 'proratedUnitPriceWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'quantity': { name: 'quantity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'taxLines': { name: 'taxLines'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TaxLine'; ofType: null; }; }; }; } }; 'taxRate': { name: 'taxRate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; } }; 'unitPrice': { name: 'unitPrice'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'unitPriceChangeSinceAdded': { name: 'unitPriceChangeSinceAdded'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'unitPriceWithTax': { name: 'unitPriceWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'unitPriceWithTaxChangeSinceAdded': { name: 'unitPriceWithTaxChangeSinceAdded'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'OrderLineInput': { kind: 'INPUT_OBJECT'; name: 'OrderLineInput'; isOneOf: false; inputFields: [{ name: 'orderLineId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'quantity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }]; }; + 'OrderList': { kind: 'OBJECT'; name: 'OrderList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Order'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'OrderListOptions': { kind: 'INPUT_OBJECT'; name: 'OrderListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'OrderSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'OrderFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'OrderModification': { kind: 'OBJECT'; name: 'OrderModification'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'isSettled': { name: 'isSettled'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'lines': { name: 'lines'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'OrderModificationLine'; ofType: null; }; }; }; } }; 'note': { name: 'note'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'payment': { name: 'payment'; type: { kind: 'OBJECT'; name: 'Payment'; ofType: null; } }; 'priceChange': { name: 'priceChange'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'refund': { name: 'refund'; type: { kind: 'OBJECT'; name: 'Refund'; ofType: null; } }; 'surcharges': { name: 'surcharges'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Surcharge'; ofType: null; }; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'OrderModificationError': { kind: 'OBJECT'; name: 'OrderModificationError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'OrderModificationLine': { kind: 'OBJECT'; name: 'OrderModificationLine'; fields: { 'modification': { name: 'modification'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'OrderModification'; ofType: null; }; } }; 'modificationId': { name: 'modificationId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'orderLine': { name: 'orderLine'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'OrderLine'; ofType: null; }; } }; 'orderLineId': { name: 'orderLineId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'quantity': { name: 'quantity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'OrderModificationStateError': { kind: 'OBJECT'; name: 'OrderModificationStateError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'OrderProcessState': { kind: 'OBJECT'; name: 'OrderProcessState'; fields: { 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'to': { name: 'to'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; } }; }; }; + 'OrderSortParameter': { kind: 'INPUT_OBJECT'; name: 'OrderSortParameter'; isOneOf: false; inputFields: [{ name: 'customerLastName'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'transactionId'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'aggregateOrderId'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'orderPlacedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'state'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'totalQuantity'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'subTotal'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'subTotalWithTax'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'shipping'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'shippingWithTax'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'total'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'totalWithTax'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'OrderStateTransitionError': { kind: 'OBJECT'; name: 'OrderStateTransitionError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'fromState': { name: 'fromState'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'toState': { name: 'toState'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'transitionError': { name: 'transitionError'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'OrderTaxSummary': { kind: 'OBJECT'; name: 'OrderTaxSummary'; fields: { 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'taxBase': { name: 'taxBase'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'taxRate': { name: 'taxRate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; } }; 'taxTotal': { name: 'taxTotal'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; }; }; + 'OrderType': { name: 'OrderType'; enumValues: 'Regular' | 'Seller' | 'Aggregate'; }; + 'PaginatedList': { kind: 'INTERFACE'; name: 'PaginatedList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INTERFACE'; name: 'Node'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; possibleTypes: 'AdministratorList' | 'ApiKeyList' | 'AssetList' | 'ChannelList' | 'CollectionList' | 'CountryList' | 'CustomerGroupList' | 'CustomerList' | 'FacetList' | 'FacetValueList' | 'HistoryEntryList' | 'JobList' | 'OrderList' | 'PaymentMethodList' | 'ProductList' | 'ProductOptionGroupList' | 'ProductOptionList' | 'ProductVariantList' | 'PromotionList' | 'ProvinceList' | 'RoleList' | 'SellerList' | 'ShippingMethodList' | 'StockLocationList' | 'TagList' | 'TaxCategoryList' | 'TaxRateList' | 'ZoneList'; }; + 'Payment': { kind: 'OBJECT'; name: 'Payment'; fields: { 'amount': { name: 'amount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'errorMessage': { name: 'errorMessage'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'metadata': { name: 'metadata'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'method': { name: 'method'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nextStates': { name: 'nextStates'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; } }; 'refunds': { name: 'refunds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Refund'; ofType: null; }; }; }; } }; 'state': { name: 'state'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'transactionId': { name: 'transactionId'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'PaymentMethod': { kind: 'OBJECT'; name: 'PaymentMethod'; fields: { 'checker': { name: 'checker'; type: { kind: 'OBJECT'; name: 'ConfigurableOperation'; ofType: null; } }; 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'enabled': { name: 'enabled'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'handler': { name: 'handler'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ConfigurableOperation'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PaymentMethodTranslation'; ofType: null; }; }; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'PaymentMethodFilterParameter': { kind: 'INPUT_OBJECT'; name: 'PaymentMethodFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'enabled'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'PaymentMethodFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'PaymentMethodFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'PaymentMethodList': { kind: 'OBJECT'; name: 'PaymentMethodList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PaymentMethod'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'PaymentMethodListOptions': { kind: 'INPUT_OBJECT'; name: 'PaymentMethodListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'PaymentMethodSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'PaymentMethodFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'PaymentMethodMissingError': { kind: 'OBJECT'; name: 'PaymentMethodMissingError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'PaymentMethodQuote': { kind: 'OBJECT'; name: 'PaymentMethodQuote'; fields: { 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'eligibilityMessage': { name: 'eligibilityMessage'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'isEligible': { name: 'isEligible'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'PaymentMethodSortParameter': { kind: 'INPUT_OBJECT'; name: 'PaymentMethodSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'PaymentMethodTranslation': { kind: 'OBJECT'; name: 'PaymentMethodTranslation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'PaymentMethodTranslationInput': { kind: 'INPUT_OBJECT'; name: 'PaymentMethodTranslationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'PaymentOrderMismatchError': { kind: 'OBJECT'; name: 'PaymentOrderMismatchError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'PaymentStateTransitionError': { kind: 'OBJECT'; name: 'PaymentStateTransitionError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'fromState': { name: 'fromState'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'toState': { name: 'toState'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'transitionError': { name: 'transitionError'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'Permission': { name: 'Permission'; enumValues: 'Authenticated' | 'SuperAdmin' | 'Owner' | 'Public' | 'UpdateGlobalSettings' | 'CreateCatalog' | 'ReadCatalog' | 'UpdateCatalog' | 'DeleteCatalog' | 'CreateSettings' | 'ReadSettings' | 'UpdateSettings' | 'DeleteSettings' | 'CreateAdministrator' | 'ReadAdministrator' | 'UpdateAdministrator' | 'DeleteAdministrator' | 'CreateApiKey' | 'ReadApiKey' | 'UpdateApiKey' | 'DeleteApiKey' | 'CreateAsset' | 'ReadAsset' | 'UpdateAsset' | 'DeleteAsset' | 'CreateChannel' | 'ReadChannel' | 'UpdateChannel' | 'DeleteChannel' | 'CreateCollection' | 'ReadCollection' | 'UpdateCollection' | 'DeleteCollection' | 'CreateCountry' | 'ReadCountry' | 'UpdateCountry' | 'DeleteCountry' | 'CreateCustomer' | 'ReadCustomer' | 'UpdateCustomer' | 'DeleteCustomer' | 'CreateCustomerGroup' | 'ReadCustomerGroup' | 'UpdateCustomerGroup' | 'DeleteCustomerGroup' | 'CreateFacet' | 'ReadFacet' | 'UpdateFacet' | 'DeleteFacet' | 'CreateOrder' | 'ReadOrder' | 'UpdateOrder' | 'DeleteOrder' | 'CreatePaymentMethod' | 'ReadPaymentMethod' | 'UpdatePaymentMethod' | 'DeletePaymentMethod' | 'CreateProduct' | 'ReadProduct' | 'UpdateProduct' | 'DeleteProduct' | 'CreatePromotion' | 'ReadPromotion' | 'UpdatePromotion' | 'DeletePromotion' | 'CreateShippingMethod' | 'ReadShippingMethod' | 'UpdateShippingMethod' | 'DeleteShippingMethod' | 'CreateTag' | 'ReadTag' | 'UpdateTag' | 'DeleteTag' | 'CreateTaxCategory' | 'ReadTaxCategory' | 'UpdateTaxCategory' | 'DeleteTaxCategory' | 'CreateTaxRate' | 'ReadTaxRate' | 'UpdateTaxRate' | 'DeleteTaxRate' | 'CreateSeller' | 'ReadSeller' | 'UpdateSeller' | 'DeleteSeller' | 'CreateStockLocation' | 'ReadStockLocation' | 'UpdateStockLocation' | 'DeleteStockLocation' | 'CreateSystem' | 'ReadSystem' | 'UpdateSystem' | 'DeleteSystem' | 'CreateZone' | 'ReadZone' | 'UpdateZone' | 'DeleteZone'; }; + 'PermissionDefinition': { kind: 'OBJECT'; name: 'PermissionDefinition'; fields: { 'assignable': { name: 'assignable'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'PreviewCollectionVariantsInput': { kind: 'INPUT_OBJECT'; name: 'PreviewCollectionVariantsInput'; isOneOf: false; inputFields: [{ name: 'parentId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'inheritFilters'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }, { name: 'filters'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ConfigurableOperationInput'; ofType: null; }; }; }; }; defaultValue: null }]; }; + 'PriceRange': { kind: 'OBJECT'; name: 'PriceRange'; fields: { 'max': { name: 'max'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'min': { name: 'min'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; }; }; + 'Product': { kind: 'OBJECT'; name: 'Product'; fields: { 'assets': { name: 'assets'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Asset'; ofType: null; }; }; }; } }; 'channels': { name: 'channels'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Channel'; ofType: null; }; }; }; } }; 'collections': { name: 'collections'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Collection'; ofType: null; }; }; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'enabled': { name: 'enabled'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'facetValues': { name: 'facetValues'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FacetValue'; ofType: null; }; }; }; } }; 'featuredAsset': { name: 'featuredAsset'; type: { kind: 'OBJECT'; name: 'Asset'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'optionGroups': { name: 'optionGroups'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductOptionGroup'; ofType: null; }; }; }; } }; 'slug': { name: 'slug'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductTranslation'; ofType: null; }; }; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'variantList': { name: 'variantList'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductVariantList'; ofType: null; }; } }; 'variants': { name: 'variants'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductVariant'; ofType: null; }; }; }; } }; }; }; + 'ProductFilterParameter': { kind: 'INPUT_OBJECT'; name: 'ProductFilterParameter'; isOneOf: false; inputFields: [{ name: 'facetValueId'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'sku'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'optionGroupId'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'slug'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'enabled'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ProductFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ProductFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'ProductList': { kind: 'OBJECT'; name: 'ProductList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Product'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'ProductListOptions': { kind: 'INPUT_OBJECT'; name: 'ProductListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'ProductSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'ProductFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'ProductOption': { kind: 'OBJECT'; name: 'ProductOption'; fields: { 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'group': { name: 'group'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductOptionGroup'; ofType: null; }; } }; 'groupId': { name: 'groupId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductOptionTranslation'; ofType: null; }; }; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'ProductOptionFilterParameter': { kind: 'INPUT_OBJECT'; name: 'ProductOptionFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'groupId'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ProductOptionFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ProductOptionFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'ProductOptionGroup': { kind: 'OBJECT'; name: 'ProductOptionGroup'; fields: { 'channels': { name: 'channels'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Channel'; ofType: null; }; }; }; } }; 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'options': { name: 'options'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductOption'; ofType: null; }; }; }; } }; 'productCount': { name: 'productCount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductOptionGroupTranslation'; ofType: null; }; }; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'ProductOptionGroupFilterParameter': { kind: 'INPUT_OBJECT'; name: 'ProductOptionGroupFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'productCount'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ProductOptionGroupFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ProductOptionGroupFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'ProductOptionGroupInUseError': { kind: 'OBJECT'; name: 'ProductOptionGroupInUseError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'optionGroupCode': { name: 'optionGroupCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'productCount': { name: 'productCount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'variantCount': { name: 'variantCount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'ProductOptionGroupList': { kind: 'OBJECT'; name: 'ProductOptionGroupList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductOptionGroup'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'ProductOptionGroupListOptions': { kind: 'INPUT_OBJECT'; name: 'ProductOptionGroupListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'ProductOptionGroupSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'ProductOptionGroupFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'ProductOptionGroupSortParameter': { kind: 'INPUT_OBJECT'; name: 'ProductOptionGroupSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'productCount'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'ProductOptionGroupTranslation': { kind: 'OBJECT'; name: 'ProductOptionGroupTranslation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'ProductOptionGroupTranslationInput': { kind: 'INPUT_OBJECT'; name: 'ProductOptionGroupTranslationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'ProductOptionInUseError': { kind: 'OBJECT'; name: 'ProductOptionInUseError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'optionGroupCode': { name: 'optionGroupCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'productVariantCount': { name: 'productVariantCount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'ProductOptionList': { kind: 'OBJECT'; name: 'ProductOptionList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductOption'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'ProductOptionListOptions': { kind: 'INPUT_OBJECT'; name: 'ProductOptionListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'ProductOptionSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'ProductOptionFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'ProductOptionSortParameter': { kind: 'INPUT_OBJECT'; name: 'ProductOptionSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'groupId'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'ProductOptionTranslation': { kind: 'OBJECT'; name: 'ProductOptionTranslation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'ProductOptionTranslationInput': { kind: 'INPUT_OBJECT'; name: 'ProductOptionTranslationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'ProductSortParameter': { kind: 'INPUT_OBJECT'; name: 'ProductSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'slug'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'ProductTranslation': { kind: 'OBJECT'; name: 'ProductTranslation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'slug': { name: 'slug'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'ProductTranslationInput': { kind: 'INPUT_OBJECT'; name: 'ProductTranslationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'slug'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'ProductVariant': { kind: 'OBJECT'; name: 'ProductVariant'; fields: { 'assets': { name: 'assets'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Asset'; ofType: null; }; }; }; } }; 'channels': { name: 'channels'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Channel'; ofType: null; }; }; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'currencyCode': { name: 'currencyCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'CurrencyCode'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'enabled': { name: 'enabled'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'facetValues': { name: 'facetValues'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FacetValue'; ofType: null; }; }; }; } }; 'featuredAsset': { name: 'featuredAsset'; type: { kind: 'OBJECT'; name: 'Asset'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'options': { name: 'options'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductOption'; ofType: null; }; }; }; } }; 'outOfStockThreshold': { name: 'outOfStockThreshold'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'price': { name: 'price'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'priceWithTax': { name: 'priceWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'prices': { name: 'prices'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductVariantPrice'; ofType: null; }; }; }; } }; 'product': { name: 'product'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Product'; ofType: null; }; } }; 'productId': { name: 'productId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'sku': { name: 'sku'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'stockAllocated': { name: 'stockAllocated'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'stockLevel': { name: 'stockLevel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'stockLevels': { name: 'stockLevels'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'StockLevel'; ofType: null; }; }; }; } }; 'stockMovements': { name: 'stockMovements'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'StockMovementList'; ofType: null; }; } }; 'stockOnHand': { name: 'stockOnHand'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'taxCategory': { name: 'taxCategory'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TaxCategory'; ofType: null; }; } }; 'taxRateApplied': { name: 'taxRateApplied'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TaxRate'; ofType: null; }; } }; 'trackInventory': { name: 'trackInventory'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'GlobalFlag'; ofType: null; }; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductVariantTranslation'; ofType: null; }; }; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'useGlobalOutOfStockThreshold': { name: 'useGlobalOutOfStockThreshold'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; }; }; + 'ProductVariantFilterParameter': { kind: 'INPUT_OBJECT'; name: 'ProductVariantFilterParameter'; isOneOf: false; inputFields: [{ name: 'facetValueId'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'enabled'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanOperators'; ofType: null; }; defaultValue: null }, { name: 'trackInventory'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'stockOnHand'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'stockAllocated'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'outOfStockThreshold'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'useGlobalOutOfStockThreshold'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanOperators'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'productId'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'sku'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'price'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'currencyCode'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'priceWithTax'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'stockLevel'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ProductVariantFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ProductVariantFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'ProductVariantList': { kind: 'OBJECT'; name: 'ProductVariantList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductVariant'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'ProductVariantListOptions': { kind: 'INPUT_OBJECT'; name: 'ProductVariantListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'ProductVariantSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'ProductVariantFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'ProductVariantPrice': { kind: 'OBJECT'; name: 'ProductVariantPrice'; fields: { 'currencyCode': { name: 'currencyCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'CurrencyCode'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'price': { name: 'price'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; }; }; + 'ProductVariantSortParameter': { kind: 'INPUT_OBJECT'; name: 'ProductVariantSortParameter'; isOneOf: false; inputFields: [{ name: 'stockOnHand'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'stockAllocated'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'outOfStockThreshold'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'productId'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'sku'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'price'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'priceWithTax'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'stockLevel'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'ProductVariantTranslation': { kind: 'OBJECT'; name: 'ProductVariantTranslation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'ProductVariantTranslationInput': { kind: 'INPUT_OBJECT'; name: 'ProductVariantTranslationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'Promotion': { kind: 'OBJECT'; name: 'Promotion'; fields: { 'actions': { name: 'actions'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ConfigurableOperation'; ofType: null; }; }; }; } }; 'conditions': { name: 'conditions'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ConfigurableOperation'; ofType: null; }; }; }; } }; 'couponCode': { name: 'couponCode'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'enabled': { name: 'enabled'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'endsAt': { name: 'endsAt'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'perCustomerUsageLimit': { name: 'perCustomerUsageLimit'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'startsAt': { name: 'startsAt'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PromotionTranslation'; ofType: null; }; }; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'usageLimit': { name: 'usageLimit'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; }; }; + 'PromotionFilterParameter': { kind: 'INPUT_OBJECT'; name: 'PromotionFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'startsAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'endsAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'couponCode'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'perCustomerUsageLimit'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'usageLimit'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'enabled'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'PromotionFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'PromotionFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'PromotionList': { kind: 'OBJECT'; name: 'PromotionList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Promotion'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'PromotionListOptions': { kind: 'INPUT_OBJECT'; name: 'PromotionListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'PromotionSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'PromotionFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'PromotionSortParameter': { kind: 'INPUT_OBJECT'; name: 'PromotionSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'startsAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'endsAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'couponCode'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'perCustomerUsageLimit'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'usageLimit'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'PromotionTranslation': { kind: 'OBJECT'; name: 'PromotionTranslation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'PromotionTranslationInput': { kind: 'INPUT_OBJECT'; name: 'PromotionTranslationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'Province': { kind: 'OBJECT'; name: 'Province'; fields: { 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'enabled': { name: 'enabled'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'parent': { name: 'parent'; type: { kind: 'INTERFACE'; name: 'Region'; ofType: null; } }; 'parentId': { name: 'parentId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'RegionTranslation'; ofType: null; }; }; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'ProvinceFilterParameter': { kind: 'INPUT_OBJECT'; name: 'ProvinceFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'type'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'enabled'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanOperators'; ofType: null; }; defaultValue: null }, { name: 'parentId'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ProvinceFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ProvinceFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'ProvinceList': { kind: 'OBJECT'; name: 'ProvinceList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Province'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'ProvinceListOptions': { kind: 'INPUT_OBJECT'; name: 'ProvinceListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'ProvinceSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'ProvinceFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'ProvinceSortParameter': { kind: 'INPUT_OBJECT'; name: 'ProvinceSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'type'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'parentId'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'ProvinceTranslationInput': { kind: 'INPUT_OBJECT'; name: 'ProvinceTranslationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'QuantityTooGreatError': { kind: 'OBJECT'; name: 'QuantityTooGreatError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'Query': { kind: 'OBJECT'; name: 'Query'; fields: { 'activeAdministrator': { name: 'activeAdministrator'; type: { kind: 'OBJECT'; name: 'Administrator'; ofType: null; } }; 'activeChannel': { name: 'activeChannel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Channel'; ofType: null; }; } }; 'administrator': { name: 'administrator'; type: { kind: 'OBJECT'; name: 'Administrator'; ofType: null; } }; 'administrators': { name: 'administrators'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AdministratorList'; ofType: null; }; } }; 'apiKey': { name: 'apiKey'; type: { kind: 'OBJECT'; name: 'ApiKey'; ofType: null; } }; 'apiKeys': { name: 'apiKeys'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ApiKeyList'; ofType: null; }; } }; 'asset': { name: 'asset'; type: { kind: 'OBJECT'; name: 'Asset'; ofType: null; } }; 'assets': { name: 'assets'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AssetList'; ofType: null; }; } }; 'channel': { name: 'channel'; type: { kind: 'OBJECT'; name: 'Channel'; ofType: null; } }; 'channels': { name: 'channels'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ChannelList'; ofType: null; }; } }; 'collection': { name: 'collection'; type: { kind: 'OBJECT'; name: 'Collection'; ofType: null; } }; 'collectionFilters': { name: 'collectionFilters'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ConfigurableOperationDefinition'; ofType: null; }; }; }; } }; 'collections': { name: 'collections'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CollectionList'; ofType: null; }; } }; 'countries': { name: 'countries'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CountryList'; ofType: null; }; } }; 'country': { name: 'country'; type: { kind: 'OBJECT'; name: 'Country'; ofType: null; } }; 'customer': { name: 'customer'; type: { kind: 'OBJECT'; name: 'Customer'; ofType: null; } }; 'customerGroup': { name: 'customerGroup'; type: { kind: 'OBJECT'; name: 'CustomerGroup'; ofType: null; } }; 'customerGroups': { name: 'customerGroups'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CustomerGroupList'; ofType: null; }; } }; 'customers': { name: 'customers'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CustomerList'; ofType: null; }; } }; 'eligibleShippingMethodsForDraftOrder': { name: 'eligibleShippingMethodsForDraftOrder'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ShippingMethodQuote'; ofType: null; }; }; }; } }; 'entityDuplicators': { name: 'entityDuplicators'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'EntityDuplicatorDefinition'; ofType: null; }; }; }; } }; 'facet': { name: 'facet'; type: { kind: 'OBJECT'; name: 'Facet'; ofType: null; } }; 'facetValue': { name: 'facetValue'; type: { kind: 'OBJECT'; name: 'FacetValue'; ofType: null; } }; 'facetValues': { name: 'facetValues'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FacetValueList'; ofType: null; }; } }; 'facets': { name: 'facets'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FacetList'; ofType: null; }; } }; 'fulfillmentHandlers': { name: 'fulfillmentHandlers'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ConfigurableOperationDefinition'; ofType: null; }; }; }; } }; 'getSettingsStoreValue': { name: 'getSettingsStoreValue'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'getSettingsStoreValues': { name: 'getSettingsStoreValues'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'globalSettings': { name: 'globalSettings'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'GlobalSettings'; ofType: null; }; } }; 'job': { name: 'job'; type: { kind: 'OBJECT'; name: 'Job'; ofType: null; } }; 'jobBufferSize': { name: 'jobBufferSize'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'JobBufferSize'; ofType: null; }; }; }; } }; 'jobQueues': { name: 'jobQueues'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'JobQueue'; ofType: null; }; }; }; } }; 'jobs': { name: 'jobs'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'JobList'; ofType: null; }; } }; 'jobsById': { name: 'jobsById'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Job'; ofType: null; }; }; }; } }; 'me': { name: 'me'; type: { kind: 'OBJECT'; name: 'CurrentUser'; ofType: null; } }; 'metricSummary': { name: 'metricSummary'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'MetricSummary'; ofType: null; }; }; }; } }; 'order': { name: 'order'; type: { kind: 'OBJECT'; name: 'Order'; ofType: null; } }; 'orders': { name: 'orders'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'OrderList'; ofType: null; }; } }; 'paymentMethod': { name: 'paymentMethod'; type: { kind: 'OBJECT'; name: 'PaymentMethod'; ofType: null; } }; 'paymentMethodEligibilityCheckers': { name: 'paymentMethodEligibilityCheckers'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ConfigurableOperationDefinition'; ofType: null; }; }; }; } }; 'paymentMethodHandlers': { name: 'paymentMethodHandlers'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ConfigurableOperationDefinition'; ofType: null; }; }; }; } }; 'paymentMethods': { name: 'paymentMethods'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PaymentMethodList'; ofType: null; }; } }; 'pendingSearchIndexUpdates': { name: 'pendingSearchIndexUpdates'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'previewCollectionVariants': { name: 'previewCollectionVariants'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductVariantList'; ofType: null; }; } }; 'product': { name: 'product'; type: { kind: 'OBJECT'; name: 'Product'; ofType: null; } }; 'productOption': { name: 'productOption'; type: { kind: 'OBJECT'; name: 'ProductOption'; ofType: null; } }; 'productOptionGroup': { name: 'productOptionGroup'; type: { kind: 'OBJECT'; name: 'ProductOptionGroup'; ofType: null; } }; 'productOptionGroups': { name: 'productOptionGroups'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductOptionGroupList'; ofType: null; }; } }; 'productOptions': { name: 'productOptions'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductOptionList'; ofType: null; }; } }; 'productVariant': { name: 'productVariant'; type: { kind: 'OBJECT'; name: 'ProductVariant'; ofType: null; } }; 'productVariants': { name: 'productVariants'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductVariantList'; ofType: null; }; } }; 'products': { name: 'products'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductList'; ofType: null; }; } }; 'promotion': { name: 'promotion'; type: { kind: 'OBJECT'; name: 'Promotion'; ofType: null; } }; 'promotionActions': { name: 'promotionActions'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ConfigurableOperationDefinition'; ofType: null; }; }; }; } }; 'promotionConditions': { name: 'promotionConditions'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ConfigurableOperationDefinition'; ofType: null; }; }; }; } }; 'promotions': { name: 'promotions'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PromotionList'; ofType: null; }; } }; 'province': { name: 'province'; type: { kind: 'OBJECT'; name: 'Province'; ofType: null; } }; 'provinces': { name: 'provinces'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProvinceList'; ofType: null; }; } }; 'role': { name: 'role'; type: { kind: 'OBJECT'; name: 'Role'; ofType: null; } }; 'roles': { name: 'roles'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'RoleList'; ofType: null; }; } }; 'scheduledTasks': { name: 'scheduledTasks'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ScheduledTask'; ofType: null; }; }; }; } }; 'search': { name: 'search'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'SearchResponse'; ofType: null; }; } }; 'seller': { name: 'seller'; type: { kind: 'OBJECT'; name: 'Seller'; ofType: null; } }; 'sellers': { name: 'sellers'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'SellerList'; ofType: null; }; } }; 'settingsStoreFieldDefinitions': { name: 'settingsStoreFieldDefinitions'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'SettingsStoreFieldDefinition'; ofType: null; }; }; }; } }; 'shippingCalculators': { name: 'shippingCalculators'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ConfigurableOperationDefinition'; ofType: null; }; }; }; } }; 'shippingEligibilityCheckers': { name: 'shippingEligibilityCheckers'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ConfigurableOperationDefinition'; ofType: null; }; }; }; } }; 'shippingMethod': { name: 'shippingMethod'; type: { kind: 'OBJECT'; name: 'ShippingMethod'; ofType: null; } }; 'shippingMethods': { name: 'shippingMethods'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ShippingMethodList'; ofType: null; }; } }; 'slugForEntity': { name: 'slugForEntity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'stockLocation': { name: 'stockLocation'; type: { kind: 'OBJECT'; name: 'StockLocation'; ofType: null; } }; 'stockLocations': { name: 'stockLocations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'StockLocationList'; ofType: null; }; } }; 'tag': { name: 'tag'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Tag'; ofType: null; }; } }; 'tags': { name: 'tags'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TagList'; ofType: null; }; } }; 'taxCategories': { name: 'taxCategories'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TaxCategoryList'; ofType: null; }; } }; 'taxCategory': { name: 'taxCategory'; type: { kind: 'OBJECT'; name: 'TaxCategory'; ofType: null; } }; 'taxRate': { name: 'taxRate'; type: { kind: 'OBJECT'; name: 'TaxRate'; ofType: null; } }; 'taxRates': { name: 'taxRates'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TaxRateList'; ofType: null; }; } }; 'testEligibleShippingMethods': { name: 'testEligibleShippingMethods'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ShippingMethodQuote'; ofType: null; }; }; }; } }; 'testShippingMethod': { name: 'testShippingMethod'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TestShippingMethodResult'; ofType: null; }; } }; 'zone': { name: 'zone'; type: { kind: 'OBJECT'; name: 'Zone'; ofType: null; } }; 'zones': { name: 'zones'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ZoneList'; ofType: null; }; } }; }; }; + 'Refund': { kind: 'OBJECT'; name: 'Refund'; fields: { 'adjustment': { name: 'adjustment'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'lines': { name: 'lines'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'RefundLine'; ofType: null; }; }; }; } }; 'metadata': { name: 'metadata'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'method': { name: 'method'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'paymentId': { name: 'paymentId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'reason': { name: 'reason'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'shipping': { name: 'shipping'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'state': { name: 'state'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'total': { name: 'total'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'transactionId': { name: 'transactionId'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'RefundAmountError': { kind: 'OBJECT'; name: 'RefundAmountError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'maximumRefundable': { name: 'maximumRefundable'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'RefundLine': { kind: 'OBJECT'; name: 'RefundLine'; fields: { 'orderLine': { name: 'orderLine'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'OrderLine'; ofType: null; }; } }; 'orderLineId': { name: 'orderLineId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'quantity': { name: 'quantity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'refund': { name: 'refund'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Refund'; ofType: null; }; } }; 'refundId': { name: 'refundId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; }; }; + 'RefundOrderInput': { kind: 'INPUT_OBJECT'; name: 'RefundOrderInput'; isOneOf: false; inputFields: [{ name: 'lines'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'OrderLineInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'shipping'; type: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; defaultValue: null }, { name: 'adjustment'; type: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; defaultValue: null }, { name: 'amount'; type: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; defaultValue: null }, { name: 'paymentId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'reason'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; }; + 'RefundOrderResult': { kind: 'UNION'; name: 'RefundOrderResult'; fields: {}; possibleTypes: 'AlreadyRefundedError' | 'MultipleOrderError' | 'NothingToRefundError' | 'OrderStateTransitionError' | 'PaymentOrderMismatchError' | 'QuantityTooGreatError' | 'Refund' | 'RefundAmountError' | 'RefundOrderStateError' | 'RefundStateTransitionError'; }; + 'RefundOrderStateError': { kind: 'OBJECT'; name: 'RefundOrderStateError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'orderState': { name: 'orderState'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'RefundPaymentIdMissingError': { kind: 'OBJECT'; name: 'RefundPaymentIdMissingError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'RefundStateTransitionError': { kind: 'OBJECT'; name: 'RefundStateTransitionError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'fromState': { name: 'fromState'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'toState': { name: 'toState'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'transitionError': { name: 'transitionError'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'Region': { kind: 'INTERFACE'; name: 'Region'; fields: { 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'enabled': { name: 'enabled'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'parent': { name: 'parent'; type: { kind: 'INTERFACE'; name: 'Region'; ofType: null; } }; 'parentId': { name: 'parentId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'RegionTranslation'; ofType: null; }; }; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; possibleTypes: 'Country' | 'Province'; }; + 'RegionTranslation': { kind: 'OBJECT'; name: 'RegionTranslation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'RelationCustomFieldConfig': { kind: 'OBJECT'; name: 'RelationCustomFieldConfig'; fields: { 'deprecated': { name: 'deprecated'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'deprecationReason': { name: 'deprecationReason'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'entity': { name: 'entity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'internal': { name: 'internal'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nullable': { name: 'nullable'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'readonly': { name: 'readonly'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'requiresPermission': { name: 'requiresPermission'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; } }; 'scalarFields': { name: 'scalarFields'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'Release': { kind: 'OBJECT'; name: 'Release'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'productVariant': { name: 'productVariant'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductVariant'; ofType: null; }; } }; 'quantity': { name: 'quantity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'StockMovementType'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'RemoveCollectionsFromChannelInput': { kind: 'INPUT_OBJECT'; name: 'RemoveCollectionsFromChannelInput'; isOneOf: false; inputFields: [{ name: 'collectionIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'channelId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }]; }; + 'RemoveFacetFromChannelResult': { kind: 'UNION'; name: 'RemoveFacetFromChannelResult'; fields: {}; possibleTypes: 'Facet' | 'FacetInUseError'; }; + 'RemoveFacetsFromChannelInput': { kind: 'INPUT_OBJECT'; name: 'RemoveFacetsFromChannelInput'; isOneOf: false; inputFields: [{ name: 'facetIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'channelId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'force'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; }; + 'RemoveOptionGroupFromProductResult': { kind: 'UNION'; name: 'RemoveOptionGroupFromProductResult'; fields: {}; possibleTypes: 'Product' | 'ProductOptionInUseError'; }; + 'RemoveOrderItemsResult': { kind: 'UNION'; name: 'RemoveOrderItemsResult'; fields: {}; possibleTypes: 'Order' | 'OrderInterceptorError' | 'OrderModificationError'; }; + 'RemovePaymentMethodsFromChannelInput': { kind: 'INPUT_OBJECT'; name: 'RemovePaymentMethodsFromChannelInput'; isOneOf: false; inputFields: [{ name: 'paymentMethodIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'channelId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }]; }; + 'RemoveProductOptionGroupFromChannelResult': { kind: 'UNION'; name: 'RemoveProductOptionGroupFromChannelResult'; fields: {}; possibleTypes: 'ProductOptionGroup' | 'ProductOptionGroupInUseError'; }; + 'RemoveProductOptionGroupsFromChannelInput': { kind: 'INPUT_OBJECT'; name: 'RemoveProductOptionGroupsFromChannelInput'; isOneOf: false; inputFields: [{ name: 'productOptionGroupIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'channelId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'force'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; }; + 'RemoveProductVariantsFromChannelInput': { kind: 'INPUT_OBJECT'; name: 'RemoveProductVariantsFromChannelInput'; isOneOf: false; inputFields: [{ name: 'productVariantIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'channelId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }]; }; + 'RemoveProductsFromChannelInput': { kind: 'INPUT_OBJECT'; name: 'RemoveProductsFromChannelInput'; isOneOf: false; inputFields: [{ name: 'productIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'channelId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }]; }; + 'RemovePromotionsFromChannelInput': { kind: 'INPUT_OBJECT'; name: 'RemovePromotionsFromChannelInput'; isOneOf: false; inputFields: [{ name: 'promotionIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'channelId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }]; }; + 'RemoveShippingMethodsFromChannelInput': { kind: 'INPUT_OBJECT'; name: 'RemoveShippingMethodsFromChannelInput'; isOneOf: false; inputFields: [{ name: 'shippingMethodIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'channelId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }]; }; + 'RemoveStockLocationsFromChannelInput': { kind: 'INPUT_OBJECT'; name: 'RemoveStockLocationsFromChannelInput'; isOneOf: false; inputFields: [{ name: 'stockLocationIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'channelId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }]; }; + 'Return': { kind: 'OBJECT'; name: 'Return'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'productVariant': { name: 'productVariant'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductVariant'; ofType: null; }; } }; 'quantity': { name: 'quantity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'StockMovementType'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'Role': { kind: 'OBJECT'; name: 'Role'; fields: { 'channels': { name: 'channels'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Channel'; ofType: null; }; }; }; } }; 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'permissions': { name: 'permissions'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'RoleFilterParameter': { kind: 'INPUT_OBJECT'; name: 'RoleFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'RoleFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'RoleFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'RoleList': { kind: 'OBJECT'; name: 'RoleList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Role'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'RoleListOptions': { kind: 'INPUT_OBJECT'; name: 'RoleListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'RoleSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'RoleFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'RoleSortParameter': { kind: 'INPUT_OBJECT'; name: 'RoleSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'RotateApiKeyResult': { kind: 'OBJECT'; name: 'RotateApiKeyResult'; fields: { 'apiKey': { name: 'apiKey'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'Sale': { kind: 'OBJECT'; name: 'Sale'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'productVariant': { name: 'productVariant'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductVariant'; ofType: null; }; } }; 'quantity': { name: 'quantity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'StockMovementType'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'ScheduledTask': { kind: 'OBJECT'; name: 'ScheduledTask'; fields: { 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'enabled': { name: 'enabled'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'isRunning': { name: 'isRunning'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'lastExecutedAt': { name: 'lastExecutedAt'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; } }; 'lastResult': { name: 'lastResult'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'nextExecutionAt': { name: 'nextExecutionAt'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; } }; 'schedule': { name: 'schedule'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'scheduleDescription': { name: 'scheduleDescription'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'SearchInput': { kind: 'INPUT_OBJECT'; name: 'SearchInput'; isOneOf: false; inputFields: [{ name: 'term'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'facetValueIds'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; defaultValue: null }, { name: 'facetValueOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }, { name: 'facetValueFilters'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'FacetValueFilterInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'collectionId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'collectionIds'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; defaultValue: null }, { name: 'collectionSlug'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'collectionSlugs'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'groupByProduct'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'SearchResultSortParameter'; ofType: null; }; defaultValue: null }]; }; + 'SearchReindexResponse': { kind: 'OBJECT'; name: 'SearchReindexResponse'; fields: { 'success': { name: 'success'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; }; }; + 'SearchResponse': { kind: 'OBJECT'; name: 'SearchResponse'; fields: { 'collections': { name: 'collections'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CollectionResult'; ofType: null; }; }; }; } }; 'facetValues': { name: 'facetValues'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FacetValueResult'; ofType: null; }; }; }; } }; 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'SearchResult'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'SearchResult': { kind: 'OBJECT'; name: 'SearchResult'; fields: { 'channelIds': { name: 'channelIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; } }; 'collectionIds': { name: 'collectionIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; } }; 'currencyCode': { name: 'currencyCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'CurrencyCode'; ofType: null; }; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'enabled': { name: 'enabled'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'facetIds': { name: 'facetIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; } }; 'facetValueIds': { name: 'facetValueIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; } }; 'price': { name: 'price'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'SearchResultPrice'; ofType: null; }; } }; 'priceWithTax': { name: 'priceWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'SearchResultPrice'; ofType: null; }; } }; 'productAsset': { name: 'productAsset'; type: { kind: 'OBJECT'; name: 'SearchResultAsset'; ofType: null; } }; 'productId': { name: 'productId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'productName': { name: 'productName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'productVariantAsset': { name: 'productVariantAsset'; type: { kind: 'OBJECT'; name: 'SearchResultAsset'; ofType: null; } }; 'productVariantId': { name: 'productVariantId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'productVariantName': { name: 'productVariantName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'score': { name: 'score'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; } }; 'sku': { name: 'sku'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'slug': { name: 'slug'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'SearchResultAsset': { kind: 'OBJECT'; name: 'SearchResultAsset'; fields: { 'focalPoint': { name: 'focalPoint'; type: { kind: 'OBJECT'; name: 'Coordinate'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'preview': { name: 'preview'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'SearchResultPrice': { kind: 'UNION'; name: 'SearchResultPrice'; fields: {}; possibleTypes: 'PriceRange' | 'SinglePrice'; }; + 'SearchResultSortParameter': { kind: 'INPUT_OBJECT'; name: 'SearchResultSortParameter'; isOneOf: false; inputFields: [{ name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'price'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'Seller': { kind: 'OBJECT'; name: 'Seller'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'SellerFilterParameter': { kind: 'INPUT_OBJECT'; name: 'SellerFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SellerFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SellerFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'SellerList': { kind: 'OBJECT'; name: 'SellerList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Seller'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'SellerListOptions': { kind: 'INPUT_OBJECT'; name: 'SellerListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'SellerSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'SellerFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'SellerSortParameter': { kind: 'INPUT_OBJECT'; name: 'SellerSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'ServerConfig': { kind: 'OBJECT'; name: 'ServerConfig'; fields: { 'customFieldConfig': { name: 'customFieldConfig'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CustomFields'; ofType: null; }; } }; 'entityCustomFields': { name: 'entityCustomFields'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'EntityCustomFields'; ofType: null; }; }; }; } }; 'moneyStrategyPrecision': { name: 'moneyStrategyPrecision'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'orderProcess': { name: 'orderProcess'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'OrderProcessState'; ofType: null; }; }; }; } }; 'permissions': { name: 'permissions'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PermissionDefinition'; ofType: null; }; }; }; } }; 'permittedAssetTypes': { name: 'permittedAssetTypes'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; } }; }; }; + 'SetCustomerForDraftOrderResult': { kind: 'UNION'; name: 'SetCustomerForDraftOrderResult'; fields: {}; possibleTypes: 'EmailAddressConflictError' | 'Order'; }; + 'SetOrderCustomerInput': { kind: 'INPUT_OBJECT'; name: 'SetOrderCustomerInput'; isOneOf: false; inputFields: [{ name: 'orderId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'customerId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'note'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; }; + 'SetOrderShippingMethodResult': { kind: 'UNION'; name: 'SetOrderShippingMethodResult'; fields: {}; possibleTypes: 'IneligibleShippingMethodError' | 'NoActiveOrderError' | 'Order' | 'OrderModificationError'; }; + 'SetSettingsStoreValueResult': { kind: 'OBJECT'; name: 'SetSettingsStoreValueResult'; fields: { 'error': { name: 'error'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'key': { name: 'key'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'result': { name: 'result'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; }; }; + 'SettingsStoreFieldDefinition': { kind: 'OBJECT'; name: 'SettingsStoreFieldDefinition'; fields: { 'currentValue': { name: 'currentValue'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'key': { name: 'key'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'readonly': { name: 'readonly'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'scopeType': { name: 'scopeType'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'SettingsStoreScopeType'; ofType: null; }; } }; }; }; + 'SettingsStoreInput': { kind: 'INPUT_OBJECT'; name: 'SettingsStoreInput'; isOneOf: false; inputFields: [{ name: 'key'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'value'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; }; defaultValue: null }]; }; + 'SettingsStoreScopeType': { name: 'SettingsStoreScopeType'; enumValues: 'GLOBAL' | 'USER' | 'CHANNEL' | 'USER_AND_CHANNEL' | 'CUSTOM'; }; + 'SettlePaymentError': { kind: 'OBJECT'; name: 'SettlePaymentError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'paymentErrorMessage': { name: 'paymentErrorMessage'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'SettlePaymentResult': { kind: 'UNION'; name: 'SettlePaymentResult'; fields: {}; possibleTypes: 'OrderStateTransitionError' | 'Payment' | 'PaymentStateTransitionError' | 'SettlePaymentError'; }; + 'SettleRefundInput': { kind: 'INPUT_OBJECT'; name: 'SettleRefundInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'transactionId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }]; }; + 'SettleRefundResult': { kind: 'UNION'; name: 'SettleRefundResult'; fields: {}; possibleTypes: 'Refund' | 'RefundStateTransitionError'; }; + 'ShippingLine': { kind: 'OBJECT'; name: 'ShippingLine'; fields: { 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'discountedPrice': { name: 'discountedPrice'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'discountedPriceWithTax': { name: 'discountedPriceWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'discounts': { name: 'discounts'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Discount'; ofType: null; }; }; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'price': { name: 'price'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'priceWithTax': { name: 'priceWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'shippingMethod': { name: 'shippingMethod'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ShippingMethod'; ofType: null; }; } }; }; }; + 'ShippingMethod': { kind: 'OBJECT'; name: 'ShippingMethod'; fields: { 'calculator': { name: 'calculator'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ConfigurableOperation'; ofType: null; }; } }; 'checker': { name: 'checker'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ConfigurableOperation'; ofType: null; }; } }; 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'fulfillmentHandlerCode': { name: 'fulfillmentHandlerCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ShippingMethodTranslation'; ofType: null; }; }; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'ShippingMethodFilterParameter': { kind: 'INPUT_OBJECT'; name: 'ShippingMethodFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'fulfillmentHandlerCode'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ShippingMethodFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ShippingMethodFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'ShippingMethodList': { kind: 'OBJECT'; name: 'ShippingMethodList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ShippingMethod'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'ShippingMethodListOptions': { kind: 'INPUT_OBJECT'; name: 'ShippingMethodListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'ShippingMethodSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'ShippingMethodFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'ShippingMethodQuote': { kind: 'OBJECT'; name: 'ShippingMethodQuote'; fields: { 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'metadata': { name: 'metadata'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'price': { name: 'price'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'priceWithTax': { name: 'priceWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; }; }; + 'ShippingMethodSortParameter': { kind: 'INPUT_OBJECT'; name: 'ShippingMethodSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'fulfillmentHandlerCode'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'ShippingMethodTranslation': { kind: 'OBJECT'; name: 'ShippingMethodTranslation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'ShippingMethodTranslationInput': { kind: 'INPUT_OBJECT'; name: 'ShippingMethodTranslationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'SinglePrice': { kind: 'OBJECT'; name: 'SinglePrice'; fields: { 'value': { name: 'value'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; }; }; + 'SlugForEntityInput': { kind: 'INPUT_OBJECT'; name: 'SlugForEntityInput'; isOneOf: false; inputFields: [{ name: 'entityName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'fieldName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'inputValue'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'entityId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }]; }; + 'SortOrder': { name: 'SortOrder'; enumValues: 'ASC' | 'DESC'; }; + 'StockAdjustment': { kind: 'OBJECT'; name: 'StockAdjustment'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'productVariant': { name: 'productVariant'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductVariant'; ofType: null; }; } }; 'quantity': { name: 'quantity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'StockMovementType'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'StockLevel': { kind: 'OBJECT'; name: 'StockLevel'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'stockAllocated': { name: 'stockAllocated'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'stockLocation': { name: 'stockLocation'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'StockLocation'; ofType: null; }; } }; 'stockLocationId': { name: 'stockLocationId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'stockOnHand': { name: 'stockOnHand'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'StockLevelInput': { kind: 'INPUT_OBJECT'; name: 'StockLevelInput'; isOneOf: false; inputFields: [{ name: 'stockLocationId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'stockOnHand'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }]; }; + 'StockLocation': { kind: 'OBJECT'; name: 'StockLocation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'StockLocationFilterParameter': { kind: 'INPUT_OBJECT'; name: 'StockLocationFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'StockLocationFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'StockLocationFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'StockLocationList': { kind: 'OBJECT'; name: 'StockLocationList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'StockLocation'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'StockLocationListOptions': { kind: 'INPUT_OBJECT'; name: 'StockLocationListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'StockLocationSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'StockLocationFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'StockLocationSortParameter': { kind: 'INPUT_OBJECT'; name: 'StockLocationSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'StockMovement': { kind: 'INTERFACE'; name: 'StockMovement'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'productVariant': { name: 'productVariant'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductVariant'; ofType: null; }; } }; 'quantity': { name: 'quantity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'StockMovementType'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; possibleTypes: 'Allocation' | 'Cancellation' | 'Release' | 'Return' | 'Sale' | 'StockAdjustment'; }; + 'StockMovementItem': { kind: 'UNION'; name: 'StockMovementItem'; fields: {}; possibleTypes: 'Allocation' | 'Cancellation' | 'Release' | 'Return' | 'Sale' | 'StockAdjustment'; }; + 'StockMovementList': { kind: 'OBJECT'; name: 'StockMovementList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'StockMovementItem'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'StockMovementListOptions': { kind: 'INPUT_OBJECT'; name: 'StockMovementListOptions'; isOneOf: false; inputFields: [{ name: 'type'; type: { kind: 'ENUM'; name: 'StockMovementType'; ofType: null; }; defaultValue: null }, { name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }]; }; + 'StockMovementType': { name: 'StockMovementType'; enumValues: 'ADJUSTMENT' | 'ALLOCATION' | 'RELEASE' | 'SALE' | 'CANCELLATION' | 'RETURN'; }; + 'String': unknown; + 'StringCustomFieldConfig': { kind: 'OBJECT'; name: 'StringCustomFieldConfig'; fields: { 'deprecated': { name: 'deprecated'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'deprecationReason': { name: 'deprecationReason'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'internal': { name: 'internal'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'length': { name: 'length'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nullable': { name: 'nullable'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'options': { name: 'options'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'StringFieldOption'; ofType: null; }; }; } }; 'pattern': { name: 'pattern'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'readonly': { name: 'readonly'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'requiresPermission': { name: 'requiresPermission'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'StringFieldOption': { kind: 'OBJECT'; name: 'StringFieldOption'; fields: { 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'value': { name: 'value'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'StringListOperators': { kind: 'INPUT_OBJECT'; name: 'StringListOperators'; isOneOf: false; inputFields: [{ name: 'inList'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }]; }; + 'StringOperators': { kind: 'INPUT_OBJECT'; name: 'StringOperators'; isOneOf: false; inputFields: [{ name: 'eq'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'notEq'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'contains'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'notContains'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'in'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'notIn'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'regex'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'isNull'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; }; + 'StringStructFieldConfig': { kind: 'OBJECT'; name: 'StringStructFieldConfig'; fields: { 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'length': { name: 'length'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'options': { name: 'options'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'StringFieldOption'; ofType: null; }; }; } }; 'pattern': { name: 'pattern'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'StructCustomFieldConfig': { kind: 'OBJECT'; name: 'StructCustomFieldConfig'; fields: { 'deprecated': { name: 'deprecated'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'deprecationReason': { name: 'deprecationReason'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'fields': { name: 'fields'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'StructFieldConfig'; ofType: null; }; }; }; } }; 'internal': { name: 'internal'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nullable': { name: 'nullable'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'readonly': { name: 'readonly'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'requiresPermission': { name: 'requiresPermission'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'StructField': { kind: 'INTERFACE'; name: 'StructField'; fields: { 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; possibleTypes: 'BooleanStructFieldConfig' | 'DateTimeStructFieldConfig' | 'FloatStructFieldConfig' | 'IntStructFieldConfig' | 'StringStructFieldConfig' | 'TextStructFieldConfig'; }; + 'StructFieldConfig': { kind: 'UNION'; name: 'StructFieldConfig'; fields: {}; possibleTypes: 'BooleanStructFieldConfig' | 'DateTimeStructFieldConfig' | 'FloatStructFieldConfig' | 'IntStructFieldConfig' | 'StringStructFieldConfig' | 'TextStructFieldConfig'; }; + 'Success': { kind: 'OBJECT'; name: 'Success'; fields: { 'success': { name: 'success'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; }; }; + 'Surcharge': { kind: 'OBJECT'; name: 'Surcharge'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'price': { name: 'price'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'priceWithTax': { name: 'priceWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'sku': { name: 'sku'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'taxLines': { name: 'taxLines'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TaxLine'; ofType: null; }; }; }; } }; 'taxRate': { name: 'taxRate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'SurchargeInput': { kind: 'INPUT_OBJECT'; name: 'SurchargeInput'; isOneOf: false; inputFields: [{ name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'sku'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'price'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; }; defaultValue: null }, { name: 'priceIncludesTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }, { name: 'taxRate'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'taxDescription'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; }; + 'Tag': { kind: 'OBJECT'; name: 'Tag'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'value': { name: 'value'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'TagFilterParameter': { kind: 'INPUT_OBJECT'; name: 'TagFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'value'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'TagFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'TagFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'TagList': { kind: 'OBJECT'; name: 'TagList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Tag'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'TagListOptions': { kind: 'INPUT_OBJECT'; name: 'TagListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'TagSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'TagFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'TagSortParameter': { kind: 'INPUT_OBJECT'; name: 'TagSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'value'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'TaxCategory': { kind: 'OBJECT'; name: 'TaxCategory'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'isDefault': { name: 'isDefault'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'TaxCategoryFilterParameter': { kind: 'INPUT_OBJECT'; name: 'TaxCategoryFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'isDefault'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'TaxCategoryFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'TaxCategoryFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'TaxCategoryList': { kind: 'OBJECT'; name: 'TaxCategoryList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TaxCategory'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'TaxCategoryListOptions': { kind: 'INPUT_OBJECT'; name: 'TaxCategoryListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'TaxCategorySortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'TaxCategoryFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'TaxCategorySortParameter': { kind: 'INPUT_OBJECT'; name: 'TaxCategorySortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'TaxLine': { kind: 'OBJECT'; name: 'TaxLine'; fields: { 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'taxRate': { name: 'taxRate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; } }; }; }; + 'TaxRate': { kind: 'OBJECT'; name: 'TaxRate'; fields: { 'category': { name: 'category'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TaxCategory'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'customerGroup': { name: 'customerGroup'; type: { kind: 'OBJECT'; name: 'CustomerGroup'; ofType: null; } }; 'enabled': { name: 'enabled'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'value': { name: 'value'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; } }; 'zone': { name: 'zone'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Zone'; ofType: null; }; } }; }; }; + 'TaxRateFilterParameter': { kind: 'INPUT_OBJECT'; name: 'TaxRateFilterParameter'; isOneOf: false; inputFields: [{ name: 'zoneId'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'categoryId'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'enabled'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanOperators'; ofType: null; }; defaultValue: null }, { name: 'value'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'TaxRateFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'TaxRateFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'TaxRateList': { kind: 'OBJECT'; name: 'TaxRateList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TaxRate'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'TaxRateListOptions': { kind: 'INPUT_OBJECT'; name: 'TaxRateListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'TaxRateSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'TaxRateFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'TaxRateSortParameter': { kind: 'INPUT_OBJECT'; name: 'TaxRateSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'value'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'TestEligibleShippingMethodsInput': { kind: 'INPUT_OBJECT'; name: 'TestEligibleShippingMethodsInput'; isOneOf: false; inputFields: [{ name: 'shippingAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'CreateAddressInput'; ofType: null; }; }; defaultValue: null }, { name: 'lines'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'TestShippingMethodOrderLineInput'; ofType: null; }; }; }; }; defaultValue: null }]; }; + 'TestShippingMethodInput': { kind: 'INPUT_OBJECT'; name: 'TestShippingMethodInput'; isOneOf: false; inputFields: [{ name: 'checker'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ConfigurableOperationInput'; ofType: null; }; }; defaultValue: null }, { name: 'calculator'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ConfigurableOperationInput'; ofType: null; }; }; defaultValue: null }, { name: 'shippingAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'CreateAddressInput'; ofType: null; }; }; defaultValue: null }, { name: 'lines'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'TestShippingMethodOrderLineInput'; ofType: null; }; }; }; }; defaultValue: null }]; }; + 'TestShippingMethodOrderLineInput': { kind: 'INPUT_OBJECT'; name: 'TestShippingMethodOrderLineInput'; isOneOf: false; inputFields: [{ name: 'productVariantId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'quantity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }]; }; + 'TestShippingMethodQuote': { kind: 'OBJECT'; name: 'TestShippingMethodQuote'; fields: { 'metadata': { name: 'metadata'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'price': { name: 'price'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'priceWithTax': { name: 'priceWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; }; }; + 'TestShippingMethodResult': { kind: 'OBJECT'; name: 'TestShippingMethodResult'; fields: { 'eligible': { name: 'eligible'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'quote': { name: 'quote'; type: { kind: 'OBJECT'; name: 'TestShippingMethodQuote'; ofType: null; } }; }; }; + 'TextCustomFieldConfig': { kind: 'OBJECT'; name: 'TextCustomFieldConfig'; fields: { 'deprecated': { name: 'deprecated'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'deprecationReason': { name: 'deprecationReason'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'internal': { name: 'internal'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nullable': { name: 'nullable'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'readonly': { name: 'readonly'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'requiresPermission': { name: 'requiresPermission'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'TextStructFieldConfig': { kind: 'OBJECT'; name: 'TextStructFieldConfig'; fields: { 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'TransitionFulfillmentToStateResult': { kind: 'UNION'; name: 'TransitionFulfillmentToStateResult'; fields: {}; possibleTypes: 'Fulfillment' | 'FulfillmentStateTransitionError'; }; + 'TransitionOrderToStateResult': { kind: 'UNION'; name: 'TransitionOrderToStateResult'; fields: {}; possibleTypes: 'Order' | 'OrderStateTransitionError'; }; + 'TransitionPaymentToStateResult': { kind: 'UNION'; name: 'TransitionPaymentToStateResult'; fields: {}; possibleTypes: 'Payment' | 'PaymentStateTransitionError'; }; + 'UpdateActiveAdministratorInput': { kind: 'INPUT_OBJECT'; name: 'UpdateActiveAdministratorInput'; isOneOf: false; inputFields: [{ name: 'firstName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'lastName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'emailAddress'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'password'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateAddressInput': { kind: 'INPUT_OBJECT'; name: 'UpdateAddressInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'fullName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'company'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'streetLine1'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'streetLine2'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'city'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'province'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'postalCode'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'countryCode'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'phoneNumber'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'defaultShippingAddress'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'defaultBillingAddress'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateAdministratorInput': { kind: 'INPUT_OBJECT'; name: 'UpdateAdministratorInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'firstName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'lastName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'emailAddress'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'password'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'roleIds'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateApiKeyInput': { kind: 'INPUT_OBJECT'; name: 'UpdateApiKeyInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'roleIds'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; defaultValue: null }, { name: 'translations'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'UpdateApiKeyTranslationInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateApiKeyTranslationInput': { kind: 'INPUT_OBJECT'; name: 'UpdateApiKeyTranslationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateAssetInput': { kind: 'INPUT_OBJECT'; name: 'UpdateAssetInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'focalPoint'; type: { kind: 'INPUT_OBJECT'; name: 'CoordinateInput'; ofType: null; }; defaultValue: null }, { name: 'tags'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'translations'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'AssetTranslationInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateChannelInput': { kind: 'INPUT_OBJECT'; name: 'UpdateChannelInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'code'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'token'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'defaultLanguageCode'; type: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; defaultValue: null }, { name: 'availableLanguageCodes'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; }; }; defaultValue: null }, { name: 'pricesIncludeTax'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'currencyCode'; type: { kind: 'ENUM'; name: 'CurrencyCode'; ofType: null; }; defaultValue: null }, { name: 'defaultCurrencyCode'; type: { kind: 'ENUM'; name: 'CurrencyCode'; ofType: null; }; defaultValue: null }, { name: 'availableCurrencyCodes'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'CurrencyCode'; ofType: null; }; }; }; defaultValue: null }, { name: 'trackInventory'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'outOfStockThreshold'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'defaultTaxZoneId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'defaultShippingZoneId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'sellerId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateChannelResult': { kind: 'UNION'; name: 'UpdateChannelResult'; fields: {}; possibleTypes: 'Channel' | 'LanguageNotAvailableError'; }; + 'UpdateCollectionInput': { kind: 'INPUT_OBJECT'; name: 'UpdateCollectionInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'isPrivate'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'featuredAssetId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'parentId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'assetIds'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; defaultValue: null }, { name: 'inheritFilters'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'filters'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ConfigurableOperationInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'translations'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'UpdateCollectionTranslationInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateCollectionTranslationInput': { kind: 'INPUT_OBJECT'; name: 'UpdateCollectionTranslationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'slug'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateCountryInput': { kind: 'INPUT_OBJECT'; name: 'UpdateCountryInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'code'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'translations'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'CountryTranslationInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'enabled'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateCustomerGroupInput': { kind: 'INPUT_OBJECT'; name: 'UpdateCustomerGroupInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateCustomerInput': { kind: 'INPUT_OBJECT'; name: 'UpdateCustomerInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'title'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'firstName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'lastName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'phoneNumber'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'emailAddress'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateCustomerNoteInput': { kind: 'INPUT_OBJECT'; name: 'UpdateCustomerNoteInput'; isOneOf: false; inputFields: [{ name: 'noteId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'note'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }]; }; + 'UpdateCustomerResult': { kind: 'UNION'; name: 'UpdateCustomerResult'; fields: {}; possibleTypes: 'Customer' | 'EmailAddressConflictError'; }; + 'UpdateFacetInput': { kind: 'INPUT_OBJECT'; name: 'UpdateFacetInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'isPrivate'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'translations'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'FacetTranslationInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateFacetValueInput': { kind: 'INPUT_OBJECT'; name: 'UpdateFacetValueInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'code'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'translations'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'FacetValueTranslationInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateGlobalSettingsInput': { kind: 'INPUT_OBJECT'; name: 'UpdateGlobalSettingsInput'; isOneOf: false; inputFields: [{ name: 'availableLanguages'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; }; }; defaultValue: null }, { name: 'trackInventory'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'outOfStockThreshold'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateGlobalSettingsResult': { kind: 'UNION'; name: 'UpdateGlobalSettingsResult'; fields: {}; possibleTypes: 'ChannelDefaultLanguageError' | 'GlobalSettings'; }; + 'UpdateOrderAddressInput': { kind: 'INPUT_OBJECT'; name: 'UpdateOrderAddressInput'; isOneOf: false; inputFields: [{ name: 'fullName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'company'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'streetLine1'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'streetLine2'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'city'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'province'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'postalCode'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'countryCode'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'phoneNumber'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; }; + 'UpdateOrderInput': { kind: 'INPUT_OBJECT'; name: 'UpdateOrderInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateOrderItemErrorResult': { kind: 'UNION'; name: 'UpdateOrderItemErrorResult'; fields: {}; possibleTypes: 'InsufficientStockError' | 'NegativeQuantityError' | 'OrderInterceptorError' | 'OrderLimitError' | 'OrderModificationError'; }; + 'UpdateOrderItemsResult': { kind: 'UNION'; name: 'UpdateOrderItemsResult'; fields: {}; possibleTypes: 'InsufficientStockError' | 'NegativeQuantityError' | 'Order' | 'OrderInterceptorError' | 'OrderLimitError' | 'OrderModificationError'; }; + 'UpdateOrderNoteInput': { kind: 'INPUT_OBJECT'; name: 'UpdateOrderNoteInput'; isOneOf: false; inputFields: [{ name: 'noteId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'note'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'isPublic'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; }; + 'UpdatePaymentMethodInput': { kind: 'INPUT_OBJECT'; name: 'UpdatePaymentMethodInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'code'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'enabled'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'checker'; type: { kind: 'INPUT_OBJECT'; name: 'ConfigurableOperationInput'; ofType: null; }; defaultValue: null }, { name: 'handler'; type: { kind: 'INPUT_OBJECT'; name: 'ConfigurableOperationInput'; ofType: null; }; defaultValue: null }, { name: 'translations'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'PaymentMethodTranslationInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateProductInput': { kind: 'INPUT_OBJECT'; name: 'UpdateProductInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'enabled'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'featuredAssetId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'assetIds'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; defaultValue: null }, { name: 'facetValueIds'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; defaultValue: null }, { name: 'translations'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ProductTranslationInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateProductOptionGroupInput': { kind: 'INPUT_OBJECT'; name: 'UpdateProductOptionGroupInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'code'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'translations'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ProductOptionGroupTranslationInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateProductOptionInput': { kind: 'INPUT_OBJECT'; name: 'UpdateProductOptionInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'code'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'translations'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ProductOptionGroupTranslationInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateProductVariantInput': { kind: 'INPUT_OBJECT'; name: 'UpdateProductVariantInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'enabled'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'translations'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ProductVariantTranslationInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'facetValueIds'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; defaultValue: null }, { name: 'optionIds'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; defaultValue: null }, { name: 'sku'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'taxCategoryId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'price'; type: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; defaultValue: null }, { name: 'prices'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'UpdateProductVariantPriceInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'featuredAssetId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'assetIds'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; defaultValue: null }, { name: 'stockOnHand'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'stockLevels'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'StockLevelInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'outOfStockThreshold'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'useGlobalOutOfStockThreshold'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'trackInventory'; type: { kind: 'ENUM'; name: 'GlobalFlag'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateProductVariantPriceInput': { kind: 'INPUT_OBJECT'; name: 'UpdateProductVariantPriceInput'; isOneOf: false; inputFields: [{ name: 'currencyCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'CurrencyCode'; ofType: null; }; }; defaultValue: null }, { name: 'price'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; }; defaultValue: null }, { name: 'delete'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdatePromotionInput': { kind: 'INPUT_OBJECT'; name: 'UpdatePromotionInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'enabled'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'startsAt'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; defaultValue: null }, { name: 'endsAt'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; defaultValue: null }, { name: 'couponCode'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'perCustomerUsageLimit'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'usageLimit'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'conditions'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ConfigurableOperationInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'actions'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ConfigurableOperationInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'translations'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'PromotionTranslationInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdatePromotionResult': { kind: 'UNION'; name: 'UpdatePromotionResult'; fields: {}; possibleTypes: 'MissingConditionsError' | 'Promotion'; }; + 'UpdateProvinceInput': { kind: 'INPUT_OBJECT'; name: 'UpdateProvinceInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'code'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'translations'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ProvinceTranslationInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'enabled'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateRoleInput': { kind: 'INPUT_OBJECT'; name: 'UpdateRoleInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'code'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'permissions'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; }; defaultValue: null }, { name: 'channelIds'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; defaultValue: null }]; }; + 'UpdateScheduledTaskInput': { kind: 'INPUT_OBJECT'; name: 'UpdateScheduledTaskInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'enabled'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; }; + 'UpdateSellerInput': { kind: 'INPUT_OBJECT'; name: 'UpdateSellerInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateShippingMethodInput': { kind: 'INPUT_OBJECT'; name: 'UpdateShippingMethodInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'code'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'fulfillmentHandler'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'checker'; type: { kind: 'INPUT_OBJECT'; name: 'ConfigurableOperationInput'; ofType: null; }; defaultValue: null }, { name: 'calculator'; type: { kind: 'INPUT_OBJECT'; name: 'ConfigurableOperationInput'; ofType: null; }; defaultValue: null }, { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ShippingMethodTranslationInput'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateStockLocationInput': { kind: 'INPUT_OBJECT'; name: 'UpdateStockLocationInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateTagInput': { kind: 'INPUT_OBJECT'; name: 'UpdateTagInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'value'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; }; + 'UpdateTaxCategoryInput': { kind: 'INPUT_OBJECT'; name: 'UpdateTaxCategoryInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'isDefault'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateTaxRateInput': { kind: 'INPUT_OBJECT'; name: 'UpdateTaxRateInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'value'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'enabled'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'categoryId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'zoneId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'customerGroupId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateZoneInput': { kind: 'INPUT_OBJECT'; name: 'UpdateZoneInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'Upload': unknown; + 'User': { kind: 'OBJECT'; name: 'User'; fields: { 'authenticationMethods': { name: 'authenticationMethods'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AuthenticationMethod'; ofType: null; }; }; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'identifier': { name: 'identifier'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'lastLogin': { name: 'lastLogin'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; } }; 'roles': { name: 'roles'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Role'; ofType: null; }; }; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'verified': { name: 'verified'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; }; }; + 'Zone': { kind: 'OBJECT'; name: 'Zone'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'members': { name: 'members'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INTERFACE'; name: 'Region'; ofType: null; }; }; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'ZoneFilterParameter': { kind: 'INPUT_OBJECT'; name: 'ZoneFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ZoneFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ZoneFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'ZoneList': { kind: 'OBJECT'; name: 'ZoneList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Zone'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'ZoneListOptions': { kind: 'INPUT_OBJECT'; name: 'ZoneListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'ZoneSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'ZoneFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'ZoneSortParameter': { kind: 'INPUT_OBJECT'; name: 'ZoneSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; +}; + +/** An IntrospectionQuery representation of your schema. + * + * @remarks + * This is an introspection of your schema saved as a file by GraphQLSP. + * It will automatically be used by `gql.tada` to infer the types of your GraphQL documents. + * If you need to reuse this data or update your `scalars`, update `tadaOutputLocation` to + * instead save to a .ts instead of a .d.ts file. + */ +export type introspection = { + name: never; + query: 'Query'; + mutation: 'Mutation'; + subscription: never; + types: introspection_types; +}; + +import 'gql.tada'; + +declare module 'gql.tada' { + interface setupSchema { + introspection: introspection; + } +} diff --git a/packages/meilisearch-plugin/e2e/graphql/graphql-env-shop.d.ts b/packages/meilisearch-plugin/e2e/graphql/graphql-env-shop.d.ts new file mode 100644 index 00000000..8e694a90 --- /dev/null +++ b/packages/meilisearch-plugin/e2e/graphql/graphql-env-shop.d.ts @@ -0,0 +1,270 @@ +/* eslint-disable */ +/* prettier-ignore */ + +export type introspection_types = { + 'ActiveOrderResult': { kind: 'UNION'; name: 'ActiveOrderResult'; fields: {}; possibleTypes: 'NoActiveOrderError' | 'Order'; }; + 'AddItemInput': { kind: 'INPUT_OBJECT'; name: 'AddItemInput'; isOneOf: false; inputFields: [{ name: 'productVariantId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'quantity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }]; }; + 'AddPaymentToOrderResult': { kind: 'UNION'; name: 'AddPaymentToOrderResult'; fields: {}; possibleTypes: 'IneligiblePaymentMethodError' | 'NoActiveOrderError' | 'Order' | 'OrderPaymentStateError' | 'OrderStateTransitionError' | 'PaymentDeclinedError' | 'PaymentFailedError'; }; + 'Address': { kind: 'OBJECT'; name: 'Address'; fields: { 'city': { name: 'city'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'company': { name: 'company'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'country': { name: 'country'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Country'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'defaultBillingAddress': { name: 'defaultBillingAddress'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'defaultShippingAddress': { name: 'defaultShippingAddress'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'fullName': { name: 'fullName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'phoneNumber': { name: 'phoneNumber'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'postalCode': { name: 'postalCode'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'province': { name: 'province'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'streetLine1': { name: 'streetLine1'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'streetLine2': { name: 'streetLine2'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'Adjustment': { kind: 'OBJECT'; name: 'Adjustment'; fields: { 'adjustmentSource': { name: 'adjustmentSource'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'amount': { name: 'amount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'data': { name: 'data'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'AdjustmentType'; ofType: null; }; } }; }; }; + 'AdjustmentType': { name: 'AdjustmentType'; enumValues: 'PROMOTION' | 'DISTRIBUTED_ORDER_PROMOTION' | 'OTHER'; }; + 'AlreadyLoggedInError': { kind: 'OBJECT'; name: 'AlreadyLoggedInError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'ApplyCouponCodeResult': { kind: 'UNION'; name: 'ApplyCouponCodeResult'; fields: {}; possibleTypes: 'CouponCodeExpiredError' | 'CouponCodeInvalidError' | 'CouponCodeLimitError' | 'Order'; }; + 'Asset': { kind: 'OBJECT'; name: 'Asset'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'fileSize': { name: 'fileSize'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'focalPoint': { name: 'focalPoint'; type: { kind: 'OBJECT'; name: 'Coordinate'; ofType: null; } }; 'height': { name: 'height'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'mimeType': { name: 'mimeType'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'preview': { name: 'preview'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'source': { name: 'source'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'tags': { name: 'tags'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Tag'; ofType: null; }; }; }; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AssetTranslation'; ofType: null; }; }; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'AssetType'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'width': { name: 'width'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'AssetList': { kind: 'OBJECT'; name: 'AssetList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Asset'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'AssetTranslation': { kind: 'OBJECT'; name: 'AssetTranslation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'AssetType': { name: 'AssetType'; enumValues: 'IMAGE' | 'VIDEO' | 'BINARY'; }; + 'AuthenticationInput': { kind: 'INPUT_OBJECT'; name: 'AuthenticationInput'; isOneOf: false; inputFields: [{ name: 'native'; type: { kind: 'INPUT_OBJECT'; name: 'NativeAuthInput'; ofType: null; }; defaultValue: null }]; }; + 'AuthenticationMethod': { kind: 'OBJECT'; name: 'AuthenticationMethod'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'strategy': { name: 'strategy'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'AuthenticationResult': { kind: 'UNION'; name: 'AuthenticationResult'; fields: {}; possibleTypes: 'CurrentUser' | 'InvalidCredentialsError' | 'NotVerifiedError'; }; + 'Boolean': unknown; + 'BooleanCustomFieldConfig': { kind: 'OBJECT'; name: 'BooleanCustomFieldConfig'; fields: { 'deprecated': { name: 'deprecated'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'deprecationReason': { name: 'deprecationReason'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'internal': { name: 'internal'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nullable': { name: 'nullable'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'readonly': { name: 'readonly'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'requiresPermission': { name: 'requiresPermission'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'BooleanListOperators': { kind: 'INPUT_OBJECT'; name: 'BooleanListOperators'; isOneOf: false; inputFields: [{ name: 'inList'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }]; }; + 'BooleanOperators': { kind: 'INPUT_OBJECT'; name: 'BooleanOperators'; isOneOf: false; inputFields: [{ name: 'eq'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'isNull'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; }; + 'BooleanStructFieldConfig': { kind: 'OBJECT'; name: 'BooleanStructFieldConfig'; fields: { 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'Channel': { kind: 'OBJECT'; name: 'Channel'; fields: { 'availableCurrencyCodes': { name: 'availableCurrencyCodes'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'CurrencyCode'; ofType: null; }; }; }; } }; 'availableLanguageCodes': { name: 'availableLanguageCodes'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; }; } }; 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'currencyCode': { name: 'currencyCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'CurrencyCode'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'defaultCurrencyCode': { name: 'defaultCurrencyCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'CurrencyCode'; ofType: null; }; } }; 'defaultLanguageCode': { name: 'defaultLanguageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'defaultShippingZone': { name: 'defaultShippingZone'; type: { kind: 'OBJECT'; name: 'Zone'; ofType: null; } }; 'defaultTaxZone': { name: 'defaultTaxZone'; type: { kind: 'OBJECT'; name: 'Zone'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'outOfStockThreshold': { name: 'outOfStockThreshold'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'pricesIncludeTax': { name: 'pricesIncludeTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'seller': { name: 'seller'; type: { kind: 'OBJECT'; name: 'Seller'; ofType: null; } }; 'token': { name: 'token'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'trackInventory': { name: 'trackInventory'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'Collection': { kind: 'OBJECT'; name: 'Collection'; fields: { 'assets': { name: 'assets'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Asset'; ofType: null; }; }; }; } }; 'breadcrumbs': { name: 'breadcrumbs'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CollectionBreadcrumb'; ofType: null; }; }; }; } }; 'children': { name: 'children'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Collection'; ofType: null; }; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'featuredAsset': { name: 'featuredAsset'; type: { kind: 'OBJECT'; name: 'Asset'; ofType: null; } }; 'filters': { name: 'filters'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ConfigurableOperation'; ofType: null; }; }; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'parent': { name: 'parent'; type: { kind: 'OBJECT'; name: 'Collection'; ofType: null; } }; 'parentId': { name: 'parentId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'position': { name: 'position'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'productVariantCount': { name: 'productVariantCount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'productVariants': { name: 'productVariants'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductVariantList'; ofType: null; }; } }; 'slug': { name: 'slug'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CollectionTranslation'; ofType: null; }; }; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'CollectionBreadcrumb': { kind: 'OBJECT'; name: 'CollectionBreadcrumb'; fields: { 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'slug': { name: 'slug'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'CollectionFilterParameter': { kind: 'INPUT_OBJECT'; name: 'CollectionFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'slug'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'position'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'parentId'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'productVariantCount'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'CollectionFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'CollectionFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'CollectionList': { kind: 'OBJECT'; name: 'CollectionList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Collection'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'CollectionListOptions': { kind: 'INPUT_OBJECT'; name: 'CollectionListOptions'; isOneOf: false; inputFields: [{ name: 'topLevelOnly'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'CollectionSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'CollectionFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'CollectionResult': { kind: 'OBJECT'; name: 'CollectionResult'; fields: { 'collection': { name: 'collection'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Collection'; ofType: null; }; } }; 'count': { name: 'count'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'CollectionSortParameter': { kind: 'INPUT_OBJECT'; name: 'CollectionSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'slug'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'position'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'parentId'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'productVariantCount'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'CollectionTranslation': { kind: 'OBJECT'; name: 'CollectionTranslation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'slug': { name: 'slug'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'ConfigArg': { kind: 'OBJECT'; name: 'ConfigArg'; fields: { 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'value': { name: 'value'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'ConfigArgDefinition': { kind: 'OBJECT'; name: 'ConfigArgDefinition'; fields: { 'defaultValue': { name: 'defaultValue'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'label': { name: 'label'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'required': { name: 'required'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'ConfigArgInput': { kind: 'INPUT_OBJECT'; name: 'ConfigArgInput'; isOneOf: false; inputFields: [{ name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'value'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }]; }; + 'ConfigurableOperation': { kind: 'OBJECT'; name: 'ConfigurableOperation'; fields: { 'args': { name: 'args'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ConfigArg'; ofType: null; }; }; }; } }; 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'ConfigurableOperationDefinition': { kind: 'OBJECT'; name: 'ConfigurableOperationDefinition'; fields: { 'args': { name: 'args'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ConfigArgDefinition'; ofType: null; }; }; }; } }; 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'ConfigurableOperationInput': { kind: 'INPUT_OBJECT'; name: 'ConfigurableOperationInput'; isOneOf: false; inputFields: [{ name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'arguments'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ConfigArgInput'; ofType: null; }; }; }; }; defaultValue: null }]; }; + 'Coordinate': { kind: 'OBJECT'; name: 'Coordinate'; fields: { 'x': { name: 'x'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; } }; 'y': { name: 'y'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; } }; }; }; + 'Country': { kind: 'OBJECT'; name: 'Country'; fields: { 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'enabled': { name: 'enabled'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'parent': { name: 'parent'; type: { kind: 'INTERFACE'; name: 'Region'; ofType: null; } }; 'parentId': { name: 'parentId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'RegionTranslation'; ofType: null; }; }; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'CountryList': { kind: 'OBJECT'; name: 'CountryList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Country'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'CouponCodeExpiredError': { kind: 'OBJECT'; name: 'CouponCodeExpiredError'; fields: { 'couponCode': { name: 'couponCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'CouponCodeInvalidError': { kind: 'OBJECT'; name: 'CouponCodeInvalidError'; fields: { 'couponCode': { name: 'couponCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'CouponCodeLimitError': { kind: 'OBJECT'; name: 'CouponCodeLimitError'; fields: { 'couponCode': { name: 'couponCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'limit': { name: 'limit'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'CreateAddressInput': { kind: 'INPUT_OBJECT'; name: 'CreateAddressInput'; isOneOf: false; inputFields: [{ name: 'fullName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'company'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'streetLine1'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'streetLine2'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'city'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'province'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'postalCode'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'countryCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'phoneNumber'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'defaultShippingAddress'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'defaultBillingAddress'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CreateCustomerInput': { kind: 'INPUT_OBJECT'; name: 'CreateCustomerInput'; isOneOf: false; inputFields: [{ name: 'title'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'firstName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'lastName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'phoneNumber'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'emailAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'CurrencyCode': { name: 'CurrencyCode'; enumValues: 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRU' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'SSP' | 'STN' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYU' | 'UZS' | 'VES' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL'; }; + 'CurrentUser': { kind: 'OBJECT'; name: 'CurrentUser'; fields: { 'channels': { name: 'channels'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CurrentUserChannel'; ofType: null; }; }; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'identifier': { name: 'identifier'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'CurrentUserChannel': { kind: 'OBJECT'; name: 'CurrentUserChannel'; fields: { 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'permissions': { name: 'permissions'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; }; } }; 'token': { name: 'token'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'CustomField': { kind: 'INTERFACE'; name: 'CustomField'; fields: { 'deprecated': { name: 'deprecated'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'deprecationReason': { name: 'deprecationReason'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'internal': { name: 'internal'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nullable': { name: 'nullable'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'readonly': { name: 'readonly'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'requiresPermission': { name: 'requiresPermission'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; possibleTypes: 'BooleanCustomFieldConfig' | 'DateTimeCustomFieldConfig' | 'FloatCustomFieldConfig' | 'IntCustomFieldConfig' | 'LocaleStringCustomFieldConfig' | 'LocaleTextCustomFieldConfig' | 'RelationCustomFieldConfig' | 'StringCustomFieldConfig' | 'StructCustomFieldConfig' | 'TextCustomFieldConfig'; }; + 'CustomFieldConfig': { kind: 'UNION'; name: 'CustomFieldConfig'; fields: {}; possibleTypes: 'BooleanCustomFieldConfig' | 'DateTimeCustomFieldConfig' | 'FloatCustomFieldConfig' | 'IntCustomFieldConfig' | 'LocaleStringCustomFieldConfig' | 'LocaleTextCustomFieldConfig' | 'RelationCustomFieldConfig' | 'StringCustomFieldConfig' | 'StructCustomFieldConfig' | 'TextCustomFieldConfig'; }; + 'Customer': { kind: 'OBJECT'; name: 'Customer'; fields: { 'addresses': { name: 'addresses'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Address'; ofType: null; }; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'emailAddress': { name: 'emailAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'firstName': { name: 'firstName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'lastName': { name: 'lastName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'orders': { name: 'orders'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'OrderList'; ofType: null; }; } }; 'phoneNumber': { name: 'phoneNumber'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'title': { name: 'title'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'user': { name: 'user'; type: { kind: 'OBJECT'; name: 'User'; ofType: null; } }; }; }; + 'CustomerFilterParameter': { kind: 'INPUT_OBJECT'; name: 'CustomerFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'title'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'firstName'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'lastName'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'phoneNumber'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'emailAddress'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'CustomerFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'CustomerFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'CustomerGroup': { kind: 'OBJECT'; name: 'CustomerGroup'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'customers': { name: 'customers'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CustomerList'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'CustomerList': { kind: 'OBJECT'; name: 'CustomerList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Customer'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'CustomerListOptions': { kind: 'INPUT_OBJECT'; name: 'CustomerListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'CustomerSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'CustomerFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'CustomerSortParameter': { kind: 'INPUT_OBJECT'; name: 'CustomerSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'title'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'firstName'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'lastName'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'phoneNumber'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'emailAddress'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'DateListOperators': { kind: 'INPUT_OBJECT'; name: 'DateListOperators'; isOneOf: false; inputFields: [{ name: 'inList'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; }; defaultValue: null }]; }; + 'DateOperators': { kind: 'INPUT_OBJECT'; name: 'DateOperators'; isOneOf: false; inputFields: [{ name: 'eq'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; defaultValue: null }, { name: 'before'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; defaultValue: null }, { name: 'after'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; defaultValue: null }, { name: 'between'; type: { kind: 'INPUT_OBJECT'; name: 'DateRange'; ofType: null; }; defaultValue: null }, { name: 'isNull'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; }; + 'DateRange': { kind: 'INPUT_OBJECT'; name: 'DateRange'; isOneOf: false; inputFields: [{ name: 'start'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; }; defaultValue: null }, { name: 'end'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; }; defaultValue: null }]; }; + 'DateTime': unknown; + 'DateTimeCustomFieldConfig': { kind: 'OBJECT'; name: 'DateTimeCustomFieldConfig'; fields: { 'deprecated': { name: 'deprecated'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'deprecationReason': { name: 'deprecationReason'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'internal': { name: 'internal'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'max': { name: 'max'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'min': { name: 'min'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nullable': { name: 'nullable'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'readonly': { name: 'readonly'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'requiresPermission': { name: 'requiresPermission'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; } }; 'step': { name: 'step'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'DateTimeStructFieldConfig': { kind: 'OBJECT'; name: 'DateTimeStructFieldConfig'; fields: { 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'max': { name: 'max'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'min': { name: 'min'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'step': { name: 'step'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'DeletionResponse': { kind: 'OBJECT'; name: 'DeletionResponse'; fields: { 'message': { name: 'message'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'result': { name: 'result'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'DeletionResult'; ofType: null; }; } }; }; }; + 'DeletionResult': { name: 'DeletionResult'; enumValues: 'DELETED' | 'NOT_DELETED'; }; + 'Discount': { kind: 'OBJECT'; name: 'Discount'; fields: { 'adjustmentSource': { name: 'adjustmentSource'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'amount': { name: 'amount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'amountWithTax': { name: 'amountWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'AdjustmentType'; ofType: null; }; } }; }; }; + 'EmailAddressConflictError': { kind: 'OBJECT'; name: 'EmailAddressConflictError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'ErrorCode': { name: 'ErrorCode'; enumValues: 'UNKNOWN_ERROR' | 'NATIVE_AUTH_STRATEGY_ERROR' | 'INVALID_CREDENTIALS_ERROR' | 'ORDER_STATE_TRANSITION_ERROR' | 'EMAIL_ADDRESS_CONFLICT_ERROR' | 'GUEST_CHECKOUT_ERROR' | 'ORDER_LIMIT_ERROR' | 'NEGATIVE_QUANTITY_ERROR' | 'INSUFFICIENT_STOCK_ERROR' | 'COUPON_CODE_INVALID_ERROR' | 'COUPON_CODE_EXPIRED_ERROR' | 'COUPON_CODE_LIMIT_ERROR' | 'ORDER_MODIFICATION_ERROR' | 'INELIGIBLE_SHIPPING_METHOD_ERROR' | 'NO_ACTIVE_ORDER_ERROR' | 'ORDER_INTERCEPTOR_ERROR' | 'ORDER_PAYMENT_STATE_ERROR' | 'INELIGIBLE_PAYMENT_METHOD_ERROR' | 'PAYMENT_FAILED_ERROR' | 'PAYMENT_DECLINED_ERROR' | 'ALREADY_LOGGED_IN_ERROR' | 'MISSING_PASSWORD_ERROR' | 'PASSWORD_VALIDATION_ERROR' | 'PASSWORD_ALREADY_SET_ERROR' | 'VERIFICATION_TOKEN_INVALID_ERROR' | 'VERIFICATION_TOKEN_EXPIRED_ERROR' | 'IDENTIFIER_CHANGE_TOKEN_INVALID_ERROR' | 'IDENTIFIER_CHANGE_TOKEN_EXPIRED_ERROR' | 'PASSWORD_RESET_TOKEN_INVALID_ERROR' | 'PASSWORD_RESET_TOKEN_EXPIRED_ERROR' | 'NOT_VERIFIED_ERROR'; }; + 'ErrorResult': { kind: 'INTERFACE'; name: 'ErrorResult'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; possibleTypes: 'AlreadyLoggedInError' | 'CouponCodeExpiredError' | 'CouponCodeInvalidError' | 'CouponCodeLimitError' | 'EmailAddressConflictError' | 'GuestCheckoutError' | 'IdentifierChangeTokenExpiredError' | 'IdentifierChangeTokenInvalidError' | 'IneligiblePaymentMethodError' | 'IneligibleShippingMethodError' | 'InsufficientStockError' | 'InvalidCredentialsError' | 'MissingPasswordError' | 'NativeAuthStrategyError' | 'NegativeQuantityError' | 'NoActiveOrderError' | 'NotVerifiedError' | 'OrderInterceptorError' | 'OrderLimitError' | 'OrderModificationError' | 'OrderPaymentStateError' | 'OrderStateTransitionError' | 'PasswordAlreadySetError' | 'PasswordResetTokenExpiredError' | 'PasswordResetTokenInvalidError' | 'PasswordValidationError' | 'PaymentDeclinedError' | 'PaymentFailedError' | 'VerificationTokenExpiredError' | 'VerificationTokenInvalidError'; }; + 'Facet': { kind: 'OBJECT'; name: 'Facet'; fields: { 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FacetTranslation'; ofType: null; }; }; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'valueList': { name: 'valueList'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FacetValueList'; ofType: null; }; } }; 'values': { name: 'values'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FacetValue'; ofType: null; }; }; }; } }; }; }; + 'FacetFilterParameter': { kind: 'INPUT_OBJECT'; name: 'FacetFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'FacetFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'FacetFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'FacetList': { kind: 'OBJECT'; name: 'FacetList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Facet'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'FacetListOptions': { kind: 'INPUT_OBJECT'; name: 'FacetListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'FacetSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'FacetFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'FacetSortParameter': { kind: 'INPUT_OBJECT'; name: 'FacetSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'FacetTranslation': { kind: 'OBJECT'; name: 'FacetTranslation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'FacetValue': { kind: 'OBJECT'; name: 'FacetValue'; fields: { 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'facet': { name: 'facet'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Facet'; ofType: null; }; } }; 'facetId': { name: 'facetId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FacetValueTranslation'; ofType: null; }; }; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'FacetValueFilterInput': { kind: 'INPUT_OBJECT'; name: 'FacetValueFilterInput'; isOneOf: false; inputFields: [{ name: 'and'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; defaultValue: null }]; }; + 'FacetValueFilterParameter': { kind: 'INPUT_OBJECT'; name: 'FacetValueFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'facetId'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'FacetValueFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'FacetValueFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'FacetValueList': { kind: 'OBJECT'; name: 'FacetValueList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FacetValue'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'FacetValueListOptions': { kind: 'INPUT_OBJECT'; name: 'FacetValueListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'FacetValueSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'FacetValueFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'FacetValueResult': { kind: 'OBJECT'; name: 'FacetValueResult'; fields: { 'count': { name: 'count'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'facetValue': { name: 'facetValue'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FacetValue'; ofType: null; }; } }; }; }; + 'FacetValueSortParameter': { kind: 'INPUT_OBJECT'; name: 'FacetValueSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'facetId'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'FacetValueTranslation': { kind: 'OBJECT'; name: 'FacetValueTranslation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'Float': unknown; + 'FloatCustomFieldConfig': { kind: 'OBJECT'; name: 'FloatCustomFieldConfig'; fields: { 'deprecated': { name: 'deprecated'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'deprecationReason': { name: 'deprecationReason'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'internal': { name: 'internal'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'max': { name: 'max'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; } }; 'min': { name: 'min'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nullable': { name: 'nullable'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'readonly': { name: 'readonly'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'requiresPermission': { name: 'requiresPermission'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; } }; 'step': { name: 'step'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'FloatStructFieldConfig': { kind: 'OBJECT'; name: 'FloatStructFieldConfig'; fields: { 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'max': { name: 'max'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; } }; 'min': { name: 'min'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'step': { name: 'step'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'Fulfillment': { kind: 'OBJECT'; name: 'Fulfillment'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'lines': { name: 'lines'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FulfillmentLine'; ofType: null; }; }; }; } }; 'method': { name: 'method'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'state': { name: 'state'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'summary': { name: 'summary'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FulfillmentLine'; ofType: null; }; }; }; } }; 'trackingCode': { name: 'trackingCode'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'FulfillmentLine': { kind: 'OBJECT'; name: 'FulfillmentLine'; fields: { 'fulfillment': { name: 'fulfillment'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Fulfillment'; ofType: null; }; } }; 'fulfillmentId': { name: 'fulfillmentId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'orderLine': { name: 'orderLine'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'OrderLine'; ofType: null; }; } }; 'orderLineId': { name: 'orderLineId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'quantity': { name: 'quantity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'GlobalFlag': { name: 'GlobalFlag'; enumValues: 'TRUE' | 'FALSE' | 'INHERIT'; }; + 'GuestCheckoutError': { kind: 'OBJECT'; name: 'GuestCheckoutError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'errorDetail': { name: 'errorDetail'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'HistoryEntry': { kind: 'OBJECT'; name: 'HistoryEntry'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'data': { name: 'data'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'HistoryEntryType'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'HistoryEntryFilterParameter': { kind: 'INPUT_OBJECT'; name: 'HistoryEntryFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'type'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'HistoryEntryFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'HistoryEntryFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'HistoryEntryList': { kind: 'OBJECT'; name: 'HistoryEntryList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'HistoryEntry'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'HistoryEntryListOptions': { kind: 'INPUT_OBJECT'; name: 'HistoryEntryListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'HistoryEntrySortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'HistoryEntryFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'HistoryEntrySortParameter': { kind: 'INPUT_OBJECT'; name: 'HistoryEntrySortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'HistoryEntryType': { name: 'HistoryEntryType'; enumValues: 'CUSTOMER_REGISTERED' | 'CUSTOMER_VERIFIED' | 'CUSTOMER_DETAIL_UPDATED' | 'CUSTOMER_ADDED_TO_GROUP' | 'CUSTOMER_REMOVED_FROM_GROUP' | 'CUSTOMER_ADDRESS_CREATED' | 'CUSTOMER_ADDRESS_UPDATED' | 'CUSTOMER_ADDRESS_DELETED' | 'CUSTOMER_PASSWORD_UPDATED' | 'CUSTOMER_PASSWORD_RESET_REQUESTED' | 'CUSTOMER_PASSWORD_RESET_VERIFIED' | 'CUSTOMER_EMAIL_UPDATE_REQUESTED' | 'CUSTOMER_EMAIL_UPDATE_VERIFIED' | 'CUSTOMER_NOTE' | 'ORDER_STATE_TRANSITION' | 'ORDER_PAYMENT_TRANSITION' | 'ORDER_FULFILLMENT' | 'ORDER_CANCELLATION' | 'ORDER_REFUND_TRANSITION' | 'ORDER_FULFILLMENT_TRANSITION' | 'ORDER_NOTE' | 'ORDER_COUPON_APPLIED' | 'ORDER_COUPON_REMOVED' | 'ORDER_MODIFIED' | 'ORDER_CUSTOMER_UPDATED' | 'ORDER_CURRENCY_UPDATED'; }; + 'ID': unknown; + 'IDListOperators': { kind: 'INPUT_OBJECT'; name: 'IDListOperators'; isOneOf: false; inputFields: [{ name: 'inList'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }]; }; + 'IDOperators': { kind: 'INPUT_OBJECT'; name: 'IDOperators'; isOneOf: false; inputFields: [{ name: 'eq'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'notEq'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'in'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'notIn'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'isNull'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; }; + 'IdentifierChangeTokenExpiredError': { kind: 'OBJECT'; name: 'IdentifierChangeTokenExpiredError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'IdentifierChangeTokenInvalidError': { kind: 'OBJECT'; name: 'IdentifierChangeTokenInvalidError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'IneligiblePaymentMethodError': { kind: 'OBJECT'; name: 'IneligiblePaymentMethodError'; fields: { 'eligibilityCheckerMessage': { name: 'eligibilityCheckerMessage'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'IneligibleShippingMethodError': { kind: 'OBJECT'; name: 'IneligibleShippingMethodError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'InsufficientStockError': { kind: 'OBJECT'; name: 'InsufficientStockError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'order': { name: 'order'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Order'; ofType: null; }; } }; 'quantityAvailable': { name: 'quantityAvailable'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'Int': unknown; + 'IntCustomFieldConfig': { kind: 'OBJECT'; name: 'IntCustomFieldConfig'; fields: { 'deprecated': { name: 'deprecated'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'deprecationReason': { name: 'deprecationReason'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'internal': { name: 'internal'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'max': { name: 'max'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'min': { name: 'min'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nullable': { name: 'nullable'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'readonly': { name: 'readonly'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'requiresPermission': { name: 'requiresPermission'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; } }; 'step': { name: 'step'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'IntStructFieldConfig': { kind: 'OBJECT'; name: 'IntStructFieldConfig'; fields: { 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'max': { name: 'max'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'min': { name: 'min'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'step': { name: 'step'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'InvalidCredentialsError': { kind: 'OBJECT'; name: 'InvalidCredentialsError'; fields: { 'authenticationError': { name: 'authenticationError'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'JSON': unknown; + 'LanguageCode': { name: 'LanguageCode'; enumValues: 'af' | 'ak' | 'sq' | 'am' | 'ar' | 'hy' | 'as' | 'az' | 'bm' | 'bn' | 'eu' | 'be' | 'bs' | 'br' | 'bg' | 'my' | 'ca' | 'ce' | 'zh' | 'zh_Hans' | 'zh_Hant' | 'cu' | 'kw' | 'co' | 'hr' | 'cs' | 'da' | 'nl' | 'nl_BE' | 'dz' | 'en' | 'en_AU' | 'en_CA' | 'en_GB' | 'en_US' | 'eo' | 'et' | 'ee' | 'fo' | 'fi' | 'fr' | 'fr_CA' | 'fr_CH' | 'ff' | 'gl' | 'lg' | 'ka' | 'de' | 'de_AT' | 'de_CH' | 'el' | 'gu' | 'ht' | 'ha' | 'he' | 'hi' | 'hu' | 'is' | 'ig' | 'id' | 'ia' | 'ga' | 'it' | 'ja' | 'jv' | 'kl' | 'kn' | 'ks' | 'kk' | 'km' | 'ki' | 'rw' | 'ko' | 'ku' | 'ky' | 'lo' | 'la' | 'lv' | 'ln' | 'lt' | 'lu' | 'lb' | 'mk' | 'mg' | 'ms' | 'ml' | 'mt' | 'gv' | 'mi' | 'mr' | 'mn' | 'ne' | 'nd' | 'se' | 'nb' | 'nn' | 'ny' | 'or' | 'om' | 'os' | 'ps' | 'fa' | 'fa_AF' | 'pl' | 'pt' | 'pt_BR' | 'pt_PT' | 'pa' | 'qu' | 'ro' | 'ro_MD' | 'rm' | 'rn' | 'ru' | 'sm' | 'sg' | 'sa' | 'gd' | 'sr' | 'sn' | 'ii' | 'sd' | 'si' | 'sk' | 'sl' | 'so' | 'st' | 'es' | 'es_ES' | 'es_MX' | 'su' | 'sw' | 'sw_CD' | 'sv' | 'tg' | 'ta' | 'tt' | 'te' | 'th' | 'bo' | 'ti' | 'to' | 'tr' | 'tk' | 'uk' | 'ur' | 'ug' | 'uz' | 'vi' | 'vo' | 'cy' | 'fy' | 'wo' | 'xh' | 'yi' | 'yo' | 'zu'; }; + 'LocaleStringCustomFieldConfig': { kind: 'OBJECT'; name: 'LocaleStringCustomFieldConfig'; fields: { 'deprecated': { name: 'deprecated'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'deprecationReason': { name: 'deprecationReason'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'internal': { name: 'internal'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'length': { name: 'length'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nullable': { name: 'nullable'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'pattern': { name: 'pattern'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'readonly': { name: 'readonly'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'requiresPermission': { name: 'requiresPermission'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'LocaleTextCustomFieldConfig': { kind: 'OBJECT'; name: 'LocaleTextCustomFieldConfig'; fields: { 'deprecated': { name: 'deprecated'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'deprecationReason': { name: 'deprecationReason'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'internal': { name: 'internal'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nullable': { name: 'nullable'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'readonly': { name: 'readonly'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'requiresPermission': { name: 'requiresPermission'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'LocalizedString': { kind: 'OBJECT'; name: 'LocalizedString'; fields: { 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'value': { name: 'value'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'LogicalOperator': { name: 'LogicalOperator'; enumValues: 'AND' | 'OR'; }; + 'MissingPasswordError': { kind: 'OBJECT'; name: 'MissingPasswordError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'Money': unknown; + 'Mutation': { kind: 'OBJECT'; name: 'Mutation'; fields: { 'addItemToOrder': { name: 'addItemToOrder'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'UpdateOrderItemsResult'; ofType: null; }; } }; 'addItemsToOrder': { name: 'addItemsToOrder'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'UpdateMultipleOrderItemsResult'; ofType: null; }; } }; 'addPaymentToOrder': { name: 'addPaymentToOrder'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'AddPaymentToOrderResult'; ofType: null; }; } }; 'adjustOrderLine': { name: 'adjustOrderLine'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'UpdateOrderItemsResult'; ofType: null; }; } }; 'applyCouponCode': { name: 'applyCouponCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'ApplyCouponCodeResult'; ofType: null; }; } }; 'authenticate': { name: 'authenticate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'AuthenticationResult'; ofType: null; }; } }; 'createCustomerAddress': { name: 'createCustomerAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Address'; ofType: null; }; } }; 'deleteCustomerAddress': { name: 'deleteCustomerAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Success'; ofType: null; }; } }; 'login': { name: 'login'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'NativeAuthenticationResult'; ofType: null; }; } }; 'logout': { name: 'logout'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Success'; ofType: null; }; } }; 'refreshCustomerVerification': { name: 'refreshCustomerVerification'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'RefreshCustomerVerificationResult'; ofType: null; }; } }; 'registerCustomerAccount': { name: 'registerCustomerAccount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'RegisterCustomerAccountResult'; ofType: null; }; } }; 'removeAllOrderLines': { name: 'removeAllOrderLines'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'RemoveOrderItemsResult'; ofType: null; }; } }; 'removeCouponCode': { name: 'removeCouponCode'; type: { kind: 'OBJECT'; name: 'Order'; ofType: null; } }; 'removeOrderLine': { name: 'removeOrderLine'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'RemoveOrderItemsResult'; ofType: null; }; } }; 'requestPasswordReset': { name: 'requestPasswordReset'; type: { kind: 'UNION'; name: 'RequestPasswordResetResult'; ofType: null; } }; 'requestUpdateCustomerEmailAddress': { name: 'requestUpdateCustomerEmailAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'RequestUpdateCustomerEmailAddressResult'; ofType: null; }; } }; 'resetPassword': { name: 'resetPassword'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'ResetPasswordResult'; ofType: null; }; } }; 'setCurrencyCodeForOrder': { name: 'setCurrencyCodeForOrder'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'UpdateOrderItemsResult'; ofType: null; }; } }; 'setCustomerForOrder': { name: 'setCustomerForOrder'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'SetCustomerForOrderResult'; ofType: null; }; } }; 'setOrderBillingAddress': { name: 'setOrderBillingAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'ActiveOrderResult'; ofType: null; }; } }; 'setOrderCustomFields': { name: 'setOrderCustomFields'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'ActiveOrderResult'; ofType: null; }; } }; 'setOrderShippingAddress': { name: 'setOrderShippingAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'ActiveOrderResult'; ofType: null; }; } }; 'setOrderShippingMethod': { name: 'setOrderShippingMethod'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'SetOrderShippingMethodResult'; ofType: null; }; } }; 'transitionOrderToState': { name: 'transitionOrderToState'; type: { kind: 'UNION'; name: 'TransitionOrderToStateResult'; ofType: null; } }; 'unsetOrderBillingAddress': { name: 'unsetOrderBillingAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'ActiveOrderResult'; ofType: null; }; } }; 'unsetOrderShippingAddress': { name: 'unsetOrderShippingAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'ActiveOrderResult'; ofType: null; }; } }; 'updateCustomer': { name: 'updateCustomer'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Customer'; ofType: null; }; } }; 'updateCustomerAddress': { name: 'updateCustomerAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Address'; ofType: null; }; } }; 'updateCustomerEmailAddress': { name: 'updateCustomerEmailAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'UpdateCustomerEmailAddressResult'; ofType: null; }; } }; 'updateCustomerPassword': { name: 'updateCustomerPassword'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'UpdateCustomerPasswordResult'; ofType: null; }; } }; 'verifyCustomerAccount': { name: 'verifyCustomerAccount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'VerifyCustomerAccountResult'; ofType: null; }; } }; }; }; + 'NativeAuthInput': { kind: 'INPUT_OBJECT'; name: 'NativeAuthInput'; isOneOf: false; inputFields: [{ name: 'username'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'password'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }]; }; + 'NativeAuthStrategyError': { kind: 'OBJECT'; name: 'NativeAuthStrategyError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'NativeAuthenticationResult': { kind: 'UNION'; name: 'NativeAuthenticationResult'; fields: {}; possibleTypes: 'CurrentUser' | 'InvalidCredentialsError' | 'NativeAuthStrategyError' | 'NotVerifiedError'; }; + 'NegativeQuantityError': { kind: 'OBJECT'; name: 'NegativeQuantityError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'NoActiveOrderError': { kind: 'OBJECT'; name: 'NoActiveOrderError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'Node': { kind: 'INTERFACE'; name: 'Node'; fields: { 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; }; possibleTypes: 'Address' | 'Asset' | 'AuthenticationMethod' | 'Channel' | 'Collection' | 'Country' | 'Customer' | 'CustomerGroup' | 'Facet' | 'FacetValue' | 'Fulfillment' | 'HistoryEntry' | 'Order' | 'OrderLine' | 'Payment' | 'PaymentMethod' | 'Product' | 'ProductOption' | 'ProductOptionGroup' | 'ProductVariant' | 'Promotion' | 'Province' | 'Refund' | 'Role' | 'Seller' | 'ShippingMethod' | 'Surcharge' | 'Tag' | 'TaxCategory' | 'TaxRate' | 'User' | 'Zone'; }; + 'NotVerifiedError': { kind: 'OBJECT'; name: 'NotVerifiedError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'NumberListOperators': { kind: 'INPUT_OBJECT'; name: 'NumberListOperators'; isOneOf: false; inputFields: [{ name: 'inList'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; }; defaultValue: null }]; }; + 'NumberOperators': { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; isOneOf: false; inputFields: [{ name: 'eq'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'lt'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'lte'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'gt'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'gte'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }, { name: 'between'; type: { kind: 'INPUT_OBJECT'; name: 'NumberRange'; ofType: null; }; defaultValue: null }, { name: 'isNull'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; }; + 'NumberRange': { kind: 'INPUT_OBJECT'; name: 'NumberRange'; isOneOf: false; inputFields: [{ name: 'start'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; }; defaultValue: null }, { name: 'end'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; }; defaultValue: null }]; }; + 'Order': { kind: 'OBJECT'; name: 'Order'; fields: { 'active': { name: 'active'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'billingAddress': { name: 'billingAddress'; type: { kind: 'OBJECT'; name: 'OrderAddress'; ofType: null; } }; 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'couponCodes': { name: 'couponCodes'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'currencyCode': { name: 'currencyCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'CurrencyCode'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'customer': { name: 'customer'; type: { kind: 'OBJECT'; name: 'Customer'; ofType: null; } }; 'discounts': { name: 'discounts'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Discount'; ofType: null; }; }; }; } }; 'fulfillments': { name: 'fulfillments'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Fulfillment'; ofType: null; }; }; } }; 'history': { name: 'history'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'HistoryEntryList'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'lines': { name: 'lines'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'OrderLine'; ofType: null; }; }; }; } }; 'orderPlacedAt': { name: 'orderPlacedAt'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; } }; 'payments': { name: 'payments'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Payment'; ofType: null; }; }; } }; 'promotions': { name: 'promotions'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Promotion'; ofType: null; }; }; }; } }; 'shipping': { name: 'shipping'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'shippingAddress': { name: 'shippingAddress'; type: { kind: 'OBJECT'; name: 'OrderAddress'; ofType: null; } }; 'shippingLines': { name: 'shippingLines'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ShippingLine'; ofType: null; }; }; }; } }; 'shippingWithTax': { name: 'shippingWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'state': { name: 'state'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'subTotal': { name: 'subTotal'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'subTotalWithTax': { name: 'subTotalWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'surcharges': { name: 'surcharges'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Surcharge'; ofType: null; }; }; }; } }; 'taxSummary': { name: 'taxSummary'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'OrderTaxSummary'; ofType: null; }; }; }; } }; 'total': { name: 'total'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'totalQuantity': { name: 'totalQuantity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'totalWithTax': { name: 'totalWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'OrderType'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'OrderAddress': { kind: 'OBJECT'; name: 'OrderAddress'; fields: { 'city': { name: 'city'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'company': { name: 'company'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'country': { name: 'country'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'countryCode': { name: 'countryCode'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'fullName': { name: 'fullName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'phoneNumber': { name: 'phoneNumber'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'postalCode': { name: 'postalCode'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'province': { name: 'province'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'streetLine1': { name: 'streetLine1'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'streetLine2': { name: 'streetLine2'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; }; }; + 'OrderFilterParameter': { kind: 'INPUT_OBJECT'; name: 'OrderFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'type'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'orderPlacedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'state'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'active'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanOperators'; ofType: null; }; defaultValue: null }, { name: 'totalQuantity'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'subTotal'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'subTotalWithTax'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'currencyCode'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'shipping'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'shippingWithTax'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'total'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'totalWithTax'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'OrderFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'OrderFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'OrderInterceptorError': { kind: 'OBJECT'; name: 'OrderInterceptorError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'interceptorError': { name: 'interceptorError'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'OrderLimitError': { kind: 'OBJECT'; name: 'OrderLimitError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'maxItems': { name: 'maxItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'OrderLine': { kind: 'OBJECT'; name: 'OrderLine'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'discountedLinePrice': { name: 'discountedLinePrice'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'discountedLinePriceWithTax': { name: 'discountedLinePriceWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'discountedUnitPrice': { name: 'discountedUnitPrice'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'discountedUnitPriceWithTax': { name: 'discountedUnitPriceWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'discounts': { name: 'discounts'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Discount'; ofType: null; }; }; }; } }; 'featuredAsset': { name: 'featuredAsset'; type: { kind: 'OBJECT'; name: 'Asset'; ofType: null; } }; 'fulfillmentLines': { name: 'fulfillmentLines'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FulfillmentLine'; ofType: null; }; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'linePrice': { name: 'linePrice'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'linePriceWithTax': { name: 'linePriceWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'lineTax': { name: 'lineTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'order': { name: 'order'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Order'; ofType: null; }; } }; 'orderPlacedQuantity': { name: 'orderPlacedQuantity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'productVariant': { name: 'productVariant'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductVariant'; ofType: null; }; } }; 'proratedLinePrice': { name: 'proratedLinePrice'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'proratedLinePriceWithTax': { name: 'proratedLinePriceWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'proratedUnitPrice': { name: 'proratedUnitPrice'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'proratedUnitPriceWithTax': { name: 'proratedUnitPriceWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'quantity': { name: 'quantity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'taxLines': { name: 'taxLines'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TaxLine'; ofType: null; }; }; }; } }; 'taxRate': { name: 'taxRate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; } }; 'unitPrice': { name: 'unitPrice'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'unitPriceChangeSinceAdded': { name: 'unitPriceChangeSinceAdded'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'unitPriceWithTax': { name: 'unitPriceWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'unitPriceWithTaxChangeSinceAdded': { name: 'unitPriceWithTaxChangeSinceAdded'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'OrderList': { kind: 'OBJECT'; name: 'OrderList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Order'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'OrderListOptions': { kind: 'INPUT_OBJECT'; name: 'OrderListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'OrderSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'OrderFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'OrderModificationError': { kind: 'OBJECT'; name: 'OrderModificationError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'OrderPaymentStateError': { kind: 'OBJECT'; name: 'OrderPaymentStateError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'OrderSortParameter': { kind: 'INPUT_OBJECT'; name: 'OrderSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'orderPlacedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'code'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'state'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'totalQuantity'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'subTotal'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'subTotalWithTax'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'shipping'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'shippingWithTax'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'total'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'totalWithTax'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'OrderStateTransitionError': { kind: 'OBJECT'; name: 'OrderStateTransitionError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'fromState': { name: 'fromState'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'toState': { name: 'toState'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'transitionError': { name: 'transitionError'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'OrderTaxSummary': { kind: 'OBJECT'; name: 'OrderTaxSummary'; fields: { 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'taxBase': { name: 'taxBase'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'taxRate': { name: 'taxRate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; } }; 'taxTotal': { name: 'taxTotal'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; }; }; + 'OrderType': { name: 'OrderType'; enumValues: 'Regular' | 'Seller' | 'Aggregate'; }; + 'PaginatedList': { kind: 'INTERFACE'; name: 'PaginatedList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INTERFACE'; name: 'Node'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; possibleTypes: 'AssetList' | 'CollectionList' | 'CountryList' | 'CustomerList' | 'FacetList' | 'FacetValueList' | 'HistoryEntryList' | 'OrderList' | 'ProductList' | 'ProductVariantList' | 'PromotionList' | 'ProvinceList' | 'RoleList' | 'ShippingMethodList' | 'TagList' | 'TaxRateList'; }; + 'PasswordAlreadySetError': { kind: 'OBJECT'; name: 'PasswordAlreadySetError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'PasswordResetTokenExpiredError': { kind: 'OBJECT'; name: 'PasswordResetTokenExpiredError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'PasswordResetTokenInvalidError': { kind: 'OBJECT'; name: 'PasswordResetTokenInvalidError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'PasswordValidationError': { kind: 'OBJECT'; name: 'PasswordValidationError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'validationErrorMessage': { name: 'validationErrorMessage'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'Payment': { kind: 'OBJECT'; name: 'Payment'; fields: { 'amount': { name: 'amount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'errorMessage': { name: 'errorMessage'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'metadata': { name: 'metadata'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'method': { name: 'method'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'refunds': { name: 'refunds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Refund'; ofType: null; }; }; }; } }; 'state': { name: 'state'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'transactionId': { name: 'transactionId'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'PaymentDeclinedError': { kind: 'OBJECT'; name: 'PaymentDeclinedError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'paymentErrorMessage': { name: 'paymentErrorMessage'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'PaymentFailedError': { kind: 'OBJECT'; name: 'PaymentFailedError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'paymentErrorMessage': { name: 'paymentErrorMessage'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'PaymentInput': { kind: 'INPUT_OBJECT'; name: 'PaymentInput'; isOneOf: false; inputFields: [{ name: 'method'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'metadata'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; }; defaultValue: null }]; }; + 'PaymentMethod': { kind: 'OBJECT'; name: 'PaymentMethod'; fields: { 'checker': { name: 'checker'; type: { kind: 'OBJECT'; name: 'ConfigurableOperation'; ofType: null; } }; 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'enabled': { name: 'enabled'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'handler': { name: 'handler'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ConfigurableOperation'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PaymentMethodTranslation'; ofType: null; }; }; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'PaymentMethodQuote': { kind: 'OBJECT'; name: 'PaymentMethodQuote'; fields: { 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'eligibilityMessage': { name: 'eligibilityMessage'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'isEligible': { name: 'isEligible'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'PaymentMethodTranslation': { kind: 'OBJECT'; name: 'PaymentMethodTranslation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'Permission': { name: 'Permission'; enumValues: 'Authenticated' | 'SuperAdmin' | 'Owner' | 'Public' | 'UpdateGlobalSettings' | 'CreateCatalog' | 'ReadCatalog' | 'UpdateCatalog' | 'DeleteCatalog' | 'CreateSettings' | 'ReadSettings' | 'UpdateSettings' | 'DeleteSettings' | 'CreateAdministrator' | 'ReadAdministrator' | 'UpdateAdministrator' | 'DeleteAdministrator' | 'CreateApiKey' | 'ReadApiKey' | 'UpdateApiKey' | 'DeleteApiKey' | 'CreateAsset' | 'ReadAsset' | 'UpdateAsset' | 'DeleteAsset' | 'CreateChannel' | 'ReadChannel' | 'UpdateChannel' | 'DeleteChannel' | 'CreateCollection' | 'ReadCollection' | 'UpdateCollection' | 'DeleteCollection' | 'CreateCountry' | 'ReadCountry' | 'UpdateCountry' | 'DeleteCountry' | 'CreateCustomer' | 'ReadCustomer' | 'UpdateCustomer' | 'DeleteCustomer' | 'CreateCustomerGroup' | 'ReadCustomerGroup' | 'UpdateCustomerGroup' | 'DeleteCustomerGroup' | 'CreateFacet' | 'ReadFacet' | 'UpdateFacet' | 'DeleteFacet' | 'CreateOrder' | 'ReadOrder' | 'UpdateOrder' | 'DeleteOrder' | 'CreatePaymentMethod' | 'ReadPaymentMethod' | 'UpdatePaymentMethod' | 'DeletePaymentMethod' | 'CreateProduct' | 'ReadProduct' | 'UpdateProduct' | 'DeleteProduct' | 'CreatePromotion' | 'ReadPromotion' | 'UpdatePromotion' | 'DeletePromotion' | 'CreateShippingMethod' | 'ReadShippingMethod' | 'UpdateShippingMethod' | 'DeleteShippingMethod' | 'CreateTag' | 'ReadTag' | 'UpdateTag' | 'DeleteTag' | 'CreateTaxCategory' | 'ReadTaxCategory' | 'UpdateTaxCategory' | 'DeleteTaxCategory' | 'CreateTaxRate' | 'ReadTaxRate' | 'UpdateTaxRate' | 'DeleteTaxRate' | 'CreateSeller' | 'ReadSeller' | 'UpdateSeller' | 'DeleteSeller' | 'CreateStockLocation' | 'ReadStockLocation' | 'UpdateStockLocation' | 'DeleteStockLocation' | 'CreateSystem' | 'ReadSystem' | 'UpdateSystem' | 'DeleteSystem' | 'CreateZone' | 'ReadZone' | 'UpdateZone' | 'DeleteZone'; }; + 'PriceRange': { kind: 'OBJECT'; name: 'PriceRange'; fields: { 'max': { name: 'max'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'min': { name: 'min'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; }; }; + 'Product': { kind: 'OBJECT'; name: 'Product'; fields: { 'assets': { name: 'assets'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Asset'; ofType: null; }; }; }; } }; 'collections': { name: 'collections'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Collection'; ofType: null; }; }; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'enabled': { name: 'enabled'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'facetValues': { name: 'facetValues'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FacetValue'; ofType: null; }; }; }; } }; 'featuredAsset': { name: 'featuredAsset'; type: { kind: 'OBJECT'; name: 'Asset'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'optionGroups': { name: 'optionGroups'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductOptionGroup'; ofType: null; }; }; }; } }; 'slug': { name: 'slug'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductTranslation'; ofType: null; }; }; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'variantList': { name: 'variantList'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductVariantList'; ofType: null; }; } }; 'variants': { name: 'variants'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductVariant'; ofType: null; }; }; }; } }; }; }; + 'ProductFilterParameter': { kind: 'INPUT_OBJECT'; name: 'ProductFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'slug'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'enabled'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ProductFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ProductFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'ProductList': { kind: 'OBJECT'; name: 'ProductList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Product'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'ProductListOptions': { kind: 'INPUT_OBJECT'; name: 'ProductListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'ProductSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'ProductFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'ProductOption': { kind: 'OBJECT'; name: 'ProductOption'; fields: { 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'group': { name: 'group'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductOptionGroup'; ofType: null; }; } }; 'groupId': { name: 'groupId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductOptionTranslation'; ofType: null; }; }; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'ProductOptionGroup': { kind: 'OBJECT'; name: 'ProductOptionGroup'; fields: { 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'options': { name: 'options'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductOption'; ofType: null; }; }; }; } }; 'productCount': { name: 'productCount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductOptionGroupTranslation'; ofType: null; }; }; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'ProductOptionGroupTranslation': { kind: 'OBJECT'; name: 'ProductOptionGroupTranslation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'ProductOptionTranslation': { kind: 'OBJECT'; name: 'ProductOptionTranslation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'ProductSortParameter': { kind: 'INPUT_OBJECT'; name: 'ProductSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'slug'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'ProductTranslation': { kind: 'OBJECT'; name: 'ProductTranslation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'slug': { name: 'slug'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'ProductVariant': { kind: 'OBJECT'; name: 'ProductVariant'; fields: { 'assets': { name: 'assets'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Asset'; ofType: null; }; }; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'currencyCode': { name: 'currencyCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'CurrencyCode'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'facetValues': { name: 'facetValues'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FacetValue'; ofType: null; }; }; }; } }; 'featuredAsset': { name: 'featuredAsset'; type: { kind: 'OBJECT'; name: 'Asset'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'options': { name: 'options'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductOption'; ofType: null; }; }; }; } }; 'price': { name: 'price'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'priceWithTax': { name: 'priceWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'product': { name: 'product'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Product'; ofType: null; }; } }; 'productId': { name: 'productId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'sku': { name: 'sku'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'stockLevel': { name: 'stockLevel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'taxCategory': { name: 'taxCategory'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TaxCategory'; ofType: null; }; } }; 'taxRateApplied': { name: 'taxRateApplied'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TaxRate'; ofType: null; }; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductVariantTranslation'; ofType: null; }; }; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'ProductVariantFilterParameter': { kind: 'INPUT_OBJECT'; name: 'ProductVariantFilterParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'productId'; type: { kind: 'INPUT_OBJECT'; name: 'IDOperators'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateOperators'; ofType: null; }; defaultValue: null }, { name: 'languageCode'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'sku'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'price'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'currencyCode'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: 'priceWithTax'; type: { kind: 'INPUT_OBJECT'; name: 'NumberOperators'; ofType: null; }; defaultValue: null }, { name: 'stockLevel'; type: { kind: 'INPUT_OBJECT'; name: 'StringOperators'; ofType: null; }; defaultValue: null }, { name: '_and'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ProductVariantFilterParameter'; ofType: null; }; }; }; defaultValue: null }, { name: '_or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'ProductVariantFilterParameter'; ofType: null; }; }; }; defaultValue: null }]; }; + 'ProductVariantList': { kind: 'OBJECT'; name: 'ProductVariantList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductVariant'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'ProductVariantListOptions': { kind: 'INPUT_OBJECT'; name: 'ProductVariantListOptions'; isOneOf: false; inputFields: [{ name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'ProductVariantSortParameter'; ofType: null; }; defaultValue: null }, { name: 'filter'; type: { kind: 'INPUT_OBJECT'; name: 'ProductVariantFilterParameter'; ofType: null; }; defaultValue: null }, { name: 'filterOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }]; }; + 'ProductVariantSortParameter': { kind: 'INPUT_OBJECT'; name: 'ProductVariantSortParameter'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'productId'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'sku'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'price'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'priceWithTax'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'stockLevel'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'ProductVariantTranslation': { kind: 'OBJECT'; name: 'ProductVariantTranslation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'Promotion': { kind: 'OBJECT'; name: 'Promotion'; fields: { 'actions': { name: 'actions'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ConfigurableOperation'; ofType: null; }; }; }; } }; 'conditions': { name: 'conditions'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ConfigurableOperation'; ofType: null; }; }; }; } }; 'couponCode': { name: 'couponCode'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'enabled': { name: 'enabled'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'endsAt': { name: 'endsAt'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'perCustomerUsageLimit': { name: 'perCustomerUsageLimit'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'startsAt': { name: 'startsAt'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PromotionTranslation'; ofType: null; }; }; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'usageLimit': { name: 'usageLimit'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; }; }; + 'PromotionList': { kind: 'OBJECT'; name: 'PromotionList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Promotion'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'PromotionTranslation': { kind: 'OBJECT'; name: 'PromotionTranslation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'Province': { kind: 'OBJECT'; name: 'Province'; fields: { 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'enabled': { name: 'enabled'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'parent': { name: 'parent'; type: { kind: 'INTERFACE'; name: 'Region'; ofType: null; } }; 'parentId': { name: 'parentId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'RegionTranslation'; ofType: null; }; }; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'ProvinceList': { kind: 'OBJECT'; name: 'ProvinceList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Province'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'PublicPaymentMethod': { kind: 'OBJECT'; name: 'PublicPaymentMethod'; fields: { 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PaymentMethodTranslation'; ofType: null; }; }; }; } }; }; }; + 'PublicShippingMethod': { kind: 'OBJECT'; name: 'PublicShippingMethod'; fields: { 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ShippingMethodTranslation'; ofType: null; }; }; }; } }; }; }; + 'Query': { kind: 'OBJECT'; name: 'Query'; fields: { 'activeChannel': { name: 'activeChannel'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Channel'; ofType: null; }; } }; 'activeCustomer': { name: 'activeCustomer'; type: { kind: 'OBJECT'; name: 'Customer'; ofType: null; } }; 'activeOrder': { name: 'activeOrder'; type: { kind: 'OBJECT'; name: 'Order'; ofType: null; } }; 'activePaymentMethods': { name: 'activePaymentMethods'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'PublicPaymentMethod'; ofType: null; }; }; } }; 'activeShippingMethods': { name: 'activeShippingMethods'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'PublicShippingMethod'; ofType: null; }; }; } }; 'availableCountries': { name: 'availableCountries'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Country'; ofType: null; }; }; }; } }; 'collection': { name: 'collection'; type: { kind: 'OBJECT'; name: 'Collection'; ofType: null; } }; 'collections': { name: 'collections'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CollectionList'; ofType: null; }; } }; 'eligiblePaymentMethods': { name: 'eligiblePaymentMethods'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PaymentMethodQuote'; ofType: null; }; }; }; } }; 'eligibleShippingMethods': { name: 'eligibleShippingMethods'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ShippingMethodQuote'; ofType: null; }; }; }; } }; 'facet': { name: 'facet'; type: { kind: 'OBJECT'; name: 'Facet'; ofType: null; } }; 'facets': { name: 'facets'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FacetList'; ofType: null; }; } }; 'me': { name: 'me'; type: { kind: 'OBJECT'; name: 'CurrentUser'; ofType: null; } }; 'nextOrderStates': { name: 'nextOrderStates'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; } }; 'order': { name: 'order'; type: { kind: 'OBJECT'; name: 'Order'; ofType: null; } }; 'orderByCode': { name: 'orderByCode'; type: { kind: 'OBJECT'; name: 'Order'; ofType: null; } }; 'product': { name: 'product'; type: { kind: 'OBJECT'; name: 'Product'; ofType: null; } }; 'products': { name: 'products'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ProductList'; ofType: null; }; } }; 'search': { name: 'search'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'SearchResponse'; ofType: null; }; } }; }; }; + 'RefreshCustomerVerificationResult': { kind: 'UNION'; name: 'RefreshCustomerVerificationResult'; fields: {}; possibleTypes: 'NativeAuthStrategyError' | 'Success'; }; + 'Refund': { kind: 'OBJECT'; name: 'Refund'; fields: { 'adjustment': { name: 'adjustment'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'lines': { name: 'lines'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'RefundLine'; ofType: null; }; }; }; } }; 'metadata': { name: 'metadata'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'method': { name: 'method'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'paymentId': { name: 'paymentId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'reason': { name: 'reason'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'shipping': { name: 'shipping'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'state': { name: 'state'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'total': { name: 'total'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'transactionId': { name: 'transactionId'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'RefundLine': { kind: 'OBJECT'; name: 'RefundLine'; fields: { 'orderLine': { name: 'orderLine'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'OrderLine'; ofType: null; }; } }; 'orderLineId': { name: 'orderLineId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'quantity': { name: 'quantity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'refund': { name: 'refund'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Refund'; ofType: null; }; } }; 'refundId': { name: 'refundId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; }; }; + 'Region': { kind: 'INTERFACE'; name: 'Region'; fields: { 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'enabled': { name: 'enabled'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'parent': { name: 'parent'; type: { kind: 'INTERFACE'; name: 'Region'; ofType: null; } }; 'parentId': { name: 'parentId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'RegionTranslation'; ofType: null; }; }; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; possibleTypes: 'Country' | 'Province'; }; + 'RegionTranslation': { kind: 'OBJECT'; name: 'RegionTranslation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'RegisterCustomerAccountResult': { kind: 'UNION'; name: 'RegisterCustomerAccountResult'; fields: {}; possibleTypes: 'MissingPasswordError' | 'NativeAuthStrategyError' | 'PasswordValidationError' | 'Success'; }; + 'RegisterCustomerInput': { kind: 'INPUT_OBJECT'; name: 'RegisterCustomerInput'; isOneOf: false; inputFields: [{ name: 'emailAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'title'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'firstName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'lastName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'phoneNumber'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'password'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; }; + 'RelationCustomFieldConfig': { kind: 'OBJECT'; name: 'RelationCustomFieldConfig'; fields: { 'deprecated': { name: 'deprecated'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'deprecationReason': { name: 'deprecationReason'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'entity': { name: 'entity'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'internal': { name: 'internal'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nullable': { name: 'nullable'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'readonly': { name: 'readonly'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'requiresPermission': { name: 'requiresPermission'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; } }; 'scalarFields': { name: 'scalarFields'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'RemoveOrderItemsResult': { kind: 'UNION'; name: 'RemoveOrderItemsResult'; fields: {}; possibleTypes: 'Order' | 'OrderInterceptorError' | 'OrderModificationError'; }; + 'RequestPasswordResetResult': { kind: 'UNION'; name: 'RequestPasswordResetResult'; fields: {}; possibleTypes: 'NativeAuthStrategyError' | 'Success'; }; + 'RequestUpdateCustomerEmailAddressResult': { kind: 'UNION'; name: 'RequestUpdateCustomerEmailAddressResult'; fields: {}; possibleTypes: 'EmailAddressConflictError' | 'InvalidCredentialsError' | 'NativeAuthStrategyError' | 'Success'; }; + 'ResetPasswordResult': { kind: 'UNION'; name: 'ResetPasswordResult'; fields: {}; possibleTypes: 'CurrentUser' | 'NativeAuthStrategyError' | 'NotVerifiedError' | 'PasswordResetTokenExpiredError' | 'PasswordResetTokenInvalidError' | 'PasswordValidationError'; }; + 'Role': { kind: 'OBJECT'; name: 'Role'; fields: { 'channels': { name: 'channels'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Channel'; ofType: null; }; }; }; } }; 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'permissions': { name: 'permissions'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'RoleList': { kind: 'OBJECT'; name: 'RoleList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Role'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'SearchInput': { kind: 'INPUT_OBJECT'; name: 'SearchInput'; isOneOf: false; inputFields: [{ name: 'term'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'facetValueIds'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; defaultValue: null }, { name: 'facetValueOperator'; type: { kind: 'ENUM'; name: 'LogicalOperator'; ofType: null; }; defaultValue: null }, { name: 'facetValueFilters'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'FacetValueFilterInput'; ofType: null; }; }; }; defaultValue: null }, { name: 'collectionId'; type: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; defaultValue: null }, { name: 'collectionIds'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; defaultValue: null }, { name: 'collectionSlug'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'collectionSlugs'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'groupByProduct'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'take'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'skip'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'sort'; type: { kind: 'INPUT_OBJECT'; name: 'SearchResultSortParameter'; ofType: null; }; defaultValue: null }]; }; + 'SearchReindexResponse': { kind: 'OBJECT'; name: 'SearchReindexResponse'; fields: { 'success': { name: 'success'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; }; }; + 'SearchResponse': { kind: 'OBJECT'; name: 'SearchResponse'; fields: { 'collections': { name: 'collections'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CollectionResult'; ofType: null; }; }; }; } }; 'facetValues': { name: 'facetValues'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'FacetValueResult'; ofType: null; }; }; }; } }; 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'SearchResult'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'SearchResult': { kind: 'OBJECT'; name: 'SearchResult'; fields: { 'collectionIds': { name: 'collectionIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; } }; 'currencyCode': { name: 'currencyCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'CurrencyCode'; ofType: null; }; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'facetIds': { name: 'facetIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; } }; 'facetValueIds': { name: 'facetValueIds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; }; } }; 'price': { name: 'price'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'SearchResultPrice'; ofType: null; }; } }; 'priceWithTax': { name: 'priceWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'SearchResultPrice'; ofType: null; }; } }; 'productAsset': { name: 'productAsset'; type: { kind: 'OBJECT'; name: 'SearchResultAsset'; ofType: null; } }; 'productId': { name: 'productId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'productName': { name: 'productName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'productVariantAsset': { name: 'productVariantAsset'; type: { kind: 'OBJECT'; name: 'SearchResultAsset'; ofType: null; } }; 'productVariantId': { name: 'productVariantId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'productVariantName': { name: 'productVariantName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'score': { name: 'score'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; } }; 'sku': { name: 'sku'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'slug': { name: 'slug'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'SearchResultAsset': { kind: 'OBJECT'; name: 'SearchResultAsset'; fields: { 'focalPoint': { name: 'focalPoint'; type: { kind: 'OBJECT'; name: 'Coordinate'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'preview': { name: 'preview'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'SearchResultPrice': { kind: 'UNION'; name: 'SearchResultPrice'; fields: {}; possibleTypes: 'PriceRange' | 'SinglePrice'; }; + 'SearchResultSortParameter': { kind: 'INPUT_OBJECT'; name: 'SearchResultSortParameter'; isOneOf: false; inputFields: [{ name: 'name'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }, { name: 'price'; type: { kind: 'ENUM'; name: 'SortOrder'; ofType: null; }; defaultValue: null }]; }; + 'Seller': { kind: 'OBJECT'; name: 'Seller'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'SetCustomerForOrderResult': { kind: 'UNION'; name: 'SetCustomerForOrderResult'; fields: {}; possibleTypes: 'AlreadyLoggedInError' | 'EmailAddressConflictError' | 'GuestCheckoutError' | 'NoActiveOrderError' | 'Order'; }; + 'SetOrderShippingMethodResult': { kind: 'UNION'; name: 'SetOrderShippingMethodResult'; fields: {}; possibleTypes: 'IneligibleShippingMethodError' | 'NoActiveOrderError' | 'Order' | 'OrderModificationError'; }; + 'ShippingLine': { kind: 'OBJECT'; name: 'ShippingLine'; fields: { 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'discountedPrice': { name: 'discountedPrice'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'discountedPriceWithTax': { name: 'discountedPriceWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'discounts': { name: 'discounts'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Discount'; ofType: null; }; }; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'price': { name: 'price'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'priceWithTax': { name: 'priceWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'shippingMethod': { name: 'shippingMethod'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ShippingMethod'; ofType: null; }; } }; }; }; + 'ShippingMethod': { kind: 'OBJECT'; name: 'ShippingMethod'; fields: { 'calculator': { name: 'calculator'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ConfigurableOperation'; ofType: null; }; } }; 'checker': { name: 'checker'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ConfigurableOperation'; ofType: null; }; } }; 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'fulfillmentHandlerCode': { name: 'fulfillmentHandlerCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'translations': { name: 'translations'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ShippingMethodTranslation'; ofType: null; }; }; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'ShippingMethodList': { kind: 'OBJECT'; name: 'ShippingMethodList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'ShippingMethod'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'ShippingMethodQuote': { kind: 'OBJECT'; name: 'ShippingMethodQuote'; fields: { 'code': { name: 'code'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'metadata': { name: 'metadata'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'price': { name: 'price'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'priceWithTax': { name: 'priceWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; }; }; + 'ShippingMethodTranslation': { kind: 'OBJECT'; name: 'ShippingMethodTranslation'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'languageCode': { name: 'languageCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'LanguageCode'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'SinglePrice': { kind: 'OBJECT'; name: 'SinglePrice'; fields: { 'value': { name: 'value'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; }; }; + 'SortOrder': { name: 'SortOrder'; enumValues: 'ASC' | 'DESC'; }; + 'String': unknown; + 'StringCustomFieldConfig': { kind: 'OBJECT'; name: 'StringCustomFieldConfig'; fields: { 'deprecated': { name: 'deprecated'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'deprecationReason': { name: 'deprecationReason'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'internal': { name: 'internal'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'length': { name: 'length'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nullable': { name: 'nullable'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'options': { name: 'options'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'StringFieldOption'; ofType: null; }; }; } }; 'pattern': { name: 'pattern'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'readonly': { name: 'readonly'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'requiresPermission': { name: 'requiresPermission'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'StringFieldOption': { kind: 'OBJECT'; name: 'StringFieldOption'; fields: { 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'value': { name: 'value'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'StringListOperators': { kind: 'INPUT_OBJECT'; name: 'StringListOperators'; isOneOf: false; inputFields: [{ name: 'inList'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }]; }; + 'StringOperators': { kind: 'INPUT_OBJECT'; name: 'StringOperators'; isOneOf: false; inputFields: [{ name: 'eq'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'notEq'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'contains'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'notContains'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'in'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'notIn'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'regex'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'isNull'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; }; + 'StringStructFieldConfig': { kind: 'OBJECT'; name: 'StringStructFieldConfig'; fields: { 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'length': { name: 'length'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'options': { name: 'options'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'StringFieldOption'; ofType: null; }; }; } }; 'pattern': { name: 'pattern'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'StructCustomFieldConfig': { kind: 'OBJECT'; name: 'StructCustomFieldConfig'; fields: { 'deprecated': { name: 'deprecated'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'deprecationReason': { name: 'deprecationReason'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'fields': { name: 'fields'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'StructFieldConfig'; ofType: null; }; }; }; } }; 'internal': { name: 'internal'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nullable': { name: 'nullable'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'readonly': { name: 'readonly'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'requiresPermission': { name: 'requiresPermission'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'StructField': { kind: 'INTERFACE'; name: 'StructField'; fields: { 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; possibleTypes: 'BooleanStructFieldConfig' | 'DateTimeStructFieldConfig' | 'FloatStructFieldConfig' | 'IntStructFieldConfig' | 'StringStructFieldConfig' | 'TextStructFieldConfig'; }; + 'StructFieldConfig': { kind: 'UNION'; name: 'StructFieldConfig'; fields: {}; possibleTypes: 'BooleanStructFieldConfig' | 'DateTimeStructFieldConfig' | 'FloatStructFieldConfig' | 'IntStructFieldConfig' | 'StringStructFieldConfig' | 'TextStructFieldConfig'; }; + 'Success': { kind: 'OBJECT'; name: 'Success'; fields: { 'success': { name: 'success'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; }; }; + 'Surcharge': { kind: 'OBJECT'; name: 'Surcharge'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'price': { name: 'price'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'priceWithTax': { name: 'priceWithTax'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Money'; ofType: null; }; } }; 'sku': { name: 'sku'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'taxLines': { name: 'taxLines'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TaxLine'; ofType: null; }; }; }; } }; 'taxRate': { name: 'taxRate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'Tag': { kind: 'OBJECT'; name: 'Tag'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'value': { name: 'value'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'TagList': { kind: 'OBJECT'; name: 'TagList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Tag'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'TaxCategory': { kind: 'OBJECT'; name: 'TaxCategory'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'isDefault': { name: 'isDefault'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; + 'TaxLine': { kind: 'OBJECT'; name: 'TaxLine'; fields: { 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'taxRate': { name: 'taxRate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; } }; }; }; + 'TaxRate': { kind: 'OBJECT'; name: 'TaxRate'; fields: { 'category': { name: 'category'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TaxCategory'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'customerGroup': { name: 'customerGroup'; type: { kind: 'OBJECT'; name: 'CustomerGroup'; ofType: null; } }; 'enabled': { name: 'enabled'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'value': { name: 'value'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; } }; 'zone': { name: 'zone'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Zone'; ofType: null; }; } }; }; }; + 'TaxRateList': { kind: 'OBJECT'; name: 'TaxRateList'; fields: { 'items': { name: 'items'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TaxRate'; ofType: null; }; }; }; } }; 'totalItems': { name: 'totalItems'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; + 'TextCustomFieldConfig': { kind: 'OBJECT'; name: 'TextCustomFieldConfig'; fields: { 'deprecated': { name: 'deprecated'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'deprecationReason': { name: 'deprecationReason'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'internal': { name: 'internal'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nullable': { name: 'nullable'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'readonly': { name: 'readonly'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'requiresPermission': { name: 'requiresPermission'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Permission'; ofType: null; }; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'TextStructFieldConfig': { kind: 'OBJECT'; name: 'TextStructFieldConfig'; fields: { 'description': { name: 'description'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'label': { name: 'label'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'LocalizedString'; ofType: null; }; }; } }; 'list': { name: 'list'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'ui': { name: 'ui'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; }; }; + 'TransitionOrderToStateResult': { kind: 'UNION'; name: 'TransitionOrderToStateResult'; fields: {}; possibleTypes: 'Order' | 'OrderStateTransitionError'; }; + 'UpdateAddressInput': { kind: 'INPUT_OBJECT'; name: 'UpdateAddressInput'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; }; defaultValue: null }, { name: 'fullName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'company'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'streetLine1'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'streetLine2'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'city'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'province'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'postalCode'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'countryCode'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'phoneNumber'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'defaultShippingAddress'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'defaultBillingAddress'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateCustomerEmailAddressResult': { kind: 'UNION'; name: 'UpdateCustomerEmailAddressResult'; fields: {}; possibleTypes: 'IdentifierChangeTokenExpiredError' | 'IdentifierChangeTokenInvalidError' | 'NativeAuthStrategyError' | 'Success'; }; + 'UpdateCustomerInput': { kind: 'INPUT_OBJECT'; name: 'UpdateCustomerInput'; isOneOf: false; inputFields: [{ name: 'title'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'firstName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'lastName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'phoneNumber'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateCustomerPasswordResult': { kind: 'UNION'; name: 'UpdateCustomerPasswordResult'; fields: {}; possibleTypes: 'InvalidCredentialsError' | 'NativeAuthStrategyError' | 'PasswordValidationError' | 'Success'; }; + 'UpdateMultipleOrderItemsResult': { kind: 'OBJECT'; name: 'UpdateMultipleOrderItemsResult'; fields: { 'errorResults': { name: 'errorResults'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'UpdateOrderItemErrorResult'; ofType: null; }; }; }; } }; 'order': { name: 'order'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Order'; ofType: null; }; } }; }; }; + 'UpdateOrderInput': { kind: 'INPUT_OBJECT'; name: 'UpdateOrderInput'; isOneOf: false; inputFields: [{ name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; }; defaultValue: null }]; }; + 'UpdateOrderItemErrorResult': { kind: 'UNION'; name: 'UpdateOrderItemErrorResult'; fields: {}; possibleTypes: 'InsufficientStockError' | 'NegativeQuantityError' | 'OrderInterceptorError' | 'OrderLimitError' | 'OrderModificationError'; }; + 'UpdateOrderItemsResult': { kind: 'UNION'; name: 'UpdateOrderItemsResult'; fields: {}; possibleTypes: 'InsufficientStockError' | 'NegativeQuantityError' | 'Order' | 'OrderInterceptorError' | 'OrderLimitError' | 'OrderModificationError'; }; + 'Upload': unknown; + 'User': { kind: 'OBJECT'; name: 'User'; fields: { 'authenticationMethods': { name: 'authenticationMethods'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'AuthenticationMethod'; ofType: null; }; }; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'identifier': { name: 'identifier'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'lastLogin': { name: 'lastLogin'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; } }; 'roles': { name: 'roles'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Role'; ofType: null; }; }; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'verified': { name: 'verified'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; }; }; + 'VerificationTokenExpiredError': { kind: 'OBJECT'; name: 'VerificationTokenExpiredError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'VerificationTokenInvalidError': { kind: 'OBJECT'; name: 'VerificationTokenInvalidError'; fields: { 'errorCode': { name: 'errorCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ErrorCode'; ofType: null; }; } }; 'message': { name: 'message'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; + 'VerifyCustomerAccountResult': { kind: 'UNION'; name: 'VerifyCustomerAccountResult'; fields: {}; possibleTypes: 'CurrentUser' | 'MissingPasswordError' | 'NativeAuthStrategyError' | 'PasswordAlreadySetError' | 'PasswordValidationError' | 'VerificationTokenExpiredError' | 'VerificationTokenInvalidError'; }; + 'Zone': { kind: 'OBJECT'; name: 'Zone'; fields: { 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'customFields': { name: 'customFields'; type: { kind: 'SCALAR'; name: 'JSON'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'members': { name: 'members'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INTERFACE'; name: 'Region'; ofType: null; }; }; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; }; }; +}; + +/** An IntrospectionQuery representation of your schema. + * + * @remarks + * This is an introspection of your schema saved as a file by GraphQLSP. + * It will automatically be used by `gql.tada` to infer the types of your GraphQL documents. + * If you need to reuse this data or update your `scalars`, update `tadaOutputLocation` to + * instead save to a .ts instead of a .d.ts file. + */ +export type introspection = { + name: never; + query: 'Query'; + mutation: 'Mutation'; + subscription: never; + types: introspection_types; +}; + +import 'gql.tada'; + +declare module 'gql.tada' { + interface setupSchema { + introspection: introspection; + } +} diff --git a/packages/meilisearch-plugin/e2e/graphql/graphql-shop.ts b/packages/meilisearch-plugin/e2e/graphql/graphql-shop.ts new file mode 100644 index 00000000..91c9f80d --- /dev/null +++ b/packages/meilisearch-plugin/e2e/graphql/graphql-shop.ts @@ -0,0 +1,15 @@ +import { initGraphQLTada } from 'gql.tada'; +import type { introspection } from './graphql-env-shop.d.ts'; + +export const graphql = initGraphQLTada<{ + disableMasking: true; + introspection: introspection; + scalars: { + DateTime: string; + JSON: any; + Money: number; + }; +}>(); + +export { readFragment } from 'gql.tada'; +export type { FragmentOf, ResultOf, VariablesOf } from 'gql.tada'; diff --git a/packages/meilisearch-plugin/e2e/graphql/shared-definitions.ts b/packages/meilisearch-plugin/e2e/graphql/shared-definitions.ts new file mode 100644 index 00000000..fbe4f455 --- /dev/null +++ b/packages/meilisearch-plugin/e2e/graphql/shared-definitions.ts @@ -0,0 +1,2295 @@ +import { + administratorFragment, + assetFragment, + canceledOrderFragment, + channelFragment, + collectionFragment, + countryFragment, + currentUserFragment, + customerFragment, + customerGroupFragment, + facetValueFragment, + facetWithValuesFragment, + fulfillmentFragment, + globalSettingsFragment, + orderFragment, + orderWithLinesFragment, + orderWithModificationsFragment, + paymentFragment, + productOptionGroupFragment, + productVariantFragment, + productWithOptionsFragment, + productWithVariantsFragment, + promotionFragment, + refundFragment, + roleFragment, + shippingMethodFragment, + taxRateFragment, + variantWithStockFragment, + zoneFragment, +} from './fragments-admin'; +import { graphql } from './graphql-admin'; + +export const getTasksDocument = graphql(` + query GetTasks { + scheduledTasks { + id + description + schedule + scheduleDescription + lastResult + enabled + } + } +`); + +export const updateTaskDocument = graphql(` + mutation UpdateTask($input: UpdateScheduledTaskInput!) { + updateScheduledTask(input: $input) { + id + enabled + } + } +`); + +export const runTaskDocument = graphql(` + mutation RunTask($id: String!) { + runScheduledTask(id: $id) { + success + } + } +`); + +export const createAdministratorDocument = graphql( + ` + mutation CreateAdministrator($input: CreateAdministratorInput!) { + createAdministrator(input: $input) { + ...Administrator + } + } + `, + [administratorFragment], +); + +export const getAdministratorsDocument = graphql( + ` + query GetAdministrators($options: AdministratorListOptions) { + administrators(options: $options) { + items { + ...Administrator + } + totalItems + } + } + `, + [administratorFragment], +); + +export const getAdministratorDocument = graphql( + ` + query GetAdministrator($id: ID!) { + administrator(id: $id) { + ...Administrator + } + } + `, + [administratorFragment], +); + +export const getActiveAdministratorDocument = graphql( + ` + query ActiveAdministrator { + activeAdministrator { + ...Administrator + } + } + `, + [administratorFragment], +); + +export const updateAdministratorDocument = graphql( + ` + mutation UpdateAdministrator($input: UpdateAdministratorInput!) { + updateAdministrator(input: $input) { + ...Administrator + } + } + `, + [administratorFragment], +); + +export const updateActiveAdministratorDocument = graphql( + ` + mutation UpdateActiveAdministrator($input: UpdateActiveAdministratorInput!) { + updateActiveAdministrator(input: $input) { + ...Administrator + } + } + `, + [administratorFragment], +); + +export const deleteAdministratorDocument = graphql(` + mutation DeleteAdministrator($id: ID!) { + deleteAdministrator(id: $id) { + message + result + } + } +`); + +export const updateProductDocument = graphql( + ` + mutation UpdateProduct($input: UpdateProductInput!) { + updateProduct(input: $input) { + ...ProductWithVariants + } + } + `, + [productWithVariantsFragment], +); + +export const updateProductOptionGroupDocument = graphql(` + mutation UpdateOptionGroup($input: UpdateProductOptionGroupInput!) { + updateProductOptionGroup(input: $input) { + id + } + } +`); + +export const createProductDocument = graphql( + ` + mutation CreateProduct($input: CreateProductInput!) { + createProduct(input: $input) { + ...ProductWithVariants + } + } + `, + [productWithVariantsFragment], +); + +export const getProductWithVariantsDocument = graphql( + ` + query GetProductWithVariants($id: ID, $slug: String) { + product(slug: $slug, id: $id) { + ...ProductWithVariants + } + } + `, + [productWithVariantsFragment], +); + +export const getProductListDocument = graphql(` + query GetProductList($options: ProductListOptions) { + products(options: $options) { + items { + id + languageCode + name + slug + featuredAsset { + id + preview + } + } + totalItems + } + } +`); + +export const getProductWithFacetValuesDocument = graphql(` + query GetProductWithFacetValues($id: ID!) { + product(id: $id) { + id + facetValues { + id + name + code + } + variants { + id + facetValues { + id + name + code + } + } + } + } +`); + +export const getProductsListWithVariantsDocument = graphql(` + query GetProductListWithVariants { + products { + items { + id + name + variants { + id + name + } + } + totalItems + } + } +`); + +export const createProductVariantsDocument = graphql( + ` + mutation CreateProductVariants($input: [CreateProductVariantInput!]!) { + createProductVariants(input: $input) { + ...ProductVariant + } + } + `, + [productVariantFragment], +); + +export const updateProductVariantsDocument = graphql( + ` + mutation UpdateProductVariants($input: [UpdateProductVariantInput!]!) { + updateProductVariants(input: $input) { + ...ProductVariant + } + } + `, + [productVariantFragment], +); + +export const updateTaxRateDocument = graphql( + ` + mutation UpdateTaxRate($input: UpdateTaxRateInput!) { + updateTaxRate(input: $input) { + ...TaxRate + } + } + `, + [taxRateFragment], +); + +export const createFacetDocument = graphql( + ` + mutation CreateFacet($input: CreateFacetInput!) { + createFacet(input: $input) { + ...FacetWithValues + } + } + `, + [facetWithValuesFragment], +); + +export const updateFacetDocument = graphql( + ` + mutation UpdateFacet($input: UpdateFacetInput!) { + updateFacet(input: $input) { + ...FacetWithValues + } + } + `, + [facetWithValuesFragment], +); + +export const createFacetValueDocument = graphql( + ` + mutation CreateFacetValue($input: CreateFacetValueInput!) { + createFacetValue(input: $input) { + ...FacetValue + } + } + `, + [facetValueFragment], +); + +export const updateFacetValueDocument = graphql( + ` + mutation UpdateFacetValue($input: UpdateFacetValueInput!) { + updateFacetValue(input: $input) { + ...FacetValue + } + } + `, + [facetValueFragment], +); + +export const createFacetValuesDocument = graphql( + ` + mutation CreateFacetValues($input: [CreateFacetValueInput!]!) { + createFacetValues(input: $input) { + ...FacetValue + } + } + `, + [facetValueFragment], +); + +export const updateFacetValuesDocument = graphql( + ` + mutation UpdateFacetValues($input: [UpdateFacetValueInput!]!) { + updateFacetValues(input: $input) { + ...FacetValue + } + } + `, + [facetValueFragment], +); + +export const deleteFacetValuesDocument = graphql(` + mutation DeleteFacetValues($ids: [ID!]!, $force: Boolean) { + deleteFacetValues(ids: $ids, force: $force) { + result + message + } + } +`); + +export const deleteFacetDocument = graphql(` + mutation DeleteFacet($id: ID!, $force: Boolean) { + deleteFacet(id: $id, force: $force) { + result + message + } + } +`); + +export const getCustomerListDocument = graphql(` + query GetCustomerList($options: CustomerListOptions) { + customers(options: $options) { + items { + id + title + firstName + lastName + emailAddress + phoneNumber + user { + id + identifier + verified + } + } + totalItems + } + } +`); + +export const getCustomerIdsDocument = graphql(` + query GetCustomerIds { + customers { + items { + id + } + } + } +`); + +export const getAssetListDocument = graphql( + ` + query GetAssetList($options: AssetListOptions) { + assets(options: $options) { + items { + ...Asset + } + totalItems + } + } + `, + [assetFragment], +); + +export const createRoleDocument = graphql( + ` + mutation CreateRole($input: CreateRoleInput!) { + createRole(input: $input) { + ...Role + } + } + `, + [roleFragment], +); + +export const createCollectionDocument = graphql( + ` + mutation CreateCollection($input: CreateCollectionInput!) { + createCollection(input: $input) { + ...Collection + } + } + `, + [collectionFragment], +); + +export const updateCollectionDocument = graphql( + ` + mutation UpdateCollection($input: UpdateCollectionInput!) { + updateCollection(input: $input) { + ...Collection + } + } + `, + [collectionFragment], +); + +export const getCustomerDocument = graphql( + ` + query GetCustomer($id: ID!, $orderListOptions: OrderListOptions) { + customer(id: $id) { + ...Customer + orders(options: $orderListOptions) { + items { + id + code + state + total + currencyCode + updatedAt + } + totalItems + } + } + } + `, + [customerFragment], +); + +export const attemptLoginDocument = graphql( + ` + mutation AttemptLogin($username: String!, $password: String!, $rememberMe: Boolean) { + login(username: $username, password: $password, rememberMe: $rememberMe) { + ...CurrentUser + ... on ErrorResult { + errorCode + message + } + } + } + `, + [currentUserFragment], +); + +export const logoutDocument = graphql(` + mutation Logout { + logout { + success + } + } +`); + +export const getCountryListDocument = graphql(` + query GetCountryList($options: CountryListOptions) { + countries(options: $options) { + items { + id + code + name + enabled + } + totalItems + } + } +`); + +export const updateCountryDocument = graphql( + ` + mutation UpdateCountry($input: UpdateCountryInput!) { + updateCountry(input: $input) { + ...Country + } + } + `, + [countryFragment], +); + +export const getGlobalSettingsDocument = graphql( + ` + query GetGlobalSettings { + globalSettings { + ...GlobalSettings + } + } + `, + [globalSettingsFragment], +); + +export const getFacetListDocument = graphql( + ` + query GetFacetList($options: FacetListOptions) { + facets(options: $options) { + items { + ...FacetWithValues + } + totalItems + } + } + `, + [facetWithValuesFragment], +); + +export const getFacetListSimpleDocument = graphql(` + query GetFacetListSimple($options: FacetListOptions) { + facets(options: $options) { + items { + id + name + } + totalItems + } + } +`); + +export const deleteProductDocument = graphql(` + mutation DeleteProduct($id: ID!) { + deleteProduct(id: $id) { + result + } + } +`); + +export const getProductSimpleDocument = graphql(` + query GetProductSimple($id: ID, $slug: String) { + product(slug: $slug, id: $id) { + id + slug + } + } +`); + +export const getProductIdNameDocument = graphql(` + query GetProductIdName($id: ID!) { + product(id: $id) { + id + name + } + } +`); + +export const getStockMovementDocument = graphql( + ` + query GetStockMovement($id: ID!) { + product(id: $id) { + id + variants { + ...VariantWithStock + } + } + } + `, + [variantWithStockFragment], +); + +export const getStockMovementByTypeDocument = graphql(` + query GetStockMovementByType($id: ID!, $type: StockMovementType!) { + product(id: $id) { + id + variants { + stockMovements(options: { type: $type }) { + items { + ... on StockMovement { + id + type + quantity + } + } + totalItems + } + } + } + } +`); + +export const getRunningJobsDocument = graphql(` + query GetRunningJobs($options: JobListOptions) { + jobs(options: $options) { + items { + id + queueName + state + isSettled + duration + } + totalItems + } + } +`); + +export const cancelJobDocument = graphql(` + mutation CancelJob($id: ID!) { + cancelJob(jobId: $id) { + id + state + isSettled + settledAt + } + } +`); + +export const createPromotionDocument = graphql( + ` + mutation CreatePromotion($input: CreatePromotionInput!) { + createPromotion(input: $input) { + ...Promotion + ... on ErrorResult { + errorCode + message + } + } + } + `, + [promotionFragment], +); +export const MeDocument = graphql( + ` + query Me { + me { + ...CurrentUser + } + } + `, + [currentUserFragment], +); + +export const createChannelDocument = graphql( + ` + mutation CreateChannel($input: CreateChannelInput!) { + createChannel(input: $input) { + ...Channel + ... on LanguageNotAvailableError { + errorCode + message + languageCode + } + } + } + `, + [channelFragment], +); + +export const deleteProductVariantDocument = graphql(` + mutation DeleteProductVariant($id: ID!) { + deleteProductVariant(id: $id) { + result + message + } + } +`); + +export const assignProductToChannelDocument = graphql( + ` + mutation AssignProductsToChannel($input: AssignProductsToChannelInput!) { + assignProductsToChannel(input: $input) { + ...ProductWithVariants + } + } + `, + [productWithVariantsFragment], +); + +export const removeProductFromChannelDocument = graphql( + ` + mutation RemoveProductsFromChannel($input: RemoveProductsFromChannelInput!) { + removeProductsFromChannel(input: $input) { + ...ProductWithVariants + } + } + `, + [productWithVariantsFragment], +); + +export const assignProductVariantToChannelDocument = graphql( + ` + mutation AssignProductVariantsToChannel($input: AssignProductVariantsToChannelInput!) { + assignProductVariantsToChannel(input: $input) { + ...ProductVariant + } + } + `, + [productVariantFragment], +); + +export const removeProductVariantFromChannelDocument = graphql( + ` + mutation RemoveProductVariantsFromChannel($input: RemoveProductVariantsFromChannelInput!) { + removeProductVariantsFromChannel(input: $input) { + ...ProductVariant + } + } + `, + [productVariantFragment], +); + +export const assignFacetsToChannelDocument = graphql(` + mutation AssignFacetsToChannel($input: AssignFacetsToChannelInput!) { + assignFacetsToChannel(input: $input) { + id + name + } + } +`); + +export const removeFacetsFromChannelDocument = graphql(` + mutation RemoveFacetsFromChannel($input: RemoveFacetsFromChannelInput!) { + removeFacetsFromChannel(input: $input) { + ... on Facet { + id + name + } + ... on FacetInUseError { + errorCode + message + productCount + variantCount + } + } + } +`); + +export const assignProductOptionGroupsToChannelDocument = graphql(` + mutation AssignProductOptionGroupsToChannel($input: AssignProductOptionGroupsToChannelInput!) { + assignProductOptionGroupsToChannel(input: $input) { + id + code + name + } + } +`); + +export const removeProductOptionGroupsFromChannelDocument = graphql(` + mutation RemoveProductOptionGroupsFromChannel($input: RemoveProductOptionGroupsFromChannelInput!) { + removeProductOptionGroupsFromChannel(input: $input) { + ... on ProductOptionGroup { + id + code + name + } + ... on ProductOptionGroupInUseError { + errorCode + message + optionGroupCode + productCount + variantCount + } + } + } +`); + +export const deleteProductOptionGroupDocument = graphql(` + mutation DeleteProductOptionGroup($id: ID!, $force: Boolean) { + deleteProductOptionGroup(id: $id, force: $force) { + result + message + } + } +`); + +export const deleteProductOptionGroupsDocument = graphql(` + mutation DeleteProductOptionGroups($ids: [ID!]!, $force: Boolean) { + deleteProductOptionGroups(ids: $ids, force: $force) { + result + message + } + } +`); + +export const getEntityDuplicatorsDocument = graphql(` + query GetEntityDuplicators { + entityDuplicators { + code + description + requiresPermission + forEntities + args { + name + type + defaultValue + } + } + } +`); + +export const duplicateEntityDocument = graphql(` + mutation DuplicateEntity($input: DuplicateEntityInput!) { + duplicateEntity(input: $input) { + ... on DuplicateEntitySuccess { + newEntityId + } + ... on DuplicateEntityError { + errorCode + message + duplicationError + } + } + } +`); + +export const updateAssetDocument = graphql( + ` + mutation UpdateAsset($input: UpdateAssetInput!) { + updateAsset(input: $input) { + ...Asset + ... on Asset { + tags { + id + value + } + focalPoint { + x + y + } + } + } + } + `, + [assetFragment], +); + +export const deleteAssetDocument = graphql(` + mutation DeleteAsset($input: DeleteAssetInput!) { + deleteAsset(input: $input) { + result + message + } + } +`); + +export const updateChannelDocument = graphql( + ` + mutation UpdateChannel($input: UpdateChannelInput!) { + updateChannel(input: $input) { + ...Channel + ... on LanguageNotAvailableError { + errorCode + message + languageCode + } + } + } + `, + [channelFragment], +); + +export const getCustomerHistoryDocument = graphql(` + query GetCustomerHistory($id: ID!, $options: HistoryEntryListOptions) { + customer(id: $id) { + id + history(options: $options) { + totalItems + items { + id + administrator { + id + } + type + data + } + } + } + } +`); + +export const getOrderDocument = graphql( + ` + query GetOrder($id: ID!) { + order(id: $id) { + ...OrderWithLines + } + } + `, + [orderWithLinesFragment], +); + +export const createCustomerGroupDocument = graphql( + ` + mutation CreateCustomerGroup($input: CreateCustomerGroupInput!) { + createCustomerGroup(input: $input) { + ...CustomerGroup + } + } + `, + [customerGroupFragment], +); + +export const removeCustomersFromGroupDocument = graphql( + ` + mutation RemoveCustomersFromGroup($groupId: ID!, $customerIds: [ID!]!) { + removeCustomersFromGroup(customerGroupId: $groupId, customerIds: $customerIds) { + ...CustomerGroup + } + } + `, + [customerGroupFragment], +); + +export const createFulfillmentDocument = graphql( + ` + mutation CreateFulfillment($input: FulfillOrderInput!) { + addFulfillmentToOrder(input: $input) { + ...Fulfillment + ... on ErrorResult { + errorCode + message + } + ... on CreateFulfillmentError { + fulfillmentHandlerError + } + } + } + `, + [fulfillmentFragment], +); + +export const transitFulfillmentDocument = graphql( + ` + mutation TransitFulfillment($id: ID!, $state: String!) { + transitionFulfillmentToState(id: $id, state: $state) { + ...Fulfillment + ... on FulfillmentStateTransitionError { + errorCode + message + transitionError + fromState + toState + } + } + } + `, + [fulfillmentFragment], +); + +export const getOrderFulfillmentsDocument = graphql(` + query GetOrderFulfillments($id: ID!) { + order(id: $id) { + id + state + fulfillments { + id + state + nextStates + method + summary { + orderLine { + id + } + quantity + } + } + } + } +`); + +export const getOrdersListDocument = graphql( + ` + query GetOrderListFull($options: OrderListOptions) { + orders(options: $options) { + items { + ...Order + } + totalItems + } + } + `, + [orderFragment], +); + +export const createAddressDocument = graphql(` + mutation CreateAddress($id: ID!, $input: CreateAddressInput!) { + createCustomerAddress(customerId: $id, input: $input) { + id + fullName + company + streetLine1 + streetLine2 + city + province + postalCode + country { + code + name + } + phoneNumber + defaultShippingAddress + defaultBillingAddress + } + } +`); + +export const updateAddressDocument = graphql(` + mutation UpdateAddress($input: UpdateAddressInput!) { + updateCustomerAddress(input: $input) { + id + defaultShippingAddress + defaultBillingAddress + country { + code + name + } + } + } +`); + +export const createCustomerDocument = graphql( + ` + mutation CreateCustomer($input: CreateCustomerInput!, $password: String) { + createCustomer(input: $input, password: $password) { + ...Customer + ... on ErrorResult { + errorCode + message + } + } + } + `, + [customerFragment], +); + +export const updateCustomerDocument = graphql( + ` + mutation UpdateCustomer($input: UpdateCustomerInput!) { + updateCustomer(input: $input) { + ...Customer + ... on ErrorResult { + errorCode + message + } + } + } + `, + [customerFragment], +); + +export const deleteCustomerDocument = graphql(` + mutation DeleteCustomer($id: ID!) { + deleteCustomer(id: $id) { + result + } + } +`); + +export const updateCustomerNoteDocument = graphql(` + mutation UpdateCustomerNote($input: UpdateCustomerNoteInput!) { + updateCustomerNote(input: $input) { + id + data + isPublic + } + } +`); + +export const deleteCustomerNoteDocument = graphql(` + mutation DeleteCustomerNote($id: ID!) { + deleteCustomerNote(id: $id) { + result + message + } + } +`); + +export const updateCustomerGroupDocument = graphql( + ` + mutation UpdateCustomerGroup($input: UpdateCustomerGroupInput!) { + updateCustomerGroup(input: $input) { + ...CustomerGroup + } + } + `, + [customerGroupFragment], +); + +export const deleteCustomerGroupDocument = graphql(` + mutation DeleteCustomerGroup($id: ID!) { + deleteCustomerGroup(id: $id) { + result + message + } + } +`); + +export const getCustomerGroupsDocument = graphql(` + query GetCustomerGroups($options: CustomerGroupListOptions) { + customerGroups(options: $options) { + items { + id + name + } + totalItems + } + } +`); + +export const getCustomerGroupDocument = graphql(` + query GetCustomerGroup($id: ID!, $options: CustomerListOptions) { + customerGroup(id: $id) { + id + name + customers(options: $options) { + items { + id + } + totalItems + } + } + } +`); + +export const addCustomersToGroupDocument = graphql( + ` + mutation AddCustomersToGroup($groupId: ID!, $customerIds: [ID!]!) { + addCustomersToGroup(customerGroupId: $groupId, customerIds: $customerIds) { + ...CustomerGroup + } + } + `, + [customerGroupFragment], +); + +export const getCustomerWithGroupsDocument = graphql(` + query GetCustomerWithGroups($id: ID!) { + customer(id: $id) { + id + groups { + id + name + } + } + } +`); + +export const adminTransitionToStateDocument = graphql( + ` + mutation AdminTransition($id: ID!, $state: String!) { + transitionOrderToState(id: $id, state: $state) { + ...Order + ... on OrderStateTransitionError { + errorCode + message + transitionError + fromState + toState + } + } + } + `, + [orderFragment], +); + +export const cancelOrderDocument = graphql( + ` + mutation CancelOrder($input: CancelOrderInput!) { + cancelOrder(input: $input) { + ...CanceledOrder + ... on ErrorResult { + errorCode + message + } + } + } + `, + [canceledOrderFragment], +); + +export const updateGlobalSettingsDocument = graphql( + ` + mutation UpdateGlobalSettings($input: UpdateGlobalSettingsInput!) { + updateGlobalSettings(input: $input) { + ...GlobalSettings + ... on ErrorResult { + errorCode + message + } + } + } + `, + [globalSettingsFragment], +); + +export const updateRoleDocument = graphql( + ` + mutation UpdateRole($input: UpdateRoleInput!) { + updateRole(input: $input) { + ...Role + } + } + `, + [roleFragment], +); + +export const getProductsWithVariantPricesDocument = graphql(` + query GetProductsWithVariantPrices { + products { + items { + id + slug + variants { + id + price + priceWithTax + currencyCode + sku + facetValues { + id + code + } + } + } + } + } +`); + +export const createProductOptionGroupDocument = graphql( + ` + mutation CreateProductOptionGroup($input: CreateProductOptionGroupInput!) { + createProductOptionGroup(input: $input) { + ...ProductOptionGroup + } + } + `, + [productOptionGroupFragment], +); + +export const addOptionGroupToProductDocument = graphql( + ` + mutation AddOptionGroupToProduct($productId: ID!, $optionGroupId: ID!) { + addOptionGroupToProduct(productId: $productId, optionGroupId: $optionGroupId) { + ...ProductWithOptions + } + } + `, + [productWithOptionsFragment], +); + +export const removeOptionGroupFromProductDocument = graphql( + ` + mutation RemoveOptionGroupFromProduct($productId: ID!, $optionGroupId: ID!, $force: Boolean) { + removeOptionGroupFromProduct( + productId: $productId + optionGroupId: $optionGroupId + force: $force + ) { + ...ProductWithOptions + ... on ProductOptionInUseError { + errorCode + message + optionGroupCode + productVariantCount + } + } + } + `, + [productWithOptionsFragment], +); + +export const getOptionGroupDocument = graphql(` + query GetOptionGroup($id: ID!) { + productOptionGroup(id: $id) { + id + code + options { + id + code + } + } + } +`); + +export const getProductVariantDocument = graphql(` + query GetProductVariant($id: ID!) { + productVariant(id: $id) { + id + name + } + } +`); + +export const getProductWithVariantListDocument = graphql( + ` + query GetProductWithVariantList($id: ID, $variantListOptions: ProductVariantListOptions) { + product(id: $id) { + id + variantList(options: $variantListOptions) { + items { + ...ProductVariant + } + totalItems + } + } + } + `, + [productVariantFragment], +); + +export const createShippingMethodDocument = graphql( + ` + mutation CreateShippingMethod($input: CreateShippingMethodInput!) { + createShippingMethod(input: $input) { + ...ShippingMethod + } + } + `, + [shippingMethodFragment], +); + +export const settlePaymentDocument = graphql( + ` + mutation SettlePayment($id: ID!) { + settlePayment(id: $id) { + ...Payment + ... on ErrorResult { + errorCode + message + } + ... on SettlePaymentError { + paymentErrorMessage + } + } + } + `, + [paymentFragment], +); + +export const getOrderHistoryDocument = graphql(` + query GetOrderHistory($id: ID!, $options: HistoryEntryListOptions) { + order(id: $id) { + id + history(options: $options) { + totalItems + items { + id + type + administrator { + id + } + data + } + } + } + } +`); + +export const updateShippingMethodDocument = graphql( + ` + mutation UpdateShippingMethod($input: UpdateShippingMethodInput!) { + updateShippingMethod(input: $input) { + ...ShippingMethod + } + } + `, + [shippingMethodFragment], +); + +export const getAssetDocument = graphql( + ` + query GetAsset($id: ID!) { + asset(id: $id) { + ...Asset + width + height + } + } + `, + [assetFragment], +); + +export const getAssetFragmentFirstDocument = graphql(` + fragment AssetFragFirst on Asset { + id + preview + } + + query GetAssetFragmentFirst($id: ID!) { + asset(id: $id) { + ...AssetFragFirst + } + } +`); + +export const assetWithTagsAndFocalPointFragmentDocument = graphql( + ` + fragment AssetWithTagsAndFocalPoint on Asset { + ...Asset + focalPoint { + x + y + } + tags { + id + value + } + } + `, + [assetFragment], +); + +export const createAssetsDocument = graphql( + ` + mutation CreateAssets($input: [CreateAssetInput!]!) { + createAssets(input: $input) { + ...AssetWithTagsAndFocalPoint + ... on MimeTypeError { + message + fileName + mimeType + } + } + } + `, + [assetWithTagsAndFocalPointFragmentDocument], +); + +export const deleteShippingMethodDocument = graphql(` + mutation DeleteShippingMethod($id: ID!) { + deleteShippingMethod(id: $id) { + result + message + } + } +`); + +export const assignPromotionsToChannelDocument = graphql(` + mutation AssignPromotionToChannel($input: AssignPromotionsToChannelInput!) { + assignPromotionsToChannel(input: $input) { + id + name + } + } +`); + +export const removePromotionsFromChannelDocument = graphql(` + mutation RemovePromotionFromChannel($input: RemovePromotionsFromChannelInput!) { + removePromotionsFromChannel(input: $input) { + id + name + } + } +`); + +export const getTaxRateDocument = graphql( + ` + query GetTaxRate($id: ID!) { + taxRate(id: $id) { + ...TaxRate + } + } + `, + [taxRateFragment], +); + +export const createTaxRateDocument = graphql( + ` + mutation CreateTaxRate($input: CreateTaxRateInput!) { + createTaxRate(input: $input) { + ...TaxRate + } + } + `, + [taxRateFragment], +); + +export const deleteTaxRateDocument = graphql(` + mutation DeleteTaxRate($id: ID!) { + deleteTaxRate(id: $id) { + result + message + } + } +`); + +export const getTaxRatesListDocument = graphql( + ` + query GetTaxRates($options: TaxRateListOptions) { + taxRates(options: $options) { + items { + ...TaxRate + } + totalItems + } + } + `, + [taxRateFragment], +); +export const getShippingMethodListDocument = graphql( + ` + query GetShippingMethodList { + shippingMethods { + items { + ...ShippingMethod + } + totalItems + } + } + `, + [shippingMethodFragment], +); + +export const getCollectionsDocument = graphql(` + query GetCollections { + collections { + items { + id + name + position + parent { + id + name + } + } + } + } +`); + +export const transitionPaymentToStateDocument = graphql( + ` + mutation TransitionPaymentToState($id: ID!, $state: String!) { + transitionPaymentToState(id: $id, state: $state) { + ...Payment + ... on ErrorResult { + errorCode + message + } + ... on PaymentStateTransitionError { + transitionError + } + } + } + `, + [paymentFragment], +); + +export const getProductVariantListDocument = graphql(` + query GetProductVariantList($options: ProductVariantListOptions, $productId: ID) { + productVariants(options: $options, productId: $productId) { + items { + id + name + sku + price + priceWithTax + currencyCode + prices { + currencyCode + price + } + } + totalItems + } + } +`); + +export const deletePromotionDocument = graphql(` + mutation DeletePromotion($id: ID!) { + deletePromotion(id: $id) { + result + } + } +`); + +export const getChannelsDocument = graphql(` + query GetChannels { + channels { + items { + id + code + token + } + } + } +`); + +export const assignCollectionsToChannelDocument = graphql( + ` + mutation AssignCollectionsToChannel($input: AssignCollectionsToChannelInput!) { + assignCollectionsToChannel(input: $input) { + ...Collection + } + } + `, + [collectionFragment], +); + +export const getCollectionDocument = graphql( + ` + query GetCollection($id: ID, $slug: String, $variantListOptions: ProductVariantListOptions) { + collection(id: $id, slug: $slug) { + ...Collection + productVariants(options: $variantListOptions) { + items { + id + name + price + } + } + } + } + `, + [collectionFragment], +); + +export const getFacetWithValuesDocument = graphql( + ` + query GetFacetWithValues($id: ID!) { + facet(id: $id) { + ...FacetWithValues + } + } + `, + [facetWithValuesFragment], +); + +export const getFacetWithValueListDocument = graphql( + ` + query GetFacetWithValueList($id: ID!, $options: FacetValueListOptions) { + facet(id: $id) { + id + languageCode + isPrivate + code + name + valueList(options: $options) { + items { + ...FacetValue + } + totalItems + } + } + } + `, + [facetValueFragment], +); + +export const getFacetValuesDocument = graphql( + ` + query GetFacetValues($options: FacetValueListOptions) { + facetValues(options: $options) { + items { + ...FacetValue + } + totalItems + } + } + `, + [facetValueFragment], +); + +export const getFacetValueDocument = graphql( + ` + query GetFacetValue($id: ID!) { + facetValue(id: $id) { + ...FacetValue + } + } + `, + [facetValueFragment], +); + +export const getPromotionDocument = graphql( + ` + query GetPromotion($id: ID!) { + promotion(id: $id) { + ...Promotion + } + } + `, + [promotionFragment], +); + +export const getOrderListDocument = graphql(` + query GetOrderList($options: OrderListOptions) { + orders(options: $options) { + items { + id + code + state + total + totalWithTax + totalQuantity + customer { + id + emailAddress + lastName + } + } + totalItems + } + } +`); + +export const getOrderWithPaymentsDocument = graphql(` + query GetOrderWithPayments($id: ID!) { + order(id: $id) { + id + payments { + id + errorMessage + metadata + refunds { + id + total + } + } + } + } +`); + +export const getOrderListWithQtyDocument = graphql(` + query GetOrderListWithQty($options: OrderListOptions) { + orders(options: $options) { + items { + id + code + totalQuantity + lines { + id + quantity + } + } + } + } +`); + +export const refundOrderDocument = graphql( + ` + mutation RefundOrder($input: RefundOrderInput!) { + refundOrder(input: $input) { + ...Refund + ... on ErrorResult { + errorCode + message + } + } + } + `, + [refundFragment], +); + +export const settleRefundDocument = graphql( + ` + mutation SettleRefund($input: SettleRefundInput!) { + settleRefund(input: $input) { + ...Refund + ... on ErrorResult { + errorCode + message + } + } + } + `, + [refundFragment], +); + +export const addNoteToOrderDocument = graphql(` + mutation AddNoteToOrder($input: AddNoteToOrderInput!) { + addNoteToOrder(input: $input) { + id + } + } +`); + +export const updateOrderNoteDocument = graphql(` + mutation UpdateOrderNote($input: UpdateOrderNoteInput!) { + updateOrderNote(input: $input) { + id + data + isPublic + } + } +`); + +export const deleteOrderNoteDocument = graphql(` + mutation DeleteOrderNote($id: ID!) { + deleteOrderNote(id: $id) { + result + message + } + } +`); + +export const getOrderLineFulfillmentsDocument = graphql(` + query GetOrderLineFulfillments($id: ID!) { + order(id: $id) { + id + lines { + id + fulfillmentLines { + fulfillment { + id + state + } + orderLineId + quantity + } + } + } + } +`); + +export const getOrderListFulfillmentsDocument = graphql(` + query GetOrderListFulfillments { + orders { + items { + id + state + fulfillments { + id + state + nextStates + method + } + } + } + } +`); + +export const cancelPaymentDocument = graphql( + ` + mutation CancelPayment($paymentId: ID!) { + cancelPayment(id: $paymentId) { + ...Payment + ... on ErrorResult { + errorCode + message + } + ... on PaymentStateTransitionError { + transitionError + } + ... on CancelPaymentError { + paymentErrorMessage + } + } + } + `, + [paymentFragment], +); + +export const setOrderCustomerDocument = graphql(` + mutation SetOrderCustomer($input: SetOrderCustomerInput!) { + setOrderCustomer(input: $input) { + id + customer { + id + } + } + } +`); + +export const getOrderAssetEdgeCaseDocument = graphql(` + query OrderAssetEdgeCase($id: ID!) { + order(id: $id) { + lines { + id + } + id + lines { + id + featuredAsset { + preview + } + } + } + } +`); + +export const getOrderWithLineCalculatedPropsDocument = graphql(` + query GetOrderWithLineCalculatedProps($id: ID!) { + order(id: $id) { + id + lines { + id + linePriceWithTax + quantity + } + } + } +`); + +export const addManualPaymentDocument = graphql(` + mutation AddManualPaymentToOrder($input: ManualPaymentInput!) { + addManualPaymentToOrder(input: $input) { + ... on Order { + id + code + state + active + total + totalWithTax + lines { + id + } + payments { + id + state + } + } + ... on ErrorResult { + errorCode + message + } + } + } +`); + +export const modifyOrderDocument = graphql( + ` + mutation ModifyOrder($input: ModifyOrderInput!) { + modifyOrder(input: $input) { + ...OrderWithModifications + ... on ErrorResult { + errorCode + message + } + } + } + `, + [orderWithModificationsFragment], +); + +export const addManualPaymentToOrderDocument = graphql( + ` + mutation AddManualPayment($input: ManualPaymentInput!) { + addManualPaymentToOrder(input: $input) { + ...OrderWithModifications + ... on ErrorResult { + errorCode + message + } + } + } + `, + [orderWithModificationsFragment], +); + +export const getOrderWithModificationsDocument = graphql( + ` + query GetOrderWithModifications($id: ID!) { + order(id: $id) { + ...OrderWithModifications + } + } + `, + [orderWithModificationsFragment], +); + +export const getOrderWithCustomFieldsDocument = graphql(` + query GetOrderCustomFields($id: ID!) { + order(id: $id) { + # Ignore error - customFields are dynamically generated at runtime, not in introspection schema + customFields { + points + } + lines { + id + # Ignore error - customFields are dynamically generated at runtime, not in introspection schema + customFields { + color + } + } + } + } +`); + +export const getSettingsStoreValueDocument = graphql(` + query GetSettingsStoreValue($key: String!) { + getSettingsStoreValue(key: $key) + } +`); + +export const getSettingsStoreValuesDocument = graphql(` + query GetSettingsStoreValues($keys: [String!]!) { + getSettingsStoreValues(keys: $keys) + } +`); + +export const setSettingsStoreValueDocument = graphql(` + mutation SetSettingsStoreValue($input: SettingsStoreInput!) { + setSettingsStoreValue(input: $input) { + key + result + error + } + } +`); + +export const setSettingsStoreValuesDocument = graphql(` + mutation SetSettingsStoreValues($inputs: [SettingsStoreInput!]!) { + setSettingsStoreValues(inputs: $inputs) { + key + result + error + } + } +`); + +export const getCheckersDocument = graphql(` + query GetCheckers { + shippingEligibilityCheckers { + code + args { + defaultValue + description + label + list + name + required + type + } + } + } +`); + +export const getZonesDocument = graphql(` + query GetZones($options: ZoneListOptions) { + zones(options: $options) { + items { + id + name + } + totalItems + } + } +`); + +export const getZoneDocument = graphql( + ` + query GetZone($id: ID!) { + zone(id: $id) { + ...Zone + } + } + `, + [zoneFragment], +); + +export const getActiveChannelWithZoneMembersDocument = graphql(` + query GetActiveChannelWithZoneMembers { + activeChannel { + id + defaultShippingZone { + id + members { + name + } + } + } + } +`); + +export const createZoneDocument = graphql( + ` + mutation CreateZone($input: CreateZoneInput!) { + createZone(input: $input) { + ...Zone + } + } + `, + [zoneFragment], +); + +export const updateZoneDocument = graphql( + ` + mutation UpdateZone($input: UpdateZoneInput!) { + updateZone(input: $input) { + ...Zone + } + } + `, + [zoneFragment], +); + +export const deleteZoneDocument = graphql(` + mutation DeleteZone($id: ID!) { + deleteZone(id: $id) { + result + message + } + } +`); + +export const addMembersToZoneDocument = graphql( + ` + mutation AddMembersToZone($zoneId: ID!, $memberIds: [ID!]!) { + addMembersToZone(zoneId: $zoneId, memberIds: $memberIds) { + ...Zone + } + } + `, + [zoneFragment], +); + +export const removeMembersFromZoneDocument = graphql( + ` + mutation RemoveMembersFromZone($zoneId: ID!, $memberIds: [ID!]!) { + removeMembersFromZone(zoneId: $zoneId, memberIds: $memberIds) { + ...Zone + } + } + `, + [zoneFragment], +); + +export const getProductWithCustomFieldsDocument = graphql(` + query GetProductWithCustomFields($id: ID!) { + product(id: $id) { + id + customFields { + publicField + authenticatedField + updateProductField + updateProductOrCustomerField + superadminField + } + } + } +`); + +export const getProductWithPublicCustomFieldsDocument = graphql(` + query GetProductWithPublicCustomFields($id: ID!) { + product(id: $id) { + id + customFields { + publicField + authenticatedField + updateProductField + } + } + } +`); + +export const authenticateDocument = graphql( + ` + mutation Authenticate($input: AuthenticationInput!) { + authenticate(input: $input) { + ...CurrentUser + ... on InvalidCredentialsError { + authenticationError + errorCode + message + } + } + } + `, + [currentUserFragment], +); + +export const getCustomersDocument = graphql(` + query GetCustomers { + customers { + totalItems + items { + id + emailAddress + } + } + } +`); + +export const getCustomerUserAuthDocument = graphql(` + query GetCustomerUserAuth($id: ID!) { + customer(id: $id) { + id + user { + id + verified + authenticationMethods { + id + strategy + } + } + } + } +`); + +export const updatePromotionDocument = graphql( + ` + mutation UpdatePromotion($input: UpdatePromotionInput!) { + updatePromotion(input: $input) { + ...Promotion + ... on ErrorResult { + errorCode + message + } + } + } + `, + [promotionFragment], +); + +export const getPromotionListDocument = graphql( + ` + query GetPromotionList($options: PromotionListOptions) { + promotions(options: $options) { + items { + ...Promotion + } + totalItems + } + } + `, + [promotionFragment], +); + +export const configurableOperationDefFragment = graphql(` + fragment ConfigurableOperationDef on ConfigurableOperationDefinition { + args { + name + type + ui + } + code + description + } +`); + +export const getAdjustmentOperationsDocument = graphql( + ` + query GetAdjustmentOperations { + promotionActions { + ...ConfigurableOperationDef + } + promotionConditions { + ...ConfigurableOperationDef + } + } + `, + [configurableOperationDefFragment], +); + +export const getCustomerWithUserDocument = graphql(` + query GetCustomerWithUser($id: ID!) { + customer(id: $id) { + id + user { + id + identifier + verified + } + } + } +`); + +export const getCustomerOrdersDocument = graphql(` + query GetCustomerOrders($id: ID!) { + customer(id: $id) { + orders { + items { + id + } + totalItems + } + } + } +`); + +export const addNoteToCustomerDocument = graphql( + ` + mutation AddNoteToCustomer($input: AddNoteToCustomerInput!) { + addNoteToCustomer(input: $input) { + ...Customer + } + } + `, + [customerFragment], +); + +export const deleteCustomerAddressDocument = graphql(` + mutation DeleteCustomerAddress($id: ID!) { + deleteCustomerAddress(id: $id) { + success + } + } +`); diff --git a/packages/meilisearch-plugin/e2e/graphql/shop-definitions.ts b/packages/meilisearch-plugin/e2e/graphql/shop-definitions.ts new file mode 100644 index 00000000..beab53f6 --- /dev/null +++ b/packages/meilisearch-plugin/e2e/graphql/shop-definitions.ts @@ -0,0 +1,1533 @@ +import { graphql } from './graphql-shop'; + +export const testOrderFragment = graphql(` + fragment TestOrderFragment on Order { + id + code + state + active + subTotal + subTotalWithTax + shipping + shippingWithTax + total + totalWithTax + currencyCode + couponCodes + discounts { + adjustmentSource + amount + amountWithTax + description + type + } + lines { + id + quantity + linePrice + linePriceWithTax + unitPrice + unitPriceWithTax + unitPriceChangeSinceAdded + unitPriceWithTaxChangeSinceAdded + discountedUnitPriceWithTax + proratedUnitPriceWithTax + productVariant { + id + } + discounts { + adjustmentSource + amount + amountWithTax + description + type + } + } + shippingLines { + priceWithTax + shippingMethod { + id + code + description + } + } + customer { + id + user { + id + identifier + } + } + history { + items { + id + type + data + } + } + } +`); + +export const updatedOrderFragment = graphql(` + fragment UpdatedOrder on Order { + id + code + state + active + total + totalWithTax + currencyCode + shipping + shippingWithTax + customer { + id + } + shippingAddress { + fullName + company + streetLine1 + streetLine2 + city + province + postalCode + country + phoneNumber + } + billingAddress { + fullName + company + streetLine1 + streetLine2 + city + province + postalCode + country + phoneNumber + } + shippingLines { + priceWithTax + shippingMethod { + id + code + description + } + } + payments { + id + transactionId + method + amount + state + metadata + } + lines { + id + quantity + productVariant { + id + } + unitPrice + unitPriceWithTax + linePrice + linePriceWithTax + featuredAsset { + id + } + discounts { + adjustmentSource + amount + amountWithTax + description + type + } + } + discounts { + adjustmentSource + amount + amountWithTax + description + type + } + } +`); + +export const updatedOrderWithCustomFieldsFragment = graphql(` + fragment UpdatedOrderWithCustomFields on Order { + id + code + state + active + total + totalWithTax + currencyCode + shipping + shippingWithTax + customer { + id + } + shippingAddress { + fullName + company + streetLine1 + streetLine2 + city + province + postalCode + country + phoneNumber + } + billingAddress { + fullName + company + streetLine1 + streetLine2 + city + province + postalCode + country + phoneNumber + } + shippingLines { + priceWithTax + shippingMethod { + id + code + description + } + } + payments { + id + transactionId + method + amount + state + metadata + } + lines { + id + quantity + productVariant { + id + } + unitPrice + unitPriceWithTax + linePrice + linePriceWithTax + featuredAsset { + id + } + # Ignore error - customFields are dynamically generated at runtime, not in introspection schema + customFields { + notes + lineImage { + id + } + lineImages { + id + } + } + discounts { + adjustmentSource + amount + amountWithTax + description + type + } + } + discounts { + adjustmentSource + amount + amountWithTax + description + type + } + } +`); + +export const addItemToOrderDocument = graphql( + ` + mutation AddItemToOrder($productVariantId: ID!, $quantity: Int!) { + addItemToOrder(productVariantId: $productVariantId, quantity: $quantity) { + ...UpdatedOrder + ... on ErrorResult { + errorCode + message + } + ... on InsufficientStockError { + quantityAvailable + order { + ...UpdatedOrder + } + } + ... on OrderInterceptorError { + interceptorError + } + } + } + `, + [updatedOrderFragment], +); + +export const addMultipleItemsToOrderDocument = graphql( + ` + mutation AddItemsToOrder($inputs: [AddItemInput!]!) { + addItemsToOrder(inputs: $inputs) { + order { + ...UpdatedOrder + } + errorResults { + ... on ErrorResult { + errorCode + message + } + } + } + } + `, + [updatedOrderFragment], +); + +export const setCurrencyCodeForOrderDocument = graphql( + ` + mutation SetCurrencyCodeForOrder($currencyCode: CurrencyCode!) { + setCurrencyCodeForOrder(currencyCode: $currencyCode) { + ...UpdatedOrder + ... on ErrorResult { + errorCode + message + } + ... on InsufficientStockError { + quantityAvailable + order { + ...UpdatedOrder + } + } + ... on OrderInterceptorError { + interceptorError + } + } + } + `, + [updatedOrderFragment], +); + +export const searchProductsShopDocument = graphql(` + query SearchProductsShop($input: SearchInput!) { + search(input: $input) { + totalItems + items { + productId + productName + productVariantId + productVariantName + sku + collectionIds + price { + ... on SinglePrice { + value + } + ... on PriceRange { + min + max + } + } + } + } + } +`); + +export const registerAccountDocument = graphql(` + mutation Register($input: RegisterCustomerInput!) { + registerCustomerAccount(input: $input) { + ... on Success { + success + } + ... on ErrorResult { + errorCode + message + } + ... on PasswordValidationError { + validationErrorMessage + } + } + } +`); + +export const currentUserFragment = graphql(` + fragment CurrentUserShop on CurrentUser { + id + identifier + channels { + code + token + permissions + } + } +`); + +export const verifyEmailDocument = graphql( + ` + mutation Verify($password: String, $token: String!) { + verifyCustomerAccount(password: $password, token: $token) { + ...CurrentUserShop + ... on ErrorResult { + errorCode + message + } + ... on PasswordValidationError { + validationErrorMessage + } + } + } + `, + [currentUserFragment], +); + +export const refreshTokenDocument = graphql(` + mutation RefreshToken($emailAddress: String!) { + refreshCustomerVerification(emailAddress: $emailAddress) { + ... on Success { + success + } + ... on ErrorResult { + errorCode + message + } + } + } +`); + +export const requestPasswordResetDocument = graphql(` + mutation RequestPasswordReset($identifier: String!) { + requestPasswordReset(emailAddress: $identifier) { + ... on Success { + success + } + ... on ErrorResult { + errorCode + message + } + } + } +`); + +export const resetPasswordDocument = graphql( + ` + mutation ResetPassword($token: String!, $password: String!) { + resetPassword(token: $token, password: $password) { + ...CurrentUserShop + ... on ErrorResult { + errorCode + message + } + ... on PasswordValidationError { + validationErrorMessage + } + } + } + `, + [currentUserFragment], +); + +export const requestUpdateEmailAddressDocument = graphql(` + mutation RequestUpdateEmailAddress($password: String!, $newEmailAddress: String!) { + requestUpdateCustomerEmailAddress(password: $password, newEmailAddress: $newEmailAddress) { + ... on Success { + success + } + ... on ErrorResult { + errorCode + message + } + } + } +`); + +export const updateEmailAddressDocument = graphql(` + mutation UpdateEmailAddress($token: String!) { + updateCustomerEmailAddress(token: $token) { + ... on Success { + success + } + ... on ErrorResult { + errorCode + message + } + } + } +`); + +export const getActiveCustomerDocument = graphql(` + query GetActiveCustomer { + activeCustomer { + id + emailAddress + } + } +`); + +export const createAddressDocument = graphql(` + mutation CreateAddressShop($input: CreateAddressInput!) { + createCustomerAddress(input: $input) { + id + streetLine1 + country { + code + } + } + } +`); + +export const updateAddressDocument = graphql(` + mutation UpdateAddressShop($input: UpdateAddressInput!) { + updateCustomerAddress(input: $input) { + streetLine1 + country { + code + } + } + } +`); + +export const deleteAddressDocument = graphql(` + mutation DeleteAddressShop($id: ID!) { + deleteCustomerAddress(id: $id) { + success + } + } +`); + +export const updateCustomerDocument = graphql(` + mutation UpdateCustomer($input: UpdateCustomerInput!) { + updateCustomer(input: $input) { + id + firstName + lastName + } + } +`); + +export const updatePasswordDocument = graphql(` + mutation UpdatePassword($old: String!, $new: String!) { + updateCustomerPassword(currentPassword: $old, newPassword: $new) { + ... on Success { + success + } + ... on ErrorResult { + errorCode + message + } + } + } +`); + +export const getActiveOrderDocument = graphql( + ` + query GetActiveOrder { + activeOrder { + ...TestOrderFragment + } + } + `, + [testOrderFragment], +); + +export const getActiveOrderWithPriceDataDocument = graphql(` + query GetActiveOrderWithPriceData { + activeOrder { + id + subTotal + subTotalWithTax + total + totalWithTax + total + lines { + id + unitPrice + unitPriceWithTax + taxRate + linePrice + lineTax + linePriceWithTax + taxLines { + taxRate + description + } + } + taxSummary { + description + taxRate + taxBase + taxTotal + } + } + } +`); + +export const adjustItemQuantityDocument = graphql( + ` + mutation AdjustItemQuantity($orderLineId: ID!, $quantity: Int!) { + adjustOrderLine(orderLineId: $orderLineId, quantity: $quantity) { + ...TestOrderFragment + ... on ErrorResult { + errorCode + message + } + ... on OrderInterceptorError { + interceptorError + } + } + } + `, + [testOrderFragment], +); + +export const removeItemFromOrderDocument = graphql( + ` + mutation RemoveItemFromOrder($orderLineId: ID!) { + removeOrderLine(orderLineId: $orderLineId) { + ...TestOrderFragment + ... on ErrorResult { + errorCode + message + } + ... on OrderInterceptorError { + interceptorError + } + } + } + `, + [testOrderFragment], +); + +export const getEligibleShippingMethodsDocument = graphql(` + query GetShippingMethods { + eligibleShippingMethods { + id + code + price + name + description + } + } +`); + +export const setShippingMethodDocument = graphql( + ` + mutation SetShippingMethod($id: [ID!]!) { + setOrderShippingMethod(shippingMethodId: $id) { + ...TestOrderFragment + ... on ErrorResult { + errorCode + message + } + } + } + `, + [testOrderFragment], +); + +export const activeOrderCustomerDocument = graphql(` + fragment ActiveOrderCustomer on Order { + id + customer { + id + emailAddress + firstName + lastName + } + lines { + id + } + } +`); + +export const setCustomerDocument = graphql( + ` + mutation SetCustomerForOrder($input: CreateCustomerInput!) { + setCustomerForOrder(input: $input) { + ...ActiveOrderCustomer + ... on ErrorResult { + errorCode + message + } + ... on GuestCheckoutError { + errorDetail + } + } + } + `, + [activeOrderCustomerDocument], +); + +export const getOrderByCodeDocument = graphql( + ` + query GetOrderByCode($code: String!) { + orderByCode(code: $code) { + ...TestOrderFragment + } + } + `, + [testOrderFragment], +); + +export const getOrderShopDocument = graphql( + ` + query GetOrderShop($id: ID!) { + order(id: $id) { + ...TestOrderFragment + } + } + `, + [testOrderFragment], +); + +export const getOrderPromotionsByCodeDocument = graphql( + ` + query GetOrderPromotionsByCode($code: String!) { + orderByCode(code: $code) { + ...TestOrderFragment + promotions { + id + name + } + } + } + `, + [testOrderFragment], +); + +export const getAvailableCountriesDocument = graphql(` + query GetAvailableCountries { + availableCountries { + id + code + } + } +`); + +export const transitionToStateDocument = graphql( + ` + mutation TransitionToState($state: String!) { + transitionOrderToState(state: $state) { + ...TestOrderFragment + ... on OrderStateTransitionError { + errorCode + message + transitionError + fromState + toState + } + } + } + `, + [testOrderFragment], +); + +export const orderWithAddressesFragmentDocument = graphql(` + fragment OrderWithAddresses on Order { + lines { + id + } + shippingAddress { + fullName + company + streetLine1 + streetLine2 + city + province + postalCode + country + phoneNumber + } + billingAddress { + fullName + company + streetLine1 + streetLine2 + city + province + postalCode + country + phoneNumber + } + } +`); + +export const setShippingAddressDocument = graphql( + ` + mutation SetShippingAddress($input: CreateAddressInput!) { + setOrderShippingAddress(input: $input) { + ...OrderWithAddresses + ... on ErrorResult { + errorCode + message + } + } + } + `, + [orderWithAddressesFragmentDocument], +); + +export const setBillingAddressDocument = graphql( + ` + mutation SetBillingAddress($input: CreateAddressInput!) { + setOrderBillingAddress(input: $input) { + ...OrderWithAddresses + ... on ErrorResult { + errorCode + message + } + } + } + `, + [orderWithAddressesFragmentDocument], +); + +export const unsetShippingAddressDocument = graphql( + ` + mutation UnsetShippingAddress { + unsetOrderShippingAddress { + ...OrderWithAddresses + ... on ErrorResult { + errorCode + message + } + } + } + `, + [orderWithAddressesFragmentDocument], +); +export const unsetBillingAddressDocument = graphql( + ` + mutation UnsetBillingAddress { + unsetOrderBillingAddress { + ...OrderWithAddresses + ... on ErrorResult { + errorCode + message + } + } + } + `, + [orderWithAddressesFragmentDocument], +); + +export const testOrderWithPaymentsFragment = graphql( + ` + fragment TestOrderWithPayments on Order { + ...TestOrderFragment + payments { + id + transactionId + method + amount + state + metadata + } + } + `, + [testOrderFragment], +); + +export const getActiveOrderWithPaymentsDocument = graphql( + ` + query GetActiveOrderWithPayments { + activeOrder { + ...TestOrderWithPayments + } + } + `, + [testOrderWithPaymentsFragment], +); + +export const addPaymentDocument = graphql( + ` + mutation AddPaymentToOrder($input: PaymentInput!) { + addPaymentToOrder(input: $input) { + ...TestOrderWithPayments + ... on ErrorResult { + errorCode + message + } + ... on PaymentDeclinedError { + paymentErrorMessage + } + ... on PaymentFailedError { + paymentErrorMessage + } + ... on OrderStateTransitionError { + transitionError + } + ... on IneligiblePaymentMethodError { + eligibilityCheckerMessage + } + } + } + `, + [testOrderWithPaymentsFragment], +); + +export const getActiveOrderPaymentsDocument = graphql(` + query GetActiveOrderPayments { + activeOrder { + id + payments { + id + transactionId + method + amount + state + errorMessage + metadata + } + } + } +`); + +export const getOrderByCodeWithPaymentsDocument = graphql( + ` + query GetOrderByCodeWithPayments($code: String!) { + orderByCode(code: $code) { + ...TestOrderWithPayments + } + } + `, + [testOrderWithPaymentsFragment], +); + +export const getActiveOrderCustomerWithItemFulfillmentsDocument = graphql(` + query GetActiveCustomerOrderWithItemFulfillments { + activeCustomer { + orders( + options: { skip: 0, take: 5, sort: { createdAt: DESC }, filter: { active: { eq: false } } } + ) { + totalItems + items { + id + code + state + lines { + id + } + fulfillments { + id + state + method + trackingCode + } + } + } + } + } +`); + +export const getNextStatesDocument = graphql(` + query GetNextOrderStates { + nextOrderStates + } +`); + +export const getActiveOrderAddressesDocument = graphql(` + query GetCustomerAddresses { + activeOrder { + customer { + addresses { + id + streetLine1 + } + } + } + } +`); + +export const getActiveOrderShippingBillingDocument = graphql(` + query GetActiveOrderShippingBilling { + activeOrder { + shippingAddress { + ...OrderAddress + } + billingAddress { + ...OrderAddress + } + } + } + fragment OrderAddress on OrderAddress { + fullName + company + streetLine1 + streetLine2 + city + province + postalCode + countryCode + phoneNumber + } +`); + +export const getActiveOrderOrdersDocument = graphql(` + query GetCustomerOrders { + activeOrder { + customer { + orders { + items { + id + } + } + } + } + } +`); + +export const getActiveCustomerOrdersDocument = graphql(` + query GetActiveCustomerOrders { + activeCustomer { + id + orders { + totalItems + items { + id + state + } + } + } + } +`); + +export const applyCouponCodeDocument = graphql( + ` + mutation ApplyCouponCode($couponCode: String!) { + applyCouponCode(couponCode: $couponCode) { + ...TestOrderFragment + ... on ErrorResult { + errorCode + message + } + } + } + `, + [testOrderFragment], +); + +export const removeCouponCodeDocument = graphql( + ` + mutation RemoveCouponCode($couponCode: String!) { + removeCouponCode(couponCode: $couponCode) { + ...TestOrderFragment + } + } + `, + [testOrderFragment], +); + +export const removeAllOrderLinesDocument = graphql( + ` + mutation RemoveAllOrderLines { + removeAllOrderLines { + ...TestOrderFragment + ... on ErrorResult { + errorCode + message + } + } + } + `, + [testOrderFragment], +); + +export const getEligiblePaymentMethodsDocument = graphql(` + query GetEligiblePaymentMethods { + eligiblePaymentMethods { + id + code + eligibilityMessage + isEligible + } + } +`); + +export const getProductWithStockLevelDocument = graphql(` + query GetProductStockLevel($id: ID!) { + product(id: $id) { + id + variants { + id + stockLevel + } + } + } +`); + +export const getActiveCustomerWithOrdersProductSlugDocument = graphql(` + query GetActiveCustomerWithOrdersProductSlug($options: OrderListOptions) { + activeCustomer { + orders(options: $options) { + items { + lines { + productVariant { + product { + slug + } + } + } + } + } + } + } +`); +export const getActiveCustomerWithOrdersProductPriceDocument = graphql(` + query GetActiveCustomerWithOrdersProductPrice($options: OrderListOptions) { + activeCustomer { + orders(options: $options) { + items { + lines { + linePrice + productVariant { + id + name + price + } + } + } + } + } + } +`); + +export const activePaymentMethodsQueryDocument = graphql(` + query ActivePaymentMethods { + activePaymentMethods { + id + code + name + description + translations { + languageCode + name + description + } + } + } +`); + +export const getActiveShippingMethodsDocument = graphql(` + query GetActiveShippingMethods { + activeShippingMethods { + id + code + name + description + translations { + languageCode + name + description + } + } + } +`); + +export const getCollectionShopDocument = graphql(` + query GetCollectionShop($id: ID, $slug: String) { + collection(id: $id, slug: $slug) { + id + name + slug + description + parent { + id + name + } + children { + id + name + } + } + } +`); + +export const getCollectionVariantsDocument = graphql(` + query GetCollectionVariants($id: ID, $slug: String) { + collection(id: $id, slug: $slug) { + id + productVariants { + items { + id + name + } + } + } + } +`); + +export const getCollectionListDocument = graphql(` + query GetCollectionList { + collections { + items { + id + name + } + } + } +`); + +export const getProductFacetValuesDocument = graphql(` + query GetProductFacetValues($id: ID!) { + product(id: $id) { + id + name + facetValues { + name + } + } + } +`); + +export const getProductVariantFacetValuesDocument = graphql(` + query GetVariantFacetValues($id: ID!) { + product(id: $id) { + id + name + variants { + id + facetValues { + name + } + } + } + } +`); + +export const getProductsTake3Document = graphql(` + query GetProductsTake3 { + products(options: { take: 3 }) { + items { + id + } + } + } +`); + +export const getProduct1Document = graphql(` + query GetProduct1 { + product(id: "T_1") { + id + } + } +`); + +export const getProduct2VariantsDocument = graphql(` + query GetProduct2Variants { + product(id: "T_2") { + id + variants { + id + name + } + } + } +`); + +export const getProductCollectionDocument = graphql(` + query GetProductCollection { + product(id: "T_12") { + collections { + id + name + } + } + } +`); + +export const getOrderCustomFieldsDocument = graphql(` + query GetOrderCustomFields { + activeOrder { + id + customFields { + giftWrap + orderImage { + id + } + } + } + } +`); + +export const setOrderCustomFieldsDocument = graphql(` + mutation SetOrderCustomFields($input: UpdateOrderInput!) { + setOrderCustomFields(input: $input) { + ... on Order { + id + customFields { + giftWrap + orderImage { + id + } + } + } + ... on ErrorResult { + errorCode + message + } + } + } +`); + +export const logOutDocument = graphql(` + mutation LogOut { + logout { + success + } + } +`); + +export const addItemToOrderWithCustomFieldsDocument = graphql( + ` + mutation AddItemToOrderWithCustomFields( + $productVariantId: ID! + $quantity: Int! + $customFields: OrderLineCustomFieldsInput + ) { + addItemToOrder( + productVariantId: $productVariantId + quantity: $quantity + customFields: $customFields + ) { + ...UpdatedOrderWithCustomFields + ... on ErrorResult { + errorCode + message + } + } + } + `, + [updatedOrderWithCustomFieldsFragment], +); + +export const addMultipleItemsToOrderWithCustomFieldsDocument = graphql( + ` + mutation AddMultipleItemsToOrderWithCustomFields($inputs: [AddItemInput!]!) { + addItemsToOrder(inputs: $inputs) { + order { + ...UpdatedOrder + lines { + id + quantity + productVariant { + id + } + customFields { + notes + } + } + } + errorResults { + ... on ErrorResult { + errorCode + message + } + } + } + } + `, + [updatedOrderFragment], +); + +export const adjustOrderLineWithCustomFieldsDocument = graphql(` + mutation AdjustOrderLineWithCustomFields( + $orderLineId: ID! + $quantity: Int! + $customFields: OrderLineCustomFieldsInput + ) { + adjustOrderLine(orderLineId: $orderLineId, quantity: $quantity, customFields: $customFields) { + ... on Order { + lines { + id + customFields { + notes + lineImage { + id + } + lineImages { + id + } + } + } + } + } + } +`); + +export const getOrderWithOrderLineCustomFieldsDocument = graphql(` + query GetOrderWithOrderLineCustomFields { + activeOrder { + lines { + id + customFields { + notes + lineImage { + id + } + lineImages { + id + } + } + } + } + } +`); + +export const localUpdatedOrderFragment = graphql(` + fragment UpdatedOrderMinimal on Order { + id + code + state + active + total + totalWithTax + currencyCode + lines { + id + linePrice + linePriceWithTax + } + } +`); + +export const localAddItemToOrderDocument = graphql( + ` + mutation AddItemToOrderMinimal($productVariantId: ID!, $quantity: Int!) { + addItemToOrder(productVariantId: $productVariantId, quantity: $quantity) { + ...UpdatedOrderMinimal + ... on ErrorResult { + errorCode + message + } + ... on InsufficientStockError { + quantityAvailable + order { + ...UpdatedOrderMinimal + } + } + } + } + `, + [localUpdatedOrderFragment], +); + +export const searchFacetValuesDocument = graphql(` + query SearchFacetValues($input: SearchInput!) { + search(input: $input) { + totalItems + facetValues { + count + facetValue { + id + name + } + } + } + } +`); + +export const searchCollectionsDocument = graphql(` + query SearchCollections($input: SearchInput!) { + search(input: $input) { + totalItems + collections { + count + collection { + id + name + } + } + } + } +`); + +export const searchGetPricesShopDocument = graphql(` + query SearchGetPrices($input: SearchInput!) { + search(input: $input) { + items { + price { + ... on PriceRange { + min + max + } + ... on SinglePrice { + value + } + } + priceWithTax { + ... on PriceRange { + min + max + } + ... on SinglePrice { + value + } + } + } + } + } +`); + +export const orderWithLinesAndItemsFragment = graphql(` + fragment OrderWithLinesAndItems on Order { + id + subTotal + subTotalWithTax + shipping + total + totalWithTax + lines { + id + quantity + unitPrice + unitPriceWithTax + } + } +`); + +export const addItemToOrderCustomFieldsDocument = graphql( + ` + mutation AddItemToOrderCustomFields( + $productVariantId: ID! + $quantity: Int! + $customFields: OrderLineCustomFieldsInput + ) { + addItemToOrder( + productVariantId: $productVariantId + quantity: $quantity + customFields: $customFields + ) { + ...OrderWithLinesAndItems + } + } + `, + [orderWithLinesAndItemsFragment], +); + +export const adjustOrderLineCustomFieldsDocument = graphql( + ` + mutation AdjustOrderLineCustomFields( + $orderLineId: ID! + $quantity: Int! + $customFields: OrderLineCustomFieldsInput + ) { + adjustOrderLine(orderLineId: $orderLineId, quantity: $quantity, customFields: $customFields) { + ...OrderWithLinesAndItems + } + } + `, + [orderWithLinesAndItemsFragment], +); + +export const registerSellerDocument = graphql(` + mutation RegisterSeller($input: RegisterSellerInput!) { + registerNewSeller(input: $input) { + id + code + token + } + } +`); diff --git a/packages/meilisearch-plugin/e2e/meilisearch-plugin.e2e-spec.ts b/packages/meilisearch-plugin/e2e/meilisearch-plugin.e2e-spec.ts new file mode 100644 index 00000000..ed975c82 --- /dev/null +++ b/packages/meilisearch-plugin/e2e/meilisearch-plugin.e2e-spec.ts @@ -0,0 +1,749 @@ +/* eslint-disable @typescript-eslint/no-non-null-assertion, no-console */ +import { CurrencyCode, JobState, SortOrder } from '@vendure/common/lib/generated-types'; +import { pick } from '@vendure/common/lib/pick'; +import { + DefaultJobQueuePlugin, + FacetValue, + facetValueCollectionFilter, + LanguageCode, + mergeConfig, +} from '@vendure/core'; +import { createTestEnvironment, E2E_DEFAULT_CHANNEL_TOKEN } from '@vendure/testing'; +import gql from 'graphql-tag'; +import path from 'path'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; + +import { initialData } from '../../../e2e-common/e2e-initial-data'; +import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config'; +import { + createCollectionDocument, + createFacetDocument, + deleteProductDocument, + deleteProductVariantDocument, + updateCollectionDocument, + updateProductDocument, + updateProductVariantsDocument, + updateTaxRateDocument, +} from './graphql/shared-definitions'; +import { searchProductsShopDocument } from './graphql/shop-definitions'; +import { awaitRunningJobs } from './await-running-jobs'; +import { MeilisearchPlugin } from '../src/plugin'; + +import { + doAdminSearchQuery, + dropMeilisearchIndices, + testCollectionIdsEdgeCases, + testCollectionSlugsEdgeCases, + testGroupByProduct, + testGroupBySKU, + testMatchCollectionId, + testMatchCollectionIds, + testMatchCollectionSlug, + testMatchCollectionSlugs, + testMatchFacetIdsAnd, + testMatchFacetIdsOr, + testMatchFacetValueFiltersAnd, + testMatchFacetValueFiltersOr, + testMatchFacetValueFiltersOrWithAnd, + testMatchFacetValueFiltersWithFacetIdsAnd, + testMatchFacetValueFiltersWithFacetIdsOr, + testMatchSearchTerm, + testNoGrouping, + testPriceRanges, + testSinglePrices, +} from './e2e-helpers'; +import { graphql, ResultOf } from './graphql/graphql-admin'; + +// eslint-disable-next-line @typescript-eslint/no-var-requires +const { meilisearchHost, meilisearchPort } = require('./constants'); + +const INDEX_PREFIX = 'e2e-tests-'; + +describe('Meilisearch plugin', () => { + const { server, adminClient, shopClient } = createTestEnvironment( + mergeConfig(testConfig(), { + plugins: [ + MeilisearchPlugin.init({ + indexPrefix: INDEX_PREFIX, + host: `${meilisearchHost}:${meilisearchPort}`, + apiKey: process.env.MEILISEARCH_API_KEY || '', + customProductVariantMappings: { + inStock: { + graphQlType: 'Boolean!', + valueFn: variant => { + return (variant as any).stockLevels?.[0]?.stockOnHand > 0; + }, + }, + }, + customProductMappings: { + answer: { + graphQlType: 'Int!', + valueFn: args => { + return 42; + }, + }, + hello: { + graphQlType: 'String!', + public: false, + valueFn: args => { + return 'World'; + }, + }, + }, + searchConfig: { + mapSort: (sort, input) => { + const priority = (input.sort as any)?.priority; + if (priority) { + return [ + ...sort, + `product-priority:${priority === SortOrder.ASC ? 'asc' : 'desc'}`, + ]; + } + return sort; + }, + }, + extendSearchSortType: ['priority'], + }), + DefaultJobQueuePlugin, + ], + }), + ); + + beforeAll(async () => { + await dropMeilisearchIndices(INDEX_PREFIX); + await server.init({ + initialData, + productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-full.csv'), + customerCount: 1, + }); + await adminClient.asSuperAdmin(); + // We have extra time here because a lot of jobs are + // triggered from all the product updates + await awaitRunningJobs(adminClient, 20_000, 1000); + + // Create an Electronics collection for testing multi-collection filters + await adminClient.query(createCollectionDocument, { + input: { + translations: [ + { + languageCode: LanguageCode.en, + name: 'Electronics', + description: 'Electronics products', + slug: 'electronics', + }, + ], + filters: [ + { + code: facetValueCollectionFilter.code, + arguments: [ + { + name: 'facetValueIds', + value: '["T_1"]', + }, + { + name: 'containsAny', + value: 'false', + }, + ], + }, + ], + }, + }); + + // Wait for all initial import jobs to settle before reindexing + await awaitRunningJobs(adminClient, 60_000, 2000); + // Full reindex to build a clean Meilisearch index + await adminClient.query(reindexDocument); + await awaitRunningJobs(adminClient, 60_000, 1000); + }, TEST_SETUP_TIMEOUT_MS); + + afterAll(async () => { + await awaitRunningJobs(adminClient); + await server.destroy(); + }); + + describe('shop api', () => { + it('group by product', () => testGroupByProduct(shopClient)); + + it('group by SKU', () => testGroupBySKU(shopClient)); + + it('no grouping', () => testNoGrouping(shopClient)); + + it('matches search term', () => testMatchSearchTerm(shopClient)); + + it('matches by facetValueId with AND operator', () => testMatchFacetIdsAnd(shopClient)); + + it('matches by facetValueId with OR operator', () => testMatchFacetIdsOr(shopClient)); + + it('matches by FacetValueFilters AND', () => testMatchFacetValueFiltersAnd(shopClient)); + + it('matches by FacetValueFilters OR', () => testMatchFacetValueFiltersOr(shopClient)); + + it('matches by FacetValueFilters OR and AND', () => testMatchFacetValueFiltersOrWithAnd(shopClient)); + + it('matches by FacetValueFilters with facetId OR operator', () => + testMatchFacetValueFiltersWithFacetIdsOr(shopClient)); + + it('matches by FacetValueFilters with facetId AND operator', () => + testMatchFacetValueFiltersWithFacetIdsAnd(shopClient)); + + it('matches by collectionId', () => testMatchCollectionId(shopClient)); + + it('matches by collectionSlug', () => testMatchCollectionSlug(shopClient)); + + it('matches by multiple collectionIds', () => testMatchCollectionIds(shopClient)); + + it('matches by multiple collectionSlugs', () => testMatchCollectionSlugs(shopClient)); + + it('handles collectionIds edge cases', () => testCollectionIdsEdgeCases(shopClient)); + + it('handles collectionSlugs edge cases', () => testCollectionSlugsEdgeCases(shopClient)); + + it('single prices', () => testSinglePrices(shopClient)); + + it('price ranges', () => testPriceRanges(shopClient)); + + it('returns correct facetValues when not grouped by product', async () => { + const result = await shopClient.query(searchGetFacetValuesDocument, { + input: { + groupByProduct: false, + }, + }); + expect(result.search.facetValues).toEqual([ + { count: 21, facetValue: { id: 'T_1', name: 'electronics' } }, + { count: 17, facetValue: { id: 'T_2', name: 'computers' } }, + { count: 4, facetValue: { id: 'T_3', name: 'photo' } }, + { count: 10, facetValue: { id: 'T_4', name: 'sports equipment' } }, + { count: 4, facetValue: { id: 'T_5', name: 'home & garden' } }, + { count: 4, facetValue: { id: 'T_6', name: 'plants' } }, + ]); + }); + + it('returns correct facetValues when grouped by product', async () => { + const result = await shopClient.query(searchGetFacetValuesDocument, { + input: { + groupByProduct: true, + }, + }); + // Meilisearch's facetDistribution counts are not affected by distinct, + // so these reflect product-level facet counts (via productFacetValueIds) + // which may differ slightly from Elasticsearch's aggregation approach + expect(result.search.facetValues.length).toBe(6); + const facetMap = new Map( + result.search.facetValues.map((fv: any) => [fv.facetValue.name, fv.count]), + ); + expect(facetMap.get('electronics')).toBeGreaterThan(0); + expect(facetMap.get('computers')).toBeGreaterThan(0); + expect(facetMap.get('photo')).toBeGreaterThan(0); + expect(facetMap.get('sports equipment')).toBeGreaterThan(0); + expect(facetMap.get('home & garden')).toBeGreaterThan(0); + expect(facetMap.get('plants')).toBeGreaterThan(0); + }); + + it('returns correct collections when not grouped by product', async () => { + const result = await shopClient.query(searchGetCollectionsDocument, { + input: { + groupByProduct: false, + }, + }); + const sortedCollections = [...result.search.collections].sort((a, b) => + a.collection.id.localeCompare(b.collection.id), + ); + expect(sortedCollections).toEqual([ + { collection: { id: 'T_2', name: 'Plants' }, count: 4 }, + { collection: { id: 'T_3', name: 'Electronics' }, count: 21 }, + ]); + }); + + it('returns correct collections when grouped by product', async () => { + const result = await shopClient.query(searchGetCollectionsDocument, { + input: { + groupByProduct: true, + }, + }); + const sortedCollections = [...result.search.collections].sort((a, b) => + a.collection.id.localeCompare(b.collection.id), + ); + // Meilisearch's facetDistribution counts are computed before distinct is applied, + // so collection counts reflect product-level associations (via productCollectionIds) + expect(sortedCollections.length).toBe(2); + expect(sortedCollections[0].collection.name).toBe('Plants'); + expect(sortedCollections[0].count).toBeGreaterThan(0); + expect(sortedCollections[1].collection.name).toBe('Electronics'); + expect(sortedCollections[1].count).toBeGreaterThan(0); + }); + + it('encodes the productId and productVariantId', async () => { + const result = await shopClient.query(searchProductsShopDocument, { + input: { + term: 'Laptop 13 inch 8GB', + groupByProduct: false, + take: 1, + }, + }); + expect(pick(result.search.items[0], ['productId', 'productVariantId'])).toEqual({ + productId: 'T_1', + productVariantId: 'T_1', + }); + }); + + it('omits results for disabled ProductVariants', async () => { + await adminClient.query(updateProductVariantsDocument, { + input: [{ id: 'T_3', enabled: false }], + }); + await awaitRunningJobs(adminClient); + const result = await shopClient.query(searchProductsShopDocument, { + input: { + groupByProduct: false, + take: 100, + }, + }); + expect(result.search.items.map(i => i.productVariantId).includes('T_3')).toBe(false); + }); + + it('encodes collectionIds', async () => { + const result = await shopClient.query(searchProductsShopDocument, { + input: { + groupByProduct: false, + term: 'cactus', + take: 1, + }, + }); + + expect(result.search.items[0].collectionIds).toEqual(['T_2']); + }); + + it('inStock is true and not grouped by product', async () => { + const result = await shopClient.query(searchProductsShopDocument, { + input: { + groupByProduct: false, + inStock: true, + }, + }); + expect(result.search.totalItems).toBe(31); + }); + + it('inStock is true and grouped by product', async () => { + const result = await shopClient.query(searchProductsShopDocument, { + input: { + groupByProduct: true, + inStock: true, + }, + }); + expect(result.search.totalItems).toBe(19); + }); + }); + + describe('admin api', () => { + it('group by product', () => testGroupByProduct(adminClient)); + + it('group by SKU', () => testGroupBySKU(adminClient)); + + it('no grouping', () => testNoGrouping(adminClient)); + + it('matches search term', () => testMatchSearchTerm(adminClient)); + + it('matches by facetValueId with AND operator', () => testMatchFacetIdsAnd(adminClient)); + + it('matches by facetValueId with OR operator', () => testMatchFacetIdsOr(adminClient)); + + it('matches by collectionId', () => testMatchCollectionId(adminClient)); + + it('matches by collectionSlug', () => testMatchCollectionSlug(adminClient)); + + it('matches by multiple collectionIds', () => testMatchCollectionIds(adminClient)); + + it('matches by multiple collectionSlugs', () => testMatchCollectionSlugs(adminClient)); + + it('handles collectionIds edge cases', () => testCollectionIdsEdgeCases(adminClient)); + + it('handles collectionSlugs edge cases', () => testCollectionSlugsEdgeCases(adminClient)); + + it('single prices', () => testSinglePrices(adminClient)); + + it('price ranges', () => testPriceRanges(adminClient)); + + describe('updating the index', () => { + it('updates index when ProductVariants are changed', async () => { + await awaitRunningJobs(adminClient); + const { search } = await doAdminSearchQuery(adminClient, { + term: 'drive', + groupByProduct: false, + }); + expect(search.items.map(i => i.sku).sort()).toEqual( + ['IHD455T1', 'IHD455T2', 'IHD455T3', 'IHD455T4', 'IHD455T6'].sort(), + ); + + await adminClient.query(updateProductVariantsDocument, { + input: search.items.map(i => ({ + id: i.productVariantId, + sku: i.sku + '_updated', + })), + }); + await awaitRunningJobs(adminClient); + const { search: search2 } = await doAdminSearchQuery(adminClient, { + term: 'drive', + groupByProduct: false, + }); + + expect(search2.items.map(i => i.sku).sort()).toEqual( + [ + 'IHD455T1_updated', + 'IHD455T2_updated', + 'IHD455T3_updated', + 'IHD455T4_updated', + 'IHD455T6_updated', + ].sort(), + ); + }); + + it('updates index when ProductVariants are deleted', async () => { + await awaitRunningJobs(adminClient); + const { search } = await doAdminSearchQuery(adminClient, { + term: 'drive', + groupByProduct: false, + }); + + await adminClient.query(deleteProductVariantDocument, { + id: search.items[0].productVariantId, + }); + + await awaitRunningJobs(adminClient); + await awaitRunningJobs(adminClient); + const { search: search2 } = await doAdminSearchQuery(adminClient, { + term: 'drive', + groupByProduct: false, + }); + + expect(search2.items.length).toBe(search.items.length - 1); + }); + + it('updates index when a Product is changed', async () => { + await adminClient.query(updateProductDocument, { + input: { + id: 'T_1', + facetValueIds: [], + }, + }); + await awaitRunningJobs(adminClient); + const result = await doAdminSearchQuery(adminClient, { + facetValueIds: ['T_2'], + groupByProduct: true, + }); + expect(result.search.items.map(i => i.productName).sort()).toEqual([ + 'Clacky Keyboard', + 'Curvy Monitor', + 'Gaming PC', + 'Hard Drive', + 'USB Cable', + ]); + }); + + it('updates index when a Product is deleted', async () => { + const { search } = await doAdminSearchQuery(adminClient, { + facetValueIds: ['T_2'], + groupByProduct: true, + }); + expect(search.items.map(i => i.productId).sort()).toEqual([ + 'T_2', + 'T_3', + 'T_4', + 'T_5', + 'T_6', + ]); + await adminClient.query(deleteProductDocument, { + id: 'T_5', + }); + await awaitRunningJobs(adminClient); + const { search: search2 } = await doAdminSearchQuery(adminClient, { + facetValueIds: ['T_2'], + groupByProduct: true, + }); + expect(search2.items.map(i => i.productId).sort()).toEqual(['T_2', 'T_3', 'T_4', 'T_6']); + }); + + it('updates index when a Collection is changed', async () => { + await adminClient.query(updateCollectionDocument, { + input: { + id: 'T_2', + filters: [ + { + code: facetValueCollectionFilter.code, + arguments: [ + { + name: 'facetValueIds', + value: '["T_4"]', + }, + { + name: 'containsAny', + value: 'false', + }, + ], + }, + ], + }, + }); + await awaitRunningJobs(adminClient); + // add an additional check for the collection filters to update + await awaitRunningJobs(adminClient); + const result1 = await doAdminSearchQuery(adminClient, { + collectionId: 'T_2', + groupByProduct: true, + }); + + expect(result1.search.items.map(i => i.productName).sort()).toEqual([ + 'Boxing Gloves', + 'Cruiser Skateboard', + 'Football', + 'Road Bike', + 'Running Shoe', + 'Skipping Rope', + 'Tent', + ]); + }); + + it('updates index when a Collection is created', async () => { + const { createCollection } = await adminClient.query(createCollectionDocument, { + input: { + translations: [ + { + languageCode: LanguageCode.en, + name: 'Photo', + description: '', + slug: 'photo', + }, + ], + filters: [ + { + code: facetValueCollectionFilter.code, + arguments: [ + { + name: 'facetValueIds', + value: '["T_3"]', + }, + { + name: 'containsAny', + value: 'false', + }, + ], + }, + ], + }, + }); + await awaitRunningJobs(adminClient); + // add an additional check for the collection filters to update + await awaitRunningJobs(adminClient); + const result = await doAdminSearchQuery(adminClient, { + collectionId: createCollection.id, + groupByProduct: true, + }); + expect(result.search.items.map(i => i.productName).sort()).toEqual([ + 'Camera Lens', + 'Instant Camera', + 'SLR Camera', + 'Tripod', + ]); + }); + + it('updates index when a taxRate is changed', async () => { + await adminClient.query(updateTaxRateDocument, { + input: { + // Default Channel's defaultTaxZone is Europe (id 2) and the id of the standard TaxRate + // to Europe is 2. + id: 'T_2', + value: 50, + }, + }); + await awaitRunningJobs(adminClient); + const result = await adminClient.query(searchProductsAdminDocument, { + input: { + groupByProduct: true, + term: 'laptop', + }, + }); + expect(result.search.items[0].price).toEqual({ + min: 129900, + max: 229900, + }); + expect(result.search.items[0].priceWithTax).toEqual({ + min: 194850, + max: 344850, + }); + }); + }); + }); + + describe('custom mappings', () => { + it('custom product mappings', async () => { + const result = await shopClient.query(gql` + query { + search(input: { term: "laptop", groupByProduct: true, take: 1 }) { + items { + productName + customProductMappings { + answer + } + } + } + } + `); + expect(result.search.items[0].customProductMappings?.answer).toBe(42); + }); + + it('private custom product mapping not returned in shop api', async () => { + const result = await shopClient.query(gql` + query { + search(input: { term: "laptop", groupByProduct: true, take: 1 }) { + items { + productName + customProductMappings { + answer + } + } + } + } + `); + // 'hello' is private, so not exposed in shop API + expect(result.search.items[0].customProductMappings?.hello).toBeUndefined(); + }); + }); +}); + +// ===== GraphQL documents used by tests ===== + +export const searchProductsAdminDocument = graphql(` + query SearchProductsAdmin($input: SearchInput!) { + search(input: $input) { + totalItems + items { + enabled + productId + productName + slug + description + productVariantId + productVariantName + sku + collectionIds + price { + ... on PriceRange { + min + max + } + ... on SinglePrice { + value + } + } + priceWithTax { + ... on PriceRange { + min + max + } + ... on SinglePrice { + value + } + } + productAsset { + id + preview + focalPoint { + x + y + } + } + productVariantAsset { + id + preview + focalPoint { + x + y + } + } + sku + } + } + } +`); + +export const searchGetFacetValuesDocument = graphql(` + query SearchFacetValues($input: SearchInput!) { + search(input: $input) { + totalItems + facetValues { + count + facetValue { + id + name + } + } + } + } +`); + +export const searchGetCollectionsDocument = graphql(` + query SearchCollections($input: SearchInput!) { + search(input: $input) { + totalItems + collections { + count + collection { + id + name + } + } + } + } +`); + +export const searchGetPricesDocument = graphql(` + query SearchGetPrices($input: SearchInput!) { + search(input: $input) { + items { + price { + ... on PriceRange { + min + max + } + ... on SinglePrice { + value + } + } + priceWithTax { + ... on PriceRange { + min + max + } + ... on SinglePrice { + value + } + } + } + } + } +`); + +const reindexDocument = graphql(` + mutation Reindex { + reindex { + id + queueName + state + progress + duration + result + } + } +`); + +const getJobInfoDocument = graphql(` + query GetJobInfo($id: ID!) { + job(jobId: $id) { + id + queueName + state + progress + duration + result + } + } +`); diff --git a/packages/meilisearch-plugin/index.ts b/packages/meilisearch-plugin/index.ts new file mode 100644 index 00000000..cba18435 --- /dev/null +++ b/packages/meilisearch-plugin/index.ts @@ -0,0 +1 @@ +export * from './src/index'; diff --git a/packages/meilisearch-plugin/package.json b/packages/meilisearch-plugin/package.json new file mode 100644 index 00000000..8950b5a3 --- /dev/null +++ b/packages/meilisearch-plugin/package.json @@ -0,0 +1,57 @@ +{ + "name": "@vendure-community/meilisearch-plugin", + "version": "1.0.0", + "description": "Vendure plugin for Meilisearch-powered product search", + "license": "GPL-3.0-or-later", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "files": [ + "lib/**/*" + ], + "exports": { + ".": { + "types": "./lib/index.d.ts", + "default": "./lib/index.js" + } + }, + "repository": { + "type": "git", + "url": "https://github.com/vendurehq/community-plugins", + "directory": "packages/meilisearch-plugin" + }, + "scripts": { + "watch": "tsc -p ./tsconfig.build.json --watch", + "build": "rimraf lib && tsc -p ./tsconfig.build.json", + "lint": "eslint .", + "e2e": "cross-env PACKAGE=meilisearch-plugin vitest --config ../../e2e-common/vitest.config.mts --run", + "e2e:watch": "cross-env PACKAGE=meilisearch-plugin vitest --config ../../e2e-common/vitest.config.mts" + }, + "keywords": [ + "vendure", + "vendure-plugin", + "meilisearch", + "search", + "full-text-search" + ], + "homepage": "https://www.vendure.io/", + "funding": "https://github.com/sponsors/michaelbromley", + "publishConfig": { + "access": "public", + "provenance": true + }, + "peerDependencies": { + "@vendure/core": "^3.6.0-0", + "@vendure/common": "^3.6.0-0" + }, + "devDependencies": { + "@vendure/common": "3.6.0-minor-202603280303", + "@vendure/core": "3.6.0-minor-202603280303", + "@vendure/testing": "3.6.0-minor-202603280303", + "rimraf": "^5.0.5", + "typescript": "5.8.2" + }, + "dependencies": { + "meilisearch": "^0.55.0", + "deepmerge": "^4.3.1" + } +} diff --git a/packages/meilisearch-plugin/src/api/api-extensions.ts b/packages/meilisearch-plugin/src/api/api-extensions.ts new file mode 100644 index 00000000..974433ba --- /dev/null +++ b/packages/meilisearch-plugin/src/api/api-extensions.ts @@ -0,0 +1,113 @@ +import { DocumentNode } from 'graphql'; +import { gql } from 'graphql-tag'; + +import { MeilisearchOptions } from '../options'; + +export function generateSchemaExtensions(options: MeilisearchOptions): DocumentNode { + const customMappingTypes = generateCustomMappingTypes(options); + const inputExtensions = Object.entries(options.extendSearchInputType || {}); + const sortExtensions = options.extendSearchSortType || []; + + const sortExtensionGql = ` + extend input SearchResultSortParameter { + ${sortExtensions.map(key => `${key}: SortOrder`).join('\n ')} + }`; + + return gql` + extend type SearchResponse { + prices: SearchResponsePriceData! + } + + extend type SearchResult { + inStock: Boolean + formattedProductName: String + formattedDescription: String + } + + type SearchResponsePriceData { + range: PriceRange! + rangeWithTax: PriceRange! + buckets: [PriceRangeBucket!]! + bucketsWithTax: [PriceRangeBucket!]! + } + + type PriceRangeBucket { + to: Int! + count: Int! + } + + extend input SearchInput { + priceRange: PriceRangeInput + priceRangeWithTax: PriceRangeInput + inStock: Boolean + groupBySKU: Boolean + ${inputExtensions.map(([name, type]) => `${name}: ${type}`).join('\n ')} + } + + ${sortExtensions.length > 0 ? sortExtensionGql : ''} + + input PriceRangeInput { + min: Int! + max: Int! + } + + ${customMappingTypes ? customMappingTypes : ''} + `; +} + +function generateCustomMappingTypes(options: MeilisearchOptions): DocumentNode | undefined { + const productMappings = Object.entries(options.customProductMappings || {}).filter( + ([, value]) => value.public ?? true, + ); + const variantMappings = Object.entries(options.customProductVariantMappings || {}).filter( + ([, value]) => value.public ?? true, + ); + let sdl = ''; + + if (productMappings.length || variantMappings.length) { + if (productMappings.length) { + sdl += ` + type CustomProductMappings { + ${productMappings.map(([name, def]) => `${name}: ${def.graphQlType}`).join('\n')} + } + `; + } + if (variantMappings.length) { + sdl += ` + type CustomProductVariantMappings { + ${variantMappings.map(([name, def]) => `${name}: ${def.graphQlType}`).join('\n')} + } + `; + } + if (productMappings.length && variantMappings.length) { + sdl += ` + union CustomMappings = CustomProductMappings | CustomProductVariantMappings + + extend type SearchResult { + customMappings: CustomMappings! @deprecated(reason: "Use customProductMappings or customProductVariantMappings") + customProductMappings: CustomProductMappings! + customProductVariantMappings: CustomProductVariantMappings! + } + `; + } else if (productMappings.length) { + sdl += ` + extend type SearchResult { + customMappings: CustomProductMappings! @deprecated(reason: "Use customProductMappings or customProductVariantMappings") + customProductMappings: CustomProductMappings! + } + `; + } else if (variantMappings.length) { + sdl += ` + extend type SearchResult { + customMappings: CustomProductVariantMappings! @deprecated(reason: "Use customProductMappings or customProductVariantMappings") + customProductVariantMappings: CustomProductVariantMappings! + } + `; + } + } + return sdl.length + ? gql` + ${sdl} + ` + : undefined; +} diff --git a/packages/meilisearch-plugin/src/api/custom-mappings.resolver.ts b/packages/meilisearch-plugin/src/api/custom-mappings.resolver.ts new file mode 100644 index 00000000..7511825f --- /dev/null +++ b/packages/meilisearch-plugin/src/api/custom-mappings.resolver.ts @@ -0,0 +1,24 @@ +import { Inject } from '@nestjs/common'; +import { ResolveField, Resolver } from '@nestjs/graphql'; +import { DeepRequired } from '@vendure/common/lib/shared-types'; + +import { MEILISEARCH_OPTIONS } from '../constants'; +import { MeilisearchOptions } from '../options'; + +/** + * This resolver is only required if both customProductMappings and customProductVariantMappings are + * defined, since this particular configuration will result in a union type for the + * `SearchResult.customMappings` GraphQL field. + */ +@Resolver('CustomMappings') +export class CustomMappingsResolver { + constructor(@Inject(MEILISEARCH_OPTIONS) private options: DeepRequired) {} + + @ResolveField() + __resolveType(value: any): string { + const productPropertyNames = Object.keys(this.options.customProductMappings); + return Object.keys(value).every(k => productPropertyNames.includes(k)) + ? 'CustomProductMappings' + : 'CustomProductVariantMappings'; + } +} diff --git a/packages/meilisearch-plugin/src/api/meilisearch-resolver.ts b/packages/meilisearch-plugin/src/api/meilisearch-resolver.ts new file mode 100644 index 00000000..353b0043 --- /dev/null +++ b/packages/meilisearch-plugin/src/api/meilisearch-resolver.ts @@ -0,0 +1,108 @@ +import { Args, Mutation, Parent, Query, ResolveField, Resolver } from '@nestjs/graphql'; +import { + Job as GraphQLJob, + Permission, + QuerySearchArgs, + SearchResponse, +} from '@vendure/common/lib/generated-types'; +import { Omit } from '@vendure/common/lib/omit'; +import { + Allow, + Collection, + Ctx, + FacetValue, + RequestContext, + SearchJobBufferService, + SearchResolver, +} from '@vendure/core'; + +import { MeilisearchService } from '../meilisearch.service'; +import { MeilisearchSearchInput, SearchPriceData } from '../types'; + +@Resolver('SearchResponse') +export class ShopMeilisearchResolver implements Pick { + constructor(private meilisearchService: MeilisearchService) {} + + @Query() + @Allow(Permission.Public) + async search( + @Ctx() ctx: RequestContext, + @Args() args: QuerySearchArgs, + ): Promise> { + const result = await this.meilisearchService.search(ctx, args.input, true); + // ensure the facetValues property resolver has access to the input args + (result as any).input = args.input; + return result; + } + + @ResolveField() + async prices( + @Ctx() ctx: RequestContext, + @Parent() parent: { input: MeilisearchSearchInput }, + ): Promise { + return this.meilisearchService.priceRange(ctx, parent.input); + } +} + +@Resolver('SearchResponse') +export class AdminMeilisearchResolver implements Pick { + constructor( + private meilisearchService: MeilisearchService, + private searchJobBufferService: SearchJobBufferService, + ) {} + + @Query() + @Allow(Permission.ReadCatalog, Permission.ReadProduct) + async search( + @Ctx() ctx: RequestContext, + @Args() args: QuerySearchArgs, + ): Promise> { + const result = await this.meilisearchService.search(ctx, args.input, false); + // ensure the facetValues property resolver has access to the input args + (result as any).input = args.input; + return result; + } + + @Mutation() + @Allow(Permission.UpdateCatalog, Permission.UpdateProduct) + async reindex(@Ctx() ctx: RequestContext): Promise { + return this.meilisearchService.reindex(ctx) as unknown as GraphQLJob; + } + + @Query() + @Allow(Permission.ReadCatalog, Permission.ReadProduct) + async pendingSearchIndexUpdates(): Promise { + return this.searchJobBufferService.getPendingSearchUpdates(); + } + + @Mutation() + @Allow(Permission.UpdateCatalog, Permission.UpdateProduct) + async runPendingSearchIndexUpdates(): Promise { + // Intentionally not awaiting this method call + void this.searchJobBufferService.runPendingSearchUpdates(); + return { success: true }; + } +} + +@Resolver('SearchResponse') +export class EntityMeilisearchResolver implements Pick { + constructor(private meilisearchService: MeilisearchService) {} + + @ResolveField() + async facetValues( + @Ctx() ctx: RequestContext, + @Parent() parent: Omit, + ): Promise> { + const facetValues = await this.meilisearchService.facetValues(ctx, (parent as any).input, true); + return facetValues.filter((i: { facetValue: FacetValue; count: number }) => !i.facetValue.facet.isPrivate); + } + + @ResolveField() + async collections( + @Ctx() ctx: RequestContext, + @Parent() parent: Omit, + ): Promise> { + const collections = await this.meilisearchService.collections(ctx, (parent as any).input, true); + return collections.filter((i: { collection: Collection; count: number }) => !i.collection.isPrivate); + } +} diff --git a/packages/meilisearch-plugin/src/constants.ts b/packages/meilisearch-plugin/src/constants.ts new file mode 100644 index 00000000..2fbf4c56 --- /dev/null +++ b/packages/meilisearch-plugin/src/constants.ts @@ -0,0 +1,3 @@ +export const MEILISEARCH_OPTIONS = Symbol('MEILISEARCH_OPTIONS'); +export const VARIANT_INDEX_NAME = 'variants'; +export const loggerCtx = 'MeilisearchPlugin'; diff --git a/packages/meilisearch-plugin/src/index.ts b/packages/meilisearch-plugin/src/index.ts new file mode 100644 index 00000000..f40a6dd4 --- /dev/null +++ b/packages/meilisearch-plugin/src/index.ts @@ -0,0 +1,22 @@ +export { MeilisearchPlugin } from './plugin'; +export { + MeilisearchOptions, + MeilisearchRuntimeOptions, + SearchConfig, + SearchConfigDefaults, + MatchingStrategy, + TypoToleranceConfig, +} from './options'; +export { + MeilisearchSearchResult, + MeilisearchSearchInput, + MeilisearchSearchResponse, + SearchPriceData, + PriceRangeBucket, + MeilisearchSortInput, + VariantIndexItem, + ProductIndexItem, + CustomMapping, + GraphQlPrimitive, + PrimitiveTypeVariations, +} from './types'; diff --git a/packages/meilisearch-plugin/src/indexing/indexer.controller.ts b/packages/meilisearch-plugin/src/indexing/indexer.controller.ts new file mode 100644 index 00000000..a279465c --- /dev/null +++ b/packages/meilisearch-plugin/src/indexing/indexer.controller.ts @@ -0,0 +1,852 @@ +import { Inject, Injectable, OnModuleDestroy, OnModuleInit } from '@nestjs/common'; +import { ModuleRef } from '@nestjs/core'; +import { unique } from '@vendure/common/lib/unique'; +import { + Asset, + asyncObservable, + AsyncQueue, + Channel, + Collection, + ConfigService, + EntityRelationPaths, + FacetValue, + ID, + Injector, + InternalServerError, + LanguageCode, + Logger, + MutableRequestContext, + Product, + ProductPriceApplicator, + ProductVariant, + ProductVariantService, + RequestContext, + RequestContextCacheService, + TransactionalConnection, + Translatable, + Translation, +} from '@vendure/core'; +import { MeiliSearch, Index } from 'meilisearch'; +import { Observable } from 'rxjs'; +import { In, IsNull } from 'typeorm'; + +import { MEILISEARCH_OPTIONS, loggerCtx, VARIANT_INDEX_NAME } from '../constants'; +import { MeilisearchRuntimeOptions } from '../options'; +import { + ProductChannelMessageData, + ProductIndexItem, + ReindexMessageData, + UpdateAssetMessageData, + UpdateProductMessageData, + UpdateVariantMessageData, + UpdateVariantsByIdMessageData, + VariantChannelMessageData, + VariantIndexItem, +} from '../types'; + +import { getClient, getIndexUid, createIndex, configureIndex } from './indexing-utils'; + +export const defaultProductRelations: Array> = [ + 'featuredAsset', + 'facetValues', + 'facetValues.facet', + 'channels', + 'channels.defaultTaxZone', +]; + +export const defaultVariantRelations: Array> = [ + 'featuredAsset', + 'facetValues', + 'facetValues.facet', + 'collections', + 'taxCategory', + 'channels', + 'channels.defaultTaxZone', +]; + +export interface ReindexMessageResponse { + total: number; + completed: number; + duration: number; +} + +@Injectable() +export class MeilisearchIndexerController implements OnModuleInit, OnModuleDestroy { + private client: MeiliSearch; + private asyncQueue = new AsyncQueue('meilisearch-indexer', 5); + private productRelations: Array>; + private variantRelations: Array>; + private injector: Injector; + + constructor( + private connection: TransactionalConnection, + @Inject(MEILISEARCH_OPTIONS) private options: MeilisearchRuntimeOptions, + private productPriceApplicator: ProductPriceApplicator, + private configService: ConfigService, + private productVariantService: ProductVariantService, + private requestContextCache: RequestContextCacheService, + private moduleRef: ModuleRef, + ) {} + + onModuleInit(): any { + this.client = getClient(this.options); + this.productRelations = this.getReindexRelations( + defaultProductRelations, + this.options.hydrateProductRelations, + ); + this.variantRelations = this.getReindexRelations( + defaultVariantRelations, + this.options.hydrateProductVariantRelations, + ); + this.injector = new Injector(this.moduleRef); + } + + onModuleDestroy(): any { + // MeiliSearch JS client has no close method + } + + /** + * Updates the search index only for the affected product. + */ + async updateProduct({ ctx: rawContext, productId }: UpdateProductMessageData): Promise { + const ctx = MutableRequestContext.deserialize(rawContext); + await this.updateProductsInternal(ctx, [productId]); + return true; + } + + /** + * Deletes the product from the search index. + */ + async deleteProduct({ ctx: rawContext, productId }: UpdateProductMessageData): Promise { + await this.deleteProductOperations(RequestContext.deserialize(rawContext), productId); + return true; + } + + /** + * Updates the search index when a product is assigned to a channel. + */ + async assignProductToChannel({ + ctx: rawContext, + productId, + channelId, + }: ProductChannelMessageData): Promise { + const ctx = MutableRequestContext.deserialize(rawContext); + await this.updateProductsInternal(ctx, [productId]); + return true; + } + + /** + * Updates the search index when a product is removed from a channel. + */ + async removeProductFromChannel({ + ctx: rawContext, + productId, + channelId, + }: ProductChannelMessageData): Promise { + const ctx = MutableRequestContext.deserialize(rawContext); + await this.updateProductsInternal(ctx, [productId]); + return true; + } + + async assignVariantToChannel({ + ctx: rawContext, + productVariantId, + channelId, + }: VariantChannelMessageData): Promise { + const productIds = await this.getProductIdsByVariantIds([productVariantId]); + const ctx = MutableRequestContext.deserialize(rawContext); + await this.updateProductsInternal(ctx, productIds); + return true; + } + + async removeVariantFromChannel({ + ctx: rawContext, + productVariantId, + channelId, + }: VariantChannelMessageData): Promise { + const productIds = await this.getProductIdsByVariantIds([productVariantId]); + const ctx = MutableRequestContext.deserialize(rawContext); + await this.updateProductsInternal(ctx, productIds); + return true; + } + + /** + * Updates the search index only for the affected entities. + */ + async updateVariants({ ctx: rawContext, variantIds }: UpdateVariantMessageData): Promise { + const ctx = MutableRequestContext.deserialize(rawContext); + return this.asyncQueue.push(async () => { + const productIds = await this.getProductIdsByVariantIds(variantIds); + await this.updateProductsInternal(ctx, productIds); + return true; + }); + } + + async deleteVariants({ ctx: rawContext, variantIds }: UpdateVariantMessageData): Promise { + const ctx = MutableRequestContext.deserialize(rawContext); + const productIds = await this.getProductIdsByVariantIds(variantIds); + for (const productId of productIds) { + await this.updateProductsInternal(ctx, [productId]); + } + return true; + } + + updateVariantsById({ + ctx: rawContext, + ids, + }: UpdateVariantsByIdMessageData): Observable { + const ctx = MutableRequestContext.deserialize(rawContext); + return asyncObservable(async observer => { + return this.asyncQueue.push(async () => { + const timeStart = Date.now(); + const productIds = await this.getProductIdsByVariantIds(ids); + if (productIds.length) { + let finishedProductsCount = 0; + for (const productId of productIds) { + await this.updateProductsInternal(ctx, [productId]); + finishedProductsCount++; + observer.next({ + total: productIds.length, + completed: Math.min(finishedProductsCount, productIds.length), + duration: +new Date() - timeStart, + }); + } + } + Logger.verbose('Completed updating variants', loggerCtx); + return { + total: productIds.length, + completed: productIds.length, + duration: +new Date() - timeStart, + }; + }); + }); + } + + reindex({ ctx: rawContext }: ReindexMessageData): Observable { + return asyncObservable(async observer => { + return this.asyncQueue.push(async () => { + const timeStart = Date.now(); + const ctx = MutableRequestContext.deserialize(rawContext); + + const primaryIndexUid = getIndexUid(this.options.indexPrefix, VARIANT_INDEX_NAME); + const reindexTimestamp = new Date().getTime(); + const tempIndexUid = getIndexUid( + this.options.indexPrefix, + `${VARIANT_INDEX_NAME}-reindex-${reindexTimestamp}`, + ); + + try { + await createIndex(this.client, tempIndexUid, 'id'); + await configureIndex(this.client, tempIndexUid, this.options); + } catch (e: any) { + Logger.error('Could not create temporary reindex index.', loggerCtx); + Logger.error(JSON.stringify(e), loggerCtx); + throw e; + } + + const totalProductIds = await this.connection.rawConnection + .getRepository(Product) + .createQueryBuilder('product') + .where('product.deletedAt IS NULL') + .getCount(); + + Logger.verbose(`Will reindex ${totalProductIds} products`, loggerCtx); + + let productIds: Product[] = []; + let skip = 0; + let finishedProductsCount = 0; + do { + productIds = await this.connection.rawConnection + .getRepository(Product) + .createQueryBuilder('product') + .select('product.id') + .where('product.deletedAt IS NULL') + .skip(skip) + .take(this.options.reindexProductsChunkSize) + .getMany(); + + for (const { id: productId } of productIds) { + await this.updateProductsOperationsOnly(ctx, productId, tempIndexUid); + finishedProductsCount++; + observer.next({ + total: totalProductIds, + completed: Math.min(finishedProductsCount, totalProductIds), + duration: +new Date() - timeStart, + }); + } + + skip += this.options.reindexProductsChunkSize; + + Logger.verbose(`Done ${finishedProductsCount} / ${totalProductIds} products`); + } while (productIds.length >= this.options.reindexProductsChunkSize); + + // Atomically swap the temporary index with the primary index. + // The standard swap (without `rename`) exchanges documents, settings, + // and task history between the two indexes. This preserves all index + // configuration. + try { + // Ensure the primary index exists before swapping + await createIndex(this.client, primaryIndexUid, 'id'); + + const swapTask = await (this.client as any).swapIndexes([ + { indexes: [tempIndexUid, primaryIndexUid] }, + ]); + await this.client.tasks.waitForTask(swapTask.taskUid); + + // Delete the old index (which is now at the temp UID after swap) + const deleteTask = await this.client.deleteIndex(tempIndexUid); + await this.client.tasks.waitForTask(deleteTask.taskUid); + } catch (e: any) { + Logger.error('Could not swap indexes.', loggerCtx); + Logger.error(JSON.stringify(e), loggerCtx); + // Try to clean up the temp index + try { + await this.client.deleteIndex(tempIndexUid); + } catch { + // ignore cleanup errors + } + } + + Logger.verbose('Completed reindexing!', loggerCtx); + + return { + total: totalProductIds, + completed: totalProductIds, + duration: +new Date() - timeStart, + }; + }); + }); + } + + async updateAsset(data: UpdateAssetMessageData): Promise { + const indexUid = getIndexUid(this.options.indexPrefix, VARIANT_INDEX_NAME); + const index = this.client.index(indexUid); + + const asset = data.asset; + const focalPoint = asset.focalPoint || null; + + // Update product assets + await this.updateAssetDocuments( + index, + `productAssetId = "${asset.id}"`, + doc => { + doc.productPreviewFocalPoint = focalPoint; + return doc; + }, + ); + + // Update variant assets + await this.updateAssetDocuments( + index, + `productVariantAssetId = "${asset.id}"`, + doc => { + doc.productVariantPreviewFocalPoint = focalPoint; + return doc; + }, + ); + + return true; + } + + async deleteAsset(data: UpdateAssetMessageData): Promise { + const indexUid = getIndexUid(this.options.indexPrefix, VARIANT_INDEX_NAME); + const index = this.client.index(indexUid); + + const asset = data.asset; + + // Clear product asset + await this.updateAssetDocuments( + index, + `productAssetId = "${asset.id}"`, + doc => { + doc.productAssetId = null; + doc.productPreview = ''; + doc.productPreviewFocalPoint = null; + return doc; + }, + ); + + // Clear variant asset + await this.updateAssetDocuments( + index, + `productVariantAssetId = "${asset.id}"`, + doc => { + doc.productVariantAssetId = null; + doc.productVariantPreview = ''; + doc.productVariantPreviewFocalPoint = null; + return doc; + }, + ); + + return true; + } + + /** + * Meilisearch doesn't have update_by_query, so we fetch matching documents, + * modify them, and re-add them (which upserts). + */ + private async updateAssetDocuments( + index: Index, + filter: string, + updateFn: (doc: any) => any, + ): Promise { + let offset = 0; + const limit = 1000; + let hasMore = true; + + while (hasMore) { + const result = await index.search('', { filter, offset, limit }); + if (result.hits.length === 0) { + break; + } + + const updatedDocs = result.hits.map(hit => updateFn({ ...hit })); + const task = await index.addDocuments(updatedDocs); + await this.client.tasks.waitForTask(task.taskUid); + + hasMore = result.hits.length === limit; + offset += limit; + } + } + + private async updateProductsInternal(ctx: MutableRequestContext, productIds: ID[]) { + Logger.debug(`Updating ${productIds.length} Products`, loggerCtx); + for (const productId of productIds) { + await this.deleteProductOperations(ctx, productId); + await this.updateProductsOperationsOnly(ctx, productId); + } + } + + private async updateProductsOperationsOnly( + ctx: MutableRequestContext, + productId: ID, + indexUid?: string, + ): Promise { + const targetIndexUid = indexUid || getIndexUid(this.options.indexPrefix, VARIANT_INDEX_NAME); + const index = this.client.index(targetIndexUid); + + let product: Product | undefined; + try { + product = await this.connection + .getRepository(ctx, Product) + .find({ + where: { id: productId, deletedAt: IsNull() }, + relations: this.productRelations, + }) + .then(result => result[0] ?? undefined); + } catch (e: any) { + Logger.error(e.message, loggerCtx, e.stack); + throw e; + } + if (!product) { + return; + } + + let updatedProductVariants: ProductVariant[] = []; + try { + updatedProductVariants = await this.connection.rawConnection.getRepository(ProductVariant).find({ + relations: this.variantRelations, + where: { + productId, + deletedAt: IsNull(), + }, + order: { + id: 'ASC', + }, + }); + } catch (e: any) { + Logger.error(e.message, loggerCtx, e.stack); + } + + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + updatedProductVariants.forEach(variant => (variant.product = product!)); + if (!product.enabled) { + updatedProductVariants.forEach(v => (v.enabled = false)); + } + + Logger.debug(`Updating Product (${productId})`, loggerCtx); + const languageVariants: LanguageCode[] = []; + languageVariants.push(...product.translations.map(t => t.languageCode)); + for (const variant of updatedProductVariants) { + languageVariants.push(...variant.translations.map(t => t.languageCode)); + } + + const uniqueLanguageVariants = unique(languageVariants); + const originalChannel = ctx.channel; + let documents: VariantIndexItem[] = []; + + for (const channel of product.channels) { + ctx.setChannel(channel); + const variantsInChannel = updatedProductVariants.filter(v => + v.channels.map(c => c.id).includes(ctx.channelId), + ); + for (const variant of variantsInChannel) { + await this.productPriceApplicator.applyChannelPriceAndTax(variant, ctx); + } + + for (const languageCode of uniqueLanguageVariants) { + if (variantsInChannel.length) { + for (const variant of variantsInChannel) { + const doc = await this.createVariantIndexItem( + variant, + variantsInChannel, + ctx, + languageCode, + ); + documents.push(doc); + + if (documents.length >= this.options.reindexBatchSize) { + await this.addDocumentsBatch(index, documents); + documents = []; + } + } + } else { + const doc = await this.createSyntheticProductIndexItem(product, ctx, languageCode); + documents.push(doc); + } + + if (documents.length >= this.options.reindexBatchSize) { + await this.addDocumentsBatch(index, documents); + documents = []; + } + } + } + ctx.setChannel(originalChannel); + + // Flush remaining documents + if (documents.length > 0) { + await this.addDocumentsBatch(index, documents); + } + } + + private async addDocumentsBatch(index: Index, documents: VariantIndexItem[]): Promise { + if (documents.length === 0) { + return; + } + try { + const task = await index.addDocuments(documents as any[]); + await this.client.tasks.waitForTask(task.taskUid); + Logger.debug(`Added ${documents.length} documents to index [${index.uid}]`, loggerCtx); + } catch (e: any) { + Logger.error(`Error adding documents: ${JSON.stringify(e)}`, loggerCtx); + } + } + + private async deleteProductOperations( + ctx: RequestContext, + productId: ID, + indexUid?: string, + ): Promise { + const targetIndexUid = indexUid || getIndexUid(this.options.indexPrefix, VARIANT_INDEX_NAME); + const index = this.client.index(targetIndexUid); + + const channels = await this.requestContextCache.get(ctx, 'meilisearch-index-all-channels', () => + this.connection.rawConnection + .getRepository(Channel) + .createQueryBuilder('channel') + .select('channel.id') + .getMany(), + ); + + const product = await this.connection + .getRepository(ctx, Product) + .createQueryBuilder('product') + .select([ + 'product.id', + 'productVariant.id', + 'productTranslations.languageCode', + 'productVariantTranslations.languageCode', + ]) + .leftJoin('product.translations', 'productTranslations') + .leftJoin('product.variants', 'productVariant') + .leftJoin('productVariant.translations', 'productVariantTranslations') + .leftJoin('product.channels', 'channel') + .where('product.id = :productId', { productId }) + .andWhere('channel.id = :channelId', { channelId: ctx.channelId }) + .getOne(); + + if (!product) return; + + Logger.debug(`Deleting 1 Product (id: ${productId})`, loggerCtx); + const languageVariants: LanguageCode[] = []; + languageVariants.push(...product.translations.map(t => t.languageCode)); + for (const variant of product.variants) { + languageVariants.push(...variant.translations.map(t => t.languageCode)); + } + + const uniqueLanguageVariants = unique(languageVariants); + const idsToDelete: string[] = []; + + for (const { id: channelId } of channels) { + for (const languageCode of uniqueLanguageVariants) { + // Delete the synthetic product document + idsToDelete.push(MeilisearchIndexerController.getId(-product.id, channelId, languageCode)); + } + } + + // Delete all variant documents + for (const variant of product.variants) { + for (const channelId of channels.map(c => c.id)) { + for (const languageCode of uniqueLanguageVariants) { + idsToDelete.push( + MeilisearchIndexerController.getId(variant.id, channelId, languageCode), + ); + } + } + } + + if (idsToDelete.length > 0) { + // Delete in chunks + const chunkSize = this.options.reindexBatchSize; + for (let i = 0; i < idsToDelete.length; i += chunkSize) { + const chunk = idsToDelete.slice(i, i + chunkSize); + try { + const task = await index.deleteDocuments(chunk); + await this.client.tasks.waitForTask(task.taskUid); + Logger.debug(`Deleted ${chunk.length} documents from index [${index.uid}]`, loggerCtx); + } catch (e: any) { + Logger.error(`Error deleting documents: ${JSON.stringify(e)}`, loggerCtx); + } + } + } + } + + /** + * Takes the default relations, and combines them with any extra relations specified in the + * `hydrateProductRelations` and `hydrateProductVariantRelations`. This method also ensures + * that the relation values are unique and that paths are fully expanded. + */ + private getReindexRelations( + defaultRelations: Array>, + hydratedRelations: Array>, + ): Array> { + const uniqueRelations = unique([...defaultRelations, ...hydratedRelations]); + for (const relation of hydratedRelations) { + let path = relation.split('.'); + if (path[0] === 'customFields') { + if (path.length > 2) { + throw new InternalServerError( + [ + 'hydrateProductRelations / hydrateProductVariantRelations does not currently support nested custom field relations', + `Received: "${relation}"`, + ].join('\n'), + ); + } + path = [path.join('.')]; + } + const pathToPart: string[] = []; + for (const part of path) { + pathToPart.push(part); + const joinedPath = pathToPart.join('.') as EntityRelationPaths; + if (!uniqueRelations.includes(joinedPath)) { + uniqueRelations.push(joinedPath); + } + } + } + return uniqueRelations; + } + + private async getProductIdsByVariantIds(variantIds: ID[]): Promise { + const variants = await this.connection.getRepository(ProductVariant).find({ + where: { id: In(variantIds) }, + relations: ['product'], + loadEagerRelations: false, + }); + return unique(variants.map(v => v.product.id)); + } + + private async createVariantIndexItem( + v: ProductVariant, + variants: ProductVariant[], + ctx: RequestContext, + languageCode: LanguageCode, + ): Promise { + try { + const productAsset = v.product.featuredAsset; + const variantAsset = v.featuredAsset; + const productTranslation = this.getTranslation(v.product, languageCode); + const variantTranslation = this.getTranslation(v, languageCode); + const collectionTranslations = v.collections.map(c => this.getTranslation(c, languageCode)); + + const productCollectionTranslations = variants.reduce( + (translations, variant) => [ + ...translations, + ...variant.collections.map(c => this.getTranslation(c, languageCode)), + ], + [] as Array>, + ); + const prices = variants.map(variant => variant.price); + const pricesWithTax = variants.map(variant => variant.priceWithTax); + + const item: VariantIndexItem = { + id: MeilisearchIndexerController.getId(v.id, ctx.channelId, languageCode), + channelId: ctx.channelId, + languageCode, + productVariantId: v.id, + sku: v.sku, + slug: productTranslation.slug, + productId: v.product.id, + productName: productTranslation.name, + productAssetId: productAsset ? productAsset.id : undefined, + productPreview: productAsset ? productAsset.preview : '', + productPreviewFocalPoint: productAsset ? productAsset.focalPoint || undefined : undefined, + productVariantName: variantTranslation.name, + productVariantAssetId: variantAsset ? variantAsset.id : undefined, + productVariantPreview: variantAsset ? variantAsset.preview : '', + productVariantPreviewFocalPoint: variantAsset + ? variantAsset.focalPoint || undefined + : undefined, + price: v.price, + priceWithTax: v.priceWithTax, + currencyCode: v.currencyCode, + description: productTranslation.description, + facetIds: this.getFacetIds([v]), + channelIds: v.channels.map(c => c.id), + facetValueIds: this.getFacetValueIds([v]), + collectionIds: v.collections.map(c => c.id.toString()), + collectionSlugs: collectionTranslations.map(c => c.slug), + enabled: v.enabled && v.product.enabled, + productEnabled: variants.some(variant => variant.enabled) && v.product.enabled, + productPriceMin: Math.min(...prices), + productPriceMax: Math.max(...prices), + productPriceWithTaxMin: Math.min(...pricesWithTax), + productPriceWithTaxMax: Math.max(...pricesWithTax), + productFacetIds: this.getFacetIds(variants), + productFacetValueIds: this.getFacetValueIds(variants), + productCollectionIds: unique( + variants.reduce( + (ids, variant) => [...ids, ...variant.collections.map(c => c.id)], + [] as ID[], + ), + ), + productCollectionSlugs: unique(productCollectionTranslations.map(c => c.slug)), + productChannelIds: v.product.channels.map(c => c.id), + inStock: 0 < (await this.productVariantService.getSaleableStockLevel(ctx, v)), + productInStock: await this.getProductInStockValue(ctx, variants), + }; + const variantCustomMappings = Object.entries(this.options.customProductVariantMappings); + for (const [name, def] of variantCustomMappings) { + item[`variant-${name}`] = await def.valueFn(v, languageCode, this.injector, ctx); + } + + const productCustomMappings = Object.entries(this.options.customProductMappings); + for (const [name, def] of productCustomMappings) { + item[`product-${name}`] = await def.valueFn( + v.product, + variants, + languageCode, + this.injector, + ctx, + ); + } + return item; + } catch (err: any) { + Logger.error(err.toString()); + throw Error('Error while reindexing!'); + } + } + + private async getProductInStockValue(ctx: RequestContext, variants: ProductVariant[]): Promise { + return this.requestContextCache.get( + ctx, + `meilisearch-index-product-in-stock-${ctx.channelId}-${variants.map(v => v.id).join(',')}`, + async () => { + const stockLevels = await Promise.all( + variants.map(variant => this.productVariantService.getSaleableStockLevel(ctx, variant)), + ); + return stockLevels.some(stockLevel => 0 < stockLevel); + }, + ); + } + + /** + * If a Product has no variants, we create a synthetic variant for the purposes + * of making that product visible via the search query. + */ + private async createSyntheticProductIndexItem( + product: Product, + ctx: RequestContext, + languageCode: LanguageCode, + ): Promise { + const productTranslation = this.getTranslation(product, languageCode); + const productAsset = product.featuredAsset; + + const item: VariantIndexItem = { + id: MeilisearchIndexerController.getId(-product.id, ctx.channelId, languageCode), + channelId: ctx.channelId, + languageCode, + productVariantId: 0, + sku: '', + slug: productTranslation.slug, + productId: product.id, + productName: productTranslation.name, + productAssetId: productAsset ? productAsset.id : undefined, + productPreview: productAsset ? productAsset.preview : '', + productPreviewFocalPoint: productAsset ? productAsset.focalPoint || undefined : undefined, + productVariantName: productTranslation.name, + productVariantAssetId: undefined, + productVariantPreview: '', + productVariantPreviewFocalPoint: undefined, + price: 0, + priceWithTax: 0, + currencyCode: ctx.currencyCode, + description: productTranslation.description, + facetIds: product.facetValues?.map(fv => fv.facet.id.toString()) ?? [], + channelIds: [ctx.channelId], + facetValueIds: product.facetValues?.map(fv => fv.id.toString()) ?? [], + collectionIds: [], + collectionSlugs: [], + enabled: false, + productEnabled: false, + productPriceMin: 0, + productPriceMax: 0, + productPriceWithTaxMin: 0, + productPriceWithTaxMax: 0, + productFacetIds: product.facetValues?.map(fv => fv.facet.id.toString()) ?? [], + productFacetValueIds: product.facetValues?.map(fv => fv.id.toString()) ?? [], + productCollectionIds: [], + productCollectionSlugs: [], + productChannelIds: product.channels.map(c => c.id), + inStock: false, + productInStock: false, + }; + const productCustomMappings = Object.entries(this.options.customProductMappings); + for (const [name, def] of productCustomMappings) { + item[`product-${name}`] = await def.valueFn(product, [], languageCode, this.injector, ctx); + } + return item; + } + + private getTranslation( + translatable: T, + languageCode: LanguageCode, + ): Translation { + return (translatable.translations.find(t => t.languageCode === languageCode) || + translatable.translations.find(t => t.languageCode === this.configService.defaultLanguageCode) || + translatable.translations[0]) as unknown as Translation; + } + + private getFacetIds(variants: ProductVariant[]): string[] { + const facetIds = (fv: FacetValue) => fv.facet.id.toString(); + const variantFacetIds = variants.reduce( + (ids, v) => [...ids, ...v.facetValues.map(facetIds)], + [] as string[], + ); + const productFacetIds = variants[0].product.facetValues.map(facetIds); + return unique([...variantFacetIds, ...productFacetIds]); + } + + private getFacetValueIds(variants: ProductVariant[]): string[] { + const facetValueIds = (fv: FacetValue) => fv.id.toString(); + const variantFacetValueIds = variants.reduce( + (ids, v) => [...ids, ...v.facetValues.map(facetValueIds)], + [] as string[], + ); + const productFacetValueIds = variants[0].product.facetValues.map(facetValueIds); + return unique([...variantFacetValueIds, ...productFacetValueIds]); + } + + static getId(entityId: ID, channelId: ID, languageCode: LanguageCode): string { + return `${channelId.toString()}_${entityId.toString()}_${languageCode}`; + } +} diff --git a/packages/meilisearch-plugin/src/indexing/indexing-utils.ts b/packages/meilisearch-plugin/src/indexing/indexing-utils.ts new file mode 100644 index 00000000..17b38ad0 --- /dev/null +++ b/packages/meilisearch-plugin/src/indexing/indexing-utils.ts @@ -0,0 +1,193 @@ +import { Logger } from '@vendure/core'; +import { MeiliSearch } from 'meilisearch'; + +import { loggerCtx } from '../constants'; +import { MeilisearchRuntimeOptions } from '../options'; + +/** + * Expands a synonym map so that every word in a group maps to every other word + * in that group (bidirectional). This means the user only needs to define + * `laptop: ['notebook']` and the reverse `notebook: ['laptop']` is generated + * automatically. + * + * Overlapping groups are merged and a word never maps to itself. + */ +export function expandSynonymsBidirectional( + synonyms: Record, +): Record { + const expanded: Record> = {}; + for (const [key, values] of Object.entries(synonyms)) { + const group = [key, ...values]; + for (const word of group) { + if (!expanded[word]) { + expanded[word] = new Set(); + } + for (const other of group) { + if (other !== word) { + expanded[word].add(other); + } + } + } + } + const result: Record = {}; + for (const [word, synonymSet] of Object.entries(expanded)) { + result[word] = Array.from(synonymSet); + } + return result; +} + +/** + * Creates and returns a MeiliSearch client instance. + */ +export function getClient(options: Pick): MeiliSearch { + return new MeiliSearch({ + host: options.host, + apiKey: options.apiKey, + }); +} + +/** + * Returns a sanitized index UID for Meilisearch. + * Meilisearch only allows alphanumeric characters, hyphens, and underscores. + */ +export function getIndexUid(prefix: string, indexName: string): string { + const raw = `${prefix}${indexName}`; + return raw.replace(/\./g, '-').replace(/[^a-zA-Z0-9_-]/g, ''); +} + +/** + * Creates a Meilisearch index if it does not already exist. + */ +export async function createIndex( + client: MeiliSearch, + indexUid: string, + primaryKey: string = 'id', +): Promise { + try { + await client.getIndex(indexUid); + Logger.verbose(`Index "${indexUid}" already exists`, loggerCtx); + } catch (e: any) { + Logger.verbose(`Index "${indexUid}" does not exist. Creating...`, loggerCtx); + const task = await client.createIndex(indexUid, { primaryKey }); + await client.tasks.waitForTask(task.taskUid); + Logger.verbose(`Created index "${indexUid}"`, loggerCtx); + } +} + +/** + * Configures a Meilisearch index with filterable, searchable, sortable, displayed attributes, + * and optional relevancy settings (synonyms, stop words, ranking rules, typo tolerance). + */ +export async function configureIndex( + client: MeiliSearch, + indexUid: string, + options?: MeilisearchRuntimeOptions, +): Promise { + const index = client.index(indexUid); + + const filterableAttributes = [ + 'channelId', + 'languageCode', + 'facetValueIds', + 'collectionIds', + 'collectionSlugs', + 'enabled', + 'productEnabled', + 'productId', + 'sku', + 'inStock', + 'productInStock', + 'price', + 'priceWithTax', + 'productPriceMin', + 'productPriceMax', + 'productPriceWithTaxMin', + 'productPriceWithTaxMax', + 'productFacetIds', + 'productFacetValueIds', + 'productCollectionIds', + 'productCollectionSlugs', + 'productChannelIds', + 'channelIds', + ]; + + const searchableAttributes = [ + 'productName', + 'productVariantName', + 'description', + 'sku', + 'slug', + ]; + + const sortableAttributes = [ + 'productName', + 'price', + 'priceWithTax', + 'productPriceMin', + 'productPriceMax', + ]; + + const displayedAttributes = ['*']; + + Logger.verbose(`Configuring index "${indexUid}"...`, loggerCtx); + + const filterTask = await index.updateFilterableAttributes(filterableAttributes); + await client.tasks.waitForTask(filterTask.taskUid); + + const searchTask = await index.updateSearchableAttributes(searchableAttributes); + await client.tasks.waitForTask(searchTask.taskUid); + + const sortTask = await index.updateSortableAttributes(sortableAttributes); + await client.tasks.waitForTask(sortTask.taskUid); + + const displayTask = await index.updateDisplayedAttributes(displayedAttributes); + await client.tasks.waitForTask(displayTask.taskUid); + + // ── Optional relevancy settings ── + + if (options?.synonyms && Object.keys(options.synonyms).length > 0) { + Logger.verbose(`Setting synonyms on "${indexUid}"...`, loggerCtx); + const bidirectionalSynonyms = expandSynonymsBidirectional(options.synonyms); + const synonymTask = await index.updateSynonyms(bidirectionalSynonyms); + await client.tasks.waitForTask(synonymTask.taskUid); + } + + if (options?.stopWords && options.stopWords.length > 0) { + Logger.verbose(`Setting stop words on "${indexUid}"...`, loggerCtx); + const stopTask = await index.updateStopWords(options.stopWords); + await client.tasks.waitForTask(stopTask.taskUid); + } + + if (options?.rankingRules && options.rankingRules.length > 0) { + Logger.verbose(`Setting ranking rules on "${indexUid}"...`, loggerCtx); + const rankTask = await index.updateRankingRules(options.rankingRules); + await client.tasks.waitForTask(rankTask.taskUid); + } + + if (options?.typoTolerance) { + Logger.verbose(`Configuring typo tolerance on "${indexUid}"...`, loggerCtx); + const typoSettings: any = {}; + if (options.typoTolerance.enabled !== undefined) { + typoSettings.enabled = options.typoTolerance.enabled; + } + if (options.typoTolerance.minWordSizeForOneTypo || options.typoTolerance.minWordSizeForTwoTypos) { + typoSettings.minWordSizeForTypos = {}; + if (options.typoTolerance.minWordSizeForOneTypo) { + typoSettings.minWordSizeForTypos.oneTypo = options.typoTolerance.minWordSizeForOneTypo; + } + if (options.typoTolerance.minWordSizeForTwoTypos) { + typoSettings.minWordSizeForTypos.twoTypos = options.typoTolerance.minWordSizeForTwoTypos; + } + } + if (options.typoTolerance.disableOnWords) { + typoSettings.disableOnWords = options.typoTolerance.disableOnWords; + } + if (options.typoTolerance.disableOnAttributes) { + typoSettings.disableOnAttributes = options.typoTolerance.disableOnAttributes; + } + const typoTask = await index.updateTypoTolerance(typoSettings); + await client.tasks.waitForTask(typoTask.taskUid); + } + + Logger.verbose(`Index "${indexUid}" configured successfully`, loggerCtx); +} diff --git a/packages/meilisearch-plugin/src/indexing/meilisearch-index.service.ts b/packages/meilisearch-plugin/src/indexing/meilisearch-index.service.ts new file mode 100644 index 00000000..ac19a78e --- /dev/null +++ b/packages/meilisearch-plugin/src/indexing/meilisearch-index.service.ts @@ -0,0 +1,212 @@ +import { Injectable, OnApplicationBootstrap } from '@nestjs/common'; +import { assertNever } from '@vendure/common/lib/shared-utils'; +import { + Asset, + ID, + Job, + JobQueue, + JobQueueService, + Logger, + Product, + ProductVariant, + RequestContext, +} from '@vendure/core'; +import { Observable } from 'rxjs'; + +import { loggerCtx } from '../constants'; +import { UpdateIndexQueueJobData } from '../types'; + +import { MeilisearchIndexerController, ReindexMessageResponse } from './indexer.controller'; + +@Injectable() +export class MeilisearchIndexService implements OnApplicationBootstrap { + private updateIndexQueue: JobQueue; + + constructor( + private jobService: JobQueueService, + private indexerController: MeilisearchIndexerController, + ) {} + + async onApplicationBootstrap() { + this.updateIndexQueue = await this.jobService.createQueue({ + name: 'update-search-index', + process: job => { + const data = job.data; + switch (data.type) { + case 'reindex': + Logger.verbose('sending ReindexMessage', loggerCtx); + return this.jobWithProgress(job, this.indexerController.reindex(data)); + case 'update-product': + return this.indexerController.updateProduct(data); + case 'update-variants': + return this.indexerController.updateVariants(data); + case 'delete-product': + return this.indexerController.deleteProduct(data); + case 'delete-variant': + return this.indexerController.deleteVariants(data); + case 'update-variants-by-id': + return this.jobWithProgress(job, this.indexerController.updateVariantsById(data)); + case 'update-asset': + return this.indexerController.updateAsset(data); + case 'delete-asset': + return this.indexerController.deleteAsset(data); + case 'assign-product-to-channel': + return this.indexerController.assignProductToChannel(data); + case 'remove-product-from-channel': + return this.indexerController.removeProductFromChannel(data); + case 'assign-variant-to-channel': + return this.indexerController.assignVariantToChannel(data); + case 'remove-variant-from-channel': + return this.indexerController.removeVariantFromChannel(data); + default: + assertNever(data); + return Promise.resolve(); + } + }, + }); + } + + reindex(ctx: RequestContext) { + return this.updateIndexQueue.add({ type: 'reindex', ctx: ctx.serialize() }, { ctx }); + } + + updateProduct(ctx: RequestContext, product: Product) { + return this.updateIndexQueue.add( + { + type: 'update-product', + ctx: ctx.serialize(), + productId: product.id, + }, + { ctx }, + ); + } + + updateVariants(ctx: RequestContext, variants: ProductVariant[]) { + const variantIds = variants.map(v => v.id); + return this.updateIndexQueue.add( + { type: 'update-variants', ctx: ctx.serialize(), variantIds }, + { ctx }, + ); + } + + deleteProduct(ctx: RequestContext, product: Product) { + return this.updateIndexQueue.add( + { + type: 'delete-product', + ctx: ctx.serialize(), + productId: product.id, + }, + { ctx }, + ); + } + + deleteVariant(ctx: RequestContext, variants: ProductVariant[]) { + const variantIds = variants.map(v => v.id); + return this.updateIndexQueue.add( + { type: 'delete-variant', ctx: ctx.serialize(), variantIds }, + { ctx }, + ); + } + + assignProductToChannel(ctx: RequestContext, product: Product, channelId: ID) { + return this.updateIndexQueue.add( + { + type: 'assign-product-to-channel', + ctx: ctx.serialize(), + productId: product.id, + channelId, + }, + { ctx }, + ); + } + + removeProductFromChannel(ctx: RequestContext, product: Product, channelId: ID) { + return this.updateIndexQueue.add( + { + type: 'remove-product-from-channel', + ctx: ctx.serialize(), + productId: product.id, + channelId, + }, + { ctx }, + ); + } + + assignVariantToChannel(ctx: RequestContext, productVariantId: ID, channelId: ID) { + return this.updateIndexQueue.add( + { + type: 'assign-variant-to-channel', + ctx: ctx.serialize(), + productVariantId, + channelId, + }, + { ctx }, + ); + } + + removeVariantFromChannel(ctx: RequestContext, productVariantId: ID, channelId: ID) { + return this.updateIndexQueue.add( + { + type: 'remove-variant-from-channel', + ctx: ctx.serialize(), + productVariantId, + channelId, + }, + { ctx }, + ); + } + + updateVariantsById(ctx: RequestContext, ids: ID[]) { + return this.updateIndexQueue.add( + { type: 'update-variants-by-id', ctx: ctx.serialize(), ids }, + { ctx }, + ); + } + + updateAsset(ctx: RequestContext, asset: Asset) { + return this.updateIndexQueue.add( + { type: 'update-asset', ctx: ctx.serialize(), asset: asset as any }, + { ctx }, + ); + } + + deleteAsset(ctx: RequestContext, asset: Asset) { + return this.updateIndexQueue.add( + { type: 'delete-asset', ctx: ctx.serialize(), asset: asset as any }, + { ctx }, + ); + } + + private jobWithProgress( + job: Job, + ob: Observable, + ): Promise { + return new Promise((resolve, reject) => { + let total: number | undefined; + let duration = 0; + let completed = 0; + ob.subscribe({ + next: (response: ReindexMessageResponse) => { + if (!total) { + total = response.total; + } + duration = response.duration; + completed = response.completed; + const progress = total === 0 ? 100 : Math.ceil((completed / total) * 100); + job.setProgress(progress); + }, + complete: () => { + resolve({ + success: true, + indexedItemCount: total, + timeTaken: duration, + }); + }, + error: (err: any) => { + Logger.error(err.message || JSON.stringify(err), loggerCtx, err.stack); + reject(err); + }, + }); + }); + } +} diff --git a/packages/meilisearch-plugin/src/meilisearch.health.ts b/packages/meilisearch-plugin/src/meilisearch.health.ts new file mode 100644 index 00000000..e2684ac3 --- /dev/null +++ b/packages/meilisearch-plugin/src/meilisearch.health.ts @@ -0,0 +1,36 @@ +import { Injectable } from '@nestjs/common'; +import { HealthCheckError, HealthIndicator, HealthIndicatorResult } from '@nestjs/terminus'; + +import { MeilisearchService } from './meilisearch.service'; + +@Injectable() +export class MeilisearchHealthIndicator extends HealthIndicator { + constructor(private meilisearchService: MeilisearchService) { + super(); + } + + async isHealthy(): Promise { + let isHealthy = false; + let error = ''; + try { + await this.meilisearchService.checkConnection(); + isHealthy = true; + } catch (e: any) { + error = e.message; + } + const result = this.getStatus('meilisearch', isHealthy, { message: error }); + if (isHealthy) { + return result; + } + this.throwHealthCheckError(result); + } + + startupCheckFailed(message: string): never { + const result = this.getStatus('meilisearch', false, { message }); + return this.throwHealthCheckError(result); + } + + private throwHealthCheckError(result: HealthIndicatorResult): never { + throw new HealthCheckError('Meilisearch not available', result); + } +} diff --git a/packages/meilisearch-plugin/src/meilisearch.service.ts b/packages/meilisearch-plugin/src/meilisearch.service.ts new file mode 100644 index 00000000..f7225bae --- /dev/null +++ b/packages/meilisearch-plugin/src/meilisearch.service.ts @@ -0,0 +1,690 @@ +import { Inject, Injectable, OnModuleInit } from '@nestjs/common'; +import { SearchResultAsset } from '@vendure/common/lib/generated-types'; +import { LogicalOperator, SortOrder } from '@vendure/common/lib/generated-types'; +import { + Collection, + CollectionService, + ConfigService, + DeepRequired, + EventBus, + FacetValue, + FacetValueService, + ID, + InternalServerError, + Job, + Logger, + RequestContext, + SearchEvent, + SearchService, +} from '@vendure/core'; +import { UserInputError } from '@vendure/core'; +import { MeiliSearch } from 'meilisearch'; + +import { MEILISEARCH_OPTIONS, loggerCtx, VARIANT_INDEX_NAME } from './constants'; +import { getClient, getIndexUid, createIndex, configureIndex } from './indexing/indexing-utils'; +import { MeilisearchIndexService } from './indexing/meilisearch-index.service'; +import { MeilisearchRuntimeOptions } from './options'; +import { + CustomMapping, + MeilisearchSearchInput, + MeilisearchSearchResponse, + MeilisearchSearchResult, + ProductIndexItem, + SearchPriceData, + VariantIndexItem, +} from './types'; + +@Injectable() +export class MeilisearchService implements OnModuleInit { + private client: MeiliSearch; + + constructor( + @Inject(MEILISEARCH_OPTIONS) private options: MeilisearchRuntimeOptions, + private searchService: SearchService, + private meilisearchIndexService: MeilisearchIndexService, + private configService: ConfigService, + private facetValueService: FacetValueService, + private collectionService: CollectionService, + private eventBus: EventBus, + ) { + searchService.adopt(this); + } + + onModuleInit(): any { + this.client = getClient(this.options); + } + + async checkConnection(): Promise { + const { connectionAttempts, connectionAttemptInterval } = this.options; + let attempts = 0; + Logger.verbose('Pinging Meilisearch...', loggerCtx); + while (attempts < connectionAttempts) { + attempts++; + try { + const health = await this.client.health(); + if (health.status === 'available') { + Logger.verbose('Ping to Meilisearch successful', loggerCtx); + return; + } + } catch (e: any) { + Logger.verbose( + `Ping to Meilisearch failed with error "${e.message as string}"`, + loggerCtx, + ); + } + Logger.verbose( + `Connection to Meilisearch could not be made, trying again after ${connectionAttemptInterval}ms (attempt ${attempts} of ${connectionAttempts})`, + loggerCtx, + ); + await new Promise(resolve1 => setTimeout(resolve1, connectionAttemptInterval)); + } + throw new Error('Could not connect to Meilisearch. Aborting bootstrap.'); + } + + async createIndicesIfNotExists(): Promise { + const indexUid = getIndexUid(this.options.indexPrefix, VARIANT_INDEX_NAME); + try { + await this.client.getIndex(indexUid); + Logger.verbose(`Index "${indexUid}" exists`, loggerCtx); + } catch (e: any) { + Logger.verbose(`Index "${indexUid}" does not exist. Creating...`, loggerCtx); + await createIndex(this.client, indexUid, 'id'); + await configureIndex(this.client, indexUid, this.options); + } + } + + /** + * Perform a fulltext search according to the provided input arguments. + */ + async search( + ctx: RequestContext, + input: MeilisearchSearchInput, + enabledOnly: boolean = false, + ): Promise> { + const { groupByProduct, groupBySKU } = input; + const indexUid = getIndexUid(this.options.indexPrefix, VARIANT_INDEX_NAME); + const index = this.client.index(indexUid); + + if (groupByProduct && groupBySKU) { + throw new InternalServerError( + 'Cannot use both groupByProduct and groupBySKU simultaneously. Please set only one of these options to true.', + ); + } + + const filter = this.buildFilter(ctx, input, enabledOnly); + const sort = this.buildSort(input); + const offset = input.skip || 0; + const limit = input.take || 10; + + const searchParams: any = { + filter, + sort, + offset, + limit, + }; + + if (groupByProduct) { + searchParams.distinct = 'productId'; + } else if (groupBySKU) { + searchParams.distinct = 'sku'; + } + + // Apply query-time search config options from plugin configuration + const sc = this.options.searchConfig; + if (sc.matchingStrategy) { + searchParams.matchingStrategy = sc.matchingStrategy; + } + if (sc.attributesToSearchOn) { + searchParams.attributesToSearchOn = sc.attributesToSearchOn; + } + if (sc.attributesToRetrieve) { + searchParams.attributesToRetrieve = sc.attributesToRetrieve; + } + if (sc.rankingScoreThreshold !== undefined) { + searchParams.rankingScoreThreshold = sc.rankingScoreThreshold; + } + if (sc.attributesToHighlight) { + searchParams.attributesToHighlight = sc.attributesToHighlight; + } + if (sc.highlightPreTag) { + searchParams.highlightPreTag = sc.highlightPreTag; + } + if (sc.highlightPostTag) { + searchParams.highlightPostTag = sc.highlightPostTag; + } + if (sc.attributesToCrop) { + searchParams.attributesToCrop = sc.attributesToCrop; + } + if (sc.cropLength !== undefined) { + searchParams.cropLength = sc.cropLength; + } + if (sc.cropMarker !== undefined) { + searchParams.cropMarker = sc.cropMarker; + } + if (sc.showMatchesPosition) { + searchParams.showMatchesPosition = sc.showMatchesPosition; + } + if (sc.showRankingScore) { + searchParams.showRankingScore = sc.showRankingScore; + } + if (sc.showRankingScoreDetails) { + searchParams.showRankingScoreDetails = sc.showRankingScoreDetails; + } + + // Apply mapQuery if configured + const finalParams = this.options.searchConfig.mapQuery + ? this.options.searchConfig.mapQuery( + searchParams, + input, + this.options.searchConfig, + ctx.channelId, + enabledOnly, + ctx, + ) + : searchParams; + + try { + const result = await index.search(input.term || '', finalParams); + await this.eventBus.publish(new SearchEvent(ctx, input)); + + if (groupByProduct || groupBySKU) { + const totalItems = await this.totalHits(ctx, input, enabledOnly); + return { + items: result.hits.map((hit: any) => + this.mapProductToSearchResult(hit, groupByProduct ?? false, groupBySKU ?? false), + ), + totalItems, + }; + } else { + return { + items: result.hits.map((hit: any) => this.mapVariantToSearchResult(hit)), + totalItems: (result as any).estimatedTotalHits || (result as any).totalHits || 0, + }; + } + } catch (e: any) { + Logger.error(e.message, loggerCtx, e.stack); + throw e; + } + } + + async totalHits( + ctx: RequestContext, + input: MeilisearchSearchInput, + enabledOnly: boolean = false, + ): Promise { + const indexUid = getIndexUid(this.options.indexPrefix, VARIANT_INDEX_NAME); + const index = this.client.index(indexUid); + const { groupByProduct, groupBySKU } = input; + + const filter = this.buildFilter(ctx, input, enabledOnly); + + if (groupByProduct || groupBySKU) { + // To count distinct productIds or SKUs, we search with distinct and use facets + const distinctField = groupBySKU ? 'sku' : 'productId'; + const searchParams: any = { + filter, + offset: 0, + limit: 0, + facets: [distinctField], + distinct: distinctField, + }; + try { + const result = await index.search(input.term || '', searchParams); + // Use facetDistribution to get the exact distinct count + // because estimatedTotalHits is inaccurate with distinct + limit:0 + const facetDist = (result as any).facetDistribution?.[distinctField]; + if (facetDist) { + return Object.keys(facetDist).length; + } + return (result as any).estimatedTotalHits || (result as any).totalHits || 0; + } catch (e: any) { + Logger.error(e.message, loggerCtx, e.stack); + return 0; + } + } else { + const result = await index.search(input.term || '', { + filter, + offset: 0, + limit: 0, + }); + return (result as any).estimatedTotalHits || (result as any).totalHits || 0; + } + } + + /** + * Return a list of all FacetValues which appear in the result set. + */ + async facetValues( + ctx: RequestContext, + input: MeilisearchSearchInput, + enabledOnly: boolean = false, + ): Promise> { + const indexUid = getIndexUid(this.options.indexPrefix, VARIANT_INDEX_NAME); + const index = this.client.index(indexUid); + const filter = this.buildFilter(ctx, input, enabledOnly); + + try { + const { groupByProduct } = input; + // When grouped by product, use productFacetValueIds to get per-product counts + const facetField = groupByProduct ? 'productFacetValueIds' : 'facetValueIds'; + const searchParams: any = { + filter, + offset: 0, + limit: 0, + facets: [facetField], + }; + if (groupByProduct) { + searchParams.distinct = 'productId'; + } + const result = await index.search(input.term || '', searchParams); + + const facetDistribution = result.facetDistribution?.[facetField] || {}; + const facetValueIds = Object.keys(facetDistribution).slice( + 0, + this.options.searchConfig.facetValueMaxSize, + ); + + if (facetValueIds.length === 0) { + return []; + } + + const facetValues = await this.facetValueService.findByIds(ctx, facetValueIds); + return facetValues.map(facetValue => { + const count = facetDistribution[facetValue.id.toString()] || 0; + return { facetValue, count }; + }); + } catch (e: any) { + Logger.error(e.message, loggerCtx, e.stack); + return []; + } + } + + /** + * Return a list of all Collections which appear in the result set. + */ + async collections( + ctx: RequestContext, + input: MeilisearchSearchInput, + enabledOnly: boolean = false, + ): Promise> { + const indexUid = getIndexUid(this.options.indexPrefix, VARIANT_INDEX_NAME); + const index = this.client.index(indexUid); + const filter = this.buildFilter(ctx, input, enabledOnly); + + try { + const { groupByProduct } = input; + // When grouped by product, use productCollectionIds to get per-product counts + const collectionField = groupByProduct ? 'productCollectionIds' : 'collectionIds'; + const searchParams: any = { + filter, + offset: 0, + limit: 0, + facets: [collectionField], + }; + if (groupByProduct) { + searchParams.distinct = 'productId'; + } + const result = await index.search(input.term || '', searchParams); + + const collectionDistribution = result.facetDistribution?.[collectionField] || {}; + const collectionIds = Object.keys(collectionDistribution).slice( + 0, + this.options.searchConfig.collectionMaxSize, + ); + + if (collectionIds.length === 0) { + return []; + } + + const collections = await this.collectionService.findByIds(ctx, collectionIds); + return collections.map(collection => { + const count = collectionDistribution[collection.id.toString()] || 0; + return { collection, count }; + }); + } catch (e: any) { + Logger.error(e.message, loggerCtx, e.stack); + return []; + } + } + + async priceRange(ctx: RequestContext, input: MeilisearchSearchInput): Promise { + const indexUid = getIndexUid(this.options.indexPrefix, VARIANT_INDEX_NAME); + const index = this.client.index(indexUid); + const filter = this.buildFilter(ctx, input, true); + + try { + const result = await index.search(input.term || '', { + filter, + offset: 0, + limit: 0, + facets: ['price', 'priceWithTax'], + }); + + const facetStats = result.facetStats || {}; + const priceStats = facetStats.price || { min: 0, max: 0 }; + const priceWithTaxStats = facetStats.priceWithTax || { min: 0, max: 0 }; + + const bucketInterval = this.options.searchConfig.priceRangeBucketInterval; + + // Generate price buckets by searching with filter ranges + const buckets = await this.generatePriceBuckets( + index, + input.term || '', + filter, + 'price', + priceStats.min, + priceStats.max, + bucketInterval, + ); + + const bucketsWithTax = await this.generatePriceBuckets( + index, + input.term || '', + filter, + 'priceWithTax', + priceWithTaxStats.min, + priceWithTaxStats.max, + bucketInterval, + ); + + return { + range: { + min: Math.round(priceStats.min) || 0, + max: Math.round(priceStats.max) || 0, + }, + rangeWithTax: { + min: Math.round(priceWithTaxStats.min) || 0, + max: Math.round(priceWithTaxStats.max) || 0, + }, + buckets, + bucketsWithTax, + }; + } catch (e: any) { + Logger.error(e.message, loggerCtx, e.stack); + throw new InternalServerError( + 'An error occurred when querying Meilisearch for priceRange data', + ); + } + } + + /** + * Rebuilds the full search index. + */ + async reindex(ctx: RequestContext): Promise { + const job = await this.meilisearchIndexService.reindex(ctx); + return job; + } + + private async generatePriceBuckets( + index: any, + term: string, + baseFilter: string, + field: string, + min: number, + max: number, + interval: number, + ): Promise> { + const buckets: Array<{ to: number; count: number }> = []; + if (min === 0 && max === 0) { + return buckets; + } + let bucketStart = Math.floor(min / interval) * interval; + while (bucketStart <= max) { + const bucketEnd = bucketStart + interval; + const bucketFilter = baseFilter + ? `${baseFilter} AND ${field} >= ${bucketStart} AND ${field} < ${bucketEnd}` + : `${field} >= ${bucketStart} AND ${field} < ${bucketEnd}`; + + try { + const result = await index.search(term, { + filter: bucketFilter, + offset: 0, + limit: 0, + }); + const count = (result).estimatedTotalHits || (result).totalHits || 0; + if (count > 0) { + buckets.push({ to: bucketEnd, count }); + } + } catch { + // Skip this bucket if search fails + } + bucketStart = bucketEnd; + } + return buckets; + } + + private buildFilter( + ctx: RequestContext, + input: MeilisearchSearchInput, + enabledOnly: boolean, + ): string { + const filterParts: string[] = []; + + filterParts.push(`channelId = "${ctx.channelId}"`); + filterParts.push(`languageCode = "${ctx.languageCode}"`); + + if (enabledOnly) { + filterParts.push('enabled = true'); + } + + const { + facetValueIds, + facetValueOperator, + facetValueFilters, + collectionId, + collectionSlug, + groupByProduct, + priceRange, + priceRangeWithTax, + inStock, + } = input; + + if (facetValueIds && facetValueIds.length) { + if (facetValueOperator === LogicalOperator.AND) { + for (const id of facetValueIds) { + filterParts.push(`facetValueIds = "${id}"`); + } + } else { + const orParts = facetValueIds.map(id => `facetValueIds = "${id}"`); + filterParts.push(`(${orParts.join(' OR ')})`); + } + } + + if (facetValueFilters && facetValueFilters.length) { + for (const facetValueFilter of facetValueFilters) { + if (facetValueFilter.and && facetValueFilter.or && facetValueFilter.or.length) { + throw new UserInputError('error.facetfilterinput-invalid-input'); + } + if (facetValueFilter.and) { + filterParts.push(`facetValueIds = "${facetValueFilter.and}"`); + } + if (facetValueFilter.or && facetValueFilter.or.length) { + const orParts = facetValueFilter.or.map(id => `facetValueIds = "${id}"`); + filterParts.push(`(${orParts.join(' OR ')})`); + } + } + } + + if (collectionId) { + filterParts.push(`collectionIds = "${collectionId}"`); + } + const collectionIds = input.collectionIds as string[] | undefined; + if (collectionIds && collectionIds.length) { + const uniqueIds = Array.from(new Set(collectionIds)); + const orParts = uniqueIds.map(id => `collectionIds = "${id}"`); + filterParts.push(`(${orParts.join(' OR ')})`); + } + if (collectionSlug) { + filterParts.push(`collectionSlugs = "${collectionSlug}"`); + } + const collectionSlugs: string[] | undefined = input.collectionSlugs; + if (collectionSlugs && collectionSlugs.length) { + const uniqueSlugs = Array.from(new Set(collectionSlugs)); + const orParts = uniqueSlugs.map(slug => `collectionSlugs = "${slug}"`); + filterParts.push(`(${orParts.join(' OR ')})`); + } + + if (priceRange) { + filterParts.push(`price >= ${priceRange.min}`); + filterParts.push(`price <= ${priceRange.max}`); + } + if (priceRangeWithTax) { + filterParts.push(`priceWithTax >= ${priceRangeWithTax.min}`); + filterParts.push(`priceWithTax <= ${priceRangeWithTax.max}`); + } + + if (inStock !== undefined) { + if (groupByProduct) { + filterParts.push(`productInStock = ${inStock}`); + } else { + filterParts.push(`inStock = ${inStock}`); + } + } + + return filterParts.join(' AND '); + } + + private buildSort(input: MeilisearchSearchInput): string[] { + const sortArray: string[] = []; + if (input.sort) { + if (input.sort.name) { + sortArray.push(`productName:${input.sort.name === SortOrder.ASC ? 'asc' : 'desc'}`); + } + if (input.sort.price) { + sortArray.push(`price:${input.sort.price === SortOrder.ASC ? 'asc' : 'desc'}`); + } + } + return this.options.searchConfig.mapSort + ? this.options.searchConfig.mapSort(sortArray, input) + : sortArray; + } + + private mapVariantToSearchResult(hit: any): MeilisearchSearchResult { + const source: VariantIndexItem = hit; + const { productAsset, productVariantAsset } = this.getSearchResultAssets(source); + const result: any = { + ...source, + productAsset, + productVariantAsset, + price: { + value: source.price, + }, + priceWithTax: { + value: source.priceWithTax, + }, + score: (hit)._rankingScore || 0, + formattedProductName: hit._formatted?.productName ?? null, + formattedDescription: hit._formatted?.description ?? null, + }; + + MeilisearchService.addCustomMappings( + result, + source, + this.options.customProductMappings, + this.options.customProductVariantMappings, + false, + false, + ); + return result; + } + + private mapProductToSearchResult( + hit: any, + groupByProduct: boolean = false, + groupBySKU: boolean = false, + ): MeilisearchSearchResult { + const source: VariantIndexItem = hit; + const { productAsset, productVariantAsset } = this.getSearchResultAssets(source); + const result: any = { + ...source, + productAsset, + productVariantAsset, + enabled: source.productEnabled, + productId: source.productId.toString(), + productName: source.productName, + productVariantId: source.productVariantId.toString(), + productVariantName: source.productVariantName, + facetIds: source.productFacetIds as string[], + facetValueIds: source.productFacetValueIds as string[], + collectionIds: source.productCollectionIds as string[], + sku: source.sku, + slug: source.slug, + price: { + min: source.productPriceMin, + max: source.productPriceMax, + }, + priceWithTax: { + min: source.productPriceWithTaxMin, + max: source.productPriceWithTaxMax, + }, + channelIds: [], + inStock: source.productInStock, + score: (hit)._rankingScore || 0, + formattedProductName: hit._formatted?.productName ?? null, + formattedDescription: hit._formatted?.description ?? null, + }; + MeilisearchService.addCustomMappings( + result, + source, + this.options.customProductMappings, + this.options.customProductVariantMappings, + groupByProduct, + groupBySKU, + ); + return result; + } + + private getSearchResultAssets(source: ProductIndexItem | VariantIndexItem): { + productAsset: SearchResultAsset | undefined; + productVariantAsset: SearchResultAsset | undefined; + } { + const productAsset: SearchResultAsset | undefined = source.productAssetId + ? { + id: source.productAssetId.toString(), + preview: source.productPreview, + focalPoint: source.productPreviewFocalPoint, + } + : undefined; + const productVariantAsset: SearchResultAsset | undefined = source.productVariantAssetId + ? { + id: source.productVariantAssetId.toString(), + preview: source.productVariantPreview, + focalPoint: source.productVariantPreviewFocalPoint, + } + : undefined; + return { productAsset, productVariantAsset }; + } + + private static addCustomMappings( + result: any, + source: any, + productMappings: { [fieldName: string]: CustomMapping }, + variantMappings: { [fieldName: string]: CustomMapping }, + groupByProduct: boolean, + groupBySKU: boolean, + ): any { + const productCustomMappings = Object.keys(productMappings); + if (productCustomMappings.length) { + const customMappingsResult: any = {}; + for (const name of productCustomMappings) { + customMappingsResult[name] = source[`product-${name}`]; + } + result.customProductMappings = customMappingsResult; + if (groupByProduct || groupBySKU) { + result.customMappings = customMappingsResult; + } + } + const variantCustomMappings = Object.keys(variantMappings); + if (variantCustomMappings.length) { + const customMappingsResult: any = {}; + for (const name of variantCustomMappings) { + customMappingsResult[name] = source[`variant-${name}`]; + } + result.customProductVariantMappings = customMappingsResult; + if (!groupByProduct && !groupBySKU) { + result.customMappings = customMappingsResult; + } + } + return result; + } +} diff --git a/packages/meilisearch-plugin/src/options.ts b/packages/meilisearch-plugin/src/options.ts new file mode 100644 index 00000000..1879baef --- /dev/null +++ b/packages/meilisearch-plugin/src/options.ts @@ -0,0 +1,635 @@ +import { + DeepRequired, + EntityRelationPaths, + ID, + Injector, + LanguageCode, + Product, + ProductVariant, + RequestContext, +} from '@vendure/core'; +import deepmerge from 'deepmerge'; + +import { + CustomMapping, + GraphQlPrimitive, + MeilisearchSearchInput, + PrimitiveTypeVariations, +} from './types'; + +/** + * @description + * Configuration for typo tolerance behavior. + */ +export interface TypoToleranceConfig { + /** + * @description + * Whether typo tolerance is enabled. Defaults to `true`. + */ + enabled?: boolean; + /** + * @description + * Minimum word size for 1 typo to be allowed. Defaults to 5. + */ + minWordSizeForOneTypo?: number; + /** + * @description + * Minimum word size for 2 typos to be allowed. Defaults to 9. + */ + minWordSizeForTwoTypos?: number; + /** + * @description + * A list of words for which typo tolerance is disabled. + * Useful for brand names or technical terms that must be exact. + * + * @example + * ```ts + * ['iPhone', 'Samsung', 'MacBook'] + * ``` + */ + disableOnWords?: string[]; + /** + * @description + * A list of attributes for which typo tolerance is disabled. + * + * @example + * ```ts + * ['sku'] // SKU must match exactly + * ``` + */ + disableOnAttributes?: string[]; +} + +/** + * @description + * Configuration options for the MeilisearchPlugin. + * + * @example + * ```ts + * MeilisearchPlugin.init({ + * host: 'http://localhost:7700', + * apiKey: 'masterKey', + * synonyms: { + * phone: ['mobile', 'smartphone'], + * laptop: ['notebook'], + * }, + * }) + * ``` + * + * @docsCategory MeilisearchPlugin + */ +export interface MeilisearchOptions { + /** + * @description + * The host URL of the Meilisearch server. + * + * @default 'http://localhost:7700' + */ + host?: string; + /** + * @description + * The API key for the Meilisearch server. + * This is the master key or admin key used for indexing operations. + * + * @default '' + */ + apiKey?: string; + /** + * @description + * Maximum amount of attempts made to connect to the Meilisearch server on startup. + * + * @default 10 + */ + connectionAttempts?: number; + /** + * @description + * Interval in milliseconds between attempts to connect to the Meilisearch server on startup. + * + * @default 5000 + */ + connectionAttemptInterval?: number; + /** + * @description + * Prefix for the indices created by the plugin. + * + * @default 'vendure-' + */ + indexPrefix?: string; + /** + * @description + * Products limit chunk size for each loop iteration when indexing products. + * + * @default 2500 + */ + reindexProductsChunkSize?: number; + /** + * @description + * Batch size for document additions during reindexing. + * Meilisearch handles documents in batches for optimal performance. + * + * @default 1000 + */ + reindexBatchSize?: number; + /** + * @description + * Configuration of the internal Meilisearch search query. + */ + searchConfig?: SearchConfig; + /** + * @description + * Custom product mappings for additional data in the search index. + */ + customProductMappings?: { + [fieldName: string]: CustomMapping< + [Product, ProductVariant[], LanguageCode, Injector, RequestContext] + >; + }; + /** + * @description + * Custom product variant mappings for additional data in the search index. + */ + customProductVariantMappings?: { + [fieldName: string]: CustomMapping<[ProductVariant, LanguageCode, Injector, RequestContext]>; + }; + /** + * @description + * If set to `true`, updates to Products, ProductVariants and Collections will not immediately + * trigger an update to the search index. Instead, all these changes will be buffered and will + * only be run via a call to the `runPendingSearchIndexUpdates` mutation in the Admin API. + * + * @default false + */ + bufferUpdates?: boolean; + /** + * @description + * Additional product relations that will be fetched from DB while reindexing. + * + * @default [] + */ + hydrateProductRelations?: Array>; + /** + * @description + * Additional variant relations that will be fetched from DB while reindexing. + * + * @default [] + */ + hydrateProductVariantRelations?: Array>; + /** + * @description + * Allows the `SearchInput` type to be extended with new input fields. + * + * @default {} + */ + extendSearchInputType?: { + [name: string]: PrimitiveTypeVariations; + }; + /** + * @description + * Adds a list of sort parameters. + * + * @default [] + */ + extendSearchSortType?: string[]; + + // ───────────────────────────── Relevancy Tuning ───────────────────────────── + + /** + * @description + * A map of synonyms. Each key is a word, and its value is an array of + * synonymous words. This allows users to find products regardless of + * which synonym they use. + * + * Synonyms are **automatically expanded bidirectionally** — you only need + * to define one direction (e.g. `laptop: ['notebook']`) and the reverse + * mapping (`notebook: ['laptop']`) is generated automatically. + * + * @example + * ```ts + * synonyms: { + * phone: ['mobile', 'smartphone', 'cellphone'], + * laptop: ['notebook', 'portable computer'], + * tv: ['television', 'monitor', 'screen'], + * } + * ``` + * + * @default undefined (no synonyms) + */ + synonyms?: Record; + + /** + * @description + * A list of words to ignore during search. Common stop words like + * "the", "a", "is" can be filtered out for cleaner results. + * + * @example + * ```ts + * stopWords: ['the', 'a', 'an', 'is', 'for', 'and', 'of', 'to', 'in'] + * ``` + * + * @default undefined (no stop words) + */ + stopWords?: string[]; + + /** + * @description + * Custom ranking rules for controlling how search results are ordered. + * Meilisearch applies these rules in order using a bucket sort algorithm - + * the first rule has the most impact. + * + * Built-in rules: `'words'`, `'typo'`, `'proximity'`, `'attribute'`, `'sort'`, `'exactness'` + * + * You can also add custom ranking rules using attribute names followed by `:asc` or `:desc`. + * + * @example + * ```ts + * // Prioritize in-stock products, then sort by price + * rankingRules: ['words', 'typo', 'proximity', 'attribute', 'sort', 'exactness', 'productInStock:desc'] + * ``` + * + * @default undefined (Meilisearch defaults) + */ + rankingRules?: string[]; + + /** + * @description + * Configuration for typo tolerance. Allows you to control how Meilisearch + * handles misspellings in search queries. + * + * @example + * ```ts + * typoTolerance: { + * enabled: true, + * disableOnAttributes: ['sku'], // SKU must match exactly + * disableOnWords: ['iPhone'], // Brand names must be exact + * minWordSizeForOneTypo: 4, + * minWordSizeForTwoTypos: 8, + * } + * ``` + * + * @default undefined (Meilisearch defaults: typo tolerance enabled) + */ + typoTolerance?: TypoToleranceConfig; +} + +/** + * @description + * Matching strategy used by Meilisearch to match query terms. + * + * - `'last'` - Returns documents containing all the query terms first, then + * those with fewer terms. This is the default strategy. + * - `'all'` - Only returns documents that contain all query terms. + * Documents missing any query terms are not returned. + * - `'frequency'` - Returns documents containing the most frequent query terms first. + * Less common terms are prioritized as they carry more meaning. + */ +export type MatchingStrategy = 'last' | 'all' | 'frequency'; + +/** + * @description + * Configuration options for the internal Meilisearch query generated when performing a search. + * + * @example + * ```ts + * searchConfig: { + * // Show highlighting in results + * attributesToHighlight: ['productName', 'description'], + * highlightPreTag: '', + * highlightPostTag: '', + * + * // Crop long descriptions + * attributesToCrop: ['description'], + * cropLength: 30, + * + * // Only return results that match all query terms + * matchingStrategy: 'all', + * + * // Filter out low-relevance results + * rankingScoreThreshold: 0.3, + * + * // Show ranking scores for debugging + * showRankingScore: true, + * } + * ``` + */ +export interface SearchConfig { + /** + * @description + * The maximum number of FacetValues to return from the search query. + * + * @default 50 + */ + facetValueMaxSize?: number; + /** + * @description + * The maximum number of Collections to return from the search query. + * + * @default 50 + */ + collectionMaxSize?: number; + /** + * @description + * The maximum number of totalItems to return from the search query. + * + * @default 10000 + */ + totalItemsMaxSize?: number; + /** + * @description + * The interval used to group search results into price range buckets. + * + * @default 1000 + */ + priceRangeBucketInterval?: number; + + // ───────────────────────────── Matching & Relevancy ───────────────────────────── + + /** + * @description + * Strategy used to match query terms within documents. + * + * - `'last'` (default) - Returns documents with all query terms first, then + * progressively returns those missing less important terms. + * - `'all'` - Only returns documents containing **all** query terms. + * Useful for strict/exact matching. + * - `'frequency'` - Prioritizes less common (more meaningful) query terms + * and returns documents containing those first. + * + * @default 'last' + * + * @example + * ```ts + * // Only return products that match ALL search terms + * matchingStrategy: 'all' + * ``` + */ + matchingStrategy?: MatchingStrategy; + + /** + * @description + * Restrict search to the specified attributes only. Documents are still + * returned with all their fields, but only the listed attributes are + * searched for matches. + * + * If not set, all searchable attributes are searched. + * + * @example + * ```ts + * // Only search in product name and SKU, ignore description + * attributesToSearchOn: ['productName', 'sku'] + * ``` + * + * @default undefined (all searchable attributes) + */ + attributesToSearchOn?: string[]; + + /** + * @description + * Attributes to display in the returned documents. Use `['*']` to return + * all attributes (default). + * + * @default undefined (all attributes) + */ + attributesToRetrieve?: string[]; + + /** + * @description + * Minimum ranking score threshold (0.0 to 1.0). Documents with scores + * below this value are excluded from search results. + * + * Useful for filtering out low-relevance results, especially with + * AI-powered hybrid search where semantic matches may be weak. + * + * @example + * ```ts + * // Only return results with at least 30% relevance + * rankingScoreThreshold: 0.3 + * ``` + * + * @default undefined (no threshold) + */ + rankingScoreThreshold?: number; + + // ───────────────────────────── Highlighting ───────────────────────────── + + /** + * @description + * Attributes whose matching terms should be highlighted in the response. + * Highlighted results are returned in the `_formatted` field of each hit. + * + * Use `['*']` to highlight all searchable attributes. + * + * @example + * ```ts + * attributesToHighlight: ['productName', 'description'] + * ``` + * + * @default undefined (no highlighting) + */ + attributesToHighlight?: string[]; + + /** + * @description + * HTML/string tag inserted **before** a highlighted term. + * + * @default '' + * + * @example + * ```ts + * highlightPreTag: '' + * ``` + */ + highlightPreTag?: string; + + /** + * @description + * HTML/string tag inserted **after** a highlighted term. + * + * @default '' + * + * @example + * ```ts + * highlightPostTag: '' + * ``` + */ + highlightPostTag?: string; + + // ───────────────────────────── Cropping ───────────────────────────── + + /** + * @description + * Attributes whose values should be cropped (truncated around matched terms). + * Cropped results are returned in the `_formatted` field of each hit. + * + * Each entry can optionally include a custom crop length: + * `'description:20'` crops the description to 20 words. + * + * Use `['*']` to crop all searchable attributes. + * + * @example + * ```ts + * attributesToCrop: ['description', 'overview:15'] + * ``` + * + * @default undefined (no cropping) + */ + attributesToCrop?: string[]; + + /** + * @description + * Default maximum length (in words) of cropped attribute values. + * Individual attributes can override this via `'attribute:length'` syntax + * in `attributesToCrop`. + * + * @default 10 + */ + cropLength?: number; + + /** + * @description + * String used to mark crop boundaries (ellipsis marker). + * + * @default '…' + * + * @example + * ```ts + * cropMarker: '...' + * ``` + */ + cropMarker?: string; + + // ───────────────────────────── Debug / Scoring ───────────────────────────── + + /** + * @description + * When `true`, adds a `_matchesPosition` field to each hit showing the + * exact byte offsets where query terms were found. Useful for building + * custom highlighting on the client side. + * + * @default false + */ + showMatchesPosition?: boolean; + + /** + * @description + * When `true`, includes a `_rankingScore` field (0.0 to 1.0) in each hit + * representing the global relevance score. Useful for debugging relevance + * and understanding why certain results rank higher. + * + * @default false + */ + showRankingScore?: boolean; + + /** + * @description + * When `true`, includes a `_rankingScoreDetails` field in each hit with + * a detailed breakdown of the score per ranking rule (words, typo, + * proximity, attribute, sort, exactness, etc.). + * + * Useful for fine-tuning ranking rules and understanding relevance. + * + * @default false + */ + showRankingScoreDetails?: boolean; + + // ───────────────────────────── Hooks ───────────────────────────── + + /** + * @description + * Allows modification of the whole search query before it is sent to Meilisearch. + * This is the most powerful hook - you can override or add any Meilisearch + * search parameter here. + * + * @example + * ```ts + * mapQuery: (query, input, searchConfig, channelId, enabledOnly, ctx) => { + * // Add custom filter based on user role + * if (ctx.activeUser?.roles?.includes('wholesale')) { + * query.filter += ' AND wholesaleOnly = true'; + * } + * return query; + * } + * ``` + */ + mapQuery?: ( + query: any, + input: MeilisearchSearchInput, + searchConfig: MeilisearchRuntimeOptions['searchConfig'], + channelId: ID, + enabledOnly: boolean, + ctx: RequestContext, + ) => any; + /** + * @description + * Allows extending the sort parameter of the Meilisearch query. + */ + mapSort?: (sort: string[], input: MeilisearchSearchInput) => string[]; +} + +/** + * The required core search config fields that always have defaults. + */ +export interface SearchConfigDefaults { + facetValueMaxSize: number; + collectionMaxSize: number; + totalItemsMaxSize: number; + priceRangeBucketInterval: number; + mapQuery: ( + query: any, + input: MeilisearchSearchInput, + searchConfig: SearchConfigDefaults, + channelId: ID, + enabledOnly: boolean, + ctx: RequestContext, + ) => any; + mapSort: (sort: string[], input: MeilisearchSearchInput) => string[]; +} + +export type MeilisearchRuntimeOptions = DeepRequired< + Omit +> & { + searchConfig: SearchConfigDefaults & Omit; + synonyms?: Record; + stopWords?: string[]; + rankingRules?: string[]; + typoTolerance?: TypoToleranceConfig; +}; + +export const defaultOptions: MeilisearchRuntimeOptions = { + host: 'http://localhost:7700', + apiKey: '', + connectionAttempts: 10, + connectionAttemptInterval: 5000, + indexPrefix: 'vendure-', + reindexProductsChunkSize: 2500, + reindexBatchSize: 1000, + searchConfig: { + facetValueMaxSize: 50, + collectionMaxSize: 50, + totalItemsMaxSize: 10000, + priceRangeBucketInterval: 1000, + mapQuery: query => query, + mapSort: sort => sort, + }, + customProductMappings: {}, + customProductVariantMappings: {}, + bufferUpdates: false, + hydrateProductRelations: [], + hydrateProductVariantRelations: [], + extendSearchInputType: {}, + extendSearchSortType: [], +}; + +export function mergeWithDefaults(userOptions: MeilisearchOptions): MeilisearchRuntimeOptions { + const { synonyms, stopWords, rankingRules, typoTolerance, searchConfig, ...rest } = userOptions; + const merged = deepmerge(defaultOptions, rest) as MeilisearchRuntimeOptions; + // Deep merge searchConfig to preserve user overrides alongside defaults + if (searchConfig) { + merged.searchConfig = deepmerge(defaultOptions.searchConfig, searchConfig) as MeilisearchRuntimeOptions['searchConfig']; + } + // These optional configs are not deep-merged to avoid weird array merging behavior + if (synonyms) merged.synonyms = synonyms; + if (stopWords) merged.stopWords = stopWords; + if (rankingRules) merged.rankingRules = rankingRules; + if (typoTolerance) merged.typoTolerance = typoTolerance; + return merged; +} diff --git a/packages/meilisearch-plugin/src/plugin.ts b/packages/meilisearch-plugin/src/plugin.ts new file mode 100644 index 00000000..26029652 --- /dev/null +++ b/packages/meilisearch-plugin/src/plugin.ts @@ -0,0 +1,249 @@ +import { OnApplicationBootstrap } from '@nestjs/common'; +import { + AssetEvent, + BUFFER_SEARCH_INDEX_UPDATES, + CollectionModificationEvent, + EventBus, + HealthCheckRegistryService, + ID, + idsAreEqual, + Logger, + PluginCommonModule, + ProductChannelEvent, + ProductEvent, + ProductVariantChannelEvent, + ProductVariantEvent, + SearchJobBufferService, + StockMovementEvent, + TaxRateModificationEvent, + Type, + VendurePlugin, +} from '@vendure/core'; +import { buffer, debounceTime, delay, filter, map } from 'rxjs/operators'; + +import { generateSchemaExtensions } from './api/api-extensions'; +import { CustomMappingsResolver } from './api/custom-mappings.resolver'; +import { + AdminMeilisearchResolver, + EntityMeilisearchResolver, + ShopMeilisearchResolver, +} from './api/meilisearch-resolver'; +import { MEILISEARCH_OPTIONS, loggerCtx } from './constants'; +import { MeilisearchIndexerController } from './indexing/indexer.controller'; +import { MeilisearchIndexService } from './indexing/meilisearch-index.service'; +import { MeilisearchHealthIndicator } from './meilisearch.health'; +import { MeilisearchService } from './meilisearch.service'; +import { MeilisearchOptions, MeilisearchRuntimeOptions, mergeWithDefaults } from './options'; + +function getCustomResolvers(options: MeilisearchRuntimeOptions) { + const requiresUnionResolver = + 0 < Object.keys(options.customProductMappings || {}).length && + 0 < Object.keys(options.customProductVariantMappings || {}).length; + return [ + ...(requiresUnionResolver ? [CustomMappingsResolver] : []), + ]; +} + +/** + * @description + * This plugin allows your product search to be powered by + * [Meilisearch](https://www.meilisearch.com/) - a powerful, fast, open-source search engine. + * This is a drop-in replacement for the DefaultSearchPlugin which exposes configuration options + * enabling your storefront to support a wide range of use-cases such as indexing of custom + * properties, facet filtering, and price range searches. + * + * ## Installation + * + * `yarn add meilisearch` + * + * or + * + * `npm install meilisearch` + * + * Make sure to remove the `DefaultSearchPlugin` if it is still in the VendureConfig plugins array. + * + * Then add the `MeilisearchPlugin`, calling the `.init()` method with {@link MeilisearchOptions}: + * + * @example + * ```ts + * import { MeilisearchPlugin } from './plugins/meilisearch/src/plugin'; + * + * const config: VendureConfig = { + * plugins: [ + * MeilisearchPlugin.init({ + * host: 'http://localhost:7700', + * apiKey: 'your-master-key', + * synonyms: { + * phone: ['mobile', 'smartphone'], + * laptop: ['notebook'], + * }, + * stopWords: ['the', 'a', 'an'], + * }), + * ], + * }; + * ``` + * + * @docsCategory MeilisearchPlugin + */ +@VendurePlugin({ + imports: [PluginCommonModule], + providers: [ + MeilisearchIndexService, + MeilisearchService, + MeilisearchHealthIndicator, + MeilisearchIndexerController, + SearchJobBufferService, + { provide: MEILISEARCH_OPTIONS, useFactory: () => MeilisearchPlugin.options }, + { + provide: BUFFER_SEARCH_INDEX_UPDATES, + useFactory: () => MeilisearchPlugin.options.bufferUpdates === true, + }, + ], + adminApiExtensions: { + resolvers: () => [ + AdminMeilisearchResolver, + EntityMeilisearchResolver, + ...getCustomResolvers(MeilisearchPlugin.options), + ], + schema: () => generateSchemaExtensions(MeilisearchPlugin.options as any), + }, + shopApiExtensions: { + resolvers: () => [ + ShopMeilisearchResolver, + EntityMeilisearchResolver, + ...getCustomResolvers(MeilisearchPlugin.options), + ], + schema: () => generateSchemaExtensions(MeilisearchPlugin.options as any), + }, + compatibility: '^3.0.0', +}) +export class MeilisearchPlugin implements OnApplicationBootstrap { + private static options: MeilisearchRuntimeOptions; + + /** @internal */ + constructor( + private eventBus: EventBus, + private meilisearchService: MeilisearchService, + private meilisearchIndexService: MeilisearchIndexService, + private meilisearchHealthIndicator: MeilisearchHealthIndicator, + private healthCheckRegistryService: HealthCheckRegistryService, + ) {} + + /** + * Set the plugin options. + */ + static init(options: MeilisearchOptions): Type { + this.options = mergeWithDefaults(options); + return MeilisearchPlugin; + } + + /** @internal */ + async onApplicationBootstrap(): Promise { + const host = MeilisearchPlugin.options.host; + try { + await this.meilisearchService.checkConnection(); + } catch (e: any) { + Logger.error(`Could not connect to Meilisearch instance at "${host}"`, loggerCtx); + Logger.error(JSON.stringify(e), loggerCtx); + this.healthCheckRegistryService.registerIndicatorFunction(() => + this.meilisearchHealthIndicator.startupCheckFailed(e.message), + ); + return; + } + Logger.info(`Successfully connected to Meilisearch instance at "${host}"`, loggerCtx); + + await this.meilisearchService.createIndicesIfNotExists(); + this.healthCheckRegistryService.registerIndicatorFunction(() => + this.meilisearchHealthIndicator.isHealthy(), + ); + + this.eventBus.ofType(ProductEvent).subscribe(event => { + if (event.type === 'deleted') { + return this.meilisearchIndexService.deleteProduct(event.ctx, event.product); + } else { + return this.meilisearchIndexService.updateProduct(event.ctx, event.product); + } + }); + this.eventBus.ofType(ProductVariantEvent).subscribe(event => { + if (event.type === 'deleted') { + return this.meilisearchIndexService.deleteVariant(event.ctx, event.variants); + } else { + return this.meilisearchIndexService.updateVariants(event.ctx, event.variants); + } + }); + this.eventBus.ofType(AssetEvent).subscribe(event => { + if (event.type === 'updated') { + return this.meilisearchIndexService.updateAsset(event.ctx, event.asset); + } + if (event.type === 'deleted') { + return this.meilisearchIndexService.deleteAsset(event.ctx, event.asset); + } + }); + + this.eventBus.ofType(ProductChannelEvent).subscribe(event => { + if (event.type === 'assigned') { + return this.meilisearchIndexService.assignProductToChannel( + event.ctx, + event.product, + event.channelId, + ); + } else { + return this.meilisearchIndexService.removeProductFromChannel( + event.ctx, + event.product, + event.channelId, + ); + } + }); + + this.eventBus.ofType(ProductVariantChannelEvent).subscribe(event => { + if (event.type === 'assigned') { + return this.meilisearchIndexService.assignVariantToChannel( + event.ctx, + event.productVariant.id, + event.channelId, + ); + } else { + return this.meilisearchIndexService.removeVariantFromChannel( + event.ctx, + event.productVariant.id, + event.channelId, + ); + } + }); + + this.eventBus.ofType(StockMovementEvent).subscribe(event => { + return this.meilisearchIndexService.updateVariants( + event.ctx, + event.stockMovements.map(m => m.productVariant), + ); + }); + + // Buffer collection modification events to batch process them + const collectionModification$ = this.eventBus.ofType(CollectionModificationEvent); + const closingNotifier$ = collectionModification$.pipe(debounceTime(50)); + collectionModification$ + .pipe( + buffer(closingNotifier$), + filter(events => 0 < events.length), + map(events => ({ + ctx: events[0].ctx, + ids: events.reduce((ids, e) => [...ids, ...e.productVariantIds], [] as ID[]), + })), + filter(e => 0 < e.ids.length), + ) + .subscribe(events => { + return this.meilisearchIndexService.updateVariantsById(events.ctx, events.ids); + }); + + this.eventBus + .ofType(TaxRateModificationEvent) + .pipe(delay(1)) + .subscribe(event => { + const defaultTaxZone = event.ctx.channel.defaultTaxZone; + if (defaultTaxZone && idsAreEqual(defaultTaxZone.id, event.taxRate.zone.id)) { + return this.meilisearchService.reindex(event.ctx); + } + }); + } +} diff --git a/packages/meilisearch-plugin/src/types.ts b/packages/meilisearch-plugin/src/types.ts new file mode 100644 index 00000000..30fdd634 --- /dev/null +++ b/packages/meilisearch-plugin/src/types.ts @@ -0,0 +1,204 @@ +import { + Coordinate, + CurrencyCode, + LanguageCode, + PriceRange, + SearchInput, + SearchResponse, + SearchResult, +} from '@vendure/common/lib/generated-types'; +import { ID, JsonCompatible } from '@vendure/common/lib/shared-types'; +import { Asset, SerializedRequestContext } from '@vendure/core'; + +export type MeilisearchSearchResult = SearchResult & { + inStock: boolean; +}; + +export type MeilisearchSearchInput = SearchInput & { + priceRange?: PriceRange; + priceRangeWithTax?: PriceRange; + inStock?: boolean; + groupBySKU?: boolean; + [extendedInputField: string]: any; +}; + +export type MeilisearchSearchResponse = SearchResponse & { + priceRange: SearchPriceData; + items: MeilisearchSearchResult[]; +}; + +export type SearchPriceData = { + range: PriceRange; + rangeWithTax: PriceRange; + buckets: PriceRangeBucket[]; + bucketsWithTax: PriceRangeBucket[]; +}; + +export type PriceRangeBucket = { + to: number; + count: number; +}; + +export type MeilisearchSortInput = string[]; + +export type IndexItemAssets = { + productAssetId: ID | undefined; + productPreview: string; + productPreviewFocalPoint: Coordinate | undefined; + productVariantAssetId: ID | undefined; + productVariantPreview: string; + productVariantPreviewFocalPoint: Coordinate | undefined; +}; + +export type VariantIndexItem = Omit< + SearchResult, + 'score' | 'price' | 'priceWithTax' | 'productAsset' | 'productVariantAsset' +> & + IndexItemAssets & { + id: string; // Meilisearch requires an `id` primary key + channelId: ID; + languageCode: LanguageCode; + price: number; + priceWithTax: number; + collectionSlugs: string[]; + productEnabled: boolean; + productPriceMin: number; + productPriceMax: number; + productPriceWithTaxMin: number; + productPriceWithTaxMax: number; + productFacetIds: ID[]; + productFacetValueIds: ID[]; + productCollectionIds: ID[]; + productCollectionSlugs: string[]; + productChannelIds: ID[]; + [customMapping: string]: any; + inStock: boolean; + productInStock: boolean; + }; + +export type ProductIndexItem = IndexItemAssets & { + id: string; + sku: string; + slug: string; + productId: ID; + channelId: ID; + languageCode: LanguageCode; + productName: string; + productVariantId: ID; + productVariantName: string; + currencyCode: CurrencyCode; + description: string; + facetIds: ID[]; + facetValueIds: ID[]; + collectionIds: ID[]; + collectionSlugs: string[]; + channelIds: ID[]; + enabled: boolean; + productEnabled: boolean; + priceMin: number; + priceMax: number; + priceWithTaxMin: number; + priceWithTaxMax: number; + [customMapping: string]: any; +}; + +export interface ReindexMessageResponse { + total: number; + completed: number; + duration: number; +} + +export type ReindexMessageData = { + ctx: SerializedRequestContext; +}; + +export type UpdateProductMessageData = { + ctx: SerializedRequestContext; + productId: ID; +}; + +export type UpdateVariantMessageData = { + ctx: SerializedRequestContext; + variantIds: ID[]; +}; + +export interface UpdateVariantsByIdMessageData { + ctx: SerializedRequestContext; + ids: ID[]; +} + +export interface ProductChannelMessageData { + ctx: SerializedRequestContext; + productId: ID; + channelId: ID; +} + +export type VariantChannelMessageData = { + ctx: SerializedRequestContext; + productVariantId: ID; + channelId: ID; +}; + +export interface UpdateAssetMessageData { + ctx: SerializedRequestContext; + asset: JsonCompatible>; +} + +type Maybe = T | undefined; +type NamedJobData = { type: Type } & MessageData; + +export type ReindexJobData = NamedJobData<'reindex', ReindexMessageData>; +type UpdateProductJobData = NamedJobData<'update-product', UpdateProductMessageData>; +type UpdateVariantsJobData = NamedJobData<'update-variants', UpdateVariantMessageData>; +type DeleteProductJobData = NamedJobData<'delete-product', UpdateProductMessageData>; +type DeleteVariantJobData = NamedJobData<'delete-variant', UpdateVariantMessageData>; +type UpdateVariantsByIdJobData = NamedJobData<'update-variants-by-id', UpdateVariantsByIdMessageData>; +type UpdateAssetJobData = NamedJobData<'update-asset', UpdateAssetMessageData>; +type DeleteAssetJobData = NamedJobData<'delete-asset', UpdateAssetMessageData>; +type AssignProductToChannelJobData = NamedJobData<'assign-product-to-channel', ProductChannelMessageData>; +type RemoveProductFromChannelJobData = NamedJobData<'remove-product-from-channel', ProductChannelMessageData>; +type AssignVariantToChannelJobData = NamedJobData<'assign-variant-to-channel', VariantChannelMessageData>; +type RemoveVariantFromChannelJobData = NamedJobData<'remove-variant-from-channel', VariantChannelMessageData>; +export type UpdateIndexQueueJobData = + | ReindexJobData + | UpdateProductJobData + | UpdateVariantsJobData + | DeleteProductJobData + | DeleteVariantJobData + | UpdateVariantsByIdJobData + | UpdateAssetJobData + | DeleteAssetJobData + | AssignProductToChannelJobData + | RemoveProductFromChannelJobData + | AssignVariantToChannelJobData + | RemoveVariantFromChannelJobData; + +export type GraphQlPrimitive = 'ID' | 'String' | 'Int' | 'Float' | 'Boolean'; +export type PrimitiveTypeVariations = T | `${T}!` | `[${T}!]` | `[${T}!]!`; +type GraphQlPermittedReturnType = PrimitiveTypeVariations; + +type CustomMappingDefinition = { + graphQlType: T; + public?: boolean; + valueFn: (...args: Args) => Promise | R; +}; + +type TypeVariationMap = { + [Key in PrimitiveTypeVariations]: Key extends `[${string}!]!` + ? TsType[] + : Key extends `[${string}!]` + ? Maybe + : Key extends `${string}!` + ? TsType + : Maybe; +}; + +type GraphQlTypeMap = TypeVariationMap<'ID', ID> & + TypeVariationMap<'String', string> & + TypeVariationMap<'Int', number> & + TypeVariationMap<'Float', number> & + TypeVariationMap<'Boolean', boolean>; + +export type CustomMapping = { + [Type in GraphQlPermittedReturnType]: CustomMappingDefinition; +}[GraphQlPermittedReturnType]; diff --git a/packages/meilisearch-plugin/tsconfig.build.json b/packages/meilisearch-plugin/tsconfig.build.json new file mode 100644 index 00000000..c2714d19 --- /dev/null +++ b/packages/meilisearch-plugin/tsconfig.build.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./lib" + }, + "files": ["./index.ts"] +} diff --git a/packages/meilisearch-plugin/tsconfig.json b/packages/meilisearch-plugin/tsconfig.json new file mode 100644 index 00000000..d1595016 --- /dev/null +++ b/packages/meilisearch-plugin/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "declaration": true, + "removeComments": false, + "noLib": false, + "skipLibCheck": true, + "sourceMap": true + } +} diff --git a/scripts/docs/docs-packages.ts b/scripts/docs/docs-packages.ts index 414056f1..4c0b8f35 100644 --- a/scripts/docs/docs-packages.ts +++ b/scripts/docs/docs-packages.ts @@ -11,6 +11,7 @@ export interface DocsPackageConfig { export const docsPackages: DocsPackageConfig[] = [ { packageDir: 'braintree-plugin', docsDir: 'braintree-plugin' }, { packageDir: 'elasticsearch-plugin', docsDir: 'elasticsearch-plugin' }, + { packageDir: 'meilisearch-plugin', docsDir: 'meilisearch-plugin' }, { packageDir: 'mollie-plugin', docsDir: 'mollie-plugin', exclude: [/generated-shop-types/] }, { packageDir: 'pub-sub-plugin', docsDir: 'pub-sub-plugin' }, { packageDir: 'punchout-gateway-plugin', docsDir: 'punch-out-gateway-plugin' },