Anchor to section titled 'undefined'

productVariantRelationshipBulkUpdate
mutation

Requires write_products access scope. Also: The shop must have access to bundles feature.

Creates new bundles, updates existing bundles, and removes bundle components for one or multiple bundles.


The input options for the product variant being updated.


Was this section helpful?

The product variants with successfully updated product variant relationships.

The list of errors that occurred from executing the mutation.


Was this section helpful?

Examples

Hide code
DescriptionCopy
mutation CreateBundle($input: [ProductVariantRelationshipUpdateInput!]!) {
  productVariantRelationshipBulkUpdate(input: $input) {
    parentProductVariants {
      id
      productVariantComponents(first: 10) {
        nodes {
          id
          productVariant {
            id
            displayName
          }
        }
      }
    }
    userErrors {
      code
      field
      message
    }
  }
}
curl -X POST \
https://your-development-store.myshopify.com/admin/api/2024-01/graphql.json \
-H 'Content-Type: application/json' \
-H 'X-Shopify-Access-Token: {access_token}' \
-d '{
"query": "mutation CreateBundle($input: [ProductVariantRelationshipUpdateInput!]!) { productVariantRelationshipBulkUpdate(input: $input) { parentProductVariants { id productVariantComponents(first: 10) { nodes { id productVariant { id displayName } } } } userErrors { code field message } } }",
 "variables": {
    "input": [
      {
        "parentProductVariantId": "gid://shopify/ProductVariant/799757249",
        "productVariantRelationshipsToCreate": [
          {
            "id": "gid://shopify/ProductVariant/149896808",
            "quantity": 1
          },
          {
            "id": "gid://shopify/ProductVariant/709406719",
            "quantity": 1
          }
        ]
      }
    ]
  }
}'
const { admin } = await authenticate.admin(request);

const response = await admin.graphql(
  `#graphql
  mutation CreateBundle($input: [ProductVariantRelationshipUpdateInput!]!) {
    productVariantRelationshipBulkUpdate(input: $input) {
      parentProductVariants {
        id
        productVariantComponents(first: 10) {
          nodes {
            id
            productVariant {
              id
              displayName
            }
          }
        }
      }
      userErrors {
        code
        field
        message
      }
    }
  }`,
  {
    variables: {
      "input": [
        {
          "parentProductVariantId": "gid://shopify/ProductVariant/799757249",
          "productVariantRelationshipsToCreate": [
            {
              "id": "gid://shopify/ProductVariant/149896808",
              "quantity": 1
            },
            {
              "id": "gid://shopify/ProductVariant/709406719",
              "quantity": 1
            }
          ]
        }
      ]
    },
  },
);

const data = await response.json();
session = ShopifyAPI::Auth::Session.new(
  shop: "your-development-store.myshopify.com",
  access_token: access_token
)
client = ShopifyAPI::Clients::Graphql::Admin.new(
  session: session
)

query = <<~QUERY
  mutation CreateBundle($input: [ProductVariantRelationshipUpdateInput!]!) {
    productVariantRelationshipBulkUpdate(input: $input) {
      parentProductVariants {
        id
        productVariantComponents(first: 10) {
          nodes {
            id
            productVariant {
              id
              displayName
            }
          }
        }
      }
      userErrors {
        code
        field
        message
      }
    }
  }
QUERY

variables = {
  "input": [{"parentProductVariantId"=>"gid://shopify/ProductVariant/799757249", "productVariantRelationshipsToCreate"=>[{"id"=>"gid://shopify/ProductVariant/149896808", "quantity"=>1}, {"id"=>"gid://shopify/ProductVariant/709406719", "quantity"=>1}]}]
}

response = client.query(query: query, variables: variables)
const client = new shopify.clients.Graphql({session});
const data = await client.query({
  data: {
    "query": `mutation CreateBundle($input: [ProductVariantRelationshipUpdateInput!]!) {
      productVariantRelationshipBulkUpdate(input: $input) {
        parentProductVariants {
          id
          productVariantComponents(first: 10) {
            nodes {
              id
              productVariant {
                id
                displayName
              }
            }
          }
        }
        userErrors {
          code
          field
          message
        }
      }
    }`,
    "variables": {
      "input": [
        {
          "parentProductVariantId": "gid://shopify/ProductVariant/799757249",
          "productVariantRelationshipsToCreate": [
            {
              "id": "gid://shopify/ProductVariant/149896808",
              "quantity": 1
            },
            {
              "id": "gid://shopify/ProductVariant/709406719",
              "quantity": 1
            }
          ]
        }
      ]
    },
  },
});
use Shopify\Clients\Graphql;

$client = new Graphql("your-development-store.myshopify.com", $accessToken);
$query = <<<QUERY
  mutation CreateBundle($input: [ProductVariantRelationshipUpdateInput!]!) {
    productVariantRelationshipBulkUpdate(input: $input) {
      parentProductVariants {
        id
        productVariantComponents(first: 10) {
          nodes {
            id
            productVariant {
              id
              displayName
            }
          }
        }
      }
      userErrors {
        code
        field
        message
      }
    }
  }
QUERY;

$variables = [
  "input" => [{"parentProductVariantId"=>"gid://shopify/ProductVariant/799757249", "productVariantRelationshipsToCreate"=>[{"id"=>"gid://shopify/ProductVariant/149896808", "quantity"=>1}, {"id"=>"gid://shopify/ProductVariant/709406719", "quantity"=>1}]}],
];

$response = $client->query(["query" => $query, "variables" => $variables]);
Hide code
Input variables
Copy
{
  "input": [
    {
      "parentProductVariantId": "gid://shopify/ProductVariant/799757249",
      "productVariantRelationshipsToCreate": [
        {
          "id": "gid://shopify/ProductVariant/149896808",
          "quantity": 1
        },
        {
          "id": "gid://shopify/ProductVariant/709406719",
          "quantity": 1
        }
      ]
    }
  ]
}
Hide code
Response
JSON
{
  "productVariantRelationshipBulkUpdate": {
    "parentProductVariants": [
      {
        "id": "gid://shopify/ProductVariant/799757249",
        "productVariantComponents": {
          "nodes": [
            {
              "id": "gid://shopify/ProductVariantComponent/993184086",
              "productVariant": {
                "id": "gid://shopify/ProductVariant/149896808",
                "displayName": "Composite_Sauce_Pack - component_product_variant_classic_hot_sauce"
              }
            },
            {
              "id": "gid://shopify/ProductVariantComponent/993184087",
              "productVariant": {
                "id": "gid://shopify/ProductVariant/709406719",
                "displayName": "Composite_Sauce_Pack - component_product_variant_classic_garlic_sauce"
              }
            }
          ]
        }
      }
    ],
    "userErrors": []
  }
}