Product

Interface

A published product on the storefront catalogue. Mirrors the API's public whitelist: only buyer-facing fields are present, and id is a wire-encoded prefixed id (never a raw database identifier).

Property

Type

Optional

Description

compareAtPriceCents

number | null

No

Optional strikethrough "was" price in cents, or null when there is no comparison price.

currency

string

No

ISO 4217 currency code (e.g. 'EUR').

description

string | null

No

Long product description, or null when the merchant left it empty.

gallery

ProductGalleryImage[]

No

Ordered gallery with per-image metadata. Same images and order as Product.images; prefer this field when you need alt text or captions. Empty array when the product has no images. gallery.map((g) => g.url) equals Product.images, and gallery[0]?.url ?? null equals Product.thumbnail.

id

string

No

The product id as a prefixed wire id (e.g. 'prod_...'). Stable; safe to store and link.

images

string[]

No

Ordered public image URLs, or an empty array when the product has no images.

kind

"standard" | "bookable"

No

'standard' for a normal product, 'bookable' for a reservation product (route it to the slot UI and reservations).

priceCents

number

No

Price in the smallest currency unit (cents). Divide by 100 to display. For a product with variants this is the base "from" price; the selected variant's own ProductVariant.priceCents is the selling price.

seoDescription

string | null

No

SEO meta description, or null when unset.

seoTitle

string | null

No

SEO title override, or null when unset (fall back to title).

sku

string | null

No

Catalogue SKU, or null when unset.

slug

string

No

URL-friendly unique slug. Use it to build a product page URL or to address the product in products.getBySlug().

thumbnail

string | null

No

The primary image URL (mirror of images[0]), or null when there are no images.

title

string

No

Product title in the requested locale. Always non-empty for a published product.

variants

ProductVariant[]

No

Product variants, ordered by position. Empty when the product has none.


ProductGalleryImage

Interface

One product gallery image with its display metadata. The same image also appears, in the same order, as a bare URL in Product.images.

Property

Type

Optional

Description

alt

string | null

No

Merchant-provided alt text for the image, or null when unset. Use it for <img alt>; fall back to the product title when null. Max 255 chars.

caption

string | null

No

Merchant-provided caption, or null when unset. Suited to a <figcaption>. Max 500 chars.

url

string

No

Public image URL, served from the Lynkow media library. Same value as the corresponding images[n] entry.


ProductsFilters

Interface

Filters for a storefront product listing. All optional.

Property

Type

Optional

Description

category

string

Yes

Restrict to one category, INCLUDING its sub-categories: its 'pcat_...' wire id or its slug.

collection

string

Yes

Restrict to one collection: its 'col_...' wire id or its slug.

kind

"standard" | "bookable"

Yes

Restrict to a product kind: 'standard' or 'bookable'.

limit

number

Yes

Items per page. Defaults to 20, max 100.

page

number

Yes

Page number (1-based). Defaults to 1.

search

string

Yes

Full-text search across title and slug.

sortBy

"title" | "price_cents" | "created_at"

Yes

Sort field: 'title', 'price_cents', or 'created_at'. Defaults to 'created_at'.

sortOrder

"asc" | "desc"

Yes

Sort direction: 'asc' or 'desc'. Defaults to 'desc'.


ProductsListResponse

Interface

Paginated product list response: the products on the page plus pagination metadata.

Property

Type

Optional

Description

data

Product[]

No

The published products on this page.

meta

PaginationMeta

No

Pagination info (total, currentPage, lastPage, perPage, hasMorePages).


ProductVariant

Interface

A purchasable variant of a product. Present only for published products on sites with variants enabled; a product without variants has an empty array.

Property

Type

Optional

Description

compareAtPriceCents

number | null

No

Optional strikethrough "was" price in cents, or null.

gallery

ProductGalleryImage[]

No

The variant's own ordered image gallery, with per-image metadata. When the<br>variant selects its own subset of the product images, this carries that subset<br>(same {@link ProductGalleryImage} shape as Product.gallery); when it<br>selects none, it falls back to the full product gallery, so it is never empty for<br>a product that has images. Prefer it over Product.gallery when you show a<br>gallery for the selected variant.

id

string

No

The variant id as a prefixed wire id (e.g. 'var_...'). Stable; safe to store and link.

optionValues

ProductVariantOptionValue[]

No

The option values this variant represents, ordered by option position.

position

number

No

Display order within the product (ascending).

priceCents

number

No

Variant price in the smallest currency unit (cents). Divide by 100 to display.

sku

string | null

No

Variant SKU, or null when unset.

title

string

No

Display title, e.g. 'M / Red'.


ProductVariantOptionValue

Interface

One selected option value carried by a variant (e.g. Size: M).

Property

Type

Optional

Description

option

string

No

The option (axis) label, e.g. 'Size'.

value

string

No

The selected value label, e.g. 'M'.