I’ve been trying to create product with variants using Python and GQL,
but lacking something and dosen’t work as I want.
it says "Field ‘optionValues’ doesn’t exist on type ‘ProductOption’" but I reffer to a official document and copy it
import requests
import json
# Shopify API credentials
shop_url = "ShopURL"
access_token = "access_token"
# GraphQL endpoint
graphql_url = f"{shop_url}/admin/api/2023-10/graphql.json"
# Build the GraphQL mutation to create a product with options and option values
mutation = """
mutation CreateProductWithOptions($input: ProductInput!) {
productCreate(input: $input) {
userErrors {
field
message
}
product {
id
options {
id
name
position
values
optionValues {
id
name
hasVariants
}
}
variants(first: 5) {
nodes {
id
title
selectedOptions {
name
value
}
}
}
}
}
}
"""
headers = {
"Content-Type": "application/json",
"X-Shopify-Access-Token": access_token,
}
# Define the variables with the product input
variables = {
"input": {
"title": "New product",
"optionValues": [
{
"name": "Color",
"values": [
{
"name": "Red"
},
{
"name": "Green"
}
]
},
{
"name": "Size",
"values": [
{
"name": "Small"
},
{
"name": "Medium"
}
]
}
]
}
}
# Create the request data
data = {
"query": mutation,
"variables": variables
}
response = requests.post(graphql_url, json=data, headers=headers)
if response.status_code == 200:
result = response.json()
print("Product with options and option values created:")
print(json.dumps(result, indent=2))
else:
print(f"Failed to create the product. Status Code: {response.status_code}")
print(response.text)
response
{
"errors": [
{
"message": "Field 'optionValues' doesn't exist on type 'ProductOption'",
"locations": [
{
"line": 15,
"column": 9
}
],
"path": [
"mutation CreateProductWithOptions",
"productCreate",
"product",
"options",
"optionValues"
],
"extensions": {
"code": "undefinedField",
"typeName": "ProductOption",
"fieldName": "optionValues"
}
}
]
}
Im excepting to register a prodcut with variants
1 Answer
The way you’re able to use options to create variants is like this:
mutation CreateProductWithOptions($input: ProductInput!) {
productCreate(input: $input) {
product {
id
options {
name
values
id
position
}
variants(first: 5) {
nodes {
id
title
selectedOptions {
name
value
}
}
}
}
userErrors {
message
field
}
}
}
{
"input": {
"options": ["Size", "Color"],
"title": "New Product",
"variants": [
{
"options": ["Small", "Red"]
},
{
"options": ["Small", "Green"]
},
{
"options": ["Medium", "Green"]
},
{
"options": ["Medium", "Red"]
}
]
}
}