Documentación Mercado Shops
Descubre toda la información que debes conocer sobre las APIs de Mercado Shops.Documentación
Gestión de pixels
Con el recurso /shops/custom-scripts/ext/integration puedes implementar y gestionar scripts personalizados en las tiendas de los vendedores de Mercado Shops, así como desactivarlos cuando sea necesario.Consideraciones
- Registra tu aplicación en https://developers.mercadolibre.com para obtener un application_id. (Se debe dar de alta la aplicación en Mshops).
- Usa Oauth para autorizar las peticiones, asegurando interacciones seguras y autenticadas con nuestra plataforma.
- Cada aplication_id se asocia a un único pixel_id. Para adquirir otro, debes dar de alta otra aplicación. A a su vez, un Pixel_id puede tener múltiples seller asociados.
- La asociación de scripts requiere que el vendedor tenga un dominio delegado en Mercado Shops. Si no se cumple este requisito, la API generará un error 401 (más info.)
Scripts
- El formato de los scripts debe ser un template de Handlebars tal que se pueda obtener un código de JavaScript al reemplazar la variable de usuario. El código de JavaScript obtenido del script debe poder ser ejecutado dentro de una condición.
- Mantén el script por debajo de 2kB. Si necesitas lógica adicional, haz un llamado a un archivo JavaScript externo almacenado en un CDN proporcionado por el Integrador.
- Asegúrate de que los nombres de archivo JSON sean simples, evitando espacios y caracteres especiales para garantizar la compatibilidad.
- Incluye la variable definida en el archivo .JSON en tu script. Esta variable puede nombrarse como VARIABLE.
Ejemplo de script correcto:
script.hbs
if (/*condition*/) {
var
src="https://test-pixel.com/api/script/mercadoshops/onLoad.js?=shop123"; var script = document.createElement("script");
script.setAttribute("src", src);
document.getElementsByTagName("head")[0].appendChild(script);
}
Cómo se Verá en la Tienda:
var src="https://test-pixel.com/api/script/mercadoshops/onLoad.js?={{VARIABLE}}"; var script = document.createElement("script");
script.setAttribute("src", src);
document.getElementsByTagName("head")[0].appendChild(script);
Ejemplo de script incorrecto:
<script
src="https://test-pixel.com/api/script/mercadoshops/onLoad.js?store
={{VARIABLE}} async defer></script>
Identificar el Dominio de la tienda
Antes de comenzar el proceso de configuración de píxeles, es importante contar con acceso a los datos del dominio de las tiendas en Mercado Shops. Esto permite, en primer lugar, identificar si el dominio está delegado o no, y también obtener la información necesaria para agregar scripts personalizados. Para facilitar esto, ponemos a disposición la información a través del siguiente recurso.
Llamada:
curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN'
https://api.mercadolibre.com/shops/public-domains
Respuesta:
{
"domain": "www.shop.domain.com",
"shop_id": 123242154125,
"status": "ACTIVE",
"delegation_type": "PARTIAL",
"site": "MCO"
}
Parámetros:
Campos | Descripción del campo | Valores posibles para el campo y su descripción |
---|---|---|
domain | Dominio delegado | String |
shop_id | Id de la shop | Long |
status | Estado de la delegación | REGISTERED, CHECK_FOR_TOTAL_DELEGATION, CHECK_FOR_PARTIAL_DELEGATION, DELEGATION_OK, DELEGATION_ERROR, CERTIFICATE_OK, CERTIFICATE_ERROR, NAVIGATION_OK, NAVIGATION_ERROR, ACTIVE, ERROR, DOMAIN_EXPIRED, CERTIFICATE_EXPIRED, INACTIVE, DELEGATION_CEASED, DELEGATION_ANALYZE, DELEGATION_RESTART, DELEGATION_PREVIOUS, DELEGATION_REREGISTER, CERTIFICATE_ANALYZE, NAVIGATION_ANALYZE, ANALYZE |
delegation_type | Tipo de la delegación | TOTAL, PARTIAL |
site | Id del site del seller | MLA, MBO, MLB, MLC, MCO, MCR, MRD, MCU, MEC, MGT, MHN, MLM, MNI, MPA, MPY, MPE, MPT, MSV, MLU, MLV |
Status_Code | Código de error | Mensaje de error | Descripción |
---|---|---|---|
401 | unauthorized | Seller has pending to ask their identity validation | El vendedor no validó su identidad |
401 | unauthorized | Signature not found by user_id and checkpoint_id | El vendedor no firmó los términos y condiciones. |
401 | unauthorized | Client.id not allowed to continue operation | El client_id no cuenta con los permisos para acceder a la información del vendedor. |
401 | unauthorized | invalid_token | |
403 | forbidden | ACCESS_TOKEN_NOT_GRANTED | No tiene permisos para realizar la consulta. |
404 | not_found | shop_id not found in kvs | El vendedor no cuenta con delegación de dominios. |
429 | too_many_requests | Over quota | Se hicieron demasiados requests en un corto periodo de tiempo. |
500 | internal_server_error | Se debe a un error no esperado en cualquier paso del flujo. |
Asociar script al Shop del vendedor
Con el siguiente recurso https://api.mercadolibre.com/shops/custom-scripts/ext/integration, podrás agregar scripts personalizados que mejoren y adaptan las tiendas de Mercado Shops, ofreciendo una mejor experiencia de compra para los clientes.
Parámetros:
Campos | Descripción del campo | Valores posibles para el campo y su descripción |
---|---|---|
pixel_id | Identificación del script de la aplicación. | String |
sections | Contiene los argumentos que indican la/s secciones de la tienda donde se impactará el pixel. Se debe respetar minúsculas y como mínimo debe indicarse una sección. Si no se indica ninguna o el nombre es incorrecto, se devolverá un error 400. | Los valores posibles son: home, search, cart, vip y contact. |
external_client_id | Id del vendedor, al que se le aplicará el pixel. | String |
integration_id | Identificador de la integración previamente creada al vendedor en el endpoint POST. Es el valor de la respuesta correspondiente al id. | String |
Llamada:
curl -X POST-H 'Authorization: Bearer $ACCESS_TOKEN' -H "Content-Type: application/json" -d
{...}
https://api.mercadolibre.com/shops/custom-scripts/ext/integration
Ejemplo:
curl -X POST -H 'Authorization: Bearer $ACCESS_TOKEN' -H "Content-Type: application/json" -d
'{
"pixel_id": "XXXXX",
"sections": ["home", "search", "vip", "cart", "contact"],
"external_client_id": "XXXXX",
}
'
https://api.mercadolibre.com/shops/custom-scripts/ext/integration
Respuesta:
{
"id": "XXXXX",
"pixel": {
"id": "XXXXX",
"description": "XXXXX"
},
"created_at": "XXXXX",
"sections": ["home", "search", "vip", "cart", "contact"]
}
Status Code:
Status Code | Response body | Notas |
---|---|---|
201 - Created | Datos de la integración recién creada (id, fecha de creación, secciones, detalles del pixel). | Es importante guardar el id que devuelve este endpoint, ya que debe ser usado al momento de deshabilitar la integración. |
400 - Unauthorized | { "error": "Unauthorized Shop", "message": "Shop does not have a valid domain" } | El shop al que se quiere realizar la integración no tiene dominio delegado. |
400 - Bad Request | { "error": "Active integration already exists", "message": "Seller already has an active integration with this script" } | La integración que se intenta realizar ya se encuentra activa en el dominio del Seller. |
400 - Bad Request | { "error": "Script doesn't exist", "message": "Unable to find the script with the provided ID: " } | No existe el script que se quiere integrar al shop. |
401 - Unauthorized | { "error": "Unauthorized", "message": "You are unauthorized for this request" } | El token de autorización no es válido. |
500 - Internal Server Error | Error interno. |
Desactivar pixel
Con el el siguiente recurso podrás desactivar el pixel en todas las secciones en que se activó previamente al usuario (vendedor).
Llamada:
curl -X DELETE -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/shops/custom-scripts/ext/integration?integration_id={INTEGRATION_ID}
Ejemplo:
curl -X DELETE -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/shops/custom-scripts/ext/integration?integration_id={INTEGRATION_ID}
Respuesta:
{
"updated_at": "XX/XX/XX",
"status": "Disabled",
"external_client_id": "XXXXX"
}
Status Code
Status Code | Response body | Notas |
---|---|---|
200 - OK | ||
400 - Bad Request | { "error": "Integration already disabled", "message": "It is not possible to process your request. The integration is already disabled" } | La integración ya se había deshabilitado anteriormente. |
400 - Bad Request | { "error": "Integration doesn't exist", "message": "The integration doesn't exist" } | No existe la integración que se busca deshabilitar. |
401 - Unauthorized | { "error": "Unauthorized", "message": "You are unauthorized for this request" } | El token de autorización no es válido. |
500 - Internal Server Error | Error interno. |