Guía

Migrar de v1 a v2

v1 sigue funcionando sin cambios hasta el 31 de enero de 2027, fecha en la que se apagará (cada respuesta v1 lo anuncia con los headers Deprecation y Sunset). Hasta entonces puede migrar a su ritmo, endpoint por endpoint, porque ambas versiones conviven bajo distinta base URL (/api/v1 y /api/v2) con las mismas API Keys.

Cinco cambios que no se arreglan renombrando. Casi todo el resto es cambio de nombre, pero estos piden tocar su lógica:
  1. app_status pasa de entero a palabra en automeli_sync_status: 0→disabled, 1→enabled. El filtro también usa la palabra.
  2. discount_total_price se convierte en discount_percentage: es un porcentaje con signo, no un precio.
  3. La paginación es por cursor, no por offset: se sigue next_cursor hasta que has_more sea false — guía de paginación.
  4. total viene sólo en la primera petición (la que va sin cursor), igual que en la API de Mercado Libre.
  5. POST /products/test/promote ya no acepta scheduled_for: en v2 el campo se ignora y la promoción se ejecuta de inmediato. Para publicar programado, use POST /products (que sí lo soporta). Además, id_meli_main_variant ya no se expone.

Cambios de contrato por endpoint

Los paths no cambian (solo la base /api/v1 → /api/v2), pero algunos contratos sí:

  • →Promote cambia de selección y de respuesta. En v1 era por skus (u omitirlo para "todos"); en v2 el body es { "listing_ids_test": [...] } (obligatorio), scheduled_for ya no aplica, y la respuesta puede traer varios jobs (agrupados por categoría fiscal + tipo de publicación) con contadores nuevos para conciliar (queued_total / duplicates_total). Ver promote →
  • →Filtros de productos de prueba renombrados: status_meli → ml_status, already_published → published_to_live (0|1), app_status → automeli_sync_status (palabra). La respuesta también renombra image/category_id/currency a image_url/ml_category_id/ml_currency.
  • →Create renombra los campos del body: items[].category_id → ml_category_id, listing_type_id → ml_listing_type (default explícito gold_special), tax_category_id → automeli_tax_category.
  • →Nuevo en v2: GET /products (el listado del catálogo de la cuenta real, que v1 no tenía) y PATCH /products/sync-status.
  • →Errores de parámetros: los errores de validación de query o path (fecha mal formada, UUID inválido, estado fuera de rango) devuelven en v2 422 E_PRODUCT_INVALID_PARAM en lugar de E_PRODUCT_INVALID_BODY, que en v2 queda sólo para el body de POST/PATCH. El status sigue siendo 422.
  • →Sin cambios: las API Keys y sus scopes (las mismas keys sirven para ambas versiones), el header X-API-Key, la idempotencia, el rate limit y el catálogo de códigos de error.

Equivalencias del listado de productos (v1 → v2)

Campo por campo. En ámbar, los que cambian de forma o de significado, no sólo de nombre.

Identificadores

id_meli→
listing_id
sku→
skusin cambios
id_meli_main_variant→
—ya no se expone

Catálogo e imágenes

title→
titlesin cambios
brand→
brandsin cambios
permalink→
permalinksin cambios
image→
image_url
image_changed→
image_differs_from_amazonbooleano
image_changed_url→
amazon_image_urlnull si no difiere

Estado y categorías

meli_status→
ml_status
sub_status→
ml_sub_status
amz_status→
amazon_status
app_status→
automeli_sync_statusentero (0/1) → palabra (disabled/enabled)
meli_category_name→
ml_category
meli_main_category→
ml_main_category
listing_type_id→
ml_listing_type
tax_category_id→
automeli_tax_categorycategoría fiscal de Automeli, no de ML
create_using_publisher→
published_with_automelibooleano
changed→
last_change
pause_reason→
pause_reasonsin cambios
paused_since→
paused_sincesin cambios

Precios y números

total_price→
amazon_total_price
scraped_price→
amazon_price
shipping_cost→
amazon_shipping_cost
taxes→
amazon_taxes
meli_sale_price→
ml_price
discount_total_price→
discount_percentageahora es un porcentaje con signo, puede ser negativo
stock_quantity→
stock
max_weigth→
weight_lbcorrige el typo y aclara la unidad (libras)
manufacturing_time→
manufacturing_timesin cambios
shipping_from→
shipping_origin

Fechas

date_created→
created_at
date_updated→
amazon_reviewed_at
date_updated_meli→
ml_updated_at

Nuevo en v2

—→
infractions[]motivo de infracción abierta: id_reason, reason, resolution

Nota: la columna v1 refleja lo que esa API devuelve hoy (los nombres crudos de columna, salvo paused_since, que ya salía con alias).

Mientras migra

  • →La doc completa de v1 se conserva congelada en /api-docs/v1.
  • →Specs OpenAPI: /api-docs/openapi.json (v2) y /api-docs/v1/openapi.json (v1) — útiles para comparar contra su cliente generado.
  • →Puede validar cada endpoint migrado con GET /api/v2/ping y el Sandbox del dashboard, sin escribir código.