product Variants Bulk Updatemutation
Requires write
access scope. Also: The user must have a permission to update product variants.
Updates multiple variants in a single product. This mutation can be called directly or via the bulkOperation.
Arguments
When partial updates are allowed, valid variant changes may be persisted even if some of the variants updated have invalid data and cannot be persisted. When partial updates are not allowed, any error will prevent all variants from updating.
List of new media to be added to the product.
The ID of the product associated with the variants to update.
An array of product variants to update.
ProductVariantsBulkUpdatePayload returns
The updated product object.
The updated variants.
The list of errors that occurred from executing the mutation.
Code examples for MUTATION: productVariantsBulkUpdate
Query Reference for MUTATION: productVariantsBulkUpdate
"mutation productVariantsBulkUpdate($productId: ID!, $variants: [ProductVariantsBulkInput!]!) {\n productVariantsBulkUpdate(productId: $productId, variants: $variants) {\n product {\n # Product fields\n }\n productVariants {\n # ProductVariant fields\n }\n userErrors {\n field\n message\n }\n }\n}"
Input Reference for MUTATION: productVariantsBulkUpdate
"{\n \"allowPartialUpdates\": true,\n \"media\": [\n {\n \"alt\": \"<your-alt>\",\n \"mediaContentType\": \"EXTERNAL_VIDEO\",\n \"originalSource\": \"<your-originalSource>\"\n }\n ],\n \"productId\": \"gid://shopify/<objectName>/10079785100\",\n \"variants\": [\n {\n \"barcode\": \"<your-barcode>\",\n \"compareAtPrice\": \"100.57\",\n \"id\": \"gid://shopify/<objectName>/10079785100\",\n \"inventoryItem\": {\n \"cost\": \"29.99\",\n \"countryCodeOfOrigin\": \"AC\",\n \"countryHarmonizedSystemCodes\": [\n {\n \"countryCode\": \"AC\",\n \"harmonizedSystemCode\": \"<your-harmonizedSystemCode>\"\n }\n ],\n \"harmonizedSystemCode\": \"<your-harmonizedSystemCode>\",\n \"measurement\": {\n \"weight\": {\n \"unit\": \"GRAMS\",\n \"value\": 1.1\n }\n },\n \"provinceCodeOfOrigin\": \"<your-provinceCodeOfOrigin>\",\n \"requiresShipping\": true,\n \"sku\": \"<your-sku>\",\n \"tracked\": true\n },\n \"inventoryPolicy\": \"CONTINUE\",\n \"inventoryQuantities\": [\n {\n \"availableQuantity\": 1,\n \"locationId\": \"gid://shopify/<objectName>/10079785100\"\n }\n ],\n \"mediaId\": \"gid://shopify/<objectName>/10079785100\",\n \"mediaSrc\": [\n \"<your-mediaSrc>\"\n ],\n \"metafields\": [\n {\n \"description\": \"<your-description>\",\n \"id\": \"gid://shopify/<objectName>/10079785100\",\n \"key\": \"<your-key>\",\n \"namespace\": \"<your-namespace>\",\n \"type\": \"<your-type>\",\n \"value\": \"<your-value>\"\n }\n ],\n \"optionValues\": [\n {\n \"id\": \"gid://shopify/<objectName>/10079785100\",\n \"linkedMetafieldValue\": \"<your-linkedMetafieldValue>\",\n \"name\": \"<your-name>\",\n \"optionId\": \"gid://shopify/<objectName>/10079785100\",\n \"optionName\": \"<your-optionName>\"\n }\n ],\n \"price\": \"100.57\",\n \"taxCode\": \"<your-taxCode>\",\n \"taxable\": true\n }\n ]\n}"
Schema Reference for MUTATION: productVariantsBulkUpdate
"input CreateMediaInput {\n alt: String\n mediaContentType: MediaContentType!\n originalSource: String!\n}\n\ninput ProductVariantsBulkInput {\n barcode: String\n compareAtPrice: Money\n id: ID\n inventoryItem: InventoryItemInput\n inventoryPolicy: ProductVariantInventoryPolicy\n inventoryQuantities: [InventoryLevelInput!]\n mediaId: ID\n mediaSrc: [String!]\n metafields: [MetafieldInput!]\n optionValues: [VariantOptionValueInput!]\n price: Money\n privateMetafields: [PrivateMetafieldInput!]\n taxCode: String\n taxable: Boolean\n}\n\ninput InventoryItemInput {\n cost: Decimal\n countryCodeOfOrigin: CountryCode\n countryHarmonizedSystemCodes: [CountryHarmonizedSystemCodeInput!]\n harmonizedSystemCode: String\n measurement: InventoryItemMeasurementInput\n provinceCodeOfOrigin: String\n requiresShipping: Boolean\n sku: String\n tracked: Boolean\n}\n\ninput InventoryLevelInput {\n availableQuantity: Int!\n locationId: ID!\n}\n\ninput MetafieldInput {\n description: String\n id: ID\n key: String\n namespace: String\n type: String\n value: String\n}\n\ninput VariantOptionValueInput {\n id: ID\n linkedMetafieldValue: String\n name: String\n optionId: ID\n optionName: String\n}\n\ninput PrivateMetafieldInput {\n key: String!\n namespace: String!\n owner: ID\n valueInput: PrivateMetafieldValueInput!\n}\n"
Display Examples for MUTATION: productVariantsBulkUpdate
[ { "example": { "type_name": "productvariantsbulkupdate", "title": "Create and update metafields when updating product variants in bulk", "description": "Update the existing metafield values under `my_fields.liner_material` and create new metafields under\n`my_fields.sole_material` for existing product variants under a specific product.\n", "query_string": "mutation productVariantsBulkUpdate($productId: ID!, $variants: [ProductVariantsBulkInput!]!) {\n productVariantsBulkUpdate(productId: $productId, variants: $variants) {\n product {\n id\n }\n productVariants {\n id\n metafields(first: 2) {\n edges {\n node {\n namespace\n key\n value\n }\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n}", "variables": { "productId": "gid://shopify/Product/20995642", "variants": [ { "id": "gid://shopify/ProductVariant/1070325053", "metafields": [ { "id": "gid://shopify/Metafield/1069228989", "value": "SYNTHETIC LEATHER" }, { "namespace": "my_fields", "key": "sole_material", "value": "RUBBER", "type": "single_line_text_field" } ] }, { "id": "gid://shopify/ProductVariant/1070325054", "metafields": [ { "id": "gid://shopify/Metafield/1069228990", "value": "SYNTHETIC LEATHER" }, { "namespace": "my_fields", "key": "sole_material", "value": "CREPE", "type": "single_line_text_field" } ] } ] }, "response": { "data": { "productVariantsBulkUpdate": { "product": { "id": "gid://shopify/Product/20995642" }, "productVariants": [ { "id": "gid://shopify/ProductVariant/1070325053", "metafields": { "edges": [ { "node": { "namespace": "my_fields", "key": "liner_material", "value": "SYNTHETIC LEATHER" } }, { "node": { "namespace": "my_fields", "key": "sole_material", "value": "RUBBER" } } ] } }, { "id": "gid://shopify/ProductVariant/1070325054", "metafields": { "edges": [ { "node": { "namespace": "my_fields", "key": "liner_material", "value": "SYNTHETIC LEATHER" } }, { "node": { "namespace": "my_fields", "key": "sole_material", "value": "CREPE" } } ] } } ], "userErrors": [] } } }, "api_name": "admin", "minimum_api_version": "2023-10", "maximum_api_version": "unstable", "location": "/components/merchandising/test/unit/merchandising/graph_api/admin/mutations/product_variants_bulk_update_test.rb", "curl_example": "curl -X POST \\\nhttps://your-development-store.myshopify.com/admin/api/2024-10/graphql.json \\\n-H 'Content-Type: application/json' \\\n-H 'X-Shopify-Access-Token: {access_token}' \\\n-d '{\n\"query\": \"mutation productVariantsBulkUpdate($productId: ID!, $variants: [ProductVariantsBulkInput!]!) { productVariantsBulkUpdate(productId: $productId, variants: $variants) { product { id } productVariants { id metafields(first: 2) { edges { node { namespace key value } } } } userErrors { field message } } }\",\n \"variables\": {\n \"productId\": \"gid://shopify/Product/20995642\",\n \"variants\": [\n {\n \"id\": \"gid://shopify/ProductVariant/1070325053\",\n \"metafields\": [\n {\n \"id\": \"gid://shopify/Metafield/1069228989\",\n \"value\": \"SYNTHETIC LEATHER\"\n },\n {\n \"namespace\": \"my_fields\",\n \"key\": \"sole_material\",\n \"value\": \"RUBBER\",\n \"type\": \"single_line_text_field\"\n }\n ]\n },\n {\n \"id\": \"gid://shopify/ProductVariant/1070325054\",\n \"metafields\": [\n {\n \"id\": \"gid://shopify/Metafield/1069228990\",\n \"value\": \"SYNTHETIC LEATHER\"\n },\n {\n \"namespace\": \"my_fields\",\n \"key\": \"sole_material\",\n \"value\": \"CREPE\",\n \"type\": \"single_line_text_field\"\n }\n ]\n }\n ]\n }\n}'\n", "remix_example": "const { admin } = await authenticate.admin(request);\n\nconst response = await admin.graphql(\n `#graphql\n mutation productVariantsBulkUpdate($productId: ID!, $variants: [ProductVariantsBulkInput!]!) {\n productVariantsBulkUpdate(productId: $productId, variants: $variants) {\n product {\n id\n }\n productVariants {\n id\n metafields(first: 2) {\n edges {\n node {\n namespace\n key\n value\n }\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n }`,\n {\n variables: {\n \"productId\": \"gid://shopify/Product/20995642\",\n \"variants\": [\n {\n \"id\": \"gid://shopify/ProductVariant/1070325053\",\n \"metafields\": [\n {\n \"id\": \"gid://shopify/Metafield/1069228989\",\n \"value\": \"SYNTHETIC LEATHER\"\n },\n {\n \"namespace\": \"my_fields\",\n \"key\": \"sole_material\",\n \"value\": \"RUBBER\",\n \"type\": \"single_line_text_field\"\n }\n ]\n },\n {\n \"id\": \"gid://shopify/ProductVariant/1070325054\",\n \"metafields\": [\n {\n \"id\": \"gid://shopify/Metafield/1069228990\",\n \"value\": \"SYNTHETIC LEATHER\"\n },\n {\n \"namespace\": \"my_fields\",\n \"key\": \"sole_material\",\n \"value\": \"CREPE\",\n \"type\": \"single_line_text_field\"\n }\n ]\n }\n ]\n },\n },\n);\n\nconst data = await response.json();\n", "ruby_example": "session = ShopifyAPI::Auth::Session.new(\n shop: \"your-development-store.myshopify.com\",\n access_token: access_token\n)\nclient = ShopifyAPI::Clients::Graphql::Admin.new(\n session: session\n)\n\nquery = <<~QUERY\n mutation productVariantsBulkUpdate($productId: ID!, $variants: [ProductVariantsBulkInput!]!) {\n productVariantsBulkUpdate(productId: $productId, variants: $variants) {\n product {\n id\n }\n productVariants {\n id\n metafields(first: 2) {\n edges {\n node {\n namespace\n key\n value\n }\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n }\nQUERY\n\nvariables = {\n \"productId\": \"gid://shopify/Product/20995642\",\n \"variants\": [{\"id\"=>\"gid://shopify/ProductVariant/1070325053\", \"metafields\"=>[{\"id\"=>\"gid://shopify/Metafield/1069228989\", \"value\"=>\"SYNTHETIC LEATHER\"}, {\"namespace\"=>\"my_fields\", \"key\"=>\"sole_material\", \"value\"=>\"RUBBER\", \"type\"=>\"single_line_text_field\"}]}, {\"id\"=>\"gid://shopify/ProductVariant/1070325054\", \"metafields\"=>[{\"id\"=>\"gid://shopify/Metafield/1069228990\", \"value\"=>\"SYNTHETIC LEATHER\"}, {\"namespace\"=>\"my_fields\", \"key\"=>\"sole_material\", \"value\"=>\"CREPE\", \"type\"=>\"single_line_text_field\"}]}]\n}\n\nresponse = client.query(query: query, variables: variables)\n", "node_example": "const client = new shopify.clients.Graphql({session});\nconst data = await client.query({\n data: {\n \"query\": `mutation productVariantsBulkUpdate($productId: ID!, $variants: [ProductVariantsBulkInput!]!) {\n productVariantsBulkUpdate(productId: $productId, variants: $variants) {\n product {\n id\n }\n productVariants {\n id\n metafields(first: 2) {\n edges {\n node {\n namespace\n key\n value\n }\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n }`,\n \"variables\": {\n \"productId\": \"gid://shopify/Product/20995642\",\n \"variants\": [\n {\n \"id\": \"gid://shopify/ProductVariant/1070325053\",\n \"metafields\": [\n {\n \"id\": \"gid://shopify/Metafield/1069228989\",\n \"value\": \"SYNTHETIC LEATHER\"\n },\n {\n \"namespace\": \"my_fields\",\n \"key\": \"sole_material\",\n \"value\": \"RUBBER\",\n \"type\": \"single_line_text_field\"\n }\n ]\n },\n {\n \"id\": \"gid://shopify/ProductVariant/1070325054\",\n \"metafields\": [\n {\n \"id\": \"gid://shopify/Metafield/1069228990\",\n \"value\": \"SYNTHETIC LEATHER\"\n },\n {\n \"namespace\": \"my_fields\",\n \"key\": \"sole_material\",\n \"value\": \"CREPE\",\n \"type\": \"single_line_text_field\"\n }\n ]\n }\n ]\n },\n },\n});\n", "php_example": "use Shopify\\Clients\\Graphql;\n\n$client = new Graphql(\"your-development-store.myshopify.com\", $accessToken);\n$query = <<<QUERY\n mutation productVariantsBulkUpdate($productId: ID!, $variants: [ProductVariantsBulkInput!]!) {\n productVariantsBulkUpdate(productId: $productId, variants: $variants) {\n product {\n id\n }\n productVariants {\n id\n metafields(first: 2) {\n edges {\n node {\n namespace\n key\n value\n }\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n }\nQUERY;\n\n$variables = [\n \"productId\" => \"gid://shopify/Product/20995642\",\n \"variants\" => [{\"id\"=>\"gid://shopify/ProductVariant/1070325053\", \"metafields\"=>[{\"id\"=>\"gid://shopify/Metafield/1069228989\", \"value\"=>\"SYNTHETIC LEATHER\"}, {\"namespace\"=>\"my_fields\", \"key\"=>\"sole_material\", \"value\"=>\"RUBBER\", \"type\"=>\"single_line_text_field\"}]}, {\"id\"=>\"gid://shopify/ProductVariant/1070325054\", \"metafields\"=>[{\"id\"=>\"gid://shopify/Metafield/1069228990\", \"value\"=>\"SYNTHETIC LEATHER\"}, {\"namespace\"=>\"my_fields\", \"key\"=>\"sole_material\", \"value\"=>\"CREPE\", \"type\"=>\"single_line_text_field\"}]}],\n];\n\n$response = $client->query([\"query\" => $query, \"variables\" => $variables]);\n" }, "titleStringKey": "variables", "inputVariableEntries": [ { "arg": { "name": "productId", "description": "The ID of the product associated with the variants to update.", "type": { "kind": "SCALAR", "name": "ID", "list": false, "non_null": true }, "defaultValue": null, "typeSignature": "ID!", "isDeprecated": false, "deprecationReason": null, "kind": "ARGUMENT" }, "key": "productId", "argValue": " \"gid://shopify/Product/20995642\"", "typeKind": "MUTATION" }, { "arg": { "name": "variants", "description": "An array of product variants to update.", "type": { "kind": "INPUT_OBJECT", "name": "ProductVariantsBulkInput", "list": true, "non_null": true }, "defaultValue": null, "typeSignature": "[ProductVariantsBulkInput!]!", "isDeprecated": false, "deprecationReason": null, "kind": "ARGUMENT" }, "key": "variants", "argValue": " [{\"id\":\"gid://shopify/ProductVariant/1070325053\",\"metafields\":[{\"id\":\"gid://shopify/Metafield/1069228989\",\"value\":\"SYNTHETIC LEATHER\"},{\"namespace\":\"my_fields\",\"key\":\"sole_material\",\"value\":\"RUBBER\",\"type\":\"single_line_text_field\"}]},{\"id\":\"gid://shopify/ProductVariant/1070325054\",\"metafields\":[{\"id\":\"gid://shopify/Metafield/1069228990\",\"value\":\"SYNTHETIC LEATHER\"},{\"namespace\":\"my_fields\",\"key\":\"sole_material\",\"value\":\"CREPE\",\"type\":\"single_line_text_field\"}]}]", "typeKind": "MUTATION" } ] }, { "example": { "type_name": "productvariantsbulkupdate", "title": "Update product variants with option values", "description": "Updates variants with the option values specified. Both the option and the option value\ncan be specified with either an ID or a name, and these can be freely combined.\nThe option must exist on the product. The option value must exist on the option if specified by ID.\nIt is not required for every option to be present in the variant input.\n", "query_string": "mutation UpdateProductVariantsOptionValuesInBulk($productId: ID!, $variants: [ProductVariantsBulkInput!]!) {\n productVariantsBulkUpdate(productId: $productId, variants: $variants) {\n product {\n id\n title\n options {\n id\n position\n name\n values\n optionValues {\n id\n name\n hasVariants\n }\n }\n }\n productVariants {\n id\n title\n selectedOptions {\n name\n value\n }\n }\n userErrors {\n field\n message\n }\n }\n}", "variables": { "productId": "gid://shopify/Product/1072481051", "variants": [ { "id": "gid://shopify/ProductVariant/1070325050", "optionValues": [ { "name": "Green", "optionName": "Color" } ] }, { "id": "gid://shopify/ProductVariant/1070325051", "optionValues": [ { "name": "Large", "optionId": "gid://shopify/ProductOption/1064576503" }, { "id": "gid://shopify/ProductOptionValue/1054672209", "optionId": "gid://shopify/ProductOption/1064576504" } ] }, { "id": "gid://shopify/ProductVariant/1070325052", "optionValues": [ { "name": "Medium", "optionName": "Size" }, { "id": "gid://shopify/ProductOptionValue/1054672209", "optionName": "Color" } ] } ] }, "response": { "data": { "productVariantsBulkUpdate": { "product": { "id": "gid://shopify/Product/1072481051", "title": "A shirt", "options": [ { "id": "gid://shopify/ProductOption/1064576503", "position": 1, "name": "Size", "values": [ "Small", "Large", "Medium" ], "optionValues": [ { "id": "gid://shopify/ProductOptionValue/1054672206", "name": "Small", "hasVariants": true }, { "id": "gid://shopify/ProductOptionValue/1054672208", "name": "Large", "hasVariants": true }, { "id": "gid://shopify/ProductOptionValue/1054672207", "name": "Medium", "hasVariants": true } ] }, { "id": "gid://shopify/ProductOption/1064576504", "position": 2, "name": "Color", "values": [ "Green", "Red" ], "optionValues": [ { "id": "gid://shopify/ProductOptionValue/1054672211", "name": "Green", "hasVariants": true }, { "id": "gid://shopify/ProductOptionValue/1054672209", "name": "Red", "hasVariants": true } ] } ] }, "productVariants": [ { "id": "gid://shopify/ProductVariant/1070325050", "title": "Small / Green", "selectedOptions": [ { "name": "Size", "value": "Small" }, { "name": "Color", "value": "Green" } ] }, { "id": "gid://shopify/ProductVariant/1070325051", "title": "Large / Red", "selectedOptions": [ { "name": "Size", "value": "Large" }, { "name": "Color", "value": "Red" } ] }, { "id": "gid://shopify/ProductVariant/1070325052", "title": "Medium / Red", "selectedOptions": [ { "name": "Size", "value": "Medium" }, { "name": "Color", "value": "Red" } ] } ], "userErrors": [] } } }, "api_name": "admin", "minimum_api_version": "2024-04", "maximum_api_version": "unstable", "location": "/components/merchandising/test/unit/merchandising/graph_api/admin/mutations/product_variants_bulk_update_test.rb", "curl_example": "curl -X POST \\\nhttps://your-development-store.myshopify.com/admin/api/2024-10/graphql.json \\\n-H 'Content-Type: application/json' \\\n-H 'X-Shopify-Access-Token: {access_token}' \\\n-d '{\n\"query\": \"mutation UpdateProductVariantsOptionValuesInBulk($productId: ID!, $variants: [ProductVariantsBulkInput!]!) { productVariantsBulkUpdate(productId: $productId, variants: $variants) { product { id title options { id position name values optionValues { id name hasVariants } } } productVariants { id title selectedOptions { name value } } userErrors { field message } } }\",\n \"variables\": {\n \"productId\": \"gid://shopify/Product/1072481051\",\n \"variants\": [\n {\n \"id\": \"gid://shopify/ProductVariant/1070325050\",\n \"optionValues\": [\n {\n \"name\": \"Green\",\n \"optionName\": \"Color\"\n }\n ]\n },\n {\n \"id\": \"gid://shopify/ProductVariant/1070325051\",\n \"optionValues\": [\n {\n \"name\": \"Large\",\n \"optionId\": \"gid://shopify/ProductOption/1064576503\"\n },\n {\n \"id\": \"gid://shopify/ProductOptionValue/1054672209\",\n \"optionId\": \"gid://shopify/ProductOption/1064576504\"\n }\n ]\n },\n {\n \"id\": \"gid://shopify/ProductVariant/1070325052\",\n \"optionValues\": [\n {\n \"name\": \"Medium\",\n \"optionName\": \"Size\"\n },\n {\n \"id\": \"gid://shopify/ProductOptionValue/1054672209\",\n \"optionName\": \"Color\"\n }\n ]\n }\n ]\n }\n}'\n", "remix_example": "const { admin } = await authenticate.admin(request);\n\nconst response = await admin.graphql(\n `#graphql\n mutation UpdateProductVariantsOptionValuesInBulk($productId: ID!, $variants: [ProductVariantsBulkInput!]!) {\n productVariantsBulkUpdate(productId: $productId, variants: $variants) {\n product {\n id\n title\n options {\n id\n position\n name\n values\n optionValues {\n id\n name\n hasVariants\n }\n }\n }\n productVariants {\n id\n title\n selectedOptions {\n name\n value\n }\n }\n userErrors {\n field\n message\n }\n }\n }`,\n {\n variables: {\n \"productId\": \"gid://shopify/Product/1072481051\",\n \"variants\": [\n {\n \"id\": \"gid://shopify/ProductVariant/1070325050\",\n \"optionValues\": [\n {\n \"name\": \"Green\",\n \"optionName\": \"Color\"\n }\n ]\n },\n {\n \"id\": \"gid://shopify/ProductVariant/1070325051\",\n \"optionValues\": [\n {\n \"name\": \"Large\",\n \"optionId\": \"gid://shopify/ProductOption/1064576503\"\n },\n {\n \"id\": \"gid://shopify/ProductOptionValue/1054672209\",\n \"optionId\": \"gid://shopify/ProductOption/1064576504\"\n }\n ]\n },\n {\n \"id\": \"gid://shopify/ProductVariant/1070325052\",\n \"optionValues\": [\n {\n \"name\": \"Medium\",\n \"optionName\": \"Size\"\n },\n {\n \"id\": \"gid://shopify/ProductOptionValue/1054672209\",\n \"optionName\": \"Color\"\n }\n ]\n }\n ]\n },\n },\n);\n\nconst data = await response.json();\n", "ruby_example": "session = ShopifyAPI::Auth::Session.new(\n shop: \"your-development-store.myshopify.com\",\n access_token: access_token\n)\nclient = ShopifyAPI::Clients::Graphql::Admin.new(\n session: session\n)\n\nquery = <<~QUERY\n mutation UpdateProductVariantsOptionValuesInBulk($productId: ID!, $variants: [ProductVariantsBulkInput!]!) {\n productVariantsBulkUpdate(productId: $productId, variants: $variants) {\n product {\n id\n title\n options {\n id\n position\n name\n values\n optionValues {\n id\n name\n hasVariants\n }\n }\n }\n productVariants {\n id\n title\n selectedOptions {\n name\n value\n }\n }\n userErrors {\n field\n message\n }\n }\n }\nQUERY\n\nvariables = {\n \"productId\": \"gid://shopify/Product/1072481051\",\n \"variants\": [{\"id\"=>\"gid://shopify/ProductVariant/1070325050\", \"optionValues\"=>[{\"name\"=>\"Green\", \"optionName\"=>\"Color\"}]}, {\"id\"=>\"gid://shopify/ProductVariant/1070325051\", \"optionValues\"=>[{\"name\"=>\"Large\", \"optionId\"=>\"gid://shopify/ProductOption/1064576503\"}, {\"id\"=>\"gid://shopify/ProductOptionValue/1054672209\", \"optionId\"=>\"gid://shopify/ProductOption/1064576504\"}]}, {\"id\"=>\"gid://shopify/ProductVariant/1070325052\", \"optionValues\"=>[{\"name\"=>\"Medium\", \"optionName\"=>\"Size\"}, {\"id\"=>\"gid://shopify/ProductOptionValue/1054672209\", \"optionName\"=>\"Color\"}]}]\n}\n\nresponse = client.query(query: query, variables: variables)\n", "node_example": "const client = new shopify.clients.Graphql({session});\nconst data = await client.query({\n data: {\n \"query\": `mutation UpdateProductVariantsOptionValuesInBulk($productId: ID!, $variants: [ProductVariantsBulkInput!]!) {\n productVariantsBulkUpdate(productId: $productId, variants: $variants) {\n product {\n id\n title\n options {\n id\n position\n name\n values\n optionValues {\n id\n name\n hasVariants\n }\n }\n }\n productVariants {\n id\n title\n selectedOptions {\n name\n value\n }\n }\n userErrors {\n field\n message\n }\n }\n }`,\n \"variables\": {\n \"productId\": \"gid://shopify/Product/1072481051\",\n \"variants\": [\n {\n \"id\": \"gid://shopify/ProductVariant/1070325050\",\n \"optionValues\": [\n {\n \"name\": \"Green\",\n \"optionName\": \"Color\"\n }\n ]\n },\n {\n \"id\": \"gid://shopify/ProductVariant/1070325051\",\n \"optionValues\": [\n {\n \"name\": \"Large\",\n \"optionId\": \"gid://shopify/ProductOption/1064576503\"\n },\n {\n \"id\": \"gid://shopify/ProductOptionValue/1054672209\",\n \"optionId\": \"gid://shopify/ProductOption/1064576504\"\n }\n ]\n },\n {\n \"id\": \"gid://shopify/ProductVariant/1070325052\",\n \"optionValues\": [\n {\n \"name\": \"Medium\",\n \"optionName\": \"Size\"\n },\n {\n \"id\": \"gid://shopify/ProductOptionValue/1054672209\",\n \"optionName\": \"Color\"\n }\n ]\n }\n ]\n },\n },\n});\n", "php_example": "use Shopify\\Clients\\Graphql;\n\n$client = new Graphql(\"your-development-store.myshopify.com\", $accessToken);\n$query = <<<QUERY\n mutation UpdateProductVariantsOptionValuesInBulk($productId: ID!, $variants: [ProductVariantsBulkInput!]!) {\n productVariantsBulkUpdate(productId: $productId, variants: $variants) {\n product {\n id\n title\n options {\n id\n position\n name\n values\n optionValues {\n id\n name\n hasVariants\n }\n }\n }\n productVariants {\n id\n title\n selectedOptions {\n name\n value\n }\n }\n userErrors {\n field\n message\n }\n }\n }\nQUERY;\n\n$variables = [\n \"productId\" => \"gid://shopify/Product/1072481051\",\n \"variants\" => [{\"id\"=>\"gid://shopify/ProductVariant/1070325050\", \"optionValues\"=>[{\"name\"=>\"Green\", \"optionName\"=>\"Color\"}]}, {\"id\"=>\"gid://shopify/ProductVariant/1070325051\", \"optionValues\"=>[{\"name\"=>\"Large\", \"optionId\"=>\"gid://shopify/ProductOption/1064576503\"}, {\"id\"=>\"gid://shopify/ProductOptionValue/1054672209\", \"optionId\"=>\"gid://shopify/ProductOption/1064576504\"}]}, {\"id\"=>\"gid://shopify/ProductVariant/1070325052\", \"optionValues\"=>[{\"name\"=>\"Medium\", \"optionName\"=>\"Size\"}, {\"id\"=>\"gid://shopify/ProductOptionValue/1054672209\", \"optionName\"=>\"Color\"}]}],\n];\n\n$response = $client->query([\"query\" => $query, \"variables\" => $variables]);\n" }, "titleStringKey": "variables", "inputVariableEntries": [ { "arg": { "name": "productId", "description": "The ID of the product associated with the variants to update.", "type": { "kind": "SCALAR", "name": "ID", "list": false, "non_null": true }, "defaultValue": null, "typeSignature": "ID!", "isDeprecated": false, "deprecationReason": null, "kind": "ARGUMENT" }, "key": "productId", "argValue": " \"gid://shopify/Product/1072481051\"", "typeKind": "MUTATION" }, { "arg": { "name": "variants", "description": "An array of product variants to update.", "type": { "kind": "INPUT_OBJECT", "name": "ProductVariantsBulkInput", "list": true, "non_null": true }, "defaultValue": null, "typeSignature": "[ProductVariantsBulkInput!]!", "isDeprecated": false, "deprecationReason": null, "kind": "ARGUMENT" }, "key": "variants", "argValue": " [{\"id\":\"gid://shopify/ProductVariant/1070325050\",\"optionValues\":[{\"name\":\"Green\",\"optionName\":\"Color\"}]},{\"id\":\"gid://shopify/ProductVariant/1070325051\",\"optionValues\":[{\"name\":\"Large\",\"optionId\":\"gid://shopify/ProductOption/1064576503\"},{\"id\":\"gid://shopify/ProductOptionValue/1054672209\",\"optionId\":\"gid://shopify/ProductOption/1064576504\"}]},{\"id\":\"gid://shopify/ProductVariant/1070325052\",\"optionValues\":[{\"name\":\"Medium\",\"optionName\":\"Size\"},{\"id\":\"gid://shopify/ProductOptionValue/1054672209\",\"optionName\":\"Color\"}]}]", "typeKind": "MUTATION" } ] } ]