Contenidos
→Identificar una publicación para catálogo
→Filtrar ítems por vendedor
→Tag de elegibilidad para ítems
→Elegibilidad de una publicación existente con catalog_product_id asociado
→Verificar múltiples publicaciones elegibles con multiget
Identificar una publicación para catálogo
Es importante que antes de publicar, reconozcas qué publicaciones creadas son elegibles o pueden publicarse en catálogo. Para esto, puedes utilizar el tag de catalog_listing_eligible y reconocer las publicaciones fácilmente u optar por los recursos de elegibilidad de una publicación o el de multiget para verificar un conjunto de publicaciones.
Filtrar ítems por vendedor
Este filtro permitirá distinguir las publicaciones de catálogo y aquellas tradicionales. Para eso, debes pasar en la búsqueda el parámetro catalog_listing con el valor true o false, dependiendo de lo que se desee consultar.
En primer lugar, identificamos todos los ítems de catálogo de un vendedor. Ten en cuenta que debes pasar el parámetro de status correspondiente en caso que quieras sumar un filtro como por ejemplo status=“active”.
Llamada:
curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/users/$USER_ID/items/search?catalog_listing=true
Ejemplo:
curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/users/123456789/items/search?catalog_listing=true
Respuesta acotada de ítems de catálogo:
{
"seller_id": "123456789",
"query": null,
"paging": {
"limit": 50,
"offset": 0,
"total": 8
},
"results": [
"MLA123456789",
"MLA234567890",
"MLA345678912",
"MLA456789123",
"MLA567891234",
"MLA678912345",
"MLA789123456",
"MLA891234567"
],
"filters": [
],
"available_filters": [],
"orders": [],
"available_orders": []
}
Por otro lado, puedes realizar el mismo filtro para identificar todos los ítems de un vendedor que no son de catálogo.
Llamada:
curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/users/$USER_ID/items/search?catalog_listing=false
Ejemplo:
curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/users/123456789/items/search?catalog_listing=false
Respuesta acotada de ítems de marketplace:
{
"seller_id": "123456789",
"query": null,
"paging": {
"limit": 50,
"offset": 0,
"total": 2902
},
"results": [
"MLA987654321",
"MLA123789456",
"MLA456789123",
"MLA132465798",
"MLA978645312",
"MLA312645978",
"MLA654987321",
"MLA123789654",
],
"filters": [
],
"available_filters": [],
"orders": [],
"available_orders": []
}
Tag de elegibilidad para ítems
A través del recurso search, podrás identificar todos los ítems de los vendedores que sean elegibles para catálogo con el tag catalog_listing_eligible y que aún no están participando en este. Realiza la siguiente llamada para consultarlos:
Llamada:
curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/users/$USER_ID/items/search?tags=catalog_listing_eligible
Ejemplo:
curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/users/123456987/items/search?tags=catalog_listing_eligible
Respuesta:
{
"seller_id":"658869707",
"query":null,
"paging":{
"limit":50,
"offset":0,
"total":0
},
"results":[
],
"orders":[
{
"id":"stop_time_asc",
"name":"Order by stop time ascending"
}
],
"available_orders":[
{
"id":"stop_time_asc",
"name":"Order by stop time ascending"
},
{
"id":"stop_time_desc",
"name":"Order by stop time descending"
},
{
"id":"start_time_asc",
"name":"Order by start time ascending"
},
{
"id":"start_time_desc",
"name":"Order by start time descending"
},
{
"id":"available_quantity_asc",
"name":"Order by available quantity ascending"
},
{
"id":"available_quantity_desc",
"name":"Order by available quantity descending"
},
{
"id":"sold_quantity_asc",
"name":"Order by sold quantity ascending"
},
{
"id":"sold_quantity_desc",
"name":"Order by sold quantity descending"
},
{
"id":"price_asc",
"name":"Order by price ascending"
},
{
"id":"price_desc",
"name":"Order by price descending"
},
{
"id":"last_updated_desc",
"name":"Order by lastUpdated descending"
},
{
"id":"last_updated_asc",
"name":"Order by last updated ascending"
},
{
"id":"total_sold_quantity_asc",
"name":"Order by total sold quantity ascending"
},
{
"id":{
"id":"total_sold_quantity_desc",
"field":"sold_quantity",
"missing":"_last",
"order":"desc"
},
"name":"Order by total sold quantity descending"
},
{
"id":{
"id":"inventory_id_asc",
"field":"inventory_id",
"missing":"_last",
"order":"asc"
},
"name":"Order by inventory id ascending"
}
]
}
La respuesta del search muestra en results todos los ítems del vendedor con el tag catalog_listing_eligible.
Ejemplo de ítem elegible:
{
"id": "MLA123456789",
"site_id": "MLA",
"title": "Item De Testeo, Por Favor No Ofertar --kc:off",
"subtitle": null,
"seller_id": 123456987,
"category_id": "MLA3530",
"official_store_id": null,
"price": 50,
"base_price": 50,
"original_price": null,
"currency_id": "ARS",
"initial_quantity": 1,
"available_quantity": 1,
"sold_quantity": 0,
"sale_terms": [
],
"buying_mode": "buy_it_now",
"listing_type_id": "free",
"start_time": "2020-02-17T16:30:39.000Z",
"stop_time": "2020-04-17T04:00:00.000Z",
"condition": "used",
"permalink": "https://articulo.mercadolibre.com.ar/MLA-839616438-item-de-testeo-por-favor-no-ofertar-kcoff-_JM",
"thumbnail": "http://mla-s1-p.mlstatic.com/951410-MLA40807113659_022020-I.jpg",
"secure_thumbnail": "https://mla-s1-p.mlstatic.com/951410-MLA40807113659_022020-I.jpg",
"pictures": [],
"video_id": null,
"descriptions": [
],
"accepts_mercadopago": true,
"non_mercado_pago_payment_methods": [
],
"shipping": {},
"international_delivery_mode": "none",
"seller_address": {},
"seller_contact": null,
"location": {
},
"geolocation": {},
"coverage_areas": [
],
"attributes": [],
"warnings": [
],
"listing_source": "",
"variations": [
],
"status": "active",
"sub_status": [
],
"tags": [
"catalog_listing_eligible",
"good_quality_picture",
"test_item",
"immediate_payment"
],
"warranty": null,
"catalog_product_id": null,
"domain_id": "MLA-UNCLASSIFIED_PRODUCTS",
"parent_item_id": null,
"differential_pricing": null,
"deal_ids": [
],
"automatic_relist": false,
"date_created": "2020-02-17T16:30:40.000Z",
"last_updated": "2020-02-17T16:34:12.000Z",
"health": 0.4,
"catalog_listing": false
}
Elegibilidad de una publicación existente con catalog_product_id asociado
Los siguientes ejemplos muestran cómo validar la elegibilidad de una publicación existente para enlazar una nueva publicación de catálogo con stock sincronizado que cuente con un catalog_product_id asociado.
Llamada:
curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/items/$ITEM_ID/catalog_listing_eligibility
Ejemplo con variaciones:
curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/items/MLA123456789/catalog_listing_eligibility
Respuesta:
{
"id": "MLA123456789",
"site_id": "MLA",
"domain_id": "MLA-CELLPHONES",
"status": null,
"buy_box_eligible": null,
"variations": [
{
"id": 1312323,
"status": "READY_FOR_OPTIN",
"buy_box_eligible": true
},
{
"id": 1312444,
"status": "READY_FOR_OPTIN",
"buy_box_eligible": true
}
]
}
Ejemplo sin variaciones:
curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/items/MLB1234/catalog_listing_eligibility
Respuesta:
{
"id": "MLB1234",
"site_id": "MLB",
"domain_id": "MLB-MICROWAVES",
"status": "READY_FOR_OPTIN",
"buy_box_eligible": true,
"variations": []
}
Consideraciones
- Si el ítem no posee variaciones la elegibilidad quedará expresada a través del campo buy_box_eligible de primer nivel en el JSON de la respuesta y la sección variations estará vacía.
- Si el ítem posee variaciones la elegibilidad de cada una de ellas quedará expresada dentro de la sección variations, la cual contendrá un array por variación con un campo buy_box_eligible para cada una de ellas.
Descripción de campos
id: ID de la publicación que estamos consultando.
site_id: ID del sitio al cual corresponde el ítem.
domain_id: ID del dominio al cual pertenece el ítem.
buy_box_eligible: indica si el ítem/variación está habilitado o no para participar de catálogo.
variations: son todas las variaciones que tiene un ítem. Cada una tendrá asociada un status y un valor para el campo buy_box_eligible.
status: define la situación del ítem tradicional con respecto a catálogo. Los diferentes estados podrán ser:
Elegible:
- READY_FOR_OPTIN: el ítem puede ser publicado en catálogo.
No elegibles:
- ALREADY_OPTED_IN: el ítem tradicional que se consulta ya tiene un ítem de catálogo asociado.
- CLOSED: el ítem está en un estado que ya no se puede vender más.
- PRODUCT_INACTIVE: el ítem está asociado a un producto que todavía no ha sido habilitado para catálogo o el ítem aún no tiene catalog_product_id asignado.
- NOT_ELIGIBLE: existe una regla de negocio que impide que el ítem aplique a catálogo. (ej: un celular usado, un celular sin liberar).
Si consultas por un ítem de catálogo que se encuentre compitiendo, el estado será COMPETING.
Verificar múltiples publicaciones elegibles con multiget
Para chequear si múltiples publicaciones son elegibles para catálogo realiza una única llamada. Deberás incorporar en la url el parámetro ids, además de realizar el llamado al recurso multiget, de la siguiente manera:
Llamada:
curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/multiget/catalog_listing_eligibility?ids=$ITEM_ID,$ITEM_ID
Ejemplo:
curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/multiget/catalog_listing_eligibility?ids=MLA818878419,MLA820167922
Respuesta:
[
{
"code": 200,
"body": {
"buy_box_eligible": null,
"domain_id": "MLA-CELLPHONES",
"id": "MLA818878419",
"site_id": "MLA",
"status": null,
"variations": [
{
"buy_box_eligible": true,
"id": 44612657634,
"status": "READY_FOR_OPTIN"
},
{
"buy_box_eligible": false,
"id": 44890704657,
"status": "ALREADY_OPTED_IN"
}
]
}
},
{
"code": 200,
"body": {
"buy_box_eligible": null,
"domain_id": "MLA-CELLPHONES",
"id": "MLA820167922",
"site_id": "MLA",
"status": null,
"variations": [
{
"buy_box_eligible": true,
"id": 44931385066,
"status": "READY_FOR_OPTIN"
},
{
"buy_box_eligible": true,
"id": 44931385069,
"status": "READY_FOR_OPTIN"
}
]
}
}
]
Descripción de campos
code: es el código de estado HTTP que retorna la consulta con cada item_id, si no hay ningún error tiene que ser 200.
body: cuerpo del mensaje que devuelve dicha consulta hacia la API de elegibilidad.
Siguiente: Buscador productos.