Skip to main content

Data Models

This page documents every object returned by the Customer API. Field names match the JSON wire format exactly — use them verbatim.

Field naming conventions

JSON property names in response bodies use PascalCase as they appear in the model. Examples: SKU, Name, PriceExclVAT, MOQ, OrderMultiple, AmazonASIN, HSCode, NextAvailableETA.

All dates use YYYY-MM-DD (ISO 8601). Numeric fields use JSON numbers (no quoting). Timestamps where used are ISO 8601 UTC.

:::note Schema endpoint casing The schema endpoints describe field names in camelCase (sKU, mOQ, hSCode, etc.), while the data endpoints themselves return PascalCase (SKU, MOQ, HSCode, etc.). This is a known mismatch in the current API profile. If your client consumes the schema endpoint to drive column generation, expect the schema names to differ from the property keys in /products, /stock, and /prices responses. Use the literal keys in the data responses. :::

Models

Product

Returned by /products.

FieldTypeDescription
SKUstringStock-keeping unit. The unique product code.
NamestringShort product name.
DescriptionstringLong product description.
WebsiteDescriptionstringDescription optimised for online use.
ProductCategoryCodestringThe category the product belongs to.
WashingInstructionsstringFree-text care instructions.
GenderstringGender classification.
AudiencestringTarget audience classification (e.g. Adult, Child).
MainColourstringPrimary colour description.
BarcodestringGTIN/EAN barcode for the retail pack.
PhotostringURL of the primary photograph.
ThemestringTheme classification.
PackagedLength_in_cmdecimalRetail pack length in centimetres.
PackagedWidth_in_cmdecimalRetail pack width in centimetres.
PackagedHeight_in_cmdecimalRetail pack height in centimetres.
PackagedWeight_in_gdecimalRetail pack weight in grams.
CartonLength_in_cmdecimalOuter carton length in centimetres.
CartonWidth_in_cmdecimalOuter carton width in centimetres.
CartonHeight_in_cmdecimalOuter carton height in centimetres.
CartonWeight_in_gdecimalOuter carton weight in grams.
CartonQtydecimalUnits packed per outer carton.
AmazonASINstringAmazon ASIN, where assigned.
CountryOfOriginstringISO 3166‑1 alpha‑2 country code (e.g. CN).
StatusstringProduct status. Obsolete products are not returned by the data endpoints.
StyleCodestringStyle grouping code for variants of the same style.
CartonBarcodestringOuter-carton barcode (typically GTIN‑14).
HSCodestringHarmonised System (customs) code.
WhatsIncludedstringWhat's-in-the-box description.
ProductCompositionTextstringFree-text composition summary.
ProductImagesarray of Product ImageAll product images.
ProductAccessoriesarray of Product AccessoryRelated accessory SKUs.
ProductSubstitutionsarray of Product SubstitutionSubstitute SKUs.
ProductCompositionarray of Product CompositionMaterial breakdown.
ProductPricesarray of Product PriceYour price-list entries for this SKU (filtered to your assigned price list).

ProductImage

FieldTypeDescription
ImageIDstringIdentifier for the image asset.
FileNamestringImage filename or full URL.
IsPrimaryImagebooleantrue when this is the primary image.

ProductAccessory

FieldTypeDescription
AccessorySKUstringSKU of a related accessory product.

ProductSubstitution

FieldTypeDescription
SubstituteSKUstringSKU of a recommended substitute.

ProductComposition

FieldTypeDescription
MaterialCodestringCode for the material.
MaterialDescriptionstringHuman-readable material name.
CompositionPercentagedecimalPercentage of the product made of this material (0–100).

ProductPrice

Returned standalone by /prices and nested inside each Product at ProductPrices[].

FieldTypeDescription
PriceListCodestringIdentifier of the price list.
PriceListNamestringDisplay name of the price list.
CurrencyCodestringISO 4217 currency code.
SKUstringThe SKU this price applies to.
PriceExclVATdecimalNet unit price ex‑VAT, with your discount applied where eligible (rounded to 4 decimal places).
MOQdecimalMinimum order quantity.
OrderMultipledecimalOrder increment — quantities must be a multiple of this.

StockEntry

Returned by /stock.

FieldTypeDescription
SKUstringThe product SKU.
StockLocationstringWarehouse code where this stock is held.
AvailableQTYdecimalQuantity currently available to order.
NextAvailableETAdate | nullExpected next-availability date as YYYY-MM-DD. null when not known.

Type reference

TypeDescription
stringUTF‑8 text. JSON strings as usual.
integerWhole-number JSON value.
decimalJSON number with optional fraction. Treat as fixed-precision in your client.
booleanJSON true / false.
dateYYYY-MM-DD UTC date string.
nullAbsent or unknown. Allowed where explicitly noted.

Common patterns

Joining stock to products

Both responses share the SKU key. A typical local model is:

Product (SKU is the primary key)
├── StockEntry (one per warehouse you're entitled to)
└── ProductPrice (one or more per price list)

If your application joins these, do so on SKU.

Detecting out-of-stock

A SKU is currently out of stock when AvailableQTY is 0. The NextAvailableETA field tells you when it's expected back, if Kiss knows. A null ETA does not mean "never" — it means "no date available yet".

Working with currencies

Each price-list entry carries its own CurrencyCode. Don't assume the currency is the same across all rows even within a single price list, although in practice it usually is.