Documentación Mercado Libre
Descubre toda la información que debes conocer sobre las APIs de Mercado Libre.Documentación
Stock Multi Origen
En esta documentación, encontrarás información importante para cada uno de los flujos que se verán impactados por esta iniciativa, comenzando por:
- Gestión de vendedores.
- Publicación de ítem con stock multi origen
- Gestión de stock por depósito
Identificar vendedor Multi-Warehouse
Nota:
No todos los vendedores tendrán la funcionalidad activada en su cuenta. La activación de los vendedores será controlada y estará sujeta a criterios definidos por Mercado Libre, como el tipo de logística que operan, las direcciones desde las que despachan, entre otros.
Para identificar que el usuario tiene la funcionalidad activada en su cuenta, utilizaremos el tag "warehouse_management" en /users.
Llamada:
curl -X GET https://api.mercadolibre.com/users/$USER_ID -H 'Authorization: Bearer $ACCESS_TOKEN'
Ejemplo:
curl -X GET https://api.mercadolibre.com/users/1008002397 -H 'Authorization: Bearer $ACCESS_TOKEN'
Respuesta:
{
"id": 1008002397,
"nickname": "TETE9326760",
"registration_date": "2021-10-27T14:48:55.000-04:00",
"first_name": "Test",
"last_name": "Test",
"gender": "",
"country_id": "MX",
...
"tags": [
"normal",
"user_product_seller",
"warehouse_management",
"mshops"
],
...
}
Gestión de depósitos
Nota:
La posibilidad de crear ubicaciones para un mismo seller_id únicamente está disponible desde la cuenta de cada vendedor por medio del panel de Mercado Libre, en Ventas -> Preferencias de venta -> Mis depósitos.
Búsqueda de depósitos (stores) de un usuario
Para identificar los depósitos creados por cada usuario, debes utilizar el siguiente endpoint:
Llamada:
curl -X GET https://api.mercadolibre.com/users/$USER_ID/stores/search?tags=stock_location -H 'Authorization: Bearer $ACCESS_TOKEN'
Ejemplo:
curl -X GET https://api.mercadolibre.com/users/1008002397/stores/search?tags=stock_location -H 'Authorization: Bearer $ACCESS_TOKEN'
Respuesta:
{
"paging": {
"limit": 50,
"total": 2
},
"results": [
{
"id": "100",
"user_id": "200",
"description": "my store",
"status": "active",
"location": {
"address_id": 501,
"address_line": "Calle 31 Pte 260",
"street_name": "Calle 31 Pte",
"street_number": 260,
"latitude": 21.1637963,
"longitude": -86.8737132,
"city": "Cancún/Benito Juárez",
"state": "Quintana Roo",
"country": "Mexico",
"zip_code": "77518"
},
"tags": ["stock_location"],
"network_node_id": "123451"
},
{
"id": "101",
"user_id": "200",
"description": "my store 2",
"status": "active",
"location": {
"address_id": 502,
"address_line": "Calle 30 Pte 300",
"street_name": "Calle 30 Pte",
"street_number": 300,
"latitude": 21.1637963,
"longitude": -86.8737132,
"city": "Cancún/Benito Juárez",
"state": "Quintana Roo",
"country": "Mexico",
"zip_code": "77518"
},
"tags": ["stock_location"],
"network_node_id": "571615"
}
]
}
Creación de ítems Multi-Warehouse
La nueva estructura del Item, con su User Product y los Stocks Locations estará en el siguiente formato:
En donde el User Product agrupará todos los items que coincidan, basado en las reglas de UP, pero ahora también tendrá la entidad Stock_Location para agrupar el stock de los items, pudiendo identificar la cantidad disponible en cada depósito (store).
Para la creación de nuevos ítems con stock asignado a los depósitos, tanto tradicionales como de catálogo en los vendedores con el tag "warehouse_management", debes utilizar el siguiente recurso:
Nota:
Utiliza la documentación de publicar un producto para conocer la estructura completa de publicar un Item.
Llamada:
curl POST --'https://api.mercadolibre.com/items/multiwarehouse' -H 'Content-Type: application/json' -H 'Authorization: Bearer $ACCESS_TOKEN' -d
{
"title": "Item Lata de tomate ",
"category_id": "MLB455668",
"price": 1000,
"listing_type_id": "gold_special",
"currency_id": "ARS",
...
"channels": [
"marketplace"
],
"stock_locations": [
{
"store_id": "123456",
"network_node_id": "123451",
"quantity": 10
}
...
]
}
Respuesta:
{
"id": "MLM2198240631",
"site_id": "MLM",
"title": "Item Lata De Tomate",
"seller_id": 123456789,
"category_id": "MLM191212",
"user_product_id": "MLMU123456789",
"price": 1000,
"base_price": 1000,
...
"channels": [
"marketplace"
],
"stock_locations": [
{
"store_id": "123456",
"quantity": 10,
"network_node_id": "MXP123451"
}
]
}
Códigos de Estado de respuesta:
Código | Mensaje | Descripción | Recomendación |
---|---|---|---|
201 | OK | Item creado | - |
400 | the fields [stock_locations] are required for requested call | Campo stock_locations no encontrado en la requisición | Incluir al menos una de las tiendas del vendedor para crear el ítem |
400 | store does not belong to seller: 000 | El id de la tienda no pertenece al dicho usuario | Revisar las tiendas del vendedor |
400 | store not found: 000 | El id de la tienda no existe | Revisar las tiendas del vendedor |
400 | the fields [available_quantity] are invalid for requested call | El campo available_quantity no es permitido para este usuario | Una vez que el usuario tiene la etiqueta warehouse_management, ya no se puede publicar con available_quantity, debe incluir stock_locations |
Consideraciones:
- Tanto el store_id como el network_node_id, van a estar en el response de la búsqueda por las tiendas del vendedor.
- Luego de la publicación, no será más posible encontrar stock_location en la petición de Item, sino que debe empezar a utilizar el recurso de consulta de stock de user_product.
- Debes guardar el user_product_id de la respuesta que será utilizado más adelante para la gestión de stock.
Consultar detalle de stock depósitos (User Products)
Para consultar el stock de los depósitos el siguiente endpoint indicando el user_product_id del Ítem creado.
Llamada:
curl -X GET https://api.mercadolibre.com/user-products/$USER_PRODUCT_ID/stock -H 'Authorization: Bearer $ACCESS_TOKEN'
Ejemplo:
curl -X GET https://api.mercadolibre.com/user-products/MLMU123456789/stock -H 'Authorization: Bearer $ACCESS_TOKEN'
Respuesta:
{
"locations": [
{
"type": "seller_warehouse",
"network_node_id": "123451",
"store_id": "9876543",
"quantity": 15
},
{
"type": "seller_warehouse",
"network_node_id": "571615",
"store_id": "9876553",
"quantity": 25
}
],
"user_id": 1234,
"id": "MLMU123456789"
}
Gestión de stock por ubicación
Nota:
En el paso anterior, al consultar el stock, se retornará el header "x-version", el cual tendrá un valor entero (tipo long) que representará la versión actual de stock. Este header debe ser enviado al realizar un PUT en /stock/. Si no se envía, retornará un error 400 bad request.
Para modificar el stock de cada depósito, deberás tener previamente el user_product_id, el store_id y el network_node_id.
El siguiente PUT cambiará el stock actual de cada depósito (store). En caso que el store tenga stock 0, se asignará la cantidad del PUT.
Llamada:
>curl -X PUT https://api.mercadolibre.com/user-products/$USER_PRODUCT_ID/stock/type/seller_warehouse -H 'x-version: $HEADER' -H 'Content-Type: application/json' -H 'Authorization: Bearer $ACCESS_TOKEN'
Ejemplo:
curl -X PUT https://api.mercadolibre.com/user-products/MLMU123456789/stock/type/seller_warehouse -H 'x-version: 1' -H 'Content-Type: application/json' -H 'Authorization: Bearer $ACCESS_TOKEN' -d '
{
"locations": [
{
"store_id": "123456",
"network_node_id": "MXP123451", //el campo network_node_id es opcional y no se valida en la petición
"quantity": 10
},
{
"store_id": "123457",
"network_node_id": "MXP571615",
"quantity": 5
},
{
"store_id": "123458",
"network_node_id": "MXP725258",
"quantity": 20
}
]
}
Respuesta:
{
"user_id": 123456789,
"product_release_date": null,
"id": "MLMU123456789",
"locations": [
{
"store_id": "123456",
"network_node_id": "MXP123451",
"type": "seller_warehouse",
"quantity": 10
},
{
"store_id": "123457",
"network_node_id": "MXP571615",
"type": "seller_warehouse",
"quantity": 5
},
{
"store_id": "123458",
"network_node_id": "MXP725258",
"type": "seller_warehouse",
"quantity": 20
}
]
}
Códigos de Estado de respuesta:
Código | Mensaje | Descripción | Recomendación |
---|---|---|---|
200 | OK | Actualización exitosa | - |
400 | Missing X-Version header | Header “x-version” no informado | Debes informar el Header “x-version” |
409 | Version mismatch | El header “x-version” informado es incorrecto | Haz un GET en /user-product para obtener el header “x-version” actualizado |
400 | store does not belong to seller: 000 | El id de la store no pertenece al dicho usuario | Revisar las stores del vendedor |
400 | store not found: 000 | El id de la store no existe | Revisar las stores del vendedor |
400 | store is not configured to be a stock location | El store no está configurado para multiorigen | Indique que el vendedor revise el dicho store por el panel de Mercado Libre |
400 | store cannot be null or empty | Campo store no informado | Incluir al menos una de las stores del vendedor para actualizar stock del UP |
Nota:
Para la pos-venta, consulte la documentación de Orders y/o de Envíos para conocer pedidos con stores por el campo "node_id".
Próxima documentación: Stock distribuído