UNPKG

@noaignite/centra-types

Version:

Typescript definitions for centra apis

145 lines (137 loc) 3.56 kB
import { OverridableObject, OverridableStringUnion, Prettify } from '../utils' import { BundleInfo } from './BundleInfo' import { Item } from './Item' export interface ProductMeasurementChartOverrides {} export interface ProductMediaObjectsAttributesOverrides {} export interface ProductPriceAttributeOverrides {} export interface ProductRelatedProductOverrides {} export interface Product { available?: boolean relatedProducts?: RelatedProduct[] bundleInfo?: BundleInfo product?: string name?: string uri?: string sku?: string productSku?: string brand?: string brandName?: string | null brandUri?: string | null collection?: string collectionName?: string | null collectionUri?: string | null variantName?: string countryOrigin?: string excerpt?: string excerptHtml?: string description?: string descriptionHtml?: string metaTitle?: string metaDescription?: string metaKeywords?: string stockUnit?: string category?: string centraProduct?: string centraVariant?: string itemQuantityMinimum?: number itemQuantityMultipleOf?: number price?: string priceAsNumber?: number priceBeforeDiscount?: string priceBeforeDiscountAsNumber?: number discountPercent?: number lowestPrice?: { periodDays?: number price?: string priceAsNumber?: number priceBeforeDiscount?: string priceBeforeDiscountAsNumber?: number }[] showAsOnSale?: boolean showAsNew?: boolean itemTable?: { unit?: string original?: { x?: string[] y?: string[] } x?: string[] dividerSymbol?: string desc?: string y?: string[] } tableMappings?: Record< string, { unit?: string x?: Record<string, string> // TODO: type this /** * This property is not documented in the Swagger specification. */ y?: unknown[] dividerSymbol?: string[] countries?: string[] } > defaultLocalizedChart?: string items?: Item[] categoryName?: string[] | null categoryUri?: string | null categories?: { pathIds?: string[] sortOrder?: number name?: string[] category?: string uri?: string }[] media?: Record<string, string[]> mediaObjects?: { media?: number sources?: Record<string, { url?: string }[]> // TODO: type this attributes: OverridableObject<unknown[], ProductMediaObjectsAttributesOverrides> }[] modifiedAt?: string // TODO: type this measurementChart?: OverridableObject<unknown[], ProductMeasurementChartOverrides> createdAt: string preview?: boolean subscriptionPlans?: { name?: string intervalValue?: number intervalType?: string discountPercent?: number shippingType?: string subscriptionPlan?: number status?: string price?: string priceAsNumber?: number priceAfterDiscount?: string priceAfterDiscountAsNumber?: number }[] relation?: string } export type RelatedProduct = Omit<Product, 'relatedProducts'> & { relatedProducts?: Pick<Product, 'available' | 'media' | 'product' | 'relation'>[] } export type ProductPriceAttribute = OverridableStringUnion< | 'price' | 'priceAsNumber' | 'priceBeforeDiscount' | 'priceBeforeDiscountAsNumber' | 'discountPercent' | 'showAsOnSale' | 'showAsNew', ProductPriceAttributeOverrides > export type ProductWithPrices = Prettify< Omit<Product, ProductPriceAttribute> & { prices?: Record<string, Pick<Product, ProductPriceAttribute>> } > export type ProductWithMarkets = Prettify< Product & { markets?: number[] } >