Magento GraphQl query to fetch product custom options list using CustomizableOptionInterface.
The Customizable Option Interface contains basic information about a product’s customizable options.
You can create different types of Custom Options for the product like text field, text area, radio button, dropdown, multi-select, image, file uploading, etc…
Each different type of field of custom option uses a different Customizable Option type in the GraphQl query.
- CustomizableFieldOption is used for the text field.
- CustomizableAreaOption used for the text area field.
- CustomizableRadioOption used for the radio button.
- CustomizableFileOption is used for the file uploading field type.
- CustomizableMultipleOption is used for the multiple select options field type.
- CustomizableDropDownOption is used for the dropdown field type.
- CustomizableDateOption is used for the date field type.
Let’s create a GraphQl product query to fetch a list of custom options from the product by filtering SKU.
{
products(filter: {sku: {eq: "100001"}}) {
items {
uid
name
sku
__typename
... on CustomizableProductInterface {
options {
title
required
sort_order
uid
... on CustomizableFieldOption {
textField: value {
sku
price
}
}
... on CustomizableDropDownOption {
dropDown: value {
sku
price
}
}
}
}
}
}
}
Product Custom options will be displayed like in the given screenshot.
Here Product with Text field and DropDown fields are available and we want to retrieve a list of available custom options by GraphQl query.
You can also fetch another field type also using the query with specific customizable options.
Output:
{
"data": {
"products": {
"items": [
{
"uid": "MjA0Nw==",
"name": "Shree1",
"sku": "100001",
"__typename": "SimpleProduct",
"options": [
{
"title": "Welcome Message",
"required": true,
"sort_order": 1,
"uid": "Y3VzdG9tLW9wdGlvbi8x",
"textField": {
"sku": "100001-welcome",
"price": 10
}
},
{
"title": "Hobby",
"required": true,
"sort_order": 2,
"uid": "Y3VzdG9tLW9wdGlvbi8y",
"dropDown": [
{
"sku": null,
"price": 20
},
{
"sku": null,
"price": 10
},
{
"sku": null,
"price": 15
}
]
}
]
}
]
}
}
}
