๐ท๏ธ GetProductVariantOptions
TypeScript interface defining all available options for the getProductVariant()
function.
๐ Interface Definitionโ
interface GetProductVariantOptions {
variantId: string;
productFields?: string[];
variantFields?: string[];
productMetafields?: CustomMetafieldDefinition[];
variantMetafields?: CustomMetafieldDefinition[];
options?: {
camelizeKeys?: boolean;
resolveFiles?: boolean;
renderRichTextAsHtml?: boolean;
transformProductMetafields?: MetafieldTransformFn;
transformVariantMetafields?: MetafieldTransformFn;
};
}
๐ Core Propertiesโ
variantId
(required)โ
- Type:
string
- Description: The Shopify variant ID to fetch
- Format:
"gid://shopify/ProductVariant/123456789"
const options: GetProductVariantOptions = {
variantId: "gid://shopify/ProductVariant/123456789",
};
๐ Field Selectionโ
productFields
โ
- Type:
string[]
- Optional: Yes
- Default:
["id", "title", "handle"]
- Description: Additional product fields to include beyond defaults
Available Values:
type ProductField =
| "vendor"
| "productType"
| "tags"
| "descriptionHtml"
| "description"
| "images"
| "featuredImage"
| "variants"
| "seo"
| "createdAt"
| "updatedAt";
variantFields
โ
- Type:
string[]
- Optional: Yes
- Default:
["id", "title"]
- Description: Additional variant fields to include beyond defaults
Available Values:
type VariantField =
| "price"
| "compareAtPrice"
| "availableForSale"
| "selectedOptions"
| "image"
| "sku"
| "barcode"
| "weight"
| "weightUnit"
| "requiresShipping"
| "taxable"
| "inventoryQuantity"
| "inventoryPolicy";
๐ท๏ธ Metafield Configurationโ
productMetafields
โ
- Type:
CustomMetafieldDefinition[]
- Optional: Yes
- Description: Product metafields to include in results
variantMetafields
โ
- Type:
CustomMetafieldDefinition[]
- Optional: Yes
- Description: Variant metafields to include in results
CustomMetafieldDefinition
โ
interface CustomMetafieldDefinition {
field: string;
type: MetafieldType;
}
type MetafieldType =
| "single_line_text"
| "multi_line_text"
| "rich_text"
| "number_integer"
| "number_decimal"
| "date"
| "date_time"
| "boolean"
| "url"
| "json"
| "color"
| "weight"
| "volume"
| "dimension"
| "rating"
| "file_reference"
| "page_reference"
| "product_reference"
| "variant_reference"
| "collection_reference";
๐ง Processing Optionsโ
options
โ
- Type:
object
- Optional: Yes
- Description: Additional processing configuration
interface ProcessingOptions {
camelizeKeys?: boolean;
resolveFiles?: boolean;
renderRichTextAsHtml?: boolean;
transformProductMetafields?: MetafieldTransformFn;
transformVariantMetafields?: MetafieldTransformFn;
}
Processing Option Details:โ
camelizeKeys
- Type:
boolean
- Default:
true
- Description: Convert metafield keys to camelCase
resolveFiles
- Type:
boolean
- Default:
true
- Description: Resolve file metafields to full URLs
renderRichTextAsHtml
- Type:
boolean
- Default:
false
- Description: Convert rich text to HTML strings
transformProductMetafields
- Type:
MetafieldTransformFn
- Description: Custom product metafield transformation
transformVariantMetafields
- Type:
MetafieldTransformFn
- Description: Custom variant metafield transformation
MetafieldTransformFn
โ
type MetafieldTransformFn = (
raw: Record<string, any>,
casted: Record<string, any>
) => Record<string, any>;
๐งช Usage Examplesโ
Basic Optionsโ
const basicOptions: GetProductVariantOptions = {
variantId: "gid://shopify/ProductVariant/123456789",
};
With Additional Fieldsโ
const withFields: GetProductVariantOptions = {
variantId: "gid://shopify/ProductVariant/123456789",
productFields: ["vendor", "productType", "images"],
variantFields: ["price", "availableForSale", "selectedOptions"],
};
With Metafieldsโ
const withMetafields: GetProductVariantOptions = {
variantId: "gid://shopify/ProductVariant/123456789",
productMetafields: [
{ field: "custom.brand", type: "single_line_text" },
{ field: "custom.warranty_years", type: "number_integer" },
],
variantMetafields: [
{ field: "custom.sku", type: "single_line_text" },
{ field: "custom.weight", type: "weight" },
],
};
Complete Configurationโ
const completeOptions: GetProductVariantOptions = {
variantId: "gid://shopify/ProductVariant/123456789",
productFields: [
"vendor",
"productType",
"tags",
"descriptionHtml",
"images",
"variants",
],
variantFields: [
"price",
"compareAtPrice",
"availableForSale",
"selectedOptions",
"image",
"sku",
],
productMetafields: [
{ field: "custom.brand", type: "single_line_text" },
{ field: "custom.warranty_years", type: "number_integer" },
{ field: "custom.specifications", type: "rich_text" },
],
variantMetafields: [
{ field: "custom.sku", type: "single_line_text" },
{ field: "custom.weight", type: "weight" },
{ field: "custom.color_code", type: "color" },
],
options: {
camelizeKeys: true,
resolveFiles: true,
renderRichTextAsHtml: true,
transformProductMetafields: (raw, casted) => ({
...casted,
displayBrand: casted.customBrand?.toUpperCase(),
warrantyText: `${casted.customWarrantyYears} year warranty`,
}),
transformVariantMetafields: (raw, casted) => ({
...casted,
displayWeight: `${casted.customWeight?.value} ${casted.customWeight?.unit}`,
}),
},
};
โ Next: Result Types โ
Description
TypeScript interface for getProductVariant options parameter.