Documentação do Mercado Livre

Confira todas as informações necessárias sobre as APIs Mercado Livre.
circulos azuis em degrade

Documentação do

Última atualização em 10/07/2024

Experiência para imóveis

Nota:
A partir do dia 24 de Julio/2024, deixaremos de disponibilizar o estado "visita fallida" .

A partir do Mercado Livre queremos gerar uma nova experiência de Solicitação de visita com foco em assegurar a disponibilidade dos imóveis, e garantir a resposta a dúvidas e pedidos de agenda em tempo e forma.


Este guia tem como objetivo descrever e exemplificar como o Mercado Livre se conecta com os parceiros que estão atualmente dentro do modelo de Solicitação de visita. Ele detalha a jornada do cliente, destacando em que etapa cada um dos atores envolvidos participa


Objetivos

  • Descrever brevemente o customer journey de solicitação de visita.
  • Descrever cada um dos webhooks e quais são os domínios de variável que aceitam.
  • Entregar diretrizes técnicas de como integrar-se com nosso sistema para poder utilizar os Webhooks e APIs.
  • Importante:
    Este recurso está disponível para imóveis com foco em MLC.

    Considerações

    Atualmente, temos dois ambientes disponíveis para integração:

    • Ambiente de produção: este é o ambiente utilizado para acessar a versão em produção do nosso sistema.
    • Ambiente de stage: este é o nosso ambiente de pré produção, reservado para provas y desesvolvimento. Para acessá-lo, é necessário incluir o parámetro ?scope=stage a URL principal. Por exemplo: URL/?scope=stage.

    Por favor, utilize este ambiente para testes e desenvolvimento antes de implementar quaisquer alterações no ambiente de produção.


    Passos para iniciar a integração

    1. A conta do seller profissional deve estar registrada.
    2. Registrar a aplicação para obter o token.
    3. Autenticação como seller ou integrador, conforme corresponda.
    4. Gerar a configuração do seller.
    5. Publicar os items na plataforma.
    6. Marcar os items como Solicitação de visita.
    7. Obter detalhes da agenda para verificar o fluxo.

    Atualizações em Tempo Real

    Estas atualizações em tempo real são utilizadas pelo partner para obter mais informações sobre a intenção de visita, como sobre a reserva efetuada pelo cliente (comprador). Ao mesmo tempo, também para nos poder fornecer mais informações sobre o estado da intenção de visita gerada pelo cliente e, assim, teremos um journery transparente para o comprador.


    É importante o seller ter configurado em seu sistema todos os endpoints de nossa API e fazer as chamadas sempre que quiser alterar o estado de uma agenda. Assim que um comprador agendar uma visita, as informações são enviadas ao seller, que poderá começar a fazer as chamadas para nossa API para alterar o estado.


    Configurações

    As configurações são necessárias para operar nos fluxos de visita e também informar sobre as condições de Solicitação de cada seller em relação às suas propriedades. Essas informações são exibidas em cada publicação e dentro do fluxo de visita.

    Importante:
    As configurações são feitas apenas uma vez e aplicadas a todas as publicações, com exceção do atributo "salary_multiplier", que pode ser definido para cada publicação.

    Criar configuração

    A seguir, são detalhadas as validações aplicadas a cada parâmetro para uma nova Configuração:

    Parâmetro Obrigatório Min Max Tipo Padrão Descrição
    seller_id Sim 1 - Long - Identificador único do provedor ou seller.
    notification_url Não 0 150 String “” URL para receber notificações de agenda.
    codebtor_required Não - - Boolean, valores permitidos true ou false. true Requisito de avaliação.
    latest_dependent_worker_payrolls Não 0 12 Integer 3 Quantidade dos últimos pagamentos salariais.
    latest_independent_worker_payrolls Não 0 24 Integer 6 Quantidade de recibos de honorários.
    email_notify_schedule Não - - Boolean, valores permitidos true ou false. true Notificação de agendas por e-mail ao partner.
    salary_multiplier Não 1 10 Double 3 Fator multiplicador de renda.
    notification_header_token Não 1 50 String “” Token de autenticação para receber notificações de agendas e reservas.
    notification_token Não 1 300 String “” Header associado ao token para receber notificações de agendas e reservas.
    allow_guest_login Não - - Boolean false Permite agendas de usuários não registrados.

    No caso dos campos notification_header_token e notification_token estes só devem ser preenchidos quando é configurado um url de notificação e o seu valor será automaticamente encriptado ao criar essa configuração.

    Ambiente de stage:

    curl --location --request POST 
    'https://api.mercadolibre.com/vis-transactions-hub/configurations/provider?scope=stage' \
    --header 'Authorization: Bearer {{ACCESS_TOKEN}} \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "seller_id": 123456789,
        "notification_url": "https://notification-url.com",
        "codebtor_required": false,
        "latest_dependent_worker_payrolls": 6,
        "latest_independent_worker_payrolls": 10,
        "email_notify_schedule": true,
        "salary_multiplier": 4,
        "notification_header_token": "Authorization", 
        "notification_token": "Bearer ANB7xKhiUZmwltVd3f1odcHHM9VAwg02kwmLwtZwHv3S",
        "allow_guest_login": true
    }'
    
    

    Ambiente de produção:

    curl --location --request POST 
    'https://api.mercadolibre.com/vis-transactions-hub/configurations/provider' \
    --header 'Authorization: Bearer {{ACCESS_TOKEN}} \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "seller_id": 123456789,
        "notification_url": "https://notification-url.com",
        "codebtor_required": false,
        "latest_dependent_worker_payrolls": 6,
        "latest_independent_worker_payrolls": 10,
        "email_notify_schedule": true,
        "salary_multiplier": 4,
        "notification_header_token": "Authorization", 
        "notification_token": "Bearer ANB7xKhiUZmwltVd3f1odcHHM9VAwg02kwmLwtZwHv3S",
        "allow_guest_login": true
    }'
    
    

    Atualização de configuração

    A seguir são detalhadas as validações aplicadas a cada atributo.


    Nota: Dado que é uma atualização parcial, todos os campos são opcionais e só se deve enviar os que for atualizar.

    Parâmetro Obrigatório Min Max Tipo
    notification_url Não 1 150 String
    codebtor_required Não - - Boolean, valores permitidos true ou false.
    latest_dependent_worker_payrolls Não 0 12 Integer
    latest_independent_worker_payrolls Não 0 24 Integer
    email_notify_schedule No - - Boolean, valores permitidos true ou false.
    salary_multiplier Não 0 10 Double
    allow_guest_login Não - - Boolean, valores permitidos true ou false.
    notification_header_token Não 1 50 String
    notification_token Não 1 300 String


    Ambiente de stage:

    curl --location --request PATCH 
    'https://api.mercadolibre.com/vis-transactions-hub/configurations/provider/{providerId}?scope=stage' \
    --header 'Authorization: Bearer {{ACCESS_TOKEN}} \
    --header 'Content-Type: application/json' \
    --data-raw ''{
        "notification_url": “https://notification-url.com”,
        "codebtor_required": false,
        "latest_dependent_worker_payrolls": 6,
        "latest_independent_worker_payrolls": 10,
        "email_notify_schedule": true,
        "salary_multiplier": 4,
        "notification_header_token": "Authorization", 
        "notification_token": "Bearer ANB7xKhiUZmwltVd3f1odcHHM9VAwg02kwmLwtZwHv3S",
        "allow_guest_login": true
    }'
    
    

    Ambiente de produção:

    curl --location --request PATCH 
    'https://api.mercadolibre.com/vis-transactions-hub/configurations/provider/{providerId}' \
    --header 'Authorization: Bearer {{ACCESS_TOKEN}} \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "notification_url": “https://notification-url.com”,
        "codebtor_required": false,
        "latest_dependent_worker_payrolls": 6,
        "latest_independent_worker_payrolls": 10,
        "email_notify_schedule": true,
        "salary_multiplier": 3,
        "notification_header_token": "Authorization", 
        "notification_token": "Bearer ANB7xKhiUZmwltVd3f1odcHHM9VAwg02kwmLwtZwHv3S",
        "allow_guest_login": true
    }'
    
    

    Descrição de atributos

    A seguir se detalham as validações em cada parâmetro para se obter a configuração:

    Variavel Tipo Descrição
    provider_id String Identificador único de provedor do seller.
    notification_url String URL para receber notificações de agendas.
    fantasy_name String Nombe fantasia associado ao usuario.
    codebtor_required Boolean Requisito de aval.
    latest_dependent_worker_payrolls Integer Quantidade das ultimas liquidações de saldo.
    latest_independent_worker_payrolls Integer Quantidade de boleto de honorários
    email_notify_schedule Boolean Notificação de agendas por e-mail ao partner.
    salary_multiplier Double Fator multiplicador de renda.
    notification_token String Token de autenticação para recebir notificações de agendas.
    notification_header_token String Header associado ao token para receber notificações de agendas.
    allow_guest_login Boolean Permite agendas de usuarios não logados.

    Através providerId

    Ambiente de stage:

    curl --location --request GET
    'https://api.mercadolibre.com/vis-transactions-hub/configurations/provider/{providerId}?scope=stage' \
    --header 'Authorization: Bearer {{ACCESS_TOKEN}}
    

    Nota: é importante fazer a chamada com o id de seller teste e inserir com o queryParam scope=stage.


    Ambiente de produção:

    curl --location --request GET
    'https://api.mercadolibre.com/vis-transactions-hub/configurations/provider/{providerId}' \
    --header 'Authorization: Bearer {{ACCESS_TOKEN}}
    

    Através sellerId

    Ambiente Stage:

    curl --location --request GET
    'https://api.mercadolibre.com/vis-transactions-hub/configurations/seller/{sellerId}?scope=stage' \
    --header 'Authorization: Bearer $ACCESS_TOKEN'
    

    Nota: é importante fazer a chamada com o id de seller teste e inserir com o queryParam scope=stage.

    Ambiente de produção:

    curl --location --request GET
    'https://api.mercadolibre.com/vis-transactions-hub/configurations/seller/{sellerId}' \
    --header 'Authorization: Bearer $ACCESS_TOKEN'
    

    Em ambos casos, mediante providerId y sellerId o JSON que será retornado será o seguinte:

    Resposta:

    {
        "provider_id": "123456789",
        "notification_url": "https://notification-url.com",
        "fantasy_name": "Test Company",
        "codebtor_required": false,
        "latest_dependent_worker_payrolls": 6,
        "latest_independent_worker_payrolls": 12,
        "email_notify_schedule": true,
        "salary_multiplier": 3,
        "notification_token": "gXt2x3qfL22UsqXLUY0egda32sffs2saj8UFyhw3Sw=="
        "notification_header_token": "ne/GHVXAv2x9YxzJbCKzMA==",
        "allow_guest_login": true
    }
    
    
    

    Seus respectivos dados são:

    Variável Tipo Descrição
    provider_id String Identificador único de provedor do seller
    notification_url String URL para receber notificações de agendas
    fantasy_name String Nome fantasia associado ao usuário
    codebtor_required Boolean Requisito de aval
    latest_dependent_worker_payrolls Integer Quantidade das ultimas liquidações de saldo
    latest_independent_worker_payrolls Integer Quantidade de recibos de honorários
    email_notify_schedule Boolean Notificação de agendas por e-mail para o partner
    salary_multiplier Double Fator multiplicador de renda
    notification_token String Token de autenticação para receber notificações de agendas
    notification_header_token String Header associado ao token para receber notificações de agendas
    allow_guest_login Boolean Permite agendas de usuários não logados


    Marcar e Desmarcar ítems

    Este endpointl é utilizado para marcar items que estão como arrendamento tradicional para serem convertidos em Solicitação de visita e vice-versa, esta ação dependerá do estado enviado.

    No caso de já ter tentado marcar ou desmarcar e por algum motivo o processo falhar, poderá executar este endpoint para tentar marcar novamente.


    No caso de stage e produção, os parâmetros para efetuar a chamada são os seguintes:

    Campo Descrição Exemplo
    seller_id ID do seller a que pertencem os itens. 12345678
    operator_id ID do operador dos itens.
    Por enquanto, este valor deve ser deixado como "null".
    status Estado do marcado e desmarcado dos artigos itens.
    - pending_approval - remove_approval
    O status deve ser enviado para marcar o item como uma Solicitação de visita
    - pending_approval.
    Para o caso de desmarcar e converter o item em Solicitação tradicional, deve ser enviado o seguinte:
    - remove_approval
    operation_reason Este é o motivo apresentado pelo operador do Mercado Livre para rejeitar os itens. Este campo deve estar sempre vazio (“”).
    item_ids Corresponde aos itens a marcar. Deve ser um array em que os ids devem estar todos juntos e separados por vírgulas (,). Ej: MLC123, MLC321
    Nota: Os itens que serão marcados devem pertencer ao "seller_id" especificado.



    Nota: é importante fazer a chamada com o id de seller teste e inserir com o queryParam scope=stage.


    Ambiente de stage:

    curl --location --request POST 
    'https://api.mercadolibre.com/vis-transactions-hub/{providerId}/entities/item-candidates?scope=stage' \
    --header 'Authorization: Bearer {{ACCESS_TOKEN}} \
    --header 'Content-Type: application/json' \
    --data-raw '{
       "seller_id": 123123123,
       "operator_id": null,
       "status": "pending_approval",
       "operation_reason": "",
       "item_ids": ["MLC123","MLC321"]
    }'
    

    Ambiente de producción:

    curl --location --request POST 
    'https://api.mercadolibre.com/vis-transactions-hub/{providerId}/entities/item-candidates' \
    --header 'Authorization: Bearer {{ACCESS_TOKEN}} \
    --header 'Content-Type: application/json' \
    --data-raw '{
       "seller_id": 123123123,
       "operator_id": null,
       "status": "pending_approval",
       "operation_reason": "",
       "item_ids": ["MLC123","MLC321"]
    }'
    

    E o JSON que sera retornado será o seguinte:

    [
        {
            "item_id": "MLC123",
            "seller_id": 12345678,
            "created_at": "2023-04-25T14:32:44.283691Z",
            "last_updated": "2023-04-25T14:32:44.283706Z",
            "status": "pending_approval",
            "retries": 1,
            "historical_events": [
                {
                    "operation_date": "2023-04-25T14:32:44.281935Z",
                    "new_status": "pending_approval"
                }
            ]
        },
        ...
    ]
    

    Obtenção de itens marcados por status

    No caso de stage e produção, os parâmetros para fazer a chamada são os seguintes:

    Parâmetro Descrição Exemplo
    sellerId ID do seller ao qual pertencem os itens. 12345678
    item_ids ID dos itens que se deseja buscar. Eles devem estar todos juntos e separados por vírgulas (,). Por exemplo: MLC123, MLC321
    status Estados em que os itens marcados estão localizados. Eles devem estar todos juntos e separados por vírgulas (,). Por exemplo:
    - approved
    - rejected.
    Os possíveis status dos itens são:
    - pending_approval
    - approved
    - rejected
    - remove_approval
    size Tamanho da quantidade de itens a serem obtidos. 100
    from Isso se refere à quantidade de registros que você deseja pular a partir do primeiro encontrado. Isso é usado para paginação. Por exemplo: se você inserir 10, isso significa que deseja pular os primeiros 10 itens.
    *field É o campo pelo qual você deseja ordenar os resultados. Você deve escolher um dos valores indicados a seguir:
    - item_id
    - created_at
    - last_updated
    *field_type Tipo de dado a ser ordenado. Você deve escolher um dos valores indicados a seguir:
    - text
    - date
    No caso em que “field” seja selecionado como “item_id” , o valor deste parâmetro deve ser “text”.
    Para “created_at” e “last_updated” o valor deve ser “date”.
    *order Tipo de ordenação dos dados. Você deve escolher um dos valores indicados a seguir:
    - asc
    - desc


    Caso deseje ordenar os resultados, é obrigatório preencher os parâmetros field, field_type y order, caso contrário, esses parâmetros devem ser omitidos..

    Ambiente de stage:

    curl --location --request GET 
    'https://api.mercadolibre.com/vis-transactions-hub/{providerId}/entities/item-candidates/seller/{sellerId}?scope=stage&item_ids={itemIds}&status={statusIds}&size={size}&from={from}&field={field}&field_type={field_type}&order={order}' \
    --header 'Authorization: Bearer {{ACCESS_TOKEN}}
    

    Nota: é importante fazer a chamada com o do seller de teste e inserir como queryParam scope=stage.

    Ambiente de produção:

    curl --location --request GET 
    'https://api.mercadolibre.com/vis-transactions-hub/{providerId}/entities/item-candidates/seller/{sellerId}?item_ids={itemIds}&status={statusIds}&size={size}&from={from}&field={field}&field_type={field_type}&order={order}' \
    --header 'Authorization: Bearer $ACCESS_TOKEN'
    

    E o JSON que será retornado será o seguinte:

    {
        "total": 5,
        "result": [
            {
                "item_id": "MLC321",
                "seller_id": 123123123,
                "created_at": "2023-02-20T18:09:32.313833Z",
                "last_updated": "2023-03-21T13:00:12.919943Z",
                "status": "approved",
                "retries": 4,
                "api_reason": "Error"
            },
           {
                "item_id": "MLC123",
                "seller_id": 123123123,
                "created_at": "2023-02-24T20:59:21.216387Z",
                "last_updated": "2023-04-12T16:54:56.21958Z",
                "status": "approved",
                "retries": 1,
                "operation_reason": "problema"
            },
    
            ...
        ]
    }
    

    Os respectivos tipos de variável são:

    Variável Tipo
    item_id String
    seller_d Long
    created_at String
    last_updated String
    status String
    retries Long
    operation_reason String


    APIs

    Notificação de estados de agenda

    Quando uma intenção de visita for feita pelo cliente (comprador) através do Portal Imobiliário ou do marketplace do MercadoLivre.cl, ou quando a agenda for atualizada para qualquer outro estado internamente, você será notificado mediante uma chamada a um endpoint (que deve ser exposto por cada partner).

    Este endpoint deve ter o sufixo: /scheduling, por exemplo:

    https://api.partner.cl/api/v1/ao/scheduling

    O body é o seguinte (método POST):

    {
      scheduling_id: 123456789,
      status: “schedule_created”
    }
    

    Onde o valor de scheduling_id corresponde ao ID da agenda e o valor de status corresponde ao estado que a agenda foi atualizada.

    Para o parâmetro status, você pode escolher entre os seguintes valores:

    Status Descrição
    schedule_created Agenda criada desde Portal Inmobiliario o marketplace de MercadoLibre.cl
    schedule_canceled Agenda criada a partir do Portal Imobiliário ou do marketplace do MercadoLibre.cl
    schedule_expired Agenda expirada de forma interna depois de 72 hs. úteis desde sua criação por falta de gestão.


    Visita

    Gerar agenda

    Para simular uma agenda a partir do portal do Mercado Livre no ambiente de teste (stage), deve ser feito através da seguinte URL:

    Ambiente de stage:

    https://www.mercadolibre.cl/agendar/visita-inmuebles/{itemId}?scope=stage
    

    É importante ressaltar que esta URL deve ser utilizada diretamente no navegador, substituindo o parâmetro {itemId} pelo correspondente à publicação. Além disso, tanto o usuário quanto a publicação devem ser de teste, portanto, dados produtivos não devem ser utilizados.

    O parâmetro para especificar a publicação sobre a qual criar a agenda é:

    {itemId}
    

    Que representa o ID da publicação, por exemplo: MLC916101223.


    Obtenção de detalhes da agenda


    Ambiente de stage:

    curl --location --request GET 
    'https://api.mercadolibre.com/vis-transactions-hub/{providerId}/entities/schedules/{scheduleId}?scope=stage' \
    --header 'Authorization: Bearer {{ACCESS_TOKEN}}
    

    Nota: é importante fazer a chamada com o id do seller de teste e inserir como queryParam scope=stage.


    Ambiente de produção:

    curl --location --request GET 
    'https://api.mercadolibre.com/vis-transactions-hub/{providerId}/entities/schedules/{scheduleId}' \
    --header 'Authorization: Bearer {{ACCESS_TOKEN}}
    

    Em ambos casos, o parâmetro para fazer a chamada é:

    {scheduleId}
    

    Que representa o ID da agenda a ser consultada.
    E o JSON que será retornado será o seguinte:

    {
      "id": 27002,
      "unit_name ":"1808-B",
      "user_id": 1006753330,
      "email": "useremail@email.cl",
      "name": "Test Test",
      "last_name": "",
      "item_id": "MLC916101223",
      "phone": "1111-1111",
      "scheduling_date": ["2022-03-30"],
      "scheduling_time_period": [{"from": "09:00:00","to": "12:00:00"}],
     }
    

    Seus respectivos tipos de dados são:

    Variável Tipo
    id Long
    unit_name String
    user_id Long
    email String
    name String
    last_name String
    itemId String
    phone1 String
    phone2 String
    scheduling_time List (string)
    scheduling_time_period List (string)


    Ambiente de stage:

    curl --location --request PUT 
    'https://api.mercadolibre.com/vis-transactions-hub/{providerId}/entities/schedules?scope=stage' \
    --header 'Authorization: Bearer {{ACCESS_TOKEN}}
    --header 'Content-Type: application/json' \
    --data-raw '{
       "scheduling_id": 12345,
       "status_code": 12345,
       "status_name": "string",
       "message": "string",
       "timestamp": "ISO 8601",
       "data": {}
    }'
    

    Ambiente de produção:

    curl --location --request PUT 
    'https://api.mercadolibre.com/vis-transactions-hub/{providerId}/entities/schedules' \
    --header 'Authorization: Bearer {{ACCESS_TOKEN}}
    --header 'Content-Type: application/json' \
    --data-raw '{
       "scheduling_id": 12345,
       "status_code": 12345,
       "status_name": "string",
       "message": "string",
       "timestamp": "ISO 8601",
       "data": {}
       }'
    

    Em ambos casos o body é o seguinte:

    {
      scheduling_id: "int",
      status_code: "int",
      status_name: "string",
      message: "string",  
      timestamp: "ISO 8601", // ej: 2011-10-05T14:48:00.000Z
      data: {OBJ_DATA} // se detalla más adelante
    }
    

    Atualização de status da agenda

    A seguir se detalha o domínio de variável data:

    Status_code Status_name Descrição Body
    2 scheduling_canceled Agenda cancelada { code: "string" reason: “string” }
    3 scheduling_modified Horário modificado { scheduling_date: date // "2022-03-30" scheduling_time: string // “12:00” }
    4 visit_success Visita bem-sucedida {}
    5 visit_fail Visita malsucedida { code: "string" reason: “string” }
    6 scheduling_confirmed Horário confirmado { scheduling_date: date scheduling_time: string }

    Scheduling_canceled

    O domínio da variável do Status_code: 2 (scheduling_canceled) é o seguinte:

    Code Reason Descrição
    1 buyer_cancelled Cancelada pelo comprador.
    2 buyer_out_of_reach Não é possível comunicar com o comprador.
    3 agent_cancelled Cancelada pelo agente.
    6 requirements_not_met Comprador não cumpre com os requisitos.
    7 buyer_not_need_rental Comprador não precisa do aluguel.
    8 requirement_rent_not_met Comprador não cumpre com o aluguel.
    9 requirement_dicom_not_met Comprador não cumpre com o DICOM.
    10 other_buyer_approved Propriedade tomada por outro locatário (aprovado).
    11 buyer_rent_another_property O comprador alugou outra propriedade.
    12 buyer_stop_answering Comprador parou de responder.
    13 buyer_not_show_up Comprador não compareceu.
    14 buyer_searching_for_later O comprador está buscando para mais tarde.
    15** property_not_available Propriedade não está disponível.
    16 buyer_cancel_visit Cancelada pelo comprador.
    17 agent_not_attend_visit Não se apresentou ao agente.
    18** property_not_available_from_life_cycle Propriedade não disponível devido ao ciclo de vida.
    19** property_not_available_from_pack_finished Propriedade não disponível devido ao pacote de publicações ter finalizado.
    20** property_not_available_from_seller_finished Propriedade não disponível porque o seller a finalizou.
    21** property_not_available_from_partner_finished Propriedade não disponível porque o integrador a finalizou.
    22** property_not_available_from_feedback_seller Propriedade não disponível devido ao feedback do seller indicando que não está disponível.
    23** property_not_available_from_feedback_buyer Propriedade não disponível devido ao feedback do comprador indicando que não está disponível.
    24** property_not_available_from_seller_penalty Propriedade não disponível devido à penalização ao seller.

    (**) Estes motivos são utilizados para indicar as agendas canceladas pelos seguintes motivos:

    1. Automático para agendas canceladas devido ao ciclo de vida do item.
    2. Automático devido ao término do pacote de destaques.
    3. Mecanismo de controle de disponibilidade executado pelo MercadoLivre ou após o término de uma publicação.
    4. seller que finalizou manualmente seu item e este possui agendas associadas.

    Cabe ressaltar que esses motivos são apenas para uso interno e, portanto, não devem ser usados diretamente nos pedidos.


    Como esses são motivos de cancelamento automáticos e internos, o estado do cancelamento será notificado conforme indicado na seção notificação de estados de agenda.


    Visit_fail

    O domínio da variável do Status_code: 5 (visit_fail) é o seguinte:

    Code Reason Descrição
    1 buyer_no_show O comprador não compareceu.
    2 agent_no_show O agente não compareceu.


    Agenda expirada (processo automático interno)

    O sistema possui um processo automático que expira todas as agendas que não foram gerenciadas e estão no estado de "agendas criadas". Esta ação ocorre após 72 horas úteis.


    As agendas criadas que expiram ficam com a seguinte condição:

    Code Reason Descrição
    1 seller_no_response A agenda expirou devido à falta de resposta do seller dentro do SLA (72 horas).

    Como esta é uma razão de forma automática e interna, o estado da expiração será notificado conforme indicado na seção notificação de estados de agenda.


    Unidades MultiFamily

    Edição de preço, aumento ou diminuição de unidades

    Este endpoint é usado para atualizar o preço das unidades, bem como aumentar ou diminuir o estoque das mesmas. O objetivo é garantir que as unidades não disponíveis não sejam exibidas na publicação, evitando a geração de novas agendas. Caso as unidades estejam disponíveis novamente, elas podem ser exibidas. Além disso, oferece a opção de atualizar o preço das unidades.


    O endpoint suporta a atualização de uma lista de unidades mediante o campo units em body:

    Ambiente de stage:

    curl --location --request PUT 
    'https://api.mercadolibre.com/vis-transactions-hub/{providerId}/entities/items?scope=stage' \
    --header 'Authorization: Bearer {{ACCESS_TOKEN}}
    --header 'Content-Type: application/json' \
    --data-raw '{
       "item_id": ML123,
       "status_code": 1,
       "status_name": "string",
       "message": "string",
       "timestamp": "ISO 8601",
       "data": {
            "units": [
                {
                    "unit_name": "string",
                    "price": 200000,
                    "operation": "string"
                },
                {
                    "unit_name": "string",
                    "price": 400000,
                    "operation": "string"
                }
            ]
        }
    }'  
    

    Nota: é importante fazer a chamada com o seller_id de teste e inserir como queryParam scope=stage.


    Ambiente de produção:

    curl --location --request PUT 
    'https://api.mercadolibre.com/vis-transactions-hub/{providerId}/entities/items' \
    --header 'Authorization: Bearer {{ACCESS_TOKEN}}
    --header 'Content-Type: application/json' \
    --data-raw '{
       "item_id": ML123,
       "status_code": 1,
       "status_name": "string",
       "message": "string",
       "timestamp": "ISO 8601",
       "data": {
            "units": [
                {
                    "unit_name": "string",
                    "price": 200000,
                    "operation": "string"
                },
                {
                    "unit_name": "string",
                    "price": 400000,
                    "operation": "string"
                }
            ]
        }
    }'
    

    Em ambos casos o body é o seguinte:

    {
      item_id: "int",
      status_code: "int",
      status_name: "string",
      message: "string",  
      timestamp: "ISO 8601", // ej: 2011-10-05T14:48:00.000Z
      data: {
        units: [
          {
            unit_name: "string",
            price: "int",
            operation:"string"
          }
        ]
      }
    }
    

    A seguir detalhamos os valores de status_code y status_name.

    Status_code Status_name
    1 update_units

    A seguir detalhamos o dominio do atributo operation:

    Operation Descrição
    price_updated Permite atualizar o preço da unidade.
    unit_added Permite aumentar a unidade.
    unit_removed Permite diminuir a unidade.

    Nota:
    Para o caso da operação unit_added se enviar o preço,este tambémirá se atualizar. Para o caso de remover unidades não se premite atualização no preço.