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 24/07/2024

Stock Multi Origen

Importante:
La iniciativa estará en producción a partir de octubre de 2024, comenzando por México
Te proporcionamos esta información para que puedas analizarla y ajustar el backlog de desarrollo. Por el momento no contaremos con un entorno de pruebas disponible, por lo que por ahora, será necesario simular el flujo utilizando mocks creados desde las integraciones.

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.
Adicionalmente, se le permitirá al seller configurar sus ítems para que sean visibles en destinos particulares según zona de cobertura (de flex), estos usuarios tendrán adicionalmente el tag listing_by_warehouse.
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",
        "listing_by_warehouse",
        "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
            },
            "tags": [
                "stock_location" 
            ],
            "network_node_id": "MXP123451"
        },
        {
            "id": "101",
            "user_id": "200",
            "description": "my store 2",
            "status": "active",
            "location": {
                "address_id": 502
            },
            "tags": [
                "stock_location" 
            ],
            "network_node_id": "MXP571615"
        }
    ]
}

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) o vendedores que tengan los dos tags "warehouse_management" y "listing_by_warehouse" (filtrado de oferta por geolocalización), podrán usar el siguiente recurso que será encargado de la creación del ítem y la asignación stock a tiendas.
Para los vendedores que tengan el tag "listing_by_warehouse" los ítems quedarán con el mismo tag.


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:

  • Para los ítems con tag “listing_by_warehouse”, si hay al menos una store/tienda activa asignada, el ítem quedará activo.
  • Si hay alguna tienda pausada, el ítem quedará activo, pero se devolverá un warning.
  • Si todas las stores/tiendas se encuentran pausadas, devolvemos un warning y el ítem quedará pausado.
  • Si se crea el ítem, pero falla la asignación a las tiendas. En este escenario retornaremos un status 201, con el ítem en “status”:”paused” y “sub_status”: “missing_coverage”. Reintentaremos la asignación a las tiendas de forma asíncrona y activaremos el ítem ante la creación.
  • 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
   }
]
}

Consideraciones:

  • 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.
  • Ante cualquier error que se de en las validaciones, no vamos a persistir la información de stock enviada y vamos a retornar un error 400 con el siguiente mensaje “Invalid stores {store_id1, store_id2, store_id3}”.

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"
}

Post-venta

Para conocer las implicaciones que habrá en APIs de Orders y de Shipping te sugerimos revisar las documentaciones correspondientes.