Documentación Mercado Libre

Descubre toda la información que debes conocer sobre las APIs de Mercado Libre.
circulos azuis em degrade

Documentación

Última actualización 01/11/2024

Stock Multi Origen

Importante:
La iniciativa estará en producción a partir de octubre de 2024, comenzando por México
Los endpoints estarán disponibles para pruebas a partir de la segunda semana de septiembre 2024, por lo que por ahora, será necesario simular el flujo utilizando mocks creados desde las integraciones.

Una vez liberados los endpoints podrás realizar pruebas al solicitar la ambientación de tus usuarios de pruebas de México (MLM) con el siguiente formulario, dichas activaciones serán realizadas los días viernes (cada 15 días).

Stock Multi Origen tiene como objetivo permitir representar un vendedor (seller_id) que tiene más de una ubicación o tienda.
El endgame junto con la iniciativa de Precios por Variación es permitir ítems de un mismo vendedor con stock distribuido en sus diferentes ubicaciones.
Se incluye el concepto de un seller_warehouse, para representar a un vendedor que tiene la posibilidad de contar con más de una ubicación o tienda.

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 ubicaciones
  • Gestión de stock por ubicación

Gestión de vendedores

En un principio, hemos seleccionado una lista de vendedores que actualmente operan con múltiples almacenes, quienes tendrán esta experiencia disponible, permitiéndoles así gestionar sus ubicaciones o tiendas.
Para identificar a los usuarios que estén configurados con más de una ubicación o tienda, utilizaremos el tag warehouse_management en user_id.
Consulta el api de users para saber si un usuario opera en modo multi origen.


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",
    "email": "test_user_19653740@testuser.com",
    "identification": {...},
    "address": {...},
    "phone": {...},
    "alternative_phone": {...},
    "user_type": "normal",
    "tags": [
        "normal",
        "warehouse_management",
        "mshops",
        "messages_as_seller"
    ],
    "logo": null,
    "points": 1,
    "site_id": "MLM",
    "permalink": "http://perfil.mercadolibre.com.mx/TETE9326760",
    "seller_experience": "NEWBIE",
    "bill_data": {...},
    "seller_reputation": {...},
    "buyer_reputation": {...},
    "status": {...},
    "secure_email": "ttest.y25p1f@mail.mercadolibre.com.mx",
    "company": {...},
    "credit": {...},
    "context": {...},
    "registration_identifiers": []
}

Gestión de ubicaciones

En un principio, hemos seleccionado una lista de vendedores que actualmente operan con múltiples almacenes, quienes tendrán esta experiencia disponible, permitiéndoles así gestionar sus ubicaciones o tiendas.

Nota:
La posibilidad de crear ubicaciones para un mismo seller_id únicamente está disponible desde la cuenta de cada vendedor por medio del front de Mercado Libre.

Cada vendedor va a mantener una única logística base, es decir, un vendedor que tiene varias ubicaciones todas van a operar por ejemplo en (cross_docking) Mercado Envios Colecta. Por otra parte, el flujo de Stock Multi Origen no aplica para Mercado Envios1.


Búsqueda de tiendas de un usuario

Para identificar las tiendas creadas por cada usuario, podrás 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": "MXP123451"
        },
        {
            "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 Multiwarehouse

Nota:
En caso de que utilices el POST actual para publicar un ítem multiwarehouse, éste quedará con status: “paused” y substatus: “out_of_stock” hasta que se realice el PUT para actualizar el stock y distribuirlo por tienda. El campo "available_quantity” será desconsiderado..

Para la creación de nuevos ítems, tanto tradicionales como de catálogo (ítems con “catalog_listing”:true y “catalog_product_id”), en los vendedores con el tag "warehouse_management" (configuración de multiorigen), podrán usar el siguiente recurso que será encargado de la creación del ítem y la asignación stock a tiendas.


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": "0001",
            "network_node_id": "MXP123451",
            "quantity": 10
        },
        { 
            "store_id": "0002",
            "network_node_id": "MXP571615",      
            "quantity": 5
        },
        { 
            "store_id": "0003",
            "network_node_id": "MXP725258",
            "quantity": 20
        }
    ] 
}

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.

Gestión de stock por ubicación

Nota:
Al consultar el detalle de stock, se retornará un header llamado "x-version", el cual tendrá un valor entero (de tipo long) que representará la versión actual de /stock. Este header debe ser enviado al realizar llamados PUT en /stock. Si no se envía, retornará un bad request (status code: 400). Adicionalmente en caso que la versión enviada no sea la última, se retornará un conflict (status code: 409).

Para modificar el stock por ubicación, utiliza la siguiente llamada, es necesario enviar el user_product_idy el store_id y el network_node_id.



Si la tienda no tiene stock asignado previamente, se le asignará esta cantidad. Si la tienda ya cuenta con stock asignado, se le asignará la nueva cantidad indicada.


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' -d '{
"locations": [
   {
        "store_id": "0001",
        "network_node_id": "",
        "quantity": $STOCK_QUANTITY
   },
   { 
        "store_id": "0002",
        "network_node_id": "",
        "quantity": $STOCK_QUANTITY
   },
   { 
        "store_id": "0003",
        "network_node_id": "",
        "quantity": $STOCK_QUANTITY
   }
]
}

Ejemplo:

curl -X PUT https://api.mercadolibre.com/user-products/MLBU206642488/stock/type/seller_warehouse -H 'x-version: 1' -H 'Content-Type: application/json' -H 'Authorization: Bearer $ACCESS_TOKEN' -d '{
{
"locations": [
   {
        "store_id": "0001",
        "network_node_id": "MXP123451",
        "quantity": 10
   },
   { 
        "store_id": "0002",
        "network_node_id": "MXP571615",
        "quantity": 5
   },
   { 
        "store_id": "0003",
        "network_node_id": "MXP725258",
        "quantity": 20
   }
]
}

Ante cualquier error que se de en las validaciones, no vamos a persistir la información de stock enviada y vamos a retornar error con el detalle del motivo de fallo de cada una de las tiendas:


Ejemplo error 400 Bad Request:

{
  "message": "[store does not belong to seller: 3242,523423 - store not found: 777 - store is not configured to be a stock location: 5344,62222]"
  "error": "bad_request",
  "status": 400
}

Mensajes de error posibles:

  • “store does not belong to seller: {store_id1, store_id2,...}”: Indica que las tiendas no pertenecen al mismo seller del producto.
  • “store not found: {store_id1, store_id2,...}”: Indica que las tiendas no existen o están dadas de baja.
  • “store is not configured to be a stock location: {store_id1, store_id2,...}”: Indica que las tiendas no se encuentran configuradas para multiorigen.
  • “invalid network_node_id for stores: {store_id1, store_id2,...}”: Indica que el nodo enviado no se corresponde con el asignado a la tienda.

Obtener detalle de stock

Para consultar el stock de las tiendas puedes utilizar el siguiente endpoint indicando el user product.

Llamada:

curl -X GET https://api.mercadolibre.com/user-products/$USER_PRODUCT_ID/stock -H 'Authorization: Bearer $ACCESS_TOKEN'

Ejemplo:


{
   "locations": [
       {
           "type": "seller_warehouse",
           "network_node_id": "MXP123451",
           "store_id": 9876543,
           "quantity": 15
       },
       {
           "type": "seller_warehouse",
           "network_node_id": "MXP571615",
           "store_id": 9876553,
           "quantity": 15
       }
   ],
   "user_id": 1234,
   "id": "MLBU206642488"
}