type Query { products(languageCode: LanguageCode, take: Int, skip: Int): ProductList! product(id: ID!, languageCode: LanguageCode): Product } type Mutation { "Create a new Product" createProduct(input: CreateProductInput): Product! "Update an existing Product" updateProduct(input: UpdateProductInput): Product! "Add an OptionGroup to a Product" addOptionGroupToProduct(productId: ID!, optionGroupId: ID!): Product! "Remove an OptionGroup from a Product" removeOptionGroupFromProduct(productId: ID!, optionGroupId: ID!): Product! "Create a set of ProductVariants based on the OptionGroups assigned to the given Product" generateVariantsForProduct(productId: ID!): [ProductVariant!]! "Update existing ProductVariants" updateProductVariants(input: [UpdateProductVariantInput!]!): [ProductVariant]! } type ProductList implements PaginatedList { items: [Product!]! totalItems: Int! }