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 26/04/2024

Experiencia para inmuebles

Desde Mercado Libre queremos generar una nueva experiencia de Solicitud de visita con foco en asegurar la disponibilidad de los inmuebles, y garantizar la respuesta a dudas y solicitudes de agenda en tiempo y forma.


Esta guía tiene como objetivo describir y ejemplificar cómo Mercado Libre se conecta con los partners que hoy están dentro del modelo de solicitud de visita, el customer journey y en qué etapa participa cada uno de los actores involucrados dentro del mismo.


Objetivos

  • Describir brevemente el customer journey de solicitud de visita.
  • Describir cada uno de los webhooks y cuales son los dominios de variable que acepta.
  • Entregar lineamientos técnicos de cómo integrarse con nuestro sistema para poder hacer uso de la actualizacion en tiempo real y APIs.
  • Importante:
    Este recurso está disponible para inmuebles con foco en MLC.

    Consideraciones

    Actualmente, tenemos dos ambientes disponibles para integración:

    • Ambiente de producción: este es el ambiente utilizado para acceder a la versión en producción de nuestro sistema
    • Ambiente de stage: este es nuestro ambiente de preproducción, reservado para pruebas y desarrollo. Para acceder a él, es necesario agregar el parámetro ?scope=stage a la URL principal. Por ejemplo: URL/?scope=stage.

    Por favor, utilice este ambiente para pruebas y desarrollo antes de implementar cualquier cambio en el ambiente de producción.


    Pasos para iniciar la integración

    1. La cuenta del seller profesional debe estar registrada.
    2. Registrar la aplicación para la obtención del token.
    3. Autenticación como seller o integrador según corresponda.
    4. Generar configuración del seller.
    5. Publicar ítems en la plataforma.
    6. Marcar ítems como Solicitud de visita.
    7. Obtener detalles de la agenda para verificar el flujo.

    Actualizaciones en Tiempo Real

    Estas actualizaciones en tiempo real son utilizadas por el partner para obtener más información sobre la intención de visita. Al mismo tiempo, también nos permiten proporcionar más información sobre el estado de la intención de visita generada por el buyer.


    Es importante que el seller haya configurado en su sistema todos los endpoints de nuestra API y realice las llamadas siempre que desee cambiar el estado de una agenda. Tan pronto como un buyer programe una visita, la información se envía al seller, quien podrá comenzar a realizar las llamadas a nuestra API para cambiar el estado.


    Configuraciones

    Las configuraciones son necesarias para operar en los flujos de visita y adicionalmente informar acerca de las condiciones de arriendo de cada seller sobre sus propiedades, esta información se visualiza en cada publicación y dentro del flujo de visita.

    Importante:
    Las configuraciones se hacen una sola vez y se aplican en todas las publicaciones, a excepción del atributo salary_multiplier que puede ser por cada publicación.

    Crear configuración

    A continuación se detallan las validaciones aplicadas en cada parámetro para una nueva configuración:

    Parámetro Requerido Min Max Tipo Por defecto Descripción
    seller_id 1 - Long - Identificador único de proveedor o seller.
    notification_url No 0 150 String “” URL para recibir notificaciones de agendas.
    codebtor_required No - - Boolean, valores permitidos true o false. true Requisito de aval.
    latest_dependent_worker_payrolls No 0 12 Integer 3 Cantidad de últimas liquidaciones de sueldo.
    latest_independent_worker_payrolls No 0 24 Integer 6 Cantidad de boletas de honorarios.
    email_notify_schedule No - - Boolean, valores permitidos true o false. true Notificación de agendas por correo al partner.
    salary_multiplier No 1 10 Double 3 Factor multiplicador de renta.
    notification_header_token No 1 50 String “” Token de autenticación para recibir notificaciones de agendas.
    notification_token No 1 300 String “” Header asociado al token para recibir notificaciones de agendas.
    allow_guest_login No - - Boolean false Permite agendas de usuarios no logueados.

    Para el caso de los campos notification_header_token y notification_token solo deben ser completados cuando se tiene configurada una url de notificación y su valor será encriptado automáticamente al crear dicha configuración.


    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 producción:

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

    Actualizar configuración

    A continuación se detallan las validaciones aplicadas en cada atributo.


    Nota: dado que es una actualización parcial, todos los campos son opcionales y sólo se deben enviar los que se quieran actualizar.

    Parámetro Requerido Min Max Tipo
    notification_url No 1 150 String
    codebtor_required No - - Boolean, valores permitidos true o false.
    latest_dependent_worker_payrolls No 0 12 Integer
    latest_independent_worker_payrolls No 0 24 Integer
    email_notify_schedule No - - Boolean, valores permitidos true o false.
    salary_multiplier No 1 10 Double
    allow_guest_login No - - Boolean, valores permitidos true o false.
    notification_header_token No 1 50 String
    notification_token No 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 producción:

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

    Descripción de atributos

    A continuación se detallan las validaciones en cada parámetro para obtener una configuración:

    Variable Tipo Descripción
    provider_id String Identificador único de proveedor o seller.
    notification_url String URL para recibir notificaciones de agendas.
    fantasy_name String Nombre de fantasía asociado al usuario.
    codebtor_required Boolean Requisito de aval.
    latest_dependent_worker_payrolls Integer Cantidad de últimas liquidaciones de sueldo.
    latest_independent_worker_payrolls Integer Cantidad de boletas de honorarios.
    email_notify_schedule Boolean Notificación de agendas por correo al partner.
    salary_multiplier Double Factor multiplicador de renta.
    notification_token String Token de autenticación para recibir notificaciones de agendas.
    notification_header_token String Header asociado al token para recibir notificaciones de agendas.
    allow_guest_login Boolean Permite agendas de usuarios no logueados.

    Mediante 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: es importante hacer el llamado con el id de seller de prueba y añadir como queryParam scope=stage.


    Ambiente de producción:

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

    Mediante sellerId

    Ambiente de stage:

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

    Nota: es importante hacer el llamado con el id de seller de prueba y añadir como queryParam scope=stage.


    Ambiente de producción:

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

    En ambos casos, mediante providerId y sellerId el JSON retornado será el siguiente::

    Respuesta:

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

    Sus respectivos tipos de datos son:

    Variable Tipo Descripción
    provider_id String Identificador único de proveedor o seller.
    notification_url String URL para recibir notificaciones de agendas
    fantasy_name String Nombre de fantasía asociado al usuario
    codebtor_required Boolean Requisito de aval
    latest_dependent_worker_payrolls Integer Cantidad de últimas liquidaciones de sueldo
    latest_independent_worker_payrolls Integer Cantidad de boletas de honorarios
    email_notify_schedule Boolean Notificación de agendas por correo al partner
    salary_multiplier Double Factor multiplicador de renta
    notification_token String Token de autenticación para recibir notificaciones de agendas
    notification_header_token String Header asociado al token para recibir notificaciones de agendas
    allow_guest_login Boolean Permite agendas de usuarios no logueados


    Marcado y Desmarcado de ítems

    Este endpoint se utiliza para marcar ítems que están como arriendo tradicional para que sean convertidos a Solicitud de visita y viceversa esta acción dependerá del status enviado.

    En caso de que ya se intentara marcar o desmarcar y por algún motivo el proceso falle, se puede ejecutar este endpoint para intentar marcarlo nuevamente.


    En el caso de stage y producción, los parámetros para hacer la llamada son los siguientes:

    Campo Descripción Ejemplo
    seller_id ID del seller al cual pertenecen los ítems. 12345678
    status Estado para el marcado y desmarcado de ítems.
    Debe enviarse el status para marcar ítem como Solicitud de visita:
    - pending_approval.
    Para el caso del desmarcado y convertir el ítem arriendo tradicional debe enviarse:
    -remove_approval
    operation_reason Es la razón que coloca el operador de Mercado Libre para rechazar los ítems. Este campo siempre debe estar vacío (“”).
    item_ids Corresponde a los ítems que van a ser marcados. Debe ser un arreglo donde los ids deben estar todos juntos y separados por comas (,). Ej: MLC123, MLC321
    Nota: los ítems que se vayan a marcar, deben pertenecer al “seller_id” que se haya colocado.



    Nota: es importante hacer el llamado con el id de seller de prueba y añadir como 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"]
    }'
    

    Y el JSON que será retornado será el siguiente:

    [
        {
            "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"
                }
            ]
        },
        ...
    ]
    

    Obtención ítems marcados por status

    En el caso de stage y producción, los parámetros para hacer la llamada son los siguientes:

    Parámetro Descripción Ejemplo
    sellerId ID del seller el cual pertenecen los ítems. 12345678
    item_ids ID de los ítems que se desean buscar. Deben estar todos juntos y separados por comas (,).ej: MLC123, MLC321
    status Estados en los que se encuentran los ítems marcados. Deben estar todos juntos y separados por comas (,) ej:
    - approved
    - rejected.
    Los posibles status de los ítems son:
    - pending_approval
    - approved
    - rejected
    - remove_approval
    size Tamaño de la cantidad de ítems a obtener. 100
    from Es la cantidad de registros que quiere saltarse a contar del primero encontrado, esto es para la paginación. ej: si coloco 10, esto es para saltar los 10 primeros ítems.
    *field Es el campo por el cual se desea hacer el ordenamiento. Se debe escoger alguno de los valores que se indican a continuación:
    - item_id
    - created_at
    - last_updated
    *field_type Tipo del dato a ordenar. Se debe escoger alguno de los valores que se indican a continuación:
    - text
    - date
    En caso de que en “field” se seleccione “item_id” el valor de este parámetro debe ser “text”.
    Para “created_at” y “last_updated” el valor debe ser “date”.
    *order Tipo de ordenamiento de los datos. Se debe escoger alguno de los valores que se indican a continuación:
    - asc
    - desc


    En caso de que se quieran ordenar los resultados, es obligatorio enviar los parámetros field, field_type y order, en caso contrario se deben omitir dichos parámetros.

    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: es importante hacer el llamado con el id de seller de prueba y añadir como queryParam scope=stage.


    Ambiente de producción:

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

    Y el JSON que será retornado será el siguiente:

    {
        "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"
            },
            ...
        ]
    }
    

    Sus respectivos tipos de variable son:

    Variable Tipo
    item_id String
    seller_id Long
    created_at String
    last_updated String
    status String
    retries Long
    operation_reason String


    APIs

    Notificación de estados de agenda

    Cuando desde el Portal Inmobiliario o el marketplace de Mercadolibre.cl, se realice una intención de visita por parte del cliente (buyer) o cuando se actualice una agenda a cualquier otro estado de forma interna, se les notificará por medio de un llamado a un endpoint (el cual debe ser expuesto por cada partner).

    Este endpoint debe tener como sufijo: /scheduling, por ejemplo:

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

    El body es el siguiente (método POST):

    {
      scheduling_id: 123456789,
      status: “schedule_created”
    }
    

    Donde el valor de scheduling_id corresponde al ID de la agenda y el valor de status corresponde al estado que se actualizó una agenda.

    Para el parámetro status puede tomar los siguientes valores:

    Status Descripción
    schedule_created Agenda creada desde Portal Inmobiliario o marketplace de MercadoLibre.cl
    schedule_canceled Agenda cancelada de forma interna por publicación finalizada.
    schedule_expired Agenda expirada de forma interna después de 72 hs. hábiles desde su creación por no gestión.


    Visita

    Generar Agenda

    Para simular una agenda desde el portal de Mercado Libre en Stage debe hacerse mediante la siguiente url:

    Ambiente de stage:

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

    Es importante resaltar que esta url se debe utilizar directamente en el buscador reemplazando el parámetro {itemId} por el correspondiente a la publicación y por otro lado tanto el usuario como la publicación deben ser de prueba por lo cual no se deben utilizar datos productivos.

    El parámetro para especificar la publicación sobre la cual crear la agenda es:

    {itemId}
    

    El cual representa el ID de la publicación, ejemplo: MLC916101223.


    Obtención detalle de 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: es importante hacer el llamado con el id de seller de prueba y añadir como queryParam scope=stage.


    Ambiente de producción:

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

    En ambos casos, el parámetro para hacer la llamada es:

    {scheduleId}
    

    El cual representa el ID de la agenda a consultar.
    Y el JSON retornado será el siguiente::

    {
      "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"}],
     }
    

    Sus respectivos tipos de datos son:

    Variable Tipo
    id Long
    unit_name String
    user_id Long
    email String
    name String
    last_name String
    item_id 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 producción:

    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": {}
       }'
    

    En ambos casos el body es el siguiente:

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

    Actualización status agenda

    A continuación se detallan el dominio de variable data:

    Status_code Status_name Descripción Body
    2 scheduling_canceled Agenda cancelada { code: "string" reason: “string” }
    3 scheduling_modified Horario modificado { scheduling_date: date // "2022-03-30" scheduling_time: string // “12:00” }
    4 visit_success Visita exitosa {}
    5 visit_fail Visita fallida { code: "string" reason: “string” }
    6 scheduling_confirmed Horario confirmado { scheduling_date: date scheduling_time: string }

    Scheduling_canceled

    El dominio de variable del Status_code: 2 (scheduling_canceled) es el siguiente:

    Code Reason Descripción
    1 buyer_cancelled Cancelada por el buyer.
    2 buyer_out_of_reach No se puede comunicar con el buyer.
    3 agent_cancelled Cancelada por el agente.
    6 requirements_not_met buyer no cumple requisitos.
    7 buyer_not_need_rental El buyer no necesita la propiedad.
    8 requirement_rent_not_met buyer no cumple con renta.
    9 requirement_dicom_not_met buyer no cumple con DICOM (Departamento de Investigación y Crédito y Mercado de Capitales).
    10 other_buyer_approved Propiedad tomada por otro arrendatario (aprobado).
    11 buyer_rent_another_property Buyer arrendó otra propiedad.
    12 buyer_stop_answering buyer dejó de responder.
    13 buyer_not_show_up buyer no se presentó.
    14 buyer_searching_for_later buyer busca para más adelante.
    15** property_not_available Propiedad no está disponible.
    16 buyer_cancel_visit Cancelada por el buyer.
    17 agent_not_attend_visit No se presentó el agente.
    18** property_not_available_from_life_cycle Propiedad no disponible por ciclo de vidas.
    19** property_not_available_from_pack_finished Propiedad no disponible por paquete de publicaciones finalizado.
    20** property_not_available_from_seller_finished Propiedad no disponible porque el seller la finalizó.
    21** property_not_available_from_partner_finished Propiedad no disponible porque integrador la finalizó.
    22** property_not_available_from_feedback_seller Propiedad no disponible por feedback del seller indicando que no está disponible.
    23** property_not_available_from_feedback_buyer Propiedad no disponible por feedback del seller indicando que no está disponible.
    24** property_not_available_from_seller_penalty Propiedad no disponible por penalización al seller.

    (**) Estas razones se utiliza para señalar aquellas agendas que fueron canceladas por los siguientes motivos:

    1. Automática para las agendas que son canceladas por ciclo de vida del ítem.
    2. Automática por finalización del paquete de destaque.
    3. Mecanismo de control de disponibilidad ejecutado por MercadoLibre o tras finalizar una publicación.
    4. Seller que finaliza manualmente su ítem y este posee agendas asociadas.

    Cabe destacar que estas razones son solo de uso interno, por lo que no deberían usarse directamente en los requests.


    Como estas son razones de forma automática e interna, se estará notificando el estado de la cancelación tal como indica en la sección notificación de estados de agenda.


    Visit_fail

    El dominio de variable del Status_code: 5 (visit_fail) es el siguiente:

    Code Reason Descripción
    1 buyer_no_show No se presentó el buyer.
    2 agent_no_show No se presentó el agente.


    Agenda expirada (proceso automático interno)

    El sistema cuenta con un proceso automático que se encarga de expirar todas las agendas que no han sido gestionadas y se encuentran en el estado de “agendas creadas”, esta acción se ejecuta después de 72 horas hábiles.


    Las agendas creadas que son expiradas quedan con la siguiente condición:

    Code Reason Descripción
    1 seller_no_response Expiró la agenda por no respuesta del seller dentro del SLA (72hs).

    Como esta es una razón de forma automática e interna, se estará notificando el estado de la expiración tal como indica en la sección Notificación de notificación de estados de agenda.


    Unidades MultiFamily

    Edición de precio, aumento o disminución de unidades

    Este endpoint se utiliza para actualizar el precio de las unidades así como también aumentar o disminuir el stock de las mismas. Con el objetivo de que no se muestren unidades en la publicación que no están disponible y por ende no se vayan generando nuevos agendamientos, en el caso de estar nuevamente disponible se puedan mostrar. Adicionalmente ofrece la opción de actualizar el precio de las unidades.


    El endpoint soporta la actualización de una lista de unidades mediante su campo units en el 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: es importante hacer el llamado con el id de seller de prueba y añadir como queryParam scope=stage.


    Ambiente de producción:

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

    En ambos casos el body es el siguiente:

    {
      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 continuación se detalla los valores de status_code y status_name.

    Status_code Status_name
    1 update_units

    A continuación se detalla el dominio del atributo operation:

    Operation Descripción
    price_updated Permite actualizar el precio de la unidad.
    unit_added Permite aumentar la unidad.
    unit_removed Permite disminuir la unidad.

    Nota:
    para el caso de la operación unit_added sí se envía el precio este también se actualiza. Para el caso de remover unidades no se permite la actualización del precio.