> ## Documentation Index
> Fetch the complete documentation index at: https://docs.openbridge.shop/llms.txt
> Use this file to discover all available pages before exploring further.

# Product Types

> TypeScript interfaces for products

## ShopifyProduct

```typescript theme={null}
interface ShopifyProduct {
    id: string
    handle: string
    title: string
    description: string
    descriptionHtml: string
    availableForSale: boolean
    featuredImage: ShopifyImage | null
    images: ShopifyImage[]
    priceRange: ShopifyPriceRange
    compareAtPriceRange: ShopifyPriceRange
    options: ShopifyProductOption[]
    variants: ShopifyProductVariant[]
    sellingPlanGroups: ShopifySellingPlanGroup[]
    productType: string
    vendor: string
    tags: string[]
    createdAt: string
    updatedAt: string
    publishedAt: string
    onlineStoreUrl: string | null
    seo: ShopifySeo
}
```

***

## ShopifyProductVariant

```typescript theme={null}
interface ShopifyProductVariant {
    id: string
    title: string
    availableForSale: boolean
    price: ShopifyMoney
    compareAtPrice: ShopifyMoney | null
    image: ShopifyImage | null
    selectedOptions: Array<{
        name: string
        value: string
    }>
    sku: string | null
}
```

***

## ShopifyProductOption

```typescript theme={null}
interface ShopifyProductOption {
    id: string
    name: string
    values: string[]
}
```

***

## ProductsResult

Response from `openbridge.products.list()`

```typescript theme={null}
interface ProductsResult {
    items: ShopifyProduct[]
    pageInfo: ShopifyPageInfo
}
```

***

## ProductField

Available fields for `.select()` on products.

```typescript theme={null}
type ProductField =
    | 'id'
    | 'handle'
    | 'title'
    | 'description'
    | 'descriptionHtml'
    | 'availableForSale'
    | 'featuredImage'
    | 'images'
    | 'priceRange'
    | 'compareAtPriceRange'
    | 'options'
    | 'variants'
    | 'sellingPlanGroups'
    | 'productType'
    | 'vendor'
    | 'tags'
    | 'createdAt'
    | 'updatedAt'
    | 'publishedAt'
    | 'onlineStoreUrl'
    | 'seo'
```

***

## ShopifySellingPlanGroup

A group of selling plans (e.g., "Pre-order options").

```typescript theme={null}
interface ShopifySellingPlanGroup {
    name: string
    options: Array<{ name: string; values: string[] }>
    sellingPlans: ShopifyProductSellingPlan[]
}
```

***

## ShopifyProductSellingPlan

A selling plan within a group (e.g., "\$50 deposit").

```typescript theme={null}
interface ShopifyProductSellingPlan {
    id: string
    name: string
    description: string | null
    options: Array<{ name: string; value: string }>
    priceAdjustments: Array<{
        adjustmentValue: {
            adjustmentPercentage?: number
            adjustmentAmount?: ShopifyMoney
            price?: ShopifyMoney
        }
    }>
    checkoutCharge: {
        type: 'PERCENTAGE' | 'PRICE'
        value: {
            percentage?: number
            amount?: ShopifyMoney
        }
    }
}
```
