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*
StringEnrutador de la API, "authave"empresa*
NumberIdentificador de la empresa dentro de AVEONLINE, se obtiene en la [Autenticación](./autenticacion)productName*
StringNombre único del producto.productDesc
StringDescripción del producto.shortDesc*
StringDescripción corta del producto.warrantyTime
NumberTiempo de garantía del producto en meses.warranty
StringGarantía del producto.sendConditions
StringCondiciones de envío del producto.productRef*
StringReferencia única del producto.referenciaEquivalente
StringReferencia equivalente del producto.referenciaEquivalente2
StringReferencia equivalente del producto 2.referenciaEquivalente3
StringReferencia equivalente del producto 3.referenciaEquivalente4
StringReferencia equivalente del producto 4.referenciaEquivalente5
StringReferencia equivalente del producto 5.ref_mim
StringClave única del producto que llega del MIM.costo
NumberValor del producto.rate
NumberPrecio de venta del producto.sugerido
NumberPrecio sugerido del producto.productStatus*
NumberIdentificador del estado del producto. 1 - Activo 2 - Inactivo.categoryName
NumberIdentificador de la categoría a la cual pertenece el producto.tax
NumberPorcentaje de impuesto aplicado al producto.inventarioNegativo
NumberPermite el stock menor a 0 en el producto. 1 - Sí 2 - No.tipoActivacion
Number1 - Publicar en Marketplace 2 - Sólo por activación.productImage
ObjectArchivo de la imagen del producto o en formato base64.productImageUrl
StringURL de la imagen del producto.productVideoUrl
StringURL del video del producto.peso
NumberPeso del producto en kilogramos.alto
NumberAlto del producto en centímetros.ancho
NumberAncho del producto en centímetros.largo
NumberLargo del producto en centímetros.ubicacion
StringUbicación del producto en la bodega (máximo 10 caracteres).ubicacioncliente
StringUbicación del cliente (máximo 10 caracteres).minimo
NumberStock mínimo del producto.brandName
NumberIdentificador de la marca del producto.marcaName
NumberIdentificador de la marca del producto.tallaName
NumberIdentificador de la talla del producto.colorName
NumberIdentificador del color del producto.presentacionName
NumberIdentificador de la presentación del producto.etiquetasName
StringEtiquetas del producto.declarado
NumberValor declarado del producto.priceMin
NumberPrecio mínimo del producto.priceMax
NumberPrecio máximo del producto.dropshipperPrice
NumberPrecio para dropshipping del producto.prepTime
NumberTiempo de alistamiento del producto (por defecto 2).returnConditions
StringCondiciones de devolución del producto.bodegaName
NumberIdentificador de la bodega (requerido si inventarioNegativo = 1).unidades
NumberCarga inicial que se hará al producto en la bodega marcada como principal.variants
ArrayArray con las variantes del producto (opcional).attribute_names
ObjectNombres personalizados para los atributos de las variantes (opcional).
Estructura de Nombres de Atributos
El parámetro attribute_names permite definir nombres personalizados para los atributos de las variantes:
{
  "attribute_names": {
    "variant1": "Color",
    "variant2": "Talla",
    "variant3": "Material"
  }
}
Este parámetro es opcional y debe ser un objeto con las claves variant1, variant2 y variant3. Estos nombres se utilizarán para personalizar la presentación de los atributos de las variantes en la interfaz.
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...",
    "description": "Descripción completa de la variante",
    "short_description": "Descripción corta de la variante",
    "attributes": {
      "Color": "Rojo",
      "Talla": "M",
      "Material": "Algodón"
    }
  }
]
Parámetros de Variantes
- name* 
StringNombre de la variante (máximo 255 caracteres). - sku* 
StringSKU único de la variante (máximo 40 caracteres). - cost 
NumberCosto de la variante. - price 
NumberPrecio de venta de la variante. - suggested_price 
NumberPrecio sugerido de la variante. - status* 
NumberEstado de la variante. 1 - Activo, 2 - Inactivo. - iva 
NumberPorcentaje de IVA de la variante (0-100). - stock 
NumberStock inicial de la variante (mínimo 0). - min_stock 
NumberStock mínimo de la variante (mínimo 0). - weight 
NumberPeso de la variante en kilogramos (mínimo 0.01). - length 
NumberLargo de la variante en centímetros (mínimo 0.1). - width 
NumberAncho de la variante en centímetros (mínimo 0.1). - height 
NumberAlto de la variante en centímetros (mínimo 0.1). - warehouse 
NumberIdentificador de la bodega (requerido si negative_inventory = true). - negative_inventory 
BooleanPermite inventario negativo para la variante. - min_price 
NumberPrecio mínimo de la variante. - max_price 
NumberPrecio máximo de la variante. - declared_value 
NumberValor declarado de la variante. - dropshipping_price 
NumberPrecio para dropshipping de la variante. - additional_references 
ArrayReferencias adicionales de la variante (opcional). - image_base64 
StringImagen de la variante en formato base64 (opcional). - description 
StringDescripción de la variante (máximo 1000 caracteres). - short_description 
StringDescripción corta de la variante (máximo 255 caracteres). - attributes 
ObjectObjeto con los atributos específicos de la variante como pares clave-valor. 
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) * 400y se redondea hacia arriba.Inventario inicial: Si se especifica
unidades > 0oinventarioNegativo = 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
variantsdebe 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.
Nombres de atributos: El parámetro
attribute_namespermite definir nombres personalizados para los atributos de las variantes como un objeto con las clavesvariant1,variant2yvariant3.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.
Descripciones de variantes: Cada variante puede tener su propia descripción completa (
description) y descripción corta (short_description).Atributos de variantes: El campo
attributeses un objeto que permite definir los atributos específicos de cada variante como pares clave-valor, donde las claves corresponden a los nombres definidos enattribute_names.
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,
  "attribute_names": {
    "variant1": "Color",
    "variant2": "Talla",
    "variant3": "Material"
  },
  "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...",
      "description": "Descripción completa de la variante roja",
      "short_description": "Variante roja",
      "attributes": {
        "Color": "Rojo",
        "Talla": "M",
        "Material": "Algodón"
      }
    },
    {
      "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"],
      "description": "Descripción completa de la variante azul",
      "short_description": "Variante azul",
      "attributes": {
        "Color": "Azul",
        "Talla": "L",
        "Material": "Poliéster"
      }
    }
  ]
}
Response 📄
Success
- success 
BoolRespuesta del servidor indicando éxito. - messages 
StringRespuesta del servidor en modo texto. - createdProductId 
NumberIdentificador del producto creado. - createdProductReference 
StringReferencia generada automáticamente (si aplica). - defaultVariantCreated 
BoolIndica si se creó una variante por defecto. - defaultVariantId 
NumberID de la variante por defecto creada (si aplica). - priceListData 
ObjectDatos de lista de precios (si aplica). - entry 
ObjectDatos 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"
}