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.
  • Manejo de archivos: Soporte para imágenes y videos del producto.
  • 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 Imagen del producto.
  • 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 String JSON con las variantes del producto (opcional).

Estructura de Variantes

El parámetro variants debe ser un JSON string 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,
"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"]
}
]

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

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 string JSON válido, no un objeto JSON directo.

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

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,\"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\"]},{\"name\":\"Variante Azul\",\"sku\":\"ASF65558-B\",\"cost\":45000,\"price\":50000,\"suggested_price\":48000,\"status\":1,\"iva\":19,\"stock\":30,\"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": "JSON inválido en variants",
"raw": "[{\"name\":\"Variante\",\"sku\":\"SKU-001\",...]",
"json_error": "Syntax error"
}

Credenciales incorrectas

{
"status": "error",
"mensaje": "Credenciales inválidas o el cliente se encuentra inactivo"
}