Luego de registrar a tus comercios, es hora de cargar tus productos.
¿Cuales son mis productos? Los productos en YOM son los cada uno de los SKU que ofreces a la venta a tus clientes.
Estos productos se representan en la entidad Product. Un Product contiene atributos específicos que lo hacen único, como su SKU, nombre, precio y categorización dentro de grupos específicos. La plataforma permite gestionar la activación, destacado, y disponibilidad de cada producto.
El endpoint de Productos proporciona acceso a información detallada de cada producto registrado en YOM.
GET /api/products
Campo | Tipo | Carácter | Descripción | Ejemplos |
---|---|---|---|---|
productId |
📝 Texto | 🟢 Requerido | Identificador único del Producto. | |
*Normalmente corresponde al SKU | "SKU001" |
|||
name |
📝 Texto | 🟢 Requerido | Nombre del producto. | "Harina de Trigo Integral" |
description |
📝 Texto | 🟢 Requerido | Descripción del producto. | "Harina de trigo integral orgánica, ideal para panaderías." |
brand |
📝 Texto | 🟢 Requerido | Marca del producto. | "Harina YOM" |
pricePerUnit |
🔢 Número | 🟢 Requerido | Precio por unidad del Producto (sin impuestos). | 5.99 |
tags |
🔡 Lista de Textos | 🟡 Recomendado | Lista de strings de las Categorías asociadas al Producto. Permite asociar las Categorías a las cual pertenece el Producto. |
["alimentos", "harinas", "orgánico"]
|
| isDisabled
| 🔘 Bool | 🟡 Recomendado | ¿Está el Producto deshabilitado para venta B2B? | true
false
|
| isFeatured
| 🔘 Bool | 🟡 Recomendado | ¿Se etiqueta el Producto como destacado? | true
false
|
| isNew
| 🔘 Bool | 🟡 Recomendado | ¿Se etiqueta el Producto como novedad? | true
false
|
| dimensions
| 📝 Objeto → Dimensions | 🟢 Requerido | Dimensiones físicas del Producto. | {"weight": 1.5, "weightUnit": "kg", "length": 30, "lengthUnit": "cm", "width": 20, "widthUnit": "cm", "height": 15, "heightUnit": "cm", "volume": 9, "volumeUnit": "L"}
|
| constraints
| 📝 Objeto → Constraint | 🟢 Requerido | Restricciones de compra para ventas B2B del Producto. | { "minUnit": 6, "stepSize": 2}
|
| packaging
| 📝 Objeto → Packaging | 🟢 *Requerido
*Reemplazable por formats
| Definición de niveles de empaque para el producto.
Unidad - Paquete - Caja | {"unitName": "Unidad", "packageName": "Display", "packageUnit": "DIS", "amountPerPackage": 6, "boxName": "Empaque", "boxUnit": "CAJ", "amountPerBox": 8}
|
| formats
| 🔡 Lista de Objetos → Format | 🟡 Recomendado
*Reemplaza a packaging
| Formatos en los cuales se vende el Producto (unidades, cajas, bandejas, etc). | [{'displayName': "Unidad", 'key': "UN", 'baseAmountPerFormat': 1, 'base': True}]
|
| taxes
| 🔡 Lista de Objetos → Tax | 🟡 Recomendado | Impuestos aplicables al Producto. | [{"code": "14", "name": "IVA", "rate": 0.19}]
|
| group
| 📝 Objeto → Group | 🟡 Recomendado | Grupo de productos al cual pertenece este SKU. | {"name": "Harinas", "description": "Productos de harina disponibles en la tienda."}
|La estructura dimensions
en el objeto del Producto permite definir las dimensiones físicas del producto, incluyendo el peso, volumen y medidas.
Campo | Tipo | Carácter | Descripción | Ejemplos |
---|---|---|---|---|
weight |
🔢 Número | 🟢 Requerido | El peso del producto. | 1.5 |
weightUnit |
📝 Texto | 🟢 Requerido | La unidad de medida del peso del producto. | "kg" |
length |
🔢 Número | 🟡 Opcional | La longitud del producto. | 30 |
lengthUnit |
📝 Texto | 🟡 Opcional | La unidad de medida de la longitud del producto. | "cm" |
width |
🔢 Número | 🟡 Opcional | El ancho del producto. | 20 |
widthUnit |
📝 Texto | 🟡 Opcional | La unidad de medida del ancho del producto. | "cm" |
height |
🔢 Número | 🟡 Opcional | La altura del producto. | 15 |
heightUnit |
📝 Texto | 🟡 Opcional | La unidad de medida de la altura del producto. | "cm" |
volume |
🔢 Número | 🟡 Opcional | El volumen del producto. | 9 |
volumeUnit |
📝 Texto | 🟡 Opcional | La unidad de medida del volumen del producto. | "L" |
Ejemplo
"dimensions": {
"weight": 1.5,
"weightUnit": "kg",
"length": 30,
"lengthUnit": "cm",
"width": 20,
"widthUnit": "cm",
"height": 15,
"heightUnit": "cm",
"volume": 9,
"volumeUnit": "L"
}
La estructura constraints
en el objeto del Producto permite definir las restricciones de compra asociadas al Producto para ventas B2B. Este objeto agrupa las reglas que determinan tanto el mínimo de unidades que se pueden adquirir como los incrementos permitidos al realizar un pedido.
Campo | Tipo | Carácter | Descripción | Ejemplos |
---|---|---|---|---|
minUnit |
🔢 Número | 🟢 Requerido | Mínimo de unidades de compra para B2B | 6 |
stepSize |
🔢 Número | 🟢 Requerido | Incremento en unidades después de alcanzar el mínimo para B2B. | 2 |
Ejemplo
{
"minUnit": 6,
"stepSize": 2
}
En este caso:
La estructura packaging
en el objeto del Producto permite definir dos niveles de agregación predefinidos de empaque en los que se puede vender el Producto: el Paquete (package) y la Caja (box). Estos a partir de la Unidad (unit). Los niveles de agregación están estructurados de la siguiente manera:
Campo | Tipo | Carácter | Descripción | Ejemplos |
---|---|---|---|---|
unitName |
📝 Texto | 🟢 Requerido | Nombre que se mostrará para la unidad individual del Producto. | "Botella" |
unit |
📝 Texto | 🟢 Requerido | La clave única que identifica la Unidad. | "BOT" |
packageName |
📝 Texto | 🟡 Recomendado | Nombre que se mostrará para el paquete del Producto. | “Display” |
packageUnit |
📝 Texto | 🟡 Recomendado | La clave única que identifica el Paquete. | “DIS” |
amountPerPackage |
📝 Texto | 🟡 Recomendado | Cantidad de unidades individuales contenidas en un Paquete. | 6 |
boxName |
📝 Texto | 🟡 Recomendado | Nombre que se mostrará para la caja del Producto. | “Empaque” |
boxUnit |
📝 Texto | 🟡 Recomendado | La clave única que identifica la Caja. | “CAJ” |
amountPerBox |
📝 Texto | 🟡 Recomendado | Cantidad de paquetes contenidas en una Caja. | 8 |
<aside> <img src="/icons/light-bulb_gray.svg" alt="/icons/light-bulb_gray.svg" width="40px" /> Los nombres de las variables son únicamente referenciales
unit
, package
y box
, se deben pensar como tres niveles de agregación.box
sin haber definido un package
.package
.</aside>
Ejemplo
"packaging": {
"unit": "BOT",
"unitName": "Botella",
"packageName": "Display",
"packageUnit": "DIS",
"amountPerPackage": 6,
"boxName": "Empaque",
"boxUnit": "CAJ",
"amountPerBox": 8,
"showFormatUnit": true,
"showFormatPackage": false,
"showFormatBox": false,
}
En este ejemplo, el Producto tiene tres niveles de empaque definidos:
DIS
. Un “Display” contiene 6 “Unidades”.CAJ
. Un “Empaque” contiene 8 “Displays”.La estructura formats
en el objeto del Producto permite definir múltiples Formatos en los que se puede vender el Producto. Cada Formato contiene información específica sobre cómo se presenta y se mide el producto en diferentes unidades.
<aside> <img src="/icons/light-bulb_gray.svg" alt="/icons/light-bulb_gray.svg" width="40px" /> Format reemplaza a Packaging En caso de necesitar más de tres niveles de agregación de tus Productos, la estructura Format ofrece la posibilidad de definir una lista de formatos de venta.
</aside>
| --- | --- | --- | --- | --- |
Ejemplo
"formats": [
{
"displayName": "Unidad",
"key": "UN",
"baseAmountPerFormat": 1,
"base": true
},
{
"displayName": "Pack",
"key": "PACK",
"baseAmountPerFormat": 6,
"base": false
},
{
"displayName": "Caja",
"key": "BOX",
"baseAmountPerFormat": 24,
"base": false
}
]
En este caso:
La estructura taxes
en el objeto del Producto permite definir múltiples Impuestos que se aplican al producto. Cada Impuesto contiene información específica sobre el tipo de impuesto y su tasa aplicable.
| --- | --- | --- | --- | --- |
Ejemplo
"taxes": [
{
"code": "IVACL",
"name": "IVA",
"rate": 0.19
}
]
En este caso, el identificador único del impuesto es IVACL
. El nombre a mostrar del impuesto es “IVA”, que indica que es un impuesto al valor agregado. La tasa de impuesto es 0.19, lo que representa un 19% de impuesto sobre el Producto.