Crear un producto
Proceso que permite crear un nuevo producto.
Request 🚀
URL
https://app.aveonline.co/avestock/api/createProduct.php
Method
POST
Header
Content-Type: application/json
Características Principales
- Creación de productos con variantes: Permite crear un producto principal con múltiples variantes.
- Validación de referencias: Verifica que las referencias del producto y variantes sean únicas.
- Gestión de inventario: Carga automática de inventario inicial para el producto y sus variantes con stock mínimo.
- Manejo de archivos: Soporte para imágenes y videos del producto, incluyendo formato base64.
- Imágenes de variantes: Soporte para imágenes individuales por variante en formato base64.
- Dimensiones y peso: Cálculo automático de volumen basado en dimensiones.
- Integración con listas de precios: Agregado automático a listas de precios de marketplace.
Params JSON
tipo*
String
Enrutador de la API, "authave"
empresa*
Number
Identificador de la empresa dentro de AVEONLINE, se obtiene en la [Autenticación](./autenticacion)
productName*
String
Nombre único del producto.
productDesc
String
Descripción del producto.
shortDesc*
String
Descripción corta del producto.
warrantyTime
Number
Tiempo de garantía del producto en meses.
warranty
String
Garantía del producto.
sendConditions
String
Condiciones de envío del producto.
productRef*
String
Referencia única del producto.
referenciaEquivalente
String
Referencia equivalente del producto.
referenciaEquivalente2
String
Referencia equivalente del producto 2.
referenciaEquivalente3
String
Referencia equivalente del producto 3.
referenciaEquivalente4
String
Referencia equivalente del producto 4.
referenciaEquivalente5
String
Referencia equivalente del producto 5.
ref_mim
String
Clave única del producto que llega del MIM.
costo
Number
Valor del producto.
rate
Number
Precio de venta del producto.
sugerido
Number
Precio sugerido del producto.
productStatus*
Number
Identificador del estado del producto. 1 - Activo 2 - Inactivo.
categoryName
Number
Identificador de la categoría a la cual pertenece el producto.
tax
Number
Porcentaje de impuesto aplicado al producto.
inventarioNegativo
Number
Permite el stock menor a 0 en el producto. 1 - Sí 2 - No.
tipoActivacion
Number
1 - Publicar en Marketplace 2 - Sólo por activación.
productImage
Object
Archivo de la imagen del producto o en formato base64.
productImageUrl
String
URL de la imagen del producto.
productVideoUrl
String
URL del video del producto.
peso
Number
Peso del producto en kilogramos.
alto
Number
Alto del producto en centímetros.
ancho
Number
Ancho del producto en centímetros.
largo
Number
Largo del producto en centímetros.
ubicacion
String
Ubicación del producto en la bodega (máximo 10 caracteres).
ubicacioncliente
String
Ubicación del cliente (máximo 10 caracteres).
minimo
Number
Stock mínimo del producto.
brandName
Number
Identificador de la marca del producto.
marcaName
Number
Identificador de la marca del producto.
tallaName
Number
Identificador de la talla del producto.
colorName
Number
Identificador del color del producto.
presentacionName
Number
Identificador de la presentación del producto.
etiquetasName
String
Etiquetas del producto.
declarado
Number
Valor declarado del producto.
priceMin
Number
Precio mínimo del producto.
priceMax
Number
Precio máximo del producto.
dropshipperPrice
Number
Precio para dropshipping del producto.
prepTime
Number
Tiempo de alistamiento del producto (por defecto 2).
returnConditions
String
Condiciones de devolución del producto.
bodegaName
Number
Identificador de la bodega (requerido si inventarioNegativo = 1).
unidades
Number
Carga inicial que se hará al producto en la bodega marcada como principal.
variants
Array
Array con las variantes del producto (opcional).
Estructura de Variantes
El parámetro variants
debe ser un array con la siguiente estructura:
[
{
"name": "Nombre de la variante",
"sku": "SKU-VARIANTE-001",
"cost": 35000,
"price": 50000,
"suggested_price": 45000,
"status": 1,
"iva": 19,
"stock": 100,
"min_stock": 5,
"weight": 1.2,
"length": 10.5,
"width": 8.0,
"height": 5.0,
"warehouse": 1,
"negative_inventory": false,
"min_price": 40000,
"max_price": 60000,
"declared_value": 45000,
"dropshipping_price": 48000,
"additional_references": ["REF-ALT-001", "REF-ALT-002", "REF-ALT-003"],
"image_base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQ..."
}
]
Parámetros de Variantes
- name*
String
Nombre de la variante (máximo 255 caracteres).
- sku*
String
SKU único de la variante (máximo 40 caracteres).
- cost
Number
Costo de la variante.
- price
Number
Precio de venta de la variante.
- suggested_price
Number
Precio sugerido de la variante.
- status*
Number
Estado de la variante. 1 - Activo, 2 - Inactivo.
- iva
Number
Porcentaje de IVA de la variante (0-100).
- stock
Number
Stock inicial de la variante (mínimo 0).
- min_stock
Number
Stock mínimo de la variante (mínimo 0).
- weight
Number
Peso de la variante en kilogramos (mínimo 0.01).
- length
Number
Largo de la variante en centímetros (mínimo 0.1).
- width
Number
Ancho de la variante en centímetros (mínimo 0.1).
- height
Number
Alto de la variante en centímetros (mínimo 0.1).
- warehouse
Number
Identificador de la bodega (requerido si negative_inventory = true).
- negative_inventory
Boolean
Permite inventario negativo para la variante.
- min_price
Number
Precio mínimo de la variante.
- max_price
Number
Precio máximo de la variante.
- declared_value
Number
Valor declarado de la variante.
- dropshipping_price
Number
Precio para dropshipping de la variante.
- additional_references
Array
Referencias adicionales de la variante (opcional).
- image_base64
String
Imagen de la variante en formato base64 (opcional).
Notas Importantes
Referencias únicas: Todas las referencias (productRef, SKUs de variantes, referencias equivalentes, referencias adicionales de variantes) deben ser únicas dentro de la empresa.
Generación automática de referencia: Si no se proporciona
productRef
, se genera automáticamente con el formato:AVECRM-{empresa}{timestamp}{random}
.Validación de variantes: Cada variante es validada individualmente. Si una variante falla la validación, se detiene todo el proceso.
Referencias adicionales de variantes: Cada variante puede tener múltiples referencias adicionales que también deben ser únicas en toda la empresa.
Cálculo de volumen: El volumen se calcula automáticamente usando la fórmula:
(largo/100) * (ancho/100) * (alto/100) * 400
y se redondea hacia arriba.Inventario inicial: Si se especifica
unidades > 0
oinventarioNegativo = 1
, se crea automáticamente una entrada de inventario.Transacciones: Todo el proceso se ejecuta en una transacción. Si algo falla, se revierte todo.
Formato de variantes: El parámetro
variants
debe ser un array, no un string JSON.Variante por defecto: Si no se especifican variantes, se crea automáticamente una variante por defecto con los datos del producto principal.
Imágenes en base64: Tanto el producto principal como las variantes soportan imágenes en formato base64.
Stock mínimo de variantes: Cada variante puede tener su propio stock mínimo configurado individualmente.
Ejemplo
{
"tipo": "authave",
"token": "",
"empresa": 6077,
"productName": "Producto de prueba",
"productRef": "ASF65558",
"referenciaEquivalente": "FF65558",
"referenciaEquivalente2": "",
"referenciaEquivalente3": "",
"referenciaEquivalente4": "",
"referenciaEquivalente5": "",
"ref_mim": "MIM12345",
"shortDesc": "Descripción corta, Producto de prueba",
"warrantyTime": 11,
"warranty": "Garantía del Producto de prueba",
"sendConditions": "Condiciones de envío del Producto de prueba",
"costo": 49000,
"rate": 49000,
"sugerido": 45000,
"productStatus": 1,
"categoryName": 6,
"tax": 19,
"productImage": null,
"productImageUrl": "https://ejemplo.com/imagen.jpg",
"productVideoUrl": "https://ejemplo.com/video.mp4",
"peso": 1.5,
"alto": 15.0,
"ancho": 10.0,
"largo": 20.0,
"ubicacion": "A1-B2",
"ubicacioncliente": "C3-D4",
"minimo": 10,
"brandName": 1,
"marcaName": 1,
"tallaName": 0,
"colorName": 0,
"presentacionName": 0,
"etiquetasName": "etiqueta1,etiqueta2",
"declarado": 45000,
"priceMin": 40000,
"priceMax": 60000,
"dropshipperPrice": 47000,
"prepTime": 2,
"returnConditions": "Condiciones de devolución del producto",
"bodegaName": 1,
"unidades": 100,
"variants": [
{
"name": "Variante Roja",
"sku": "ASF65558-R",
"cost": 45000,
"price": 50000,
"suggested_price": 48000,
"status": 1,
"iva": 19,
"stock": 50,
"min_stock": 5,
"weight": 1.2,
"length": 20.0,
"width": 10.0,
"height": 15.0,
"warehouse": 1,
"negative_inventory": false,
"min_price": 40000,
"max_price": 60000,
"declared_value": 45000,
"dropshipping_price": 47000,
"additional_references": ["FF65558-R", "GG65558-R"],
"image_base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQ..."
},
{
"name": "Variante Azul",
"sku": "ASF65558-B",
"cost": 45000,
"price": 50000,
"suggested_price": 48000,
"status": 1,
"iva": 19,
"stock": 30,
"min_stock": 3,
"weight": 1.2,
"length": 20.0,
"width": 10.0,
"height": 15.0,
"warehouse": 1,
"negative_inventory": false,
"min_price": 40000,
"max_price": 60000,
"declared_value": 45000,
"dropshipping_price": 47000,
"additional_references": ["FF65558-B", "GG65558-B"]
}
]
}
Response 📄
Success
- success
Bool
Respuesta del servidor indicando éxito.
- messages
String
Respuesta del servidor en modo texto.
- createdProductId
Number
Identificador del producto creado.
- createdProductReference
String
Referencia generada automáticamente (si aplica).
- defaultVariantCreated
Bool
Indica si se creó una variante por defecto.
- defaultVariantId
Number
ID de la variante por defecto creada (si aplica).
- priceListData
Object
Datos de lista de precios (si aplica).
- entry
Object
Datos de entrada de inventario (si aplica).
Ejemplo
{
"success": true,
"messages": "Producto y variantes creados exitosamente",
"createdProductId": 12345,
"createdProductReference": "607712345",
"defaultVariantCreated": false,
"priceListData": {
"success": true,
"message": "Producto agregado a lista de precios"
},
"entry": {
"success": true,
"message": "Inventario cargado exitosamente"
}
}
El método no está permitido
{
"success": false,
"messages": "Método no permitido",
"status": 405
}
Algunos parámetros son requeridos
{
"success": false,
"messages": "El campo productName es requerido. y (1) errores más.",
"status": 422,
"errors": [
{
"title": "El campo productName no es válido.",
"detail": "El campo productName es requerido.",
"source": {
"pointer": "/productName"
}
},
{
"title": "El campo tax no es válido.",
"detail": "El campo tax debe estar entre 0 y 100.",
"source": {
"pointer": "/tax"
}
}
]
}
Error en variantes
{
"success": false,
"messages": "Error en variante #0: El campo name es requerido. y (2) errores más.",
"status": 422,
"errors": [
{
"title": "El campo name no es válido.",
"detail": "El campo name es requerido.",
"source": {
"pointer": "/name"
}
},
{
"title": "El campo sku no es válido.",
"detail": "El campo sku es requerido.",
"source": {
"pointer": "/sku"
}
},
{
"title": "El campo status no es válido.",
"detail": "El campo status debe estar entre 1 y 2.",
"source": {
"pointer": "/status"
}
}
]
}
Referencia duplicada
{
"success": false,
"messages": "La referencia ASF65558 ya existe",
"idproducto": 12345
}
Referencia duplicada en variantes
{
"success": false,
"messages": "Referencia duplicada en variantes",
"status": 422,
"errors": [
{
"detail": "La referencia ASF65558-R ya existe en otra variante o en el producto principal"
}
]
}
JSON inválido en variantes
{
"error": "Las variantes deben ser un array",
"raw": "[{\"name\":\"Variante\",\"sku\":\"SKU-001\",...]",
"json_error": "Syntax error"
}
Credenciales incorrectas
{
"status": "error",
"mensaje": "Credenciales inválidas o el cliente se encuentra inactivo"
}