After registering your commerces, it is time to upload your products.
What are my products? Products in YOM are each of the items you offer for sale to your customers, commercially identified by their SKU.
These products are represented by the Product entity. A Product contains specific attributes that make it unique, such as its identifier, name, price, and categorization within specific groups. It is important to distinguish productId from sku: the productId is the unique identifier that YOM uses to reference each product in the integration, while the sku is the commercial code the business uses to identify the item. The two values may match, but they are distinct fields. The platform lets you manage the activation, featuring, and availability of each product.
The Products endpoint provides access to detailed information about each product registered in YOM.
GET /api/products
FILE <fecha>_<hora>_product.csv
The following table defines the base integration model for the Product entity. This model is the base contract and is extensible: it can be supplemented with additional attributes through the otherProperties object, as described in the Additional attributes section.
| Field | Type | Requirement | Description | Examples |
|---|---|---|---|---|
productId |
📝 Text | 🟢 Required | Unique identifier of the Product. | |
| *\*Normally corresponds to the *SKU | "SKU001" |
|||
name |
📝 Text | 🟢 Required | Product name. | "Harina de Trigo Integral" |
description |
📝 Text | 🟢 Required | Product description. | "Harina de trigo integral orgánica, ideal para panaderías." |
brand |
📝 Text | 🟢 Required | Product brand. | "Harina YOM" |
pricePerUnit |
🔢 Number | 🟢 Required | Price per unit of the Product (excluding taxes). | 5.99 |
alternativePriceText |
📝 Text | ⚪️ Optional | This text will be displayed instead of the product price. This is for products that do NOT have a price as such and must be quoted or calculated some other way | "Precio por cotizar" |
discountedPricePerUnit |
🔢 Number | ⚪️ Optional | Discounted price of the Product (excluding taxes) | 5.55 |
sortIdx |
🔢 Number | ⚪️ Optional | Index that determines the order in which the product will be displayed | 15 |
tags |
🔡 List of Texts | ⚪️ Optional | List of strings of the Categories associated with the Product. Lets you associate the Categories the Product belongs to. | |
| • See section Categories . | "alimentos", "harinas", "orgánico" |
|||
isDisabled |
🔘 Bool | 🟢 Required | Is the Product disabled for B2B sales? | true |
false |
||||
isFeatured |
🔘 Bool | 🟢 Required | Is the Product tagged as featured? | true |
false |
||||
isNew |
🔘 Bool | 🟢 Required | Is the Product tagged as new? | true |
false |
||||
dimensions |
📝 Object → Dimensions | ⚪️ Optional | Physical dimensions of the Product. | {"weight": 1.5, "weightUnit": "kg", "length": 30, "lengthUnit": "cm", "width": 20, "widthUnit": "cm", "height": 15, "heightUnit": "cm", "volume": 9, "volumeUnit": "L"} |
constraints |
📝 Object → Constraint | ⚪️ Optional | Purchase constraints for B2B sales of the Product. | { "minUnit": 6, "stepSize": 2} |
packaging |
📝 Object → Packaging | 🟢 Required | Packaging level definition for the product. | |
| Unit • Package • Box - Pallet | `{"unitName": "Unidad", "packageName": "Display", "packageUnit": "DIS", "amountPerPackage": 6, "boxName": "Empaque", "boxUnit": "CAJ", "amountPerBox": 8, | |||
| "palletName": "Pallet", "palletUnit": "PAL", "amountPerPallet": 300}` | ||||
formats |
🔡 List of Objects → Format | 🔴 Deprecated | Formats in which the Product is sold (units, boxes, trays, etc). | [{'displayName': "Unidad", 'key': "UN", 'baseAmountPerFormat': 1, 'base': True}] |
taxes |
🔡 List of Objects → Tax | ⚪️ Optional | Taxes applicable to the Product. | [{"code": "14", "name": "IVA", "rate": 0.19}] |
group |
📝 Object → Group | ⚪️ Optional | Product group to which this SKU belongs. | {"name": "Harinas", "description": "Productos de harina disponibles en la tienda."} |
variant |
📝 Object → Variant | ⚪️ Optional | Variants of a given product. | `{ |
| "features": [ |
{
"key": "Tipo de Grano",
"value": "Trigo"
}
],
"parentSku": "HARINA-MINIMA-SKU001",
"genericDisplayName": "Harina Básica de Trigo",
"index": 0
}| |otherProperties| 📝 Object | ⚪️ Optional | Key-value object with additional attributes of the **Product**. See the **Additional attributes** section. |{"family": "Abarrotes", "line": "Panificación"}| |appHidden| 🔘 Bool | ⚪️ Optional | Flag that controls whether the product is shown in the app |false| |b2bHidden| 🔘 Bool | ⚪️ Optional | Flag that controls whether the product is shown in the b2b |false` |
The dimensions structure in the Product object lets you define the physical dimensions of the product, including weight, volume, and measurements.
| --- | --- | --- | --- | --- |
Example
"dimensions": {
"weight": 1.5,
"weightUnit": "kg",
"length": 30,
"lengthUnit": "cm",
"width": 20,
"widthUnit": "cm",
"height": 15,
"heightUnit": "cm",
"volume": 9,
"volumeUnit": "L"
}
The constraints structure in the Product object lets you define the purchase constraints associated with the Product for B2B sales. This object groups the rules that determine both the minimum number of units that can be purchased and the allowed increments when placing an order.
| --- | --- | --- | --- | --- |
Example
{
"minUnit": 6,
"maxUnit": 12,
"stepSize": 2
}
In this case:
The packaging structure in the Product object lets you define two predefined packaging aggregation levels in which the Product can be sold: the Package (package), the Box (box) and the Pallet (pallet). These are built from the Unit (unit). The aggregation levels are structured as follows:
| --- | --- | --- | --- | --- |
<aside> <img src="/icons/light-bulb_gray.svg" alt="/icons/light-bulb_gray.svg" width="40px" />
</aside>
otherProperties)The model documented on this page is the base contract for the Product entity. In addition to the base fields, customers can provide additional attributes for identification, classification, segmentation, logistics, or analysis through the otherProperties object.
Some examples of additional attributes are: family, line, department, business division, additional categorical levels, manufacturer or supplier, barcode (EAN), country of origin, or storage condition.
Attributes inside otherProperties must meet the following conditions:
YOM may retain these attributes as extended information when the integration mechanism and the pipeline allow it. Receiving an attribute does not mean that YOM uses it automatically: its analytical use or use in recommendation models must be validated during implementation.
Example with additional attributes family, line, and ean:
{
"productId": "SKU001",
"name": "Harina de Trigo Integral",
"description": "Harina de trigo integral orgánica, ideal para panaderías.",
"brand": "Harina YOM",
"isDisabled": false,
"tags": ["alimentos", "harinas", "orgánico"],
"pricePerUnit": 8092,
"otherProperties": {
"family": "Abarrotes",
"line": "Panificación",
"ean": "7801234567890"
}
}