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.
| Field | Type | Description |
|---|---|---|
SKU | string | Stock-keeping unit. The unique product code. |
Name | string | Short product name. |
Description | string | Long product description. |
WebsiteDescription | string | Description optimised for online use. |
ProductCategoryCode | string | The category the product belongs to. |
WashingInstructions | string | Free-text care instructions. |
Gender | string | Gender classification. |
Audience | string | Target audience classification (e.g. Adult, Child). |
MainColour | string | Primary colour description. |
Barcode | string | GTIN/EAN barcode for the retail pack. |
Photo | string | URL of the primary photograph. |
Theme | string | Theme classification. |
PackagedLength_in_cm | decimal | Retail pack length in centimetres. |
PackagedWidth_in_cm | decimal | Retail pack width in centimetres. |
PackagedHeight_in_cm | decimal | Retail pack height in centimetres. |
PackagedWeight_in_g | decimal | Retail pack weight in grams. |
CartonLength_in_cm | decimal | Outer carton length in centimetres. |
CartonWidth_in_cm | decimal | Outer carton width in centimetres. |
CartonHeight_in_cm | decimal | Outer carton height in centimetres. |
CartonWeight_in_g | decimal | Outer carton weight in grams. |
CartonQty | decimal | Units packed per outer carton. |
AmazonASIN | string | Amazon ASIN, where assigned. |
CountryOfOrigin | string | ISO 3166‑1 alpha‑2 country code (e.g. CN). |
Status | string | Product status. Obsolete products are not returned by the data endpoints. |
StyleCode | string | Style grouping code for variants of the same style. |
CartonBarcode | string | Outer-carton barcode (typically GTIN‑14). |
HSCode | string | Harmonised System (customs) code. |
WhatsIncluded | string | What's-in-the-box description. |
ProductCompositionText | string | Free-text composition summary. |
ProductImages | array of Product Image | All product images. |
ProductAccessories | array of Product Accessory | Related accessory SKUs. |
ProductSubstitutions | array of Product Substitution | Substitute SKUs. |
ProductComposition | array of Product Composition | Material breakdown. |
ProductPrices | array of Product Price | Your price-list entries for this SKU (filtered to your assigned price list). |
ProductImage
| Field | Type | Description |
|---|---|---|
ImageID | string | Identifier for the image asset. |
FileName | string | Image filename or full URL. |
IsPrimaryImage | boolean | true when this is the primary image. |
ProductAccessory
| Field | Type | Description |
|---|---|---|
AccessorySKU | string | SKU of a related accessory product. |
ProductSubstitution
| Field | Type | Description |
|---|---|---|
SubstituteSKU | string | SKU of a recommended substitute. |
ProductComposition
| Field | Type | Description |
|---|---|---|
MaterialCode | string | Code for the material. |
MaterialDescription | string | Human-readable material name. |
CompositionPercentage | decimal | Percentage of the product made of this material (0–100). |
ProductPrice
Returned standalone by /prices and nested
inside each Product at ProductPrices[].
| Field | Type | Description |
|---|---|---|
PriceListCode | string | Identifier of the price list. |
PriceListName | string | Display name of the price list. |
CurrencyCode | string | ISO 4217 currency code. |
SKU | string | The SKU this price applies to. |
PriceExclVAT | decimal | Net unit price ex‑VAT, with your discount applied where eligible (rounded to 4 decimal places). |
MOQ | decimal | Minimum order quantity. |
OrderMultiple | decimal | Order increment — quantities must be a multiple of this. |
StockEntry
Returned by /stock.
| Field | Type | Description |
|---|---|---|
SKU | string | The product SKU. |
StockLocation | string | Warehouse code where this stock is held. |
AvailableQTY | decimal | Quantity currently available to order. |
NextAvailableETA | date | null | Expected next-availability date as YYYY-MM-DD. null when not known. |
Type reference
| Type | Description |
|---|---|
string | UTF‑8 text. JSON strings as usual. |
integer | Whole-number JSON value. |
decimal | JSON number with optional fraction. Treat as fixed-precision in your client. |
boolean | JSON true / false. |
date | YYYY-MM-DD UTC date string. |
null | Absent 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.