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.
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:
| Nombre | Tipo de dato | Descripción | Tipo |
|---|---|---|---|
| tracking_number | String | Identificador el envío. | Mandatorio |
| code | String | Código del evento. | Mandatorio |
| carrier_code | String | Código del evento interno del carrier. | Mandatorio |
| payload | Node | Contiene información relevante a un evento en particular | |
| payload.date | Date (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.reason | String | Indica 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:
| Mandatorio para el código 0114 (Proximity) o CBT-0272 (Consolidación) |
| payload.comment | String | Comentario adicional al código de estado. | Opcional |
| payload.flight.awb | String | Número de Air Waybill | Opcional |
| payload.declaration_number | String | Número del pedimento/documento aduanero | Mandatório para código CBT-0283 |
| payload.agency_id | String | Código de identificación de la agencia o sucursal. | Mandatorio para códigos 0201 y 0215. |
| payload.agency.phone_number | String | 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: +541142345678 | Disponible solo para la novedad CBT-0215 de CBT |
| payload.cost | BigDecimal | Costo de envío del ítem. | Mandatorio para código 0260 y 0265. |
| payload.location | Node | Contiene información relevante a la localización donde ocurrió el evento. | |
| payload.location.zip_code | String | Zipcode donde ocurrió el evento. | Opcional |
| payload.location.state_name | String | Nombre del estado/provincia donde ocurrió el evento. | Opcional |
| payload.location.city_name | String | Nombre de la ciudad donde ocurrió el evento. | Opcional |
| payload.location.neighborhood_name | String | Nombre del barrio donde ocurrió el evento. | Opcional |
| payload.location.country_id | String | Identificador de país donde ocurrió el evento. Debe enviarse el campo "id" del siguiente recurso. | Mandatorio para códigos con prefijo "CBT" |
| payload.location.facility | String | Identificador del Centro Logístico donde ocurrió el evento. | Mandatorio para códigos 0271 y 0273 |
| payload.location.geolocation | Node | Geolocalización del lugar donde ocurrió el evento. | Mandatorio para códigos 0227, 0271 y 0273 |
| payload.location.geolocation.geolocation_type | String | Precisión de la geolocalización brindanda. Puede contener alguno de los siguientes valores:
| Mandatorio para códigos 0227, 0271 y 0273 |
| payload.location.geolocation.latitude | BigDecimal | Latitud de la geolocalización. | Mandatorio para códigos 0227, 0271 y 0273 |
| payload.location.geolocation.longitude | BigDecimal | Longitud de la geolocalización. | Mandatorio para códigos 0227, 0271 y 0273 |
| payload.dimensions | Node | ||
| payload.dimensions.height | BigDecimal | En centímetros. | Opcional |
| payload.dimensions.width | BigDecimal | En centímetros. | Opcional |
| payload.dimensions.length | BigDecimal | En centímetros. | Opcional |
| payload.dimensions.weight | BigDecimal | Peso bruto en gramos. | Mandatorio para código 0260 |
| payload.redispatch | Node | Opcional | |
| payload.redispatch.tracking_number | String | Identificador del envío del carrier de redespacho. | Opcional |
| payload.redispatch.carrier_id | BigDecimal | Identificador del carrier de redespacho definido por Mercado Libre. | Opcional |
| payload.redispatch.tracking_url | String | URL de seguimiento web del carrier de redespacho. | Opcional |
| payload.estimated_delivery_date | Date (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_date | Date (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_delivery | Node | Opcional | |
| payload.proof_of_delivery.receiver_document | Node | Opcional | |
| payload.proof_of_delivery.receiver_document.type | String | Tipo de documento de identidad de la persona que recibe el paquete. Puede contener algunos de los siguientes valores:
| Mandatorio |
| payload.proof_of_delivery.receiver_document.number | String | Número de documento de identidad de la persona que recibe el paquete. | Mandatorio |
| payload.proof_of_delivery.receiver_last_name | String | Apellido de la persona que recibe el paquete. | Opcional |
| payload.proof_of_delivery.receiver_name | String | Nombre de la persona que recibe el paquete. | Opcional |
| payload.proof_of_delivery.receiver_relationship | String | Quien recibió el paquete. Puede contener algunos de los siguientes valores:
| Opcional |
| payload.proof_of_delivery.image | String | Imagen con la firma del receptor que contenga el nombre completo y número de documento. La imagen debe enviarse codificada en Base64. | Opcional |
| payload.driver | Node | Información del repartidor del provider | Opcional |
| payload.driver.id | String | Id del repartidor en el registro del carrier | Mandatorio para código 0133 |
| payload.driver.name | String | Nombre del repartidor | Mandatorio para código 0133 |
| payload.driver.email | String | Correo electrónico del repartidor | Opcional |
| payload.driver.phone | String | Nú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: +541142345678 | Opcional |
| payload.driver.license_plate | String | Identificación del vehículo de entrega | Opcional |
| payload.vehicle | String | Información del repartidor del provider | Opcional |
| payload.vehicle.reference_type | String | Tipo de información relativa al vehículo, que puede ser:
| Opcional |
| payload.vehicle.reference | String | Información sobre el campo payload.vehicle.reference_type | Opcional |
| payload.consolidated_packages | Node | Nodo que contiene información sobre la consolidación. | Mandatorio para el código CBT-0272 |
| payload.consolidated_packages.consolidation_id | String | Identificación enviada en el flujo de consolidación. | Mandatorio para el código CBT-0272 |
| payload.consolidated_packages.tracking_number | String | Número de seguimiento asignado a la consolidación. | Mandatorio para el código CBT-0272 |
| payload.consolidated_packages.shipments | Lista | Lista de IDs de envíos incluidos en la consolidación. | Mandatorio para el código CBT-0272 |
| payload.details.transport.content.restricted_item_type | String | Se utiliza para identificar el tipo de productos especiales en el paquete. Los valores validos son: CREAM, LIQUID, POWDER, BATTERY | Mandatorio 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
}
}
}
}
}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": [ ]
}