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