Skip to Content

Crear producto

POST /1/products

Método utilizado para crear un determinado producto de una tienda en particular.

Headers

{ "Authorization": "Bearer {access_token}", "X-Shop-Id": "12345" }
ParámetroTipoRequeridoValores aceptadosDescripción
AuthorizationstringSiBearer + access_tokenToken obtenido mediante client_id y client_secret.
X-Shop-IdstringSiString numéricoIdentificador único de la tienda a la cual se desea obtener sus ventas.

Body

{ "name": "Product name", "description": "....", "type": 0, "digital": 0, "wholesale_product_min_quantity": 1, "category_id": "category-123456", "images": [ "default.png", //... ], "categories": [ "category-123456", //... ], "attributes": [ "Color", "Talle", //... ], "stock": [ { "sku": "T12365", "quantity": 4, "price": 150, "offer_price": 3, "wholesale_price": 0, "wholesale_min_quantity": 1, "show_price": true, "weight": 1, "width": 10, "height": 10, "depth": 10, "image_position": 0, "digital_link": null, "digital_term": null, "digital_observation": null, "attribute_values": [ { "name": "Color", "value": "Negro" }, { "name": "Talle", "value": "L" }, //... ] } ] }
ParámetroTipoRequeridoValores aceptadosDescripción
namestringSiDebe cumplir con el regex: /^(?=\S.{0,78}\S$)^([A-Za-z0-9ÁÉÍÓÚáéíóúÄËÏÖÜäëïöüñÑ\/\-\!\'\"\,\.\+\[\]\(\)\:\#\s]+)$/Corresponde al nombre del producto.
descriptionstringNoString de entre 0 y 20.000 caracteres.Corresponde a la descripción del producto. Soporta html.
typeintSiCorresponde al tipo de producto.
0: solo minorista
1: solo mayorista
2: mayorista y minorista
Indica el público que podrá comercializar el producto.
digitalintNo0: es un producto tangible y físico
1: es producto digital con envío automático (cuando se abona, se manda el link automáticamente). Ejemplo: e-books, cursos.
2: es un producto digital con envío manual. Ejemplo: diseño de logo, asesoría personalizada.
Indica si el producto es digital (y con qué modalidad) o si es un producto físico.
wholesale_product_min_quantityintNowholesale_product_min_quantity>0.Corresponde a la cantidad mínima de compra mayorista a nivel producto.
category_idstringSiId de categoría en el formato “category-id”.Corresponde a la categoría principal del producto. Debe existir como elemento en el array categories[].
images[]array[string]SiArray cuyos valores son soportados por el regex: /^([a-z0-9\-]+\.(jpeg|jpg|png|gif|webp))$/ Debe contener entre 1 y 6 elementos.Array de imágenes del producto. Utilizar “default.png” como imagen por defecto.
categories[][string]SiArray cuyos valores son id de categoría en el formato “category-id”. Debe contener al menos un elemento que debe coincidir con el parámetro category_id. No puede contener valores repetidos.Contiene información sobre las categorías (principal y secundarias) asociadas al producto.
attributes[][string]NoArray cuyos elementos deben cumplir con el regex: /^(?=.{2,25}$)(a-zá-úÁ-Úä-üÄ-ÜA-Z0-9?(\s)?)*$/ No posee limitación en cuanto a la cantidad de elementos. En caso de no especificarse o enviarse vacío indica que el producto no posee variantes de atributos. No puede contener valores repetidos.Corresponde a la lista de atributos utilizados para el producto.
stock[][object]SiDebe contener al menos un elemento que cumpla con los atributos mínimos. Como máximo puede contener 150 elementos. Solo puede haber más de un elemento del array stock si el producto va a poseer atributos, en caso contrario, el producto solo puede tener un elemento de stock.Corresponde a la lista de stock asociado a dicho producto.
stock[].skustringNoDebe cumplir con el regex: /^[a-zA-Z0-9\-\,\.\s]{1,50}$/Corresponde al identificador de stock provisto por el comercio.
stock[].quantityintSiSi quantity=null, entonces la variante de stock del producto va a poseer stock infinito.
Si quantity>=0, el producto va a poseer stock finito.
Corresponde a la cantidad de stock.
stock[].pricefloatSolo es opcional si type=1. En caso contrario es obligatorio.price>0.Corresponde al precio minorista del producto.
stock[].offer_pricefloatNooffer_price<price (solo debe cumplirse si price y offer_price no son null). En caso de que type=1, es ignorado.Corresponde al precio de oferta minorista del producto.
stock[].wholesale_pricefloatNo. Solo es requerido si type>=1.wholesale_price>0.Indica el precio mayorista del producto.
stock[].wholesale_min_quantityintNo. Solo considerado si type>=1.wholesale_min_quantity>=1.Indica la cantidad mínima mayorista que el cliente debe comprar de dicha variante de stock.
Aclaración: la diferencia con wholesale_product_min_quantity es que el mismo es un límite a nivel producto, es decir que si su valor es 5, entonces si se compran diferentes variantes de stock del mismo producto hasta llegar a dicha suma 5.
stock[].show_pricebooleanNoValores:
false: el producto no tiene price y aparece un botón de consultar en lugar de agregar al carrito. Si se especifica este valor, el valor de price será ignorado.
true: el producto tiene price
Indica si el producto es un producto con o sin price. Usado para mostrar productos como formato catálogo. El producto puede ser de venta mayorista con type=2 (no los de type=1), tener wholesale_price y a su vez no tener price. De manera que las personas no mayoristas tendrán un botón de consultar y los clientes mayoristas podrán agregarlo al carrito.
stock[].weightfloatNo. Es obligatorio si digital=0.weight>=0. A excepción de que la tienda requiera que las dimensiones sean estrictamente mayores a 0 (por tener un método de envío como por Ej: Correo Argentino, Epick, etc).Indica el peso del producto empaquetado en kg.
stock[].widthintNo. Es obligatorio si digital=0.width>=0. A excepción de que la tienda requiera que las dimensiones sean estrictamente mayores a 0 (por tener un método de envío como por Ej: Correo Argentino, Epick, etc).Indica el ancho del producto empaquetado en cm.
stock[].heightintNo. Es obligatorio si digital=0.height>=0. A excepción de que la tienda requiera que las dimensiones sean estrictamente mayores a 0 (por tener un método de envío como por Ej: Correo Argentino, Epick, etc).Indica el alto del producto empaquetado en cm.
stock[].depthintNo. Es obligatorio si digital=0.depth>=0. A excepción de que la tienda requiera que las dimensiones sean estrictamente mayores a 0 (por tener un método de envío como por Ej: Correo Argentino, Epick, etc).Indica la profundidad del producto empaquetado en cm.
stock[].image_positionintNoPosición de un elemento en array images[].Permite asociar una imagen a una variante de stock.
stock[].digital_linkstringNo. Solo requerido si digital=1.Debe cumplir con el regex: /^(https:\/\/|http:\/\/)[0-9a-zA-Z\.\:\/\#\-\_\?\=\&\$\%\@\~\!]{2,200}$/Es el link de descarga del producto digital que se envía cuando el producto es un producto digital con descarga automática y el usuario abona.
stock[].digital_termstringNo. Solo requerido si digital=2.Debe cumplir con el regex: /^[a-zá-úÁ-Úä-üÄ-ÜA-Z0-9\s\!\.\-\,\?\"\'\:\¡\¿\%\(\)\[\]\$\+\~\#\_\&\/]{2,45}$/Es el plazo de entrega del producto digital que se envía cuando el producto es un producto digital con envío manual.
stock[].digital_observationstringNo. Solo considerada si digital>=1.Debe cumplir con el regex: /^[\s\S]{0,200}$/Es una observación disponible para el usuario cuando el producto es un producto digital.
stock[].attribute_values[][object]No. Solo requerido si attributes[] posee al menos un elemento.Para cada elemento existente en attributes[], se debe especificar un valor asociado a dicho atributo en éste array.Contiene el valor de cada atributo para dicho stock.
stock[].attribute_values[].namestringSiDebe coincidir exactamente con un elemento del array attributes[]. Solo se debe especificar un único valor para cada atributo.Corresponde al atributo para el cual se está especificando un valor.
stock[].attribute_values[].valuestringSiDebe cumplir con el regex: /^(?=.{1,25}$)(a-zá-úÁ-Úä-üÄ-ÜA-Z0-9?(\s)?([\/\-\!\'\"\,\.\+\[\]\(\)\:\#]{0,3}))*$/Corresponde al valor del atributo para dicho stock.

Response exitosa: 201 Ok

{ "id": "product-110737" }

Campos de la respuesta

AtributoTipoDescripción
idstringCorresponde al id del producto.

Responses de error

En caso de que la respuesta http no sea 201, entonces se debe considerar el error.

AtributoTipoDescripción
statusintHttp code de respuesta.
codestringCódigo de error, indica la naturaleza del mismo.
msgstringMensaje de error.

Ejemplo response 401 Unauthorized:

{ "status": 401, "code": "error", "msg": "Unauthorized" }

Ejemplo response 400 Bad Request genérico:

{ "status": 400, "code": "request_error", "msg": "Send valid data" }

Ejemplo response 400 Bad Request si algún parámetro de entrada requerido no es enviado:

{ "status": 400, "code": "param_required", "msg": "invalid <param_name>. The value is required" }

Ejemplo response 400 Bad Request si algún parámetro de entrada es inválido:

{ "status": 400, "code": "param_invalid", "msg": "Invalid <param_name>. The value is invalid" }

Ejemplo response 400 Bad Request si el producto ya existe:

{ "status": 400, "code": "request_error", "msg": "The product you're trying to add already exists. There is already another product with the same name." }

Ejemplo response 500 Internal Server Error:

{ "status": 500, "code": "server_error", "msg": "Something went wrong" }