Documentação do Mercado Shops

Confira todas as informações necessárias sobre as APIs Mercado Shops.
circulos azuis em degrade
Última atualização em 24/10/2023

Gerenciar pixels

Importante:
Para utilizar o recurso é necessário preencher o seguinte formulário, para ter acesso ao processo de certificação e atender aos requisitos.

Com o recurso /shops/custom-scripts/ext/integration, você pode associar seus scripts à loja do fornecedor, bem como desativá-la.

Considerações

  • A aplicação deve ser registada em https://developers.mercadolibre.com , obtendo o application_id. (O aplicativo deve ser registrado no Mshop).
  • Para autorizar requisições, utiliza-se o Oauth (mais info).
  • Lembre-se de que um application_id só pode ter um pixel_id. Para adquirir outro, você deve registrar outro aplicativo. Por sua vez, um Pixel_id pode ter vários vendedores associados a ele.
  • Para associar um script a um vendedor, este deve ter delegado um domínio ao MercadoShops. Caso esta etapa não tenha sido realizada, a API retornará um código de status 401 com a seguinte mensagem: Your shop is not authorized for this request, you must have a delegated domain . Para identificar se o vendedor tem domínio delegado ou não (mais info.)
  • O formato dos scripts deve ser um modelo Handlebars de forma que um código JavaScript possa ser obtido substituindo a variável de usuário. O código JavaScript obtido do script deve poder ser executado dentro de uma condição. Além disso, é preferível que o script seja mantido o menor possível, com um tamanho total menor que 2kB, e se for necessária lógica adicional, o script deve fazer uma chamada para buscar e executar outro arquivo JavaScript armazenado em um CDN fornecido pelo Integrador.
  • O nome do arquivo .Json não pode conter espaços ou caracteres especiais, o Custom-script não os permite nos nomes dos Pixels.
  • O script deve conter a variável definida no arquivo .Json. É viável chamar a variável de VARIABLE.

Exemplo de scripts correto:


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); 
} 

Esse scripts será exibido na loja da seguinte maneira:

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); 

Exemplo de scripts incorreto:

Glossário de campos e parâmetros

Campos Descrição do campo Possíveis valores para o campo e sua descrição
pixel_id Identificação do script do aplicativo. String
sections Contém os argumentos que indicam a(s) seção(ões) da loja onde o pixel será impactado. As letras minúsculas devem ser respeitadas e pelo menos uma seção deve ser indicada. Se nenhum for especificado ou o nome estiver incorreto, um erro 400 será retornado. Os valores possíveis são: home, search, cart, vip e contact.
external_client_id Id do vendedor, ao qual o pixel será aplicado. String
integration_id Identificador da integração criada anteriormente ao vendedor no endpoint POST. É o valor da resposta correspondente ao id. String

Identifique o domínio da loja

Antes de iniciar o fluxo de configuração do pixel, é necessário ter acesso aos dados de domínio dos vendedores das Lojas do Mercado para primeiro identificar se eles possuem ou não um domínio delegado, e também ter as informações de domínio da loja para adicionar costumes scripts para integradores. Para isso permitimos que as informações sejam disponibilizadas através do seguinte recurso..

Importante:
Lembre-se de que na resposta à solicitação /public-domains você terá que validar que o status é ACTIVE para permitir que você continue com o fluxo de configuração do pixel. No caso de recebimento de qualquer outro valor, devemos avisar que a loja não possui domínio delegado.

Chamada:

curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN'
https://api.mercadolibre.com/shops/public-domains

Resposta:

{
    "domain": "www.shop.domain.com",
    "shop_id": 123242154125,
    "status": "ACTIVE",
    "delegation_type": "PARTIAL",
    "site": "MCO"
}

Parámetros de respuesta

Campos Descrição do campo Possíveis valores para o campo e sua descrição
domain Domínio delegado String
shop_id Id da shop Long
status Estado da delegação 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 delegação TOTAL, PARTIAL
site Id do site do vendedor MLA, MBO, MLB, MLC, MCO, MCR, MRD, MCU, MEC, MGT, MHN, MLM, MNI, MPA, MPY, MPE, MPT, MSV, MLU, MLV

Erros

Status_Code Código de error Mensagem de erro Descrição
401 unauthorized Seller has pending to ask their identity validation O vendedor não validou sua identidade.
401 unauthorized Signature not found by user_id and checkpoint_id O vendedor não assinou os termos e condições.
401 unauthorized Client.id not allowed to continue operation O client_id não tem permissão para acessar as informações do fornecedor.
401 unauthorized invalid_token
403 forbidden ACCESS_TOKEN_NOT_GRANTED Você não tem permissão para realizar a consulta.
404 not_found shop_id not found in kvs O vendedor não tem delegação de domínio.
429 too_many_requests Over quota Muitos pedidos foram feitos em pouco tempo.
500 internal_server_error É causado por um erro inesperado em qualquer etapa do fluxo.

Associar script ao Shop do vendedor

Chamada:

curl -X POST-H 'Authorization: Bearer $ACCESS_TOKEN' -H "Content-Type: application/json" -d
    {...}
https://api.mercadolibre.com/shops/custom-scripts/ext/integration

Exemplo:

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

Resposta:

{
  "id": "XXXXX",
  "pixel": {
    "id": "XXXXX",
    "description": "XXXXX"
  },
  "created_at": "XXXXX",
  "sections": ["home", "search", "vip", "cart", "contact"]
}
Nota:
Quando o status code for suficientemente descritivo, o corpo da resposta estará vazio. Nos casos em que o status code não oferece informações suficientes, os campos error e message serão incluídos no corpo da resposta para dar mais contexto sobre o erro.

Status Code Response body Notas
201 - Created Dados da integração recém-criada (id, data de criação, seções, detalhes do pixel). É importante guardar o id retornado por este endpoint, ele deve ser utilizado ao desabilitar a integração.
400 - Unauthorized { "error": "Unauthorized Shop", "message": "Shop does not have a valid domain" } A loja a que pretende integrar não tem domínio delegado.
400 - Bad Request { "error": "Active integration already exists", "message": "Seller already has an active integration with this script" } A integração que você está tentando executar já está ativa no domínio do vendedor.
400 - Bad Request { "error": "Script doesn't exist", "message": "Unable to find the script with the provided ID: " } O script que você deseja integrar na loja não existe.
401 - Unauthorized { "error": "Unauthorized", "message": "You are unauthorized for this request" } O token de autorização é inválido.
500 - Internal Server Error Erro interno.

Desativar pixel

Com o seguinte recurso você pode desativar o pixel em todas as seções em que o vendedor foi ativado anteriormente.

Chamada:

curl -X DELETE -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/shops/custom-scripts/ext/integration?integration_id={INTEGRATION_ID}

Exemplo:

curl -X DELETE -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/shops/custom-scripts/ext/integration?integration_id={INTEGRATION_ID}

Resposta:

{
  "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" } A integração já havia sido desativada anteriormente.
400 - Bad Request { "error": "Integration doesn't exist", "message": "The integration doesn't exist" } A integração que você deseja desativar não existe.
401 - Unauthorized { "error": "Unauthorized", "message": "You are unauthorized for this request" } O token de autorização não é válido.
500 - Internal Server Error Erro interno.