Notificaciones Push

Contenidos

Cuando un envío tenga un cambio de estado (llegada a la sucursal de destino, intento fallido de entrega), el servicio del correo deberá informar mediante una notificación push.

Importante:
  • Para seguridad se utilizará OAuth

Formato Request

Se enviará un mensaje con la siguiente estructura:

POST 'https://api.mercadolibre.com/shipments/{shipmentId}/notifications' \ --header 'Authorization: Bearer {accessToken}'

Los atributos del body se explican en la siguiente tabla:

NombreTipo de datoDescripciónTipo
tracking_numberStringIdentificador el envío.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_idStringCódigo de identificación de la agencia o sucursal.Mandatorio para códigos 0201 y 0215.
payload.agency.phone_numberStringNú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.
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.
Mandatorio para códigos 0227, 0271 y 0273
payload.location.geolocation.latitudeBigDecimalLatitud de la geolocalización.Mandatorio para códigos 0227, 0271 y 0273
payload.location.geolocation.longitudeBigDecimalLongitud de la geolocalización.Mandatorio para códigos 0227, 0271 y 0273
payload.dimensionsNode
payload.dimensions.heightBigDecimalEn 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_dateDate (ISO8601)Fecha estimada de recolección 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ódigos 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
payload.details.transport.content.restricted_item_typeStringSe utiliza para identificar el tipo de productos especiales en el paquete. Los valores validos son: CREAM, LIQUID, POWDER, BATTERYMandatorio para el código CBT-0270
{
  "tracking_number": string,
  "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,
        "country_id": string,
        "state_name": string,
        "city_name": string,
        "neighborhood_name": 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]
     },
     "details": {
      "transport": {
        "content": {
          "restricted_item_type": string
        }
      }
    }
  }
}
Nota:
  • 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".

Formato Response

Si la notificación fue recibida correctamente, el POST devuelve status OK.

Ejemplos

Request:

{
  "tracking_number": "1234NLUG123",
  "code": "0201",
  "carrier_code": "a31",
  "payload": {
    "date": "2016-11-16T17:00:00.000-04:00",
    "comment": "Envío despachado"
  }
}

Response:

Satisfactioria

{
    "status": OK
}

Errores

Si ocurre algún error, la API devuelve HTTP status distinto de OK (200) . Si el código de error HTTP es del tipo 4XX no se debe reintentar (ya que hay algún problema con el request). Si por el contrario, es 5XX, se debe reintentar utilizando algún mecanismo de backoff con al menos tres reintentos.

Failed (400 FAILED)

{
  "message": "User must have a valid scope",
  "error": "invalid_scopes",
  "status": 403,
  "cause": null,
  "internal_cause": [ ]
}

Error (500 ERROR)

{
  "message": "Internal error server",
  "error": "internal_error_server",
  "status": 500,
  "cause": null,
  "internal_cause": [ ]
}