mirror of
https://github.com/vercel/commerce.git
synced 2025-05-15 05:56:59 +00:00
148 lines
3.2 KiB
TypeScript
148 lines
3.2 KiB
TypeScript
import { Image } from './types'
|
||
|
||
export interface ProductPrice {
|
||
/**
|
||
* The price after all discounts are applied.
|
||
*/
|
||
value: number
|
||
/**
|
||
* The currency code for the price. This is a 3-letter ISO 4217 code.
|
||
* @example USD
|
||
*/
|
||
currencyCode?: 'USD' | 'EUR' | 'ARS' | 'GBP' | string
|
||
/**
|
||
* The retail price of the product. This can be used to mark a product as on sale, when `retailPrice` is higher than the price a.k.a `value`.
|
||
*/
|
||
retailPrice?: number
|
||
}
|
||
|
||
export interface ProductOption {
|
||
__typename?: 'MultipleChoiceOption'
|
||
/**
|
||
* The unique identifier for the option.
|
||
*/
|
||
id: string
|
||
/**
|
||
* The product option’s name.
|
||
* @example `Color` or `Size`
|
||
*/
|
||
displayName: string
|
||
/**
|
||
* List of option values.
|
||
* @example `["Red", "Green", "Blue"]`
|
||
*/
|
||
values: ProductOptionValues[]
|
||
}
|
||
|
||
export interface ProductOptionValues {
|
||
/**
|
||
* A string that uniquely identifies the option value.
|
||
*/
|
||
label: string
|
||
/**
|
||
* List of hex colors used to display the actual colors in the swatches instead of the name.
|
||
*/
|
||
hexColors?: string[]
|
||
}
|
||
|
||
export interface ProductVariant {
|
||
/**
|
||
* The unique identifier for the variant.
|
||
*/
|
||
id: string
|
||
/**
|
||
* The SKU (stock keeping unit) associated with the product variant.
|
||
*/
|
||
sku?: string
|
||
/**
|
||
* The product variant’s name, or the product's name.
|
||
*/
|
||
name?: string
|
||
/**
|
||
* List of product options.
|
||
*/
|
||
options: ProductOption[]
|
||
/**
|
||
* The product variant’s price after all discounts are applied.
|
||
*/
|
||
price?: ProductPrice
|
||
/**
|
||
* The retail price of the product. This can be used to mark a product as on sale, when `retailPrice` is higher than the `price`.
|
||
*/
|
||
retailPrice?: ProductPrice
|
||
/**
|
||
* Indicates if the variant is available for sale.
|
||
*/
|
||
availableForSale?: boolean
|
||
/**
|
||
* Whether a customer needs to provide a shipping address when placing an order for the product variant.
|
||
*/
|
||
requiresShipping?: boolean
|
||
/**
|
||
* The image associated with the variant.
|
||
*/
|
||
image?: Image
|
||
}
|
||
|
||
export interface Product {
|
||
/**
|
||
* The currency for the product.
|
||
*/
|
||
currencyCode: string
|
||
/**
|
||
* The title for the product.
|
||
*/
|
||
title: string
|
||
/**
|
||
* The unique identifier for the product.
|
||
*/
|
||
id: string
|
||
/**
|
||
* The name of the product.
|
||
*/
|
||
name: string
|
||
/**
|
||
* Stripped description of the product, single line.
|
||
*/
|
||
description: string
|
||
/**
|
||
* The description of the product, complete with HTML formatting.
|
||
*/
|
||
descriptionHtml?: string
|
||
/**
|
||
* The SKU (stock keeping unit) associated with the product.
|
||
*/
|
||
sku?: string
|
||
/**
|
||
* A human-friendly unique string for the product, automatically generated from its title.
|
||
*/
|
||
slug?: string
|
||
/**
|
||
* Relative URL on the storefront for the product.
|
||
*/
|
||
path?: string
|
||
/**
|
||
* List of images associated with the product.
|
||
*/
|
||
images: Image[]
|
||
/**
|
||
* List of the product’s variants.
|
||
*/
|
||
variants: ProductVariant[]
|
||
/**
|
||
* The product's base price. Could be the minimum value, or default variant price.
|
||
*/
|
||
price: ProductPrice
|
||
/**
|
||
* List of product's options.
|
||
*/
|
||
options: ProductOption[]
|
||
/**
|
||
* The product’s vendor name.
|
||
*/
|
||
vendor?: string
|
||
/**
|
||
* The locale version of the product.
|
||
*/
|
||
locale?: string
|
||
} |