ChemPal Documentation - v1.7.0
    Preparing search index...

    Interface Product

    Represents a chemical product with its complete details, extending the Variant interface. This is the main product type used throughout the application.

    const product: Product = {
    supplier: "Loudwolf",
    title: "Sodium Chloride ACS Grade",
    url: "/products/sodium-chloride-acs",
    price: 19.99,
    currencyCode: "USD",
    currencySymbol: "$",
    quantity: 500,
    uom: "g",
    cas: "7647-14-5",
    formula: "NaCl"
    };
    interface Product {
        shortDescription?: string;
        rating?: number;
        reviewCount?: number;
        baseQuantity?: number;
        baseUom?: Uom;
        usdPrice?: number;
        localPrice?: number;
        sku?: string | number;
        id?: string | number;
        uuid?: string | number;
        cacheKey?: string;
        grade?: string;
        concentration?: string;
        moleweight?: number;
        formula?: string;
        purity?: string;
        status?: string;
        statusTxt?: string;
        shippingInformation?: string;
        purchaseRestriction?: PurchaseRestriction;
        availability?: Availability;
        attributes?: { name: string; value: string }[];
        moles?: number;
        images?: ProductImage[];
        _id?: number;
        parentProduct?: { title: string; url: string; permalink?: string };
        priceSeriesKey?: string;
        priceTrendValue?: number;
        supplier: string;
        title: string;
        url: string;
        permalink?: string;
        price: number;
        currencyCode: valueof;
        currencySymbol: valueof;
        quantity: number;
        uom: string;
        description?: string;
        manufacturer?: string;
        cas?: `${string}-${string}-${string}`;
        vendor?: string;
        variants?: Variant[];
        docLinks?: string[];
        sdsUrl?: string;
        coaUrl?: string;
        specSheetUrl?: string;
        supplierCountry?: any;
        supplierShipping?: ShippingRange;
        paymentMethods?: PaymentMethod[];
        supplierEbayStoreURL?: string;
        supplierAmazonStoreURL?: string;
        _fuzz?: { score: number; idx: number };
        matchPercentage?: number;
        smiles?: undefined;
        iupacName?: IupacName<string>;
        pubchemId?: PubChemCID;
        inchiKey?: InChIKey<string>;
        inchi?: InChI<string>;
    }

    Hierarchy (View Summary)

    Index

    Properties

    shortDescription?: string

    Short description of the variant

    "Sodium Chloride 500g"
    
    rating?: number

    Rating of the variant

    4.5
    
    reviewCount?: number

    Number of reviews for the variant

    100
    
    baseQuantity?: number

    Reference quantity for unit conversion calculations

    500
    
    baseUom?: Uom

    Reference unit of measurement for conversions

    "g"
    
    usdPrice?: number

    Price converted to USD for comparison

    19.99
    
    localPrice?: number

    The price convert to the users local currency

    sku?: string | number

    Stock keeping unit identifier for inventory tracking

    "NaCl-500"
    
    id?: string | number

    Unique identifier within the system

    12345
    
    uuid?: string | number

    Globally unique identifier

    "550e8400-e29b-41d4-a716-446655440000"
    
    cacheKey?: string

    Stable per-product cache/exclusion identity, as derived by SupplierBase.getUniqueProductKey and frozen on the builder at parse time. Combined with the supplier name (via getProductIdentityKey) to key the product-detail cache and the "Ignore Product" exclusion store.

    "FAM_889460"
    
    grade?: string

    Chemical grade specification (e.g., 'ACS', 'Technical')

    "ACS"
    
    concentration?: string

    Chemical concentration specification

    "98%"
    
    moleweight?: number

    Molecular weight of the variant

    100.00
    
    formula?: string

    Molecular formula

    `C<sub>18</sub>H<sub>33</sub>NaO<sub>3</sub>`
    
    purity?: string

    Purity of the variant, as a percentage string. Keeps any qualifier the supplier reports, e.g. comparators (<, >, , ) and the % sign.

    "98%"
    
    "≥99%"
    
    status?: string

    Current status code of the variant

    "IN_STOCK"
    
    statusTxt?: string

    Human-readable status description

    "In Stock"
    
    shippingInformation?: string

    Special shipping requirements or information

    "Hazardous material - special shipping required"
    
    purchaseRestriction?: PurchaseRestriction

    Parsed purchase restrictions (region/buyer/etc.) used to hide options a given user cannot buy. See PurchaseRestriction.

    availability?: Availability

    Availability of the variant

    "IN_STOCK"
    
    attributes?: { name: string; value: string }[]

    Attributes of the variant

    `[{ name: "Size", value: "500g" }]`
    
    moles?: number

    Number of moles of the variant

    23.5
    
    images?: ProductImage[]

    Flat list of the product's images. Full-size images and thumbnails are kept as separate, independent entries distinguished by their type field (see ProductImage; a supplier's main image/thumbnail is often not part of its gallery). The first entry of each type is treated as that type's default.

    `[{ href: "https://example.com/image.jpg", type: "image" }, { href: "https://example.com/thumb.jpg", type: "thumbnail" }]`
    
    _id?: number

    Positional index of the product within the current search-results list, assigned at render/persist time. This is NOT a stable product identifier (that is id) — it only conveys row position, so consumers that need a unique row key can use it without clobbering the real product id.

    0
    
    parentProduct?: { title: string; url: string; permalink?: string }

    Display-only back-reference to the main product, set on flattened variant rows when the "group product variants" setting is off (see flattenProductVariants). Lets the detail panel link back to the parent instead of listing variants. Never set by suppliers, never persisted or exported.

    priceSeriesKey?: string

    Display-only price-history series id for this row, stamped on flattened variant rows when the "group product variants" setting is off (see flattenProductVariants). Because flattening merges the variant onto a copy of the product and drops variants, the row can no longer recompute its own variantSeriesKey; carrying the resolved key lets the results table look up the variant's recorded series directly. Never set by suppliers, never persisted or exported.

    priceTrendValue?: number

    Display-only signed percent change of this row's price trend (rising = +, falling = −), stamped by the results table so its trend column has a value to sort by (price history isn't on the row — it's loaded separately). Absent when the row has no drawable trend. Never set by suppliers, never persisted or exported.

    supplier: string

    Name of the supplier providing the product

    "Loudwolf"
    
    title: string

    Full product title/name

    "Sodium Chloride ACS Grade 500g"
    
    url: string

    Absolute URL ChemPal queries/processes for this product. For scraped suppliers this is the product page; for JSON-backed suppliers it may be an API endpoint. Used as the product's processing identity (cache and exclusion keys, detail fetches).

    "https://supplier.com/products/sodium-chloride-500g"
    
    permalink?: string

    Absolute human-facing page the user opens in the browser. Defaults to url (so scraped suppliers need not set it); JSON-backed suppliers whose web UI differs from their API endpoint set it explicitly.

    "https://supplier.com/products/sodium-chloride-500g"
    
    price: number

    Current price of the product

    19.99
    
    currencyCode: valueof

    ISO currency code for the price

    "USD"
    
    currencySymbol: valueof

    Display symbol for the currency

    "$"
    
    quantity: number

    Available quantity in stock

    100
    
    uom: string

    Standardized unit of measurement

    "g"
    
    description?: string

    Detailed product description

    "ACS grade sodium chloride suitable for analytical use"
    
    manufacturer?: string

    Name of the product manufacturer

    "Sigma-Aldrich"
    
    cas?: `${string}-${string}-${string}`

    Chemical Abstracts Service registry number

    "7647-14-5"
    
    vendor?: string

    Alternative name for the supplier

    "Sigma"
    
    variants?: Variant[]

    Array of available product variations

    docLinks?: string[]

    URLs to related documentation (MSDS, SDS, etc.)

    ["https://supplier.com/msds/nacl.pdf"]
    
    sdsUrl?: string

    URL to the product's SDS page

    "https://supplier.com/sds/nacl.pdf"
    
    coaUrl?: string

    URL to the product's Certificate of Analysis (COA) document

    "https://supplier.com/coa/nacl.pdf"
    
    specSheetUrl?: string

    specsheet

    supplierCountry?: any

    Country of the supplier

    "US"
    
    supplierShipping?: ShippingRange

    Shipping scope of the supplier

    "worldwide" | "domestic" | "international" | "local"
    
    paymentMethods?: PaymentMethod[]

    Payment methods accepted by the supplier

    ["visa", "mastercard"]
    
    supplierEbayStoreURL?: string

    The supplier's eBay storefront, set when they accept "ebayonly" — they restrict shipping on their own site but ship more freely via the marketplace.

    "https://www.ebay.com/str/dailybiousa"
    
    supplierAmazonStoreURL?: string

    The supplier's Amazon storefront, set when they accept "amazononly".

    "https://www.amazon.com/s?k=HiMedia"
    
    _fuzz?: { score: number; idx: number }

    Levenshtein result of the product title and the search string

    95
    
    matchPercentage?: number

    Match percentage of the product title and the search string

    95
    
    smiles?: undefined

    SMILES notation for the product

    "C1=CC=CC=C1"
    
    iupacName?: IupacName<string>

    IUPAC name for the product

    "dipotassium;oxalate"
    
    pubchemId?: PubChemCID

    PubChem Compound ID (CID) for the product

    11413
    
    inchiKey?: InChIKey<string>

    InChIKey for the product

    "IRXRGVFLQOSHOH-UHFFFAOYSA-L"
    
    inchi?: InChI<string>

    InChI string for the product

    "1S/C2H2O4.2K/c3-1(4)2(5)6;;/h(H,3,4)(H,5,6);;/q;2*+1/p-2"