Actualización de Inventario
La API de E3 Stores permite actualizar información de inventario y atributos comerciales de productos para mantener sincronizada la información entre sistemas como ERP y eCommerce.
Características del endpoint
Este endpoint permite actualizar únicamente los campos enviados, manteniendo sin cambios el resto de la información del producto. Se utiliza el código del producto como identificador único para la actualización.
Endpoint de actualización
URL y método
PUT /api/Inventory?hash={hash}&mode={mode}
Parámetros requeridos
| Parámetro | Tipo | Descripción | Ejemplo |
|---|---|---|---|
hash | string | Token de autenticación válido | 5de3928b-6018-4b0c-9ebd-bc2c3e18f708 |
mode | string | Modo de operación (siempre "default") | default |
Ejemplo de petición - Actualizar precio
curl -X PUT \
"https://demo.e3stores.cloud/api/Inventory?hash=5de3928b-6018-4b0c-9ebd-bc2c3e18f708&mode=default" \
-H "Content-Type: application/json" \
-d '{
"InternalId": 0,
"Code": "ABC123",
"Price": 120.0
}'
Ejemplo de petición - Actualizar stock
curl -X PUT \
"https://demo.e3stores.cloud/api/Inventory?hash=5de3928b-6018-4b0c-9ebd-bc2c3e18f708&mode=default" \
-H "Content-Type: application/json" \
-d '{
"InternalId": 0,
"Code": "ABC123",
"Stock": 15
}'
Ejemplo de respuesta exitosa
{
"Success": true,
"Message": "Producto actualizado correctamente."
}
Estructura del payload
El payload debe incluir siempre InternalId en 0 y Code como identificador. Los demás campos son opcionales y solo se actualizarán si se envían.
Payload completo de ejemplo
{
"InternalId": 0,
"Code": "ABC123",
"Stock": 10,
"Price": 100.0,
"OfferPrice": 90.0,
"Taxes": 21.0,
"ForSale": true,
"Published": true,
"IsItem": true,
"ParentItemId": null,
"ParentItemCode": null,
"PriceListId": 1,
"PriceListCode": "LISTA-1",
"PriceMode": 1,
"PrecioOriginal": "120.00",
"DepStock": "DEP01",
"Properties": [
{
"Key": "Color",
"Value": "Negro"
}
],
"Name": "Producto de Ejemplo",
"Code2": "ALT123",
"ExternalReference": "EXT456",
"SiteId": 2,
"ExtendedWarranty": [
{
"Name": "Garantía Extendida 12M",
"Price": 15.0,
"Active": true,
"Cant": 1,
"Code": "GW12"
}
]
}
Referencia de campos
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
InternalId | int | ✅ | Siempre debe enviarse en 0 |
Code | string | ✅ | Código principal del producto (identificador clave) |
Stock | int | ❌ | Stock disponible |
Price | decimal | ❌ | Precio de venta final |
OfferPrice | decimal | ❌ | Precio de lista (tachado) para ofertas |
Taxes | decimal | ❌ | Porcentaje de impuestos aplicables |
ForSale | bool | ❌ | Disponibilidad para venta |
Published | bool | ❌ | Estado de publicación en el canal |
IsItem | bool | ❌ | Si es ítem simple (true) o variante |
ParentItemId | int | ❌ | ID del ítem padre (para variantes) |
ParentItemCode | string | ❌ | Código del ítem padre |
PriceListId | int | ❌ | ID de la lista de precios |
PriceListCode | string | ❌ | Código de lista de precios (usar si no se usa PriceListId) |
PriceMode | int | ❌ | Modo de asignación de precios (siempre 0 o null) |
DepStock | string | ❌ | Código del depósito asociado |
Properties | array | ❌ | Propiedades adicionales (Key/Value) |
Name | string | ❌ | Nombre del producto |
Code2 | string | ❌ | Código alternativo |
ExternalReference | string | ❌ | Referencia externa (ID en ERP) |
SiteId | int | ❌ | Identificador del sitio de publicación |
ExtendedWarranty | array | ❌ | Lista de garantías extendidas |
Manejo de errores
Códigos de error comunes
| Código | Descripción |
|---|---|
| 400 | Payload inválido o falta el campo Code |
| 401 | Token (hash) inválido o expirado |
| 500 | Error interno del servidor |
Consideraciones importantes
Precios e impuestos
- Por defecto, el campo
Pricedebe incluir impuestos (precio final al consumidor) - El campo
Taxesrepresenta el porcentaje de impuestos (ejemplo: 21.0 = 21% IVA) - Esta configuración puede modificarse en el backend para trabajar con precios netos
Actualización parcial
- Solo se requieren los campos
InternalId(siempre 0) yCode - Los campos opcionales que no se envíen permanecerán sin cambios
- Esto permite actualizaciones eficientes enviando solo los datos que cambian
Garantías extendidas y propiedades
- El uso de garantías extendidas y propiedades depende de la configuración del canal de venta
- Las propiedades se definen como pares Key/Value para atributos personalizados
Todos los endpoints de Inventory disponibles
Endpoints de consulta (GET)
| Endpoint | Descripción | Parámetros principales |
|---|---|---|
GET api/Inventory/Get?hash={hash}&code={code}&pricelistId={pricelistId}&siteId={siteId}&includePreferences={includePreferences} | Método de consulta con preferencias | hash, code, pricelistId, siteId, includePreferences |
Endpoints de modificación (POST/PUT)
| Endpoint | Descripción | Parámetros principales |
|---|---|---|
PUT api/Inventory?hash={hash}&mode={mode} | Actualiza producto existente | hash, mode + payload JSON |
Referencia completa de parámetros
Parámetros de URL comunes
| Parámetro | Tipo | Descripción | Ejemplo | Uso |
|---|---|---|---|---|
hash | string | Requerido - Token de autenticación | 5de3928b-6018-4b0c-9ebd-bc2c3e18f708 | Todos los endpoints |
code | string | Código del producto a consultar | ABC123 | Consultas específicas |
id | int | ID interno del producto | 12345 | Consultas por ID |
itemId | int | ID del ítem específico | 67890 | Operaciones por ítem |
siteId | int | ID del sitio/tienda | 2 | Filtrar por sitio |
pricelistId | int | ID de la lista de precios | 1 | Filtrar por lista de precios |
includePreferences | bool | Incluir preferencias del usuario | true/false | Consultas con preferencias |
mode | string | Modo de operación (siempre "default") | default | Actualizaciones |
Parámetros del payload JSON (todos opcionales excepto InternalId y Code)
| Campo | Tipo | Descripción detallada | Valores posibles |
|---|---|---|---|
InternalId | int | Requerido - Identificador interno (siempre 0) | 0 |
Code | string | Requerido - Código único del producto | ABC123 |
Stock | int | Cantidad disponible en inventario | 0 a 999999 |
Price | decimal | Precio final de venta (incluye impuestos por defecto) | 0.01 a 999999.99 |
OfferPrice | decimal | Precio de oferta/promocional (se muestra tachado) | 0.01 a 999999.99 |
Taxes | decimal | Porcentaje de impuestos aplicables | 0.00 a 100.00 |
ForSale | bool | Producto disponible para venta | true, false |
Published | bool | Producto publicado en el sitio | true, false |
IsItem | bool | Es producto simple (true) o variante (false) | true, false |
ParentItemId | int | ID del producto padre (para variantes) | null o ID numérico |
ParentItemCode | string | Código del producto padre (para variantes) | null o código string |
PriceListId | int | ID de la lista de precios asignada | 1, 2, 3, etc. |
PriceListCode | string | Código de la lista de precios (alternativa a PriceListId) | LISTA-1, LISTA-VIP |
PriceMode | int | Modo de cálculo de precios (siempre 0 o null) | 0, null |
PrecioOriginal | string | Precio original de referencia | "120.00" |
DepStock | string | Código del depósito/almacén | DEP01, ALMACEN-A |
Name | string | Nombre descriptivo del producto | "Producto de Ejemplo" |
Code2 | string | Código alternativo del producto | ALT123 |
ExternalReference | string | Referencia en sistema externo (ERP) | EXT456 |
SiteId | int | ID del sitio donde se publica | 1, 2, 3, etc. |
Parámetros de objetos anidados
Properties (Propiedades personalizadas)
"Properties": [
{
"Key": "string", // Nombre de la propiedad
"Value": "string" // Valor de la propiedad
}
]
ExtendedWarranty (Garantías extendidas)
"ExtendedWarranty": [
{
"Name": "string", // Nombre de la garantía
"Price": decimal, // Precio de la garantía
"Active": bool, // Estado activo
"Cant": int, // Cantidad disponible
"Code": "string" // Código de la garantía
}
]
Ejemplos de uso por endpoint
Consultar todos los productos
curl -X GET \
"https://demo.e3stores.cloud/api/Inventory/Get?hash=5de3928b-6018-4b0c-9ebd-bc2c3e18f708&siteId=2"
Consultar producto específico por código
curl -X GET \
"https://demo.e3stores.cloud/api/Inventory/Get?hash=5de3928b-6018-4b0c-9ebd-bc2c3e18f708&code=ABC123&siteId=2"
Consultar con lista de precios específica
curl -X GET \
"https://demo.e3stores.cloud/api/Inventory/Get?hash=5de3928b-6018-4b0c-9ebd-bc2c3e18f708&code=ABC123&pricelistId=1&siteId=2&includePreferences=true"
Consideraciones por tipo de endpoint
Para consultas (GET)
hashsiempre requerido para autenticaciónsiteIdrecomendado para filtrar por tienda específicaincludePreferencesútil para obtener configuraciones personalizadascodepara búsquedas específicas, sin él devuelve todos los productos
Para actualizaciones (PUT)
modesiempre debe ser "default"- Solo se actualizan los campos enviados en el payload
InternalIdyCodesiempre requeridos en el payload
Para creaciones (POST)
- Similar a PUT pero crea un nuevo registro
Codedebe ser único en el sistema- Campos opcionales toman valores por defecto