Notificaciones Pull

Contenidos

El servicio del correo debe proporcionar un endpoint HTTP REST para que podamos obtener los eventos de los envíos.

Importante:
  • Recomendamos que la cantidad de envíos consultados sea como mínimo 50.
  • Para seguridad en pull tracking se utilizará OAuth 2.0.

Formato Request

Se enviará un mensaje con la siguiente estructura:

POST /tracking
NombreTipo de datoDescripciónTipo
idLongIdentificador único del envío usado por Mercado Libre.Mandatorio
tracking_numberStringIdentificador el envío.Mandatorio
[
  {
    "id": long,
    "tracking_number": string
  },
  {
    "id": long,
    "tracking_number": string
  }
]

Formato Request OAuth

Para el mecanismo de autenticación a través de la generación de un token con OAuth, se debe agregar el siguiente encabezado a la petición:

--request POST 'https://hostname/tracking'
--header 'Authorization: Bearer + TOKEN'
--body 'Se mantiene lo descrito en cada integración'

Formato Response

Respuesta Satisfactoria

Los atributos del body se explican en la siguiente tabla:

NombreTipo de datoDescripciónTipo
idLongIdentificador único del envío usado por Mercado Libre.Mandatorio
tracking_numberStringIdentificador el envío.Mandatorio
eventsArrayArray de eventos históricos asociados al envío. En caso de no hayan eventos se debe devolver una lista vacía.Mandatorio
codeStringCódigo del evento.Mandatorio
carrier_codeStringCódigo del evento interno del carrier.Mandatorio
payloadNodeContiene información relevante a un evento en particular
payload.dateDate (ISO8601)Fecha de ocurrencia del evento. Valores válidos: en UTC 2001-07-04T12:08:56.235Z o en hora local relativa 2001-07-04T12:08:56.235-07:00.Mandatorio
payload.reasonStringIndica el motivo específico asociado al código informado, proporcionando información adicional predefinida que explica la ocurrencia del evento. Posibles valores de 'reason' para el código 0114:
  • establishment_not_found
  • waiting_time_exceeded
  • establishments_closed
  • load_capacity_exceeded
  • address_unsafe
  • already_picked_up
  • delivery_cancelled
  • delivery_not_found
  • payment_requested
  • other_pickup_problems
Posibles valores de 'reason' para el código CBT-0272:
  • oversize
  • overweight
  • overprice
  • prohibited_item
  • other
Mandatorio para el código 0114 (Proximity) o CBT-0272 (Consolidación)
payload.commentStringComentario adicional al código de estado.Opcional
payload.flight.awbStringNúmero de Air WaybillOpcional
payload.declaration_numberStringNúmero del pedimento/documento aduaneroMandatório para código CBT-0283
payload.agency_idString Código de identificación de la agencia o sucursal.Mandatorio para códigos 0201 y 0215
payload.agency.phone_numberString Número de teléfono de la agencia o sucursal donde se puede retirar el paquete. El formato debe ser un número de hasta quince dígitos que comience con "+". [+][código de país][número del suscriptor incluido el código de área]. Ejemplo: +541142345678Disponible solo para la novedad CBT-0215 de CBT
payload.costBigDecimalCosto de envío del ítem.Mandatorio para código 0260 y 0265.
payload.locationNodeContiene información relevante a la localización donde ocurrió el evento.Opcional
payload.location.zip_codeStringZipcode donde ocurrió el evento.Opcional
payload.location.state_nameStringNombre del estado/provincia donde ocurrió el evento.Opcional
payload.location.city_nameStringNombre de la ciudad donde ocurrió el evento.Opcional
payload.location.neighborhood_nameStringNombre del barrio donde ocurrió el evento.Opcional
payload.location.country_idStringIdentificador de país donde ocurrió el evento. Debe enviarse el campo "id" del siguiente recurso.Mandatorio para códigos con prefijo "CBT"
payload.location.facilityStringIdentificador del Centro Logístico donde ocurrió el evento.Mandatorio para códigos 0271 y 0273
payload.location.geolocationNodeGeolocalización del lugar donde ocurrió el evento.Mandatorio para códigos 0227, 0271 y 0273
payload.location.geolocation.geolocation_typeStringPrecisión de la geolocalización brindanda. Puede contener alguno de los siguientes valores:
  • APPROXIMATE: geolocalización aproximada.
  • GEOMETRIC_CENTER: se ubica el centro de una región que se usa de referencia.
  • RANGE_INTERPOLATED: restringe la precisión al punto medio de 2 puntos de referencia cercanos.
  • ROOFTOP: Indica que la ubicación es exacta.
  • UNKNOWN: Indica que la ubicación no fue validada.
payload.location.geolocation.latitudeBigDecimalLatitud de la geolocalización.
payload.location.geolocation.longitudeBigDecimalLongitud de la geolocalización.
payload.dimensionsNode
payload.dimensions.heightBigDecimal En centímetros.Opcional
payload.dimensions.widthBigDecimalEn centímetros.Opcional
payload.dimensions.lengthBigDecimalEn centímetros.Opcional
payload.dimensions.weightBigDecimalPeso bruto en gramos.Mandatorio para código 0260
payload.redispatchNodeOpcional
payload.redispatch.tracking_numberStringIdentificador del envío del carrier de redespacho.Opcional
payload.redispatch.carrier_idBigDecimalIdentificador del carrier de redespacho definido por Mercado Libre.Opcional
payload.redispatch.tracking_urlStringURL de seguimiento web del carrier de redespacho.Opcional
payload.estimated_delivery_dateDate (ISO8601)Fecha estimada de entrega del envío. Valores válidos: en UTC 2001-07-04T12:08:56.235Z o en hora local relativa 2001-07-04T12:08:56.235-07:00.Mandatorio para código 0265.
payload.estimated_pickup_dateStringFecha estimada de recoleccion del envío. Valores válidos: en UTC 2001-07-04T12:08:56.235Z o en hora local relativa 2001-07-04T12:08:56.235-07:00.Mandatorio para código 0265 y 0133.
payload.proof_of_deliveryNodeOpcional
payload.proof_of_delivery.receiver_documentNodeOpcional
payload.proof_of_delivery.receiver_document.typeStringTipo de documento de identidad de la persona que recibe el paquete. Puede contener algunos de los siguientes valores:
  • CI: Cédula de Identificación.
  • PASSPORT: Pasaporte.
  • CPF: Registro de Persona Física.
  • RG: Registro General.
  • CURP: Clave Única de Registro de Población.
  • INE_IFE: Instituto Nacional Electoral.
  • LICENCIA: Licencia de conducir.
  • RFC: Registro Federal de Contribuyentes.
  • RUT: Rol Único Tributario.
  • CC: Cédula de ciudadanía.
  • DNI: Documento Nacional de Identidad.
Mandatorio
payload.proof_of_delivery.receiver_document.numberStringNúmero de documento de identidad de la persona que recibe el paquete.Mandatorio
payload.proof_of_delivery.receiver_last_nameStringApellido de la persona que recibe el paquete.Opcional
payload.proof_of_delivery.receiver_nameStringNombre de la persona que recibe el paquete.Opcional
payload.proof_of_delivery.receiver_relationshipStringQuien recibió el paquete. Puede contener algunos de los siguientes valores:
  • BUYER
  • FAMILY
  • NEIGHBOUR
  • DOORMAN
  • RECEPTION
  • FRIEND
  • HOLDER
  • OTHER
Opcional
payload.proof_of_delivery.imageStringImagen con la firma del receptor que contenga el nombre completo y número de documento. La imagen debe enviarse codificada en Base64.Opcional
payload.driverNodeInformación del repartidor del providerOpcional
payload.driver.idStringId del repartidor en el registro del carrierMandatorio para código 0133
payload.driver.nameStringNombre del repartidorMandatorio para código 0133
payload.driver.emailStringCorreo electrónico del repartidorOpcional
payload.driver.phoneStringNúmero de teléfono del repartidor. El formato debe ser un número de hasta quince dígitos que comience con "+". [+][código de país][número del suscriptor incluido el código de área]. Ejemplo: +541142345678Opcional
payload.driver.license_plateStringIdentificación del vehículo de entregaOpcional
payload.vehicleStringInformación del repartidor del providerOpcional
payload.vehicle.reference_typeStringTipo de información relativa al vehículo, que puede ser:
  • ID: id del repartidor en el registro del carrier
  • LICENSE_PLATE: identificación del vehículo de entrega
Opcional
payload.vehicle.referenceStringInformación sobre el campo payload.vehicle.reference_typeOpcional
payload.consolidated_packagesNodeNodo que contiene información sobre la consolidación.Mandatorio para el código CBT-0272
payload.consolidated_packages.consolidation_idStringIdentificación enviada en el flujo de consolidación.Mandatorio para el código CBT-0272
payload.consolidated_packages.tracking_numberStringNúmero de seguimiento asignado a la consolidación.Mandatorio para el código CBT-0272
payload.consolidated_packages.shipmentsListaLista de IDs de envíos incluidos en la consolidación.Mandatorio para el código CBT-0272
[
    {
        "id": "long",
        "tracking_number": "string",
        "events": [
            {
                "code": "string",
                "carrier_code": "string",
                "payload": {
                    "date": "date",
                    "reason": "string",
                    "comment": "string",
                    "flight": {
                        "awb": "string"
                    },
                    "declaration_number": "string",
                    "agency_id": "string",
                    "agency": {
                        "phone_number": "string"
                    },
                    "cost": "bigdecimal",
                    "location": {
                        "zip_code": "string",
                        "state_name": "string",
                        "city_name": "string",
                        "neighborhood_name": "string",
                        "country_id": "string",
                        "facility": "string",
                        "geolocation": {
                            "geolocation_type": "string",
                            "latitude": "bigdecimal",
                            "longitude": "bigdecimal"
                        }
                    },
                    "dimensions": {
                        "height": "bigdecimal",
                        "width": "bigdecimal",
                        "length": "bigdecimal",
                        "weight": "bigdecimal"
                    },
                    "redispatch": {
                        "tracking_number": "string",
                        "carrier_id": "bigdecimal",
                        "tracking_url": "string"
                    },
                    "estimated_delivery_date": "date",
                    "proof_of_delivery": {
                        "receiver_document": {
                            "type": "string",
                            "number": "string"
                        },
                        "receiver_last_name": "string",
                        "receiver_name": "string",
                        "receiver_relationship": "string",
                        "image": "string"
                    },
                    "driver": {
                        "id": "string",
                        "name": "string",
                        "email": "string",
                        "phone": "string",
                        "license_plate": "string"
                    },
                    "vehicle": {
                        "reference_type": "string",
                        "reference": "string"
                    },
                    "consolidated_packages": {
                        "consolidation_id": "string",
                        "tracking_number": "string",
                        "shipments": [
                            "integer",
                            "integer",
                            "integer"
                        ]
                    }
                }
            }
        ]
    }
]
Nota:
  • Los códigos de estado esperados son los provistos por Mercado Envíos y se encuentran especificados en el apartado "Flujo de Novedades de Tracking".
  • En caso de no haber eventos para un envío, o no tener registrado el tracking number de su lado, el nodo “events” estará vacío.
  • Enviar todos los datos de "location" disponibles. Sin embargo el dato más valioso para Mercado Libre, en cuanto a localización del evento, es el nodo "geolocation".

Respuesta con Error

NombreTipo de datoDescripción
statusIntegerCódigo de error. Coincide con el http status code.
messageStringCualquier detalle relevante al estado. Mandatorio en caso de fallo.
errorStringhttp status error message en snake_case.
causeArrayListado de errores.

Status Codes

StatusDescripciónAcción
200Cuando la solicitud fue procesada satisfactoriamenteEl envío ya fue cancelado y no se volverá a reintentar.
400Cuando la solicitud no pudo ser procesada por un error en el request.Dependiendo de la naturaleza del error, se intentarán corregir los datos, antes de volver a procesar la solicitud. No debería existir reintento periódico.
500Cualquier error del lado del servidor.Se volverá a intentar indefinidamente hasta obtener una respuesta satisfactoria.

Ejemplos

Request:

POST https://hostName/tracking
[
  {
    "id": 26379079680,
    "tracking_number": 1234NLUG123
  }
]

Response:

Ok (200 OK)

[
{
  "id": 26379079680,
  "tracking_number": "1234NLUG123",
  "events":[{
             "code": "0260",
             "carrier_code": "a31",
             "payload": {
                         "date": "2021-07-30T00:00:00-04:00",
                         "comment": "Actualización de peso",
                         "agency_id": "1234",
                         "cost" : 67.77,
                         "location": {
                            "geolocation": {
                                "geolocation_type": "ROOFTOP",
                                "latitude": -32.96234,
                                "longitude": -60.64053
                            }
                         },
                         "dimensions":{
                                  "height": 33.3,
                                  "width" : 20.0,
                                  "length" : 10.0,
                                  "weight" : 600
                         }
                        }
            }
          ]
}
]

Error (500 ERROR)

{
  "message": "DB is not available",
  "error": "server_error",
  "status": 500,
  "cause": [
  ]
}