Documentation
Identifiers and fields
Product id
Most GET paths identify a unit as GTIN, a dot, then the target market country number (GS1 numeric code):
{GTIN}.{country}
Example used throughout the API: 01234567890123.208 (208 is Denmark). A product id without a dot is rejected.
GTIN (D8165) must be digits only.
Required fields on write
Create or update with JSON field ids, not labels.
| Field | Meaning |
|---|---|
D8165 |
GTIN |
D8255 |
Target market country number |
D8276 |
Unit type. Required when creating a new product. Must not be sent as blank. |
Example:
{
"D8165": "01234567890123",
"D8255": "208",
"D8276": "BASE_UNIT_OR_EACH",
"D8258_1": "Test product",
"D8259_1": "en"
}
Unit types
When a path or body asks for unit type, use:
BASE_UNIT_OR_EACHCASEDISPLAY_SHIPPERPALLET
You can also look a product up by internal item number D8256 with:
GET /api/details/{unitType}/{targetMarket}/{itemId}/{exportProfileId}
Grid fields
Repeating values (names, languages, nutrients, and similar) are grid fields. In JSON they use the field id plus _ plus a 1-based row index: D8258_1, D8259_1. Sending a grid field without a row index is rejected. Sending a non-grid field with a row index is also rejected.
To clear a whole grid on update, send deleteGrids as an array of grid names. Rows not listed in the request can be cleared that way. See Update products.
Field catalogue
GET /api/fields
GET /api/fields/{targetmarket}
Returns the field list for the instance (or one target market), including ids, Danish and English names, format, whether the field is a grid, keyword list name, and help text. Use this to map ERP columns to fmcgProducts ids.
Keywords
GET /api/keywords
GET /api/keywords/{codelist}
GET /api/keywords/{field}/{targetmarket}
Returns code lists with display value and code value. The field-specific path fails if the field name is unknown or the field does not use a keyword.
Read vs write names
GET can return display values for keyword fields when displayValues=true (or when the export profile has that option). Writes still expect codes, not translated labels.
Readonly and computed fields in an update body are ignored. Unknown field ids are rejected.
