product.tpl 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807
  1. type Query {
  2. # Returns a Product resource by ID.
  3. product(id: ID!): Product
  4. # Return a product by its handle.
  5. productByHandle(handle: String!): Product
  6. # Returns the product resource feedback for the currently authenticated app.
  7. productResourceFeedback(id: ID!): ProductResourceFeedback
  8. # Returns a list of the shop's product saved searches.
  9. productSavedSearches(
  10. after: String
  11. before: String
  12. first: Int
  13. last: Int
  14. reverse: Boolean = false
  15. ): SavedSearchConnection!
  16. # Returns a ProductVariant resource by ID.
  17. productVariant(id: ID!): ProductVariant
  18. # List of the product variants.
  19. productVariants(
  20. after: String
  21. before: String
  22. first: Int
  23. last: Int
  24. query: String
  25. reverse: Boolean = false
  26. savedSearchId: ID
  27. sortKey: ProductVariantSortKeys = ID
  28. ): ProductVariantConnection!
  29. # List of products.
  30. products(
  31. after: String
  32. before: String
  33. first: Int
  34. last: Int
  35. query: String
  36. reverse: Boolean = false
  37. savedSearchId: ID
  38. sortKey: ProductSortKeys = ID
  39. ): ProductConnection!
  40. }
  41. type Mutation {
  42. # Appends images to a product.
  43. productAppendImages(input: ProductAppendImagesInput!): ProductAppendImagesPayload
  44. # Changes the status of a product. This allows you to set the availability of the product across all channels.
  45. productChangeStatus(productId: ID! status: ProductStatus!): ProductChangeStatusPayload
  46. # Creates a product.
  47. #
  48. # If you need to create a product with many variants that are active at several locations,
  49. # especially with a lot of collections and tags, then you should first create the product with just the variants.
  50. #
  51. # After the product is created, you can activate the variants at locations
  52. # and add the other related objects to the product. This reduces the size of each mutation and increases the likelihood that it will
  53. # complete before the operation times out.
  54. #
  55. # The following example shows how you might break up product creation and object association into multiple steps:
  56. #
  57. # Create the product with variants. Don't specify any tags or collections on the product, and don't specify
  58. # inventory quantities for each variant.
  59. #
  60. # After the product is created, add tags to the product using the tagsAdd mutation, and add collections using the
  61. # collectionsAddProducts mutation.
  62. #
  63. # Use the inventoryBulkToggleActivation mutation on each inventory item to activate it at the appropriate locations.
  64. #
  65. # After activating the variants at the locations, adjust inventory quantities at each location using the
  66. # inventoryBulkAdjustQuantityAtLocation mutation.
  67. productCreate(input: ProductInput! media: [CreateMediaInput!]): ProductCreatePayload
  68. # Creates media for a product
  69. productCreateMedia(productId: ID! media: [CreateMediaInput!]!): ProductCreateMediaPayload
  70. # Deletes a product, including all associated variants and media.
  71. #
  72. # As of API version 2023-01, if you need to delete a large product, such as one that has many variants
  73. # that are active at several locations,
  74. # you may encounter timeout errors. To avoid these timeout errors, you can instead use the asynchronous
  75. # ProductDeleteAsync mutation.
  76. productDelete(input: ProductDeleteInput!): ProductDeletePayload
  77. # Removes product images from the product.
  78. productDeleteImages(id: ID! imageIds: [ID!]!): ProductDeleteImagesPayload
  79. # Deletes media for a product.
  80. productDeleteMedia(productId: ID! mediaIds: [ID!]!): ProductDeleteMediaPayload
  81. # Duplicates a product.
  82. #
  83. # As of API version 2023-01, if you need to duplicate a large product, such as one that has many variants
  84. # that are active at several locations, you may encounter timeout errors.
  85. # To avoid these timeout errors, you can instead use the asynchronous ProductDuplicateAsync mutation.
  86. productDuplicate(
  87. productId: ID!
  88. newTitle: String!
  89. newStatus: ProductStatus
  90. includeImages: Boolean = false
  91. ): ProductDuplicatePayload
  92. # Updates an image of a product.
  93. productImageUpdate(productId: ID! image: ImageInput!): ProductImageUpdatePayload
  94. # Adds multiple selling plan groups to a product.
  95. productJoinSellingPlanGroups(id: ID! sellingPlanGroupIds: [ID!]!): ProductJoinSellingPlanGroupsPayload
  96. # Removes multiple groups from a product.
  97. productLeaveSellingPlanGroups(id: ID! sellingPlanGroupIds: [ID!]!): ProductLeaveSellingPlanGroupsPayload
  98. # Asynchronously reorders a set of images for a given product.
  99. productReorderImages(id: ID! moves: [MoveInput!]!): ProductReorderImagesPayload
  100. # Asynchronously reorders the media attached to a product.
  101. productReorderMedia(id: ID! moves: [MoveInput!]!): ProductReorderMediaPayload
  102. # Updates a product. If you update a product and only include some variants in the update,
  103. # then any variants not included will be deleted. To safely manage variants without the risk of
  104. # deleting excluded variants, use productVariantsBulkUpdate.
  105. # If you want to update a single variant, then use productVariantUpdate.
  106. productUpdate(input: ProductInput!): ProductUpdatePayload
  107. # Updates media for a product.
  108. productUpdateMedia(productId: ID! media: [UpdateMediaInput!]!): ProductUpdateMediaPayload
  109. # Appends media from a product to variants of the product.
  110. productVariantAppendMedia(productId: ID! variantMedia: [ProductVariantAppendMediaInput!]!): ProductVariantAppendMediaPayload
  111. # Creates a product variant.
  112. productVariantCreate(input: ProductVariantInput!): ProductVariantCreatePayload
  113. # Deletes a product variant.
  114. productVariantDelete(id: ID!): ProductVariantDeletePayload
  115. # Detaches media from product variants.
  116. productVariantDetachMedia(productId: ID! variantMedia: [ProductVariantDetachMediaInput!]!): ProductVariantDetachMediaPayload
  117. # Adds multiple selling plan groups to a product variant.
  118. productVariantJoinSellingPlanGroups(id: ID! sellingPlanGroupIds: [ID!]!): ProductVariantJoinSellingPlanGroupsPayload
  119. # Remove multiple groups from a product variant.
  120. productVariantLeaveSellingPlanGroups(id: ID! sellingPlanGroupIds: [ID!]!): ProductVariantLeaveSellingPlanGroupsPayload
  121. # Updates a product variant.
  122. productVariantUpdate(input: ProductVariantInput!): ProductVariantUpdatePayload
  123. # Creates product variants in bulk. If you want to create a single variant, then use productVariantCreate.
  124. productVariantsBulkCreate(variants: [ProductVariantsBulkInput!]! productId: ID!): ProductVariantsBulkCreatePayload
  125. # Deletes product variants in bulk. If you want to delete a single variant, then use productVariantDelete.
  126. productVariantsBulkDelete(variantsIds: [ID!]! productId: ID!): ProductVariantsBulkDeletePayload
  127. # Reorder product variants in bulk.
  128. productVariantsBulkReorder(productId: ID! positions: [ProductVariantPositionInput!]!): ProductVariantsBulkReorderPayload
  129. # Updates product variants in bulk. If you want to update a single variant, then use
  130. # productVariantUpdate.
  131. productVariantsBulkUpdate(variants: [ProductVariantsBulkInput!]! productId: ID!): ProductVariantsBulkUpdatePayload
  132. }
  133. # Specifies product images to append.
  134. input ProductAppendImagesInput {
  135. # The ID of the product.
  136. id: ID!
  137. # A list of images to be appended to the product.
  138. images: [ImageInput!]!
  139. }
  140. # Specifies the input fields for an image.
  141. input ImageInput {
  142. # A globally-unique identifier.
  143. id: ID
  144. # A word or phrase to share the nature or contents of an image.
  145. altText: String
  146. # The URL of the image. May be a staged upload URL.
  147. src: String
  148. }
  149. # Specifies the input fields required to create a product.
  150. input ProductInput {
  151. # The description of the product, complete with HTML formatting.
  152. descriptionHtml: String
  153. # Whether a redirect is required after a new handle has been provided.
  154. # If true, then the old handle is redirected to the new one automatically.
  155. redirectNewHandle: Boolean
  156. # A unique, human-friendly string for the product.
  157. # Automatically generated from the product's title unless otherwise specified.
  158. handle: String
  159. # The SEO information associated with the product.
  160. seo: SEOInput
  161. # The product type specified by the merchant.
  162. productType: String
  163. # The standardized product type in the Shopify product taxonomy.
  164. standardizedProductType: StandardizedProductTypeInput
  165. # The product category in the Shopify product taxonomy.
  166. productCategory: ProductCategoryInput
  167. # The custom product type specified by the merchant.
  168. customProductType: String
  169. # A comma separated list of tags that have been added to the product.
  170. tags: [String!]
  171. # The theme template used when viewing the product in a store.
  172. templateSuffix: String
  173. # Whether the product is a gift card.
  174. giftCard: Boolean
  175. # The theme template used when viewing the gift card in a store.
  176. giftCardTemplateSuffix: String
  177. # The title of the product.
  178. title: String
  179. # The name of the product's vendor.
  180. vendor: String
  181. # The IDs of the collections that this product will be added to.
  182. collectionsToJoin: [ID!]
  183. # The IDs of collections that will no longer include the existing product.
  184. collectionsToLeave: [ID!]
  185. # Specifies the product to update in productUpdate or creates a new product if absent in productCreate.
  186. id: ID
  187. # The images to associate with the product.
  188. images: [ImageInput!]
  189. # The metafields to associate with this product.
  190. metafields: [MetafieldInput!]
  191. # The private metafields to associate with this product.
  192. privateMetafields: [PrivateMetafieldInput!]
  193. # List of custom product options (maximum of 3 per product).
  194. options: [String!]
  195. # A list of variants associated with the product.
  196. variants: [ProductVariantInput!]
  197. # The status of the product.
  198. status: ProductStatus
  199. # Whether the product can only be purchased with a selling plan (subscription).
  200. # Products that are sold exclusively on subscription can only be created on online stores.
  201. # If set to true on an already existing product, then the product will be marked unavailable on channels that don't support subscriptions.
  202. requiresSellingPlan: Boolean
  203. }
  204. # Specifies a product variant to create or update.
  205. input ProductVariantInput {
  206. # The value of the barcode associated with the product.
  207. barcode: String
  208. # The compare-at price of the variant.
  209. compareAtPrice: Money
  210. # The Harmonized System code (or HS Tariff code) for the variant.
  211. harmonizedSystemCode: String
  212. # Specifies the product variant to update or create a new variant if absent.
  213. id: ID
  214. # The ID of the image that's associated with the variant.
  215. imageId: ID
  216. # The URL of an image to associate with the variant.
  217. # This field can only be used through mutations that create product images and must match one of the URLs being created on the product.
  218. imageSrc: String
  219. # The URL of the media to associate with the variant.
  220. # This field can only be used in mutations that create media images and must match one of the URLs being created on the product.
  221. # This field only accepts one value.
  222. mediaSrc: [String!]
  223. # Whether customers are allowed to place an order for the product variant when it's out of stock.
  224. inventoryPolicy: ProductVariantInventoryPolicy
  225. # The inventory quantities at each location where the variant is stocked.
  226. # Used as input only to the productVariantCreate mutation.
  227. inventoryQuantities: [InventoryLevelInput!]
  228. # The inventory item associated with the variant. Used for unit cost.
  229. inventoryItem: InventoryItemInput
  230. # Additional customizable information about the product variant.
  231. metafields: [MetafieldInput!]
  232. # The private metafields associated with the product.
  233. privateMetafields: [PrivateMetafieldInput!]
  234. # The custom properties that a shop owner uses to define product variants.
  235. options: [String!]
  236. # The order of the product variant in the list of product variants. The first position in the list is 1.
  237. position: Int
  238. # The price of the variant.
  239. price: Money
  240. # The product to create the variant for. Used as input only to the productVariantCreate mutation.
  241. productId: ID
  242. # Whether the variant requires shipping.
  243. requiresShipping: Boolean
  244. # The SKU for the variant.
  245. sku: String
  246. # Whether the variant is taxable.
  247. taxable: Boolean
  248. # The tax code associated with the variant.
  249. taxCode: String
  250. # The weight of the variant.
  251. weight: Float
  252. # The unit of weight that's used to measure the variant.
  253. weightUnit: WeightUnit
  254. }
  255. # Specifies the input fields for an inventory level.
  256. input InventoryLevelInput {
  257. # The available quantity of an inventory item at a location.
  258. availableQuantity: Int!
  259. # The ID of a location.
  260. locationId: ID!
  261. }
  262. # Specifies the input fields for an inventory item.
  263. input InventoryItemInput {
  264. # Unit cost associated with the inventory item, the currency is the shop's default currency.
  265. cost: Decimal
  266. # Whether the inventory item is tracked.
  267. tracked: Boolean
  268. }
  269. # Return type for productAppendImages mutation.
  270. type ProductAppendImagesPayload {
  271. # List of new images appended to the product.
  272. newImages: [Image!]
  273. # The product object.
  274. product: Product
  275. # The list of errors that occurred from executing the mutation.
  276. userErrors: [UserError!]!
  277. }
  278. # Return type for productChangeStatus mutation.
  279. type ProductChangeStatusPayload {
  280. # The product object.
  281. product: Product
  282. # The list of errors that occurred from executing the mutation.
  283. userErrors: [ProductChangeStatusUserError!]!
  284. }
  285. # Provides the fields and values to use when adding a standard product type to a product.
  286. # The Shopify product taxonomy contains the full list of available values.
  287. input StandardizedProductTypeInput {
  288. # The id of the node in the Shopify taxonomy that represents the product type.
  289. productTaxonomyNodeId: ID!
  290. }
  291. # The input fields to use when adding a product category to a product.
  292. # The Shopify product taxonomy contains the full list of available values.
  293. input ProductCategoryInput {
  294. # The ID of the node in the Shopify taxonomy that represents the product category.
  295. productTaxonomyNodeId: ID!
  296. }
  297. # Specifies the input fields required to create a media object.
  298. input CreateMediaInput {
  299. # The original source of the media object. This might be an external URL or a staged upload URL.
  300. originalSource: String!
  301. # The alt text associated with the media.
  302. alt: String
  303. # The media content type.
  304. mediaContentType: MediaContentType!
  305. }
  306. # A single move of an object to a specific position in a set, using a zero-based index.
  307. input MoveInput {
  308. # The ID of the object to be moved.
  309. id: ID!
  310. # The new position of the object in the set.
  311. newPosition: UnsignedInt64!
  312. }
  313. # Specifies the product to delete.
  314. input ProductDeleteInput {
  315. # The ID of the product.
  316. id: ID!
  317. }
  318. # Specifies the input fields required to update a media object.
  319. input UpdateMediaInput {
  320. # Specifies the media to update.
  321. id: ID!
  322. # The source from which to update the media preview image. May be an external URL or staged upload URL.
  323. previewImageSource: String
  324. # The alt text associated to the media.
  325. alt: String
  326. }
  327. # Specifies the input fields required to append media to a single variant.
  328. input ProductVariantAppendMediaInput {
  329. # Specifies the variant to which media will be appended.
  330. variantId: ID!
  331. # Specifies the media to append to the variant.
  332. mediaIds: [ID!]!
  333. }
  334. # Specifies the input fields required to detach media from a single variant.
  335. input ProductVariantDetachMediaInput {
  336. # Specifies the variant from which media will be detached.
  337. variantId: ID!
  338. # Specifies the media to detach from the variant.
  339. mediaIds: [ID!]!
  340. }
  341. # Specifies a product variant to create as part of a variant bulk mutation.
  342. input ProductVariantsBulkInput {
  343. # The value of the barcode associated with the product variant.
  344. barcode: String
  345. # The compare-at price of the variant.
  346. compareAtPrice: Money
  347. # The Harmonized System code (or HS Tariff code) for the variant.
  348. harmonizedSystemCode: String
  349. # Specifies the product variant to update or delete.
  350. id: ID
  351. # The ID of the image that's associated with the variant.
  352. imageId: ID
  353. # The URL of an image to associate with the variant. This field can only be used through mutations that create product images and must match one of the URLs being created on the product.
  354. imageSrc: String
  355. # The URL of the media to associate with the variant.
  356. mediaSrc: [String!]
  357. # Whether customers are allowed to place an order for the variant when it's out of stock.
  358. inventoryPolicy: ProductVariantInventoryPolicy
  359. # The inventory quantities at each location where the variant is stocked. The number of elements
  360. # in the array of inventory quantities cannot exceed 10 and the amount specified for the plan.
  361. # Used as input only to the productVariantCreate mutation.
  362. inventoryQuantities: [InventoryLevelInput!]
  363. # The inventory item associated with the variant, used for unit cost.
  364. inventoryItem: InventoryItemInput
  365. # The additional customizable information about the product variant.
  366. metafields: [MetafieldInput!]
  367. # The private metafields associated with the product.
  368. privateMetafields: [PrivateMetafieldInput!]
  369. # The custom properties that a shop owner uses to define product variants.
  370. options: [String!]
  371. # The price of the variant.
  372. price: Money
  373. # Whether the variant requires shipping.
  374. requiresShipping: Boolean
  375. # The SKU for the variant.
  376. sku: String
  377. # Whether the variant is taxable.
  378. taxable: Boolean
  379. # The tax code associated with the variant.
  380. taxCode: String
  381. # The weight of the variant.
  382. weight: Float
  383. # The unit of weight that's used to measure the variant.
  384. weightUnit: WeightUnit
  385. }
  386. # Represents a product variant position.
  387. input ProductVariantPositionInput {
  388. # Specifies the ID of the product variant to update.
  389. id: ID!
  390. # The order of the product variant in the list of product variants. The first position in the list is 1.
  391. position: Int!
  392. }
  393. # Return type for productCreate mutation.
  394. type ProductCreatePayload {
  395. # The product object.
  396. product: Product
  397. # The shop associated with the product.
  398. shop: Shop!
  399. # The list of errors that occurred from executing the mutation.
  400. userErrors: [UserError!]!
  401. }
  402. # Return type for productCreateMedia mutation.
  403. type ProductCreateMediaPayload {
  404. # The newly created media.
  405. media: [Media!]
  406. # The list of errors that occurred from executing the mutation.
  407. mediaUserErrors: [MediaUserError!]!
  408. # The product associated with the media.
  409. product: Product
  410. }
  411. # Return type for productDelete mutation.
  412. type ProductDeletePayload {
  413. # The ID of the deleted product.
  414. deletedProductId: ID
  415. # The shop associated with the product.
  416. shop: Shop!
  417. # The list of errors that occurred from executing the mutation.
  418. userErrors: [UserError!]!
  419. }
  420. # Return type for productImageUpdate mutation.
  421. type ProductImageUpdatePayload {
  422. # The image that has been updated.
  423. image: Image
  424. # The list of errors that occurred from executing the mutation.
  425. userErrors: [UserError!]!
  426. }
  427. # Return type for productDeleteImages mutation.
  428. type ProductDeleteImagesPayload {
  429. # The array of image IDs to delete.
  430. deletedImageIds: [ID!]!
  431. # The product object.
  432. product: Product
  433. # The list of errors that occurred from executing the mutation.
  434. userErrors: [UserError!]!
  435. }
  436. # Return type for productDeleteMedia mutation.
  437. type ProductDeleteMediaPayload {
  438. # List of media IDs which were deleted.
  439. deletedMediaIds: [ID!]
  440. # List of product image IDs which were deleted.
  441. deletedProductImageIds: [ID!]
  442. # The list of errors that occurred from executing the mutation.
  443. mediaUserErrors: [MediaUserError!]!
  444. # The product associated with the deleted media.
  445. product: Product
  446. }
  447. # Return type for productDuplicate mutation.
  448. type ProductDuplicatePayload {
  449. # The asynchronous job that duplicates the product images.
  450. imageJob: Job
  451. # The duplicated product.
  452. newProduct: Product
  453. # The user's shop.
  454. shop: Shop!
  455. # The list of errors that occurred from executing the mutation.
  456. userErrors: [UserError!]!
  457. }
  458. # Return type for productJoinSellingPlanGroups mutation.
  459. type ProductJoinSellingPlanGroupsPayload {
  460. # The product object.
  461. product: Product
  462. # The list of errors that occurred from executing the mutation.
  463. userErrors: [SellingPlanGroupUserError!]!
  464. }
  465. # Return type for productLeaveSellingPlanGroups mutation.
  466. type ProductLeaveSellingPlanGroupsPayload {
  467. # The product object.
  468. product: Product
  469. # The list of errors that occurred from executing the mutation.
  470. userErrors: [SellingPlanGroupUserError!]!
  471. }
  472. # Return type for productReorderImages mutation.
  473. type ProductReorderImagesPayload {
  474. # The asynchronous job which reorders the images.
  475. job: Job
  476. # The list of errors that occurred from executing the mutation.
  477. userErrors: [UserError!]!
  478. }
  479. # Return type for productReorderMedia mutation.
  480. type ProductReorderMediaPayload {
  481. # The asynchronous job which reorders the media.
  482. job: Job
  483. # The list of errors that occurred from executing the mutation.
  484. mediaUserErrors: [MediaUserError!]!
  485. }
  486. # Return type for productUpdate mutation.
  487. type ProductUpdatePayload {
  488. # The updated product object.
  489. product: Product
  490. # The list of errors that occurred from executing the mutation.
  491. userErrors: [UserError!]!
  492. }
  493. # Return type for productUpdateMedia mutation.
  494. type ProductUpdateMediaPayload {
  495. # The updated media object.
  496. media: [Media!]
  497. # The list of errors that occurred from executing the mutation.
  498. mediaUserErrors: [MediaUserError!]!
  499. # The product on which media was updated.
  500. product: Product
  501. }
  502. # Return type for productVariantAppendMedia mutation.
  503. type ProductVariantAppendMediaPayload {
  504. # The product associated with the variants and media.
  505. product: Product
  506. # The product variants that were updated.
  507. productVariants: [ProductVariant!]
  508. # The list of errors that occurred from executing the mutation.
  509. userErrors: [MediaUserError!]!
  510. }
  511. # Return type for productVariantCreate mutation.
  512. type ProductVariantCreatePayload {
  513. # The product associated with the variant.
  514. product: Product
  515. # The successfully created variant.
  516. productVariant: ProductVariant
  517. # The list of errors that occurred from executing the mutation.
  518. userErrors: [UserError!]!
  519. }
  520. # Return type for productVariantDelete mutation.
  521. type ProductVariantDeletePayload {
  522. # The ID of the deleted product variant.
  523. deletedProductVariantId: ID
  524. # The product associated with the deleted product variant.
  525. product: Product
  526. # The list of errors that occurred from executing the mutation.
  527. userErrors: [UserError!]!
  528. }
  529. # Return type for productVariantDetachMedia mutation.
  530. type ProductVariantDetachMediaPayload {
  531. # The product associated with the variants and media.
  532. product: Product
  533. # The product variants that were updated.
  534. productVariants: [ProductVariant!]
  535. # The list of errors that occurred from executing the mutation.
  536. userErrors: [MediaUserError!]!
  537. }
  538. # Return type for productVariantJoinSellingPlanGroups mutation.
  539. type ProductVariantJoinSellingPlanGroupsPayload {
  540. # The product variant object.
  541. productVariant: ProductVariant
  542. # The list of errors that occurred from executing the mutation.
  543. userErrors: [SellingPlanGroupUserError!]!
  544. }
  545. # Return type for productVariantLeaveSellingPlanGroups mutation.
  546. type ProductVariantLeaveSellingPlanGroupsPayload {
  547. # The product variant object.
  548. productVariant: ProductVariant
  549. # The list of errors that occurred from executing the mutation.
  550. userErrors: [SellingPlanGroupUserError!]!
  551. }
  552. # Return type for productVariantUpdate mutation.
  553. type ProductVariantUpdatePayload {
  554. # The product associated with the variant.
  555. product: Product
  556. # The updated variant.
  557. productVariant: ProductVariant
  558. # The list of errors that occurred from executing the mutation.
  559. userErrors: [UserError!]!
  560. }
  561. # Return type for productVariantsBulkCreate mutation.
  562. type ProductVariantsBulkCreatePayload {
  563. # The updated product object.
  564. product: Product
  565. # The newly created variants.
  566. productVariants: [ProductVariant!]
  567. # The list of errors that occurred from executing the mutation.
  568. userErrors: [ProductVariantsBulkCreateUserError!]!
  569. }
  570. # Return type for productVariantsBulkDelete mutation.
  571. type ProductVariantsBulkDeletePayload {
  572. # The updated product object.
  573. product: Product
  574. # The list of errors that occurred from executing the mutation.
  575. userErrors: [ProductVariantsBulkDeleteUserError!]!
  576. }
  577. # Return type for productVariantsBulkReorder mutation.
  578. type ProductVariantsBulkReorderPayload {
  579. # The updated product.
  580. product: Product
  581. # The list of errors that occurred from executing the mutation.
  582. userErrors: [ProductVariantsBulkReorderUserError!]!
  583. }
  584. # Return type for productVariantsBulkUpdate mutation.
  585. type ProductVariantsBulkUpdatePayload {
  586. # The updated product object.
  587. product: Product
  588. # The updated variants.
  589. productVariants: [ProductVariant!]
  590. # The list of errors that occurred from executing the mutation.
  591. userErrors: [ProductVariantsBulkUpdateUserError!]!
  592. }
  593. # Reports the status of product for a Sales Channel or Storefront API.
  594. # This might include why a product is not available in a Sales Channel
  595. # and how a merchant might fix this.
  596. type ProductResourceFeedback {
  597. # The time when the feedback was generated. Used to help determine whether
  598. # incoming feedback is outdated compared to existing feedback.
  599. feedbackGeneratedAt: DateTime!
  600. # The feedback messages presented to the merchant.
  601. messages: [String!]!
  602. # The ID of the product associated with the feedback.
  603. productId: ID!
  604. # The timestamp of the product associated with the feedback.
  605. productUpdatedAt: DateTime!
  606. # Conveys the state of the feedback and whether it requires merchant action or not.
  607. state: ResourceFeedbackState!
  608. }