Haciendo publicaciones de catalogo en Mercadolibre

29 de diciembre de 2025 por
Gustavo Orrillo
| Sin comentarios aún
 

Hacer publicaciones de catalogo en Mercadolibre es muy conveniente. Entre sus múltiples ventajas se cuenta una mayor visibilidad en las búsquedas de los clientes, junto con un mantenimiento mas simple de la publicación debido a que el mantenimiento de la misma lo hace Mercadolibre.  Sobre todo, y esto no es menor, uno no necesita tener las imágenes del producto para las publicaciones de catalogo.

Ahora, como hacemos desde Odoo para crear una publicación de catalogo? No es tan complicado. Solo cambian los atributos del payload que se realiza en el post. Se debe aclarar que no se deben actualizar todos los atributos. Ahora, vamos a un ejemplo practico de como hacerlo. En este ejemplo primero obtenemos el json de una publicación de catalogo existente, y luego hacemos una nueva publicación con los mismos datos pero en un plan de 3 cuotas

token = # authorization token
meli_id = "MLA444" # meli_id de ejemplo de publicación de catalogo
headers["Authorization"] = f"Bearer {token}"
response = requests.get("https://api.mercadolibre.com/items/"+meli_id,\
headers=headers)

if response.status_code != 200:
​raise ValidationError("Error obteniendo datos iniciales de publicación")
rjson = response.json()
attr_sku = {
'id': 'SELLER_SKU',
'value_name': product_tmpl.default_code
}
attributes = [attr_sku]

payload = {
"site_id": "MLA",
"family_name": rjson.get('family_name')[:40],
"category_id": rjson.get('category_id'),
"catalog_product_id": self.meli_catalog_id,
"catalog_listing": True,
"currency_id": "ARS",
"available_quantity": rjson.get('available_quantity'),
'price': round(new_price,2), # precio calculado de 3 cuotas
"buying_mode": rjson.get('buying_mode'),
"listing_type_id": pricelist_id.listing_type_id,
"condition": rjson.get('condition'),
'tags': ["3x_campaign"],
'attributes': attributes,
}
url = "https://api.mercadolibre.com/items"
response = requests.post(url,headers=headers,json=payload)
if response.status_code >= 400:
msg = 'Posteo dio error %s %s %s %s'%(response.status_code,response.text,headers,payload)
raise ValidationError(msg)

En este ejemplo tomamos unos campos mínimos para caracterizar la publicación. Sobre todo la oferta en tres cuotas, su nuevo precio y el stock de dicho SKU. También se agrega el SKU del producto al atributo SELLER_SKU (para hacer mas fácil la relación de las publicaciones con los productos cuando se importan las publicaciones). Es fundamental indicar los campos que caracterizan una publicacion de catalogo: catalog_product_id y catalog_listing (Si este ultimo no se indica, la publicacion fallara). 

Es un ejemplo sencillo pero que funciona, tomando de base una publicación ya existente. Este ejemplo se lo puede extender para crear múltiples publicaciones en base a diferentes planes de cuotas. Temas que vamos a cubrir en otros posts.

Gustavo Orrillo 29 de diciembre de 2025
Compartir
Categorías
Archivar
Identificarse dejar un comentario