Productos
Crear y actualizar productos
Crea y actualiza productos con soporte para sucursales, variaciones y modificadores.
POST
Puedes crear o actualizar productos en lote según su SKU. Si un producto con el SKU especificado ya existe, se actualiza; si no, se crea. Los productos pueden asignarse a una sucursal, tener múltiples variaciones y grupos de modificadores.Documentation Index
Fetch the complete documentation index at: https://docs.jelou.ai/llms.txt
Use this file to discover all available pages before exploring further.
ID de tu tienda en Jelou Shop.
Lista de productos a crear o actualizar (máx. 500 por solicitud).
Campos del producto
Cada objeto dentro deresources acepta los siguientes campos:
Identificador único del producto (máx. 255 caracteres).
Nombre del producto (máx. 255 caracteres).
Precio del producto (mín. 0).
Descripción del producto.
Indica si el precio incluye impuestos.
Tasa de impuesto individual del producto (entre
0 y 100). Ejemplo: 15 para 15%, 12 para 12%. Solo aplica cuando enable_per_product_tax está activo en la configuración de la tienda. Si no se envía o es 0, se usa la tasa global de la tienda.Estado del producto (activo/inactivo).
Tipo de inventario:
limited o unlimited.Cantidad disponible. Aplica solo cuando
stock_type es limited.URL del producto en tu tienda (máx. 2048 caracteres).
Tipo de descuento:
value (monto fijo) o percentage.Valor del descuento (mín. 0).
Lista de nombres de categorías. Se crean automáticamente si no existen.
Lista de URLs de imágenes públicas del producto.
Habilita un campo de nota en el detalle del producto, permitiendo al cliente agregar un comentario al momento de añadirlo al carrito (ej: “Sin cebolla”, “Envolver para regalo”).
Texto placeholder que se muestra en el campo de nota (máx. 255 caracteres). Si no se especifica, se usa un texto genérico por defecto.
Código de la sucursal a la que se asigna el producto. La sucursal debe existir previamente.
Lista de variaciones del producto.
Grupos de modificadores (add-ons) del producto. Comunes en delivery de comida (ej: “Escoja las Bebidas”, “Elige las salsas”). Si el campo está ausente, se preservan los modificadores existentes. Si es un array vacío
[], se eliminan todos. Si tiene datos, se reemplazan completamente.Los modificadores se almacenan en el producto y se devuelven automáticamente en todos los endpoints que retornan productos.
Ejemplo completo
Este ejemplo crea tres productos: una camiseta con variaciones de talla, un pantalón simple y una pizza con grupos de modificadores.Reemplaza
{app_id} con el ID de tu tienda y <API_KEY> con el token proporcionado por Jelou.Comportamiento
Procesamiento asíncrono
Procesamiento asíncrono
El endpoint retorna
202 Accepted inmediatamente. Los productos se procesan en segundo plano.Sucursal inexistente
Sucursal inexistente
Si el código de sucursal no coincide con ninguna sucursal de la tienda, el producto se crea sin sucursal asignada. No produce error.
Categorías automáticas
Categorías automáticas
Si una categoría no existe, se crea automáticamente dentro de la tienda y la sucursal correspondiente.
Imágenes asíncronas
Imágenes asíncronas
Las imágenes se descargan y procesan en segundo plano después de la creación del producto.
Variaciones por SKU
Variaciones por SKU
Las variaciones se identifican por su SKU. Si ya existe una variación con ese SKU, se actualiza en lugar de crear una nueva.
Modificadores
Modificadores
Si
modifier_groups está ausente en el payload, se preservan los modificadores existentes. Si es un array vacío [], se eliminan todos. Si tiene datos, se reemplazan completamente.Errores de validación
Si los datos no cumplen las reglas de validación, la API responde con422 y detalla los campos con error.
Mensajes de error comunes
Mensajes de error comunes
| Campo | Mensaje |
|---|---|
resources | At least one product is required. |
resources | Cannot process more than 500 products at once. |
resources.*.sku | Each product must have a SKU. |
resources.*.name | Each product must have a name. |
resources.*.price | Each product must have a price. / Price cannot be negative. |
resources.*.stock_type | Stock type must be either limited or unlimited. |
resources.*.images.* | Each image must be a valid URL. |
resources.*.variations.*.stock_type | Variation stock type must be either limited or unlimited. |
resources.*.variations.*.stock | Variation stock must be an integer. / Cannot be negative. |
resources.*.modifier_groups.*.code | Each modifier group must have a code. |
resources.*.modifier_groups.*.name | Each modifier group must have a name. |
resources.*.modifier_groups.*.options | Each modifier group must have at least one option. |
resources.*.modifier_groups.*.options.*.code | Each modifier option must have a code. |
resources.*.modifier_groups.*.options.*.name | Each modifier option must have a name. |
resources.*.tax | Tax rate must be a number. |
resources.*.tax | Tax rate cannot be negative. |
resources.*.tax | Tax rate cannot exceed 100. |
Límites
- Máximo 500 productos por solicitud.
- Máximo 10,000 productos por ventana de 60 segundos por tienda (rate limit). Si se excede, la API responde con
429 Too Many Requests. - Todos los productos se validan antes de procesarse.