Notificaciones Push

Contenidos

Cuando suceda un evento para un contenedor o envío (ingreso a un centro logístico, retenido, dañado, etc.), 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/tracking/{id}/notifications \ --header 'x-access-token':{accessToken}

Los atributos del body se explican en la siguiente tabla:

NombreTipo de datoDescripciónTipo
codeStringCódigo del evento.Mandatorio
carrier_codeStringCódigo del evento interno del carrier.Mandatorio
typeStringTipo de contenedor de la novedad. Si se trata de un pallet, el valor debe ser "handling_unit", si es un envío individual el valor esperado es “shipment”Mandatorio
payloadNodeContiene información relevante a un evento en particular
payload.flight.numberStringNúmero de vuelo del contenedor.Mandatorio
payload.flight.awbStringNúmero de Air Waybill.Opcional
payload.flight.estimated_departure_timeDateFecha estimada/programada de despegue del vuelo.Mandatorio
payload.flight.estimated_arrival_timeDateFecha estimada/programada de aterrizaje del vuelo.Opcional
payload.flight.operatorStringNombre del operador que genera la novedad.Opcional
payload.flight.originStringAeropuerto origen de donde despega el vuelo, según denominacion IATA. Puede buscar la misma en el siguiente link oficialMandatorio
payload.flight.destinationStringAeropuerto destino de aterrizaje, según denominacion IATA. Puede buscar la misma en el siguiente link oficialMandatorio
payload.flight.pilotStringNombre y apellido del piloto.Opcional
payload.reprogrammed_flight.numberStringNúmero de vuelo reprogramado del contenedor.Mandatorio
payload.reprogrammed_flight.awbStringNúmero de Air Waybill.Opcional
payload.reprogrammed_flight.estimated_departure_timeDateFecha estimada/programada de despegue del vuelo reprogramado.Mandatorio
payload.reprogrammed_flight.estimated_arrival_timeDateFecha estimada/programada de aterrizaje del vuelo reprogramado.Opcional
payload.reprogrammed_flight.operatorStringNombre del operador que genera la novedad.Opcional
payload.reprogrammed_flight.originStringAeropuerto origen de donde despega el vuelo reprogramado, según denominacion IATA. Puede buscar la misma en el siguiente link oficialMandatorio
payload.reprogrammed_flight.destinationStringAeropuerto destino de aterrizaje del vuelo reprogramado, según denominacion IATA. Puede buscar la misma en el siguiente link oficialMandatorio
payload.reprogrammed_flight.pilotStringNombre y apellido del piloto.Opcional
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.commentStringComentario adicional al código de estado.Opcional
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.Opcional
payload.location.facilityStringIdentificador del Centro Logístico donde ocurrió el evento, según denominacion IATA. Puede buscar la misma en el siguiente link oficialMandatorio para notificaciones AP/AL
payload.location.geolocationNodeGeolocalización del lugar donde ocurrió el evento.Opcional
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.
Opcional
payload.location.geolocation.latitudeBigDecimalLatitud de la geolocalización.Opcional
payload.location.geolocation.longitudeBigDecimalLongitud de la geolocalización.Opcional
{
    "code": string,
    "carrier_code": string,
    "type": string,
    "payload": {
      "flight": {
        "number": string,
        "awb": string,
        "estimated_departure_time": date,
        "estimated_arrival_time": date,
        "operator": string,
        "origin": string,
        "destination": string,
        "pilot": string,
      },
      "reprogrammed_flight": {
        "number": string,
        "estimated_departure_time": date,
        "estimated_arrival_time": date,
        "operator": string,
        "origin": string,
        "destination": string,
        "pilot": string,
      },
      "date": date,
      "comment": string,
      "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
          }
      },
    }
}
Nota:
  • Enviar todos los datos de "location" disponibles.

Formato Response

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

Ejemplos

Request:

{
  "type": "handling_unit",
  "code": "AP-0401",
  "carrier_code": "123",
  "payload": {
      "flight": {
          "number": "456",
          "estimated_departure_time": "2021-01-27T16:12:28.397843Z",
          "origin": "GRU",
          "destination": "GIG"
      },
      "date": "2021-01-27T16:12:28.397843Z",
      "comment": "Entregado a aerolinea",
      "location": {
          "facility": "GRU",
          "state_name": "São Poulo",
          "city_name": "Guarulhos",
          "geolocation": {
              "geolocation_type": "ROOFTOP",
              "latitude": -23,5000,
              "longitude": -46,6166
          }
      }
  }
}

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": []
}