Skip to main content
Version: Latest

Crear un producto

Proceso que permite crear un nuevo producto.

Request 🚀

URL

https://app.aveonline.co/avestock/api/createProduct.php

Method

POST

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).

  • attribute_names Object Nombres 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* 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).
  • description String Descripción de la variante (máximo 1000 caracteres).
  • short_description String Descripción corta de la variante (máximo 255 caracteres).
  • attributes Object Objeto con los atributos específicos de la variante como pares clave-valor.

Notas Importantes

  1. Referencias únicas: Todas las referencias (productRef, SKUs de variantes, referencias equivalentes, referencias adicionales de variantes) deben ser únicas dentro de la empresa.

  2. Generación automática de referencia: Si no se proporciona productRef, se genera automáticamente con el formato: AVECRM-{empresa}{timestamp}{random}.

  3. Validación de variantes: Cada variante es validada individualmente. Si una variante falla la validación, se detiene todo el proceso.

  4. Referencias adicionales de variantes: Cada variante puede tener múltiples referencias adicionales que también deben ser únicas en toda la empresa.

  5. 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.

  6. Inventario inicial: Si se especifica unidades > 0 o inventarioNegativo = 1, se crea automáticamente una entrada de inventario.

  7. Transacciones: Todo el proceso se ejecuta en una transacción. Si algo falla, se revierte todo.

  8. Formato de variantes: El parámetro variants debe ser un array, no un string JSON.

  9. Variante por defecto: Si no se especifican variantes, se crea automáticamente una variante por defecto con los datos del producto principal.

  10. Nombres de atributos: El parámetro attribute_names permite definir nombres personalizados para los atributos de las variantes como un objeto con las claves variant1, variant2 y variant3.

  11. Imágenes en base64: Tanto el producto principal como las variantes soportan imágenes en formato base64.

  12. Stock mínimo de variantes: Cada variante puede tener su propio stock mínimo configurado individualmente.

  13. Descripciones de variantes: Cada variante puede tener su propia descripción completa (description) y descripción corta (short_description).

  14. Atributos de variantes: El campo attributes es un objeto que permite definir los atributos específicos de cada variante como pares clave-valor, donde las claves corresponden a los nombres definidos en attribute_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 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"
}