Colecta

Contenidos

Cuando un vendedor solicita que recojan sus paquetes, el servicio del correo deberá contar con un endpoint de colecta donde Mercado Libre hará una solicitud POST.

Sin importar si la respuesta es satisfactoria o no, se espera que el servicio del correo devuelva un resultado de la solicitud de colecta de acuerdo a lo detallado en la sección Status Codes. En caso de error, se volverá a intentar la comunicación acorde al esquema de reintento definido en la integración.

Importante:
Para seguridad en colecta se utilizará OAuth 2.0

Formato Request

POST service_url/book_pickup/booking_id

booking_id es el valor que utiliza Mercado Libre internamente como identificador de colecta. Representa un varchar con un máximo de 80 caracteres.

NombreTipo de datoDescripciónTipo
carrier_idLongId del carrier sobre el que vamos a autorizar el envío.Mandatorio
site_idStringIdentificador del país sobre el que se va a realizar la autorización del envío. La lista de valores posibles se puede consultar en la API de Sites (https://api.mercadolibre.com/sites) y el detalle en la API de detalle del Site (https://api.mercadolibre.com/sites/xxx).Mandatorio
timeframe.fromDateTime (ISO_8601)Fecha y horario de inicio de recolección. Formato: ISO 8601 para Fecha (yyyy-MM-dd) y Hora (hh:mm:ss.s) Valores válidos: en UTC (2001-07-04T12:08:56.235Z) u Hora Local Relativa (2001-07-04T12:08:56.235-07:00)Mandatorio
timeframe.toDateTime (ISO_8601)Fecha y horario de fin de recolección. Formato: ISO 8601 para Fecha (yyyy-MM-dd) y Hora (hh:mm:ss.s) Valores válidos: en UTC (2001-07-04T12:08:56.235Z) u Hora Local Relativa (2001-07-04T12:08:56.235-07:00)Mandatorio
carrier_informationNodoContiene elementos relevantes para el carrier.
carrier_information.contractStringIdentifica el contrato/servicio definido por el carrier con el cual se va a autorizar el envío. Por ejemplo envío a domicilio desde el XD, envío a sucursal de DS, etc.Mandatorio
carrier_information.accountStringIdentifica la cuenta dada por el carrier a Mercadolibre.Mandatorio
shipment_informationNodoContiene toda la información que se considera relevante para la recolección del envío. Contact, package, items, etc. Las medidas son en centímetros y los pesos en gramos.
shipment_information.contact.full_nameStringNombre completo o Razón Social del contactoMandatorio
shipment_information.contact.first_nameStringOpcional
shipment_information.contact.last_nameStringOpcional
shipment_information.contact.phone.numberStringSolo númerosMandatorio
shipment_information.contact.phone.extensionStringSolo númerosOpcional
shipment_information.contact.phone.area_codeStringSolo númerosOpcional
shipment_information.contact.address.street_nameStringMandatorio
shipment_information.contact.address.street_numberStringMandatorio
shipment_information.contact.address.address_lineStringSe conforma por los campos street_name y street_numberMandatorio
shipment_information.contact.address.commentStringOpcional
shipment_information.contact.address.zip_codeStringMandatorio (Opcional para Colombia y Uruguay)
shipment_information.contact.address.neighborhoodNodeOpcional
shipment_information.contact.address.municipalityNodeOpcional
shipment_information.contact.address.cityNodeMandatorio
shipment_information.contact.address.stateNodeMandatorio
shipment_information.contact.address.countryNodeMandatorio
shipment_information.contact.address.geolocationNodeTiene la localización de la dirección. La precisión está dada por geolocation_type, que puede ser alguno de los valores siguientes:
  • 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.
testBooleanIndica que la request enviada es para pruebas
{
                  "carrier_id": 50401,
                  "site_id": "MLA",
                  "timeframe": {
                    "from": "2016-11-16T08:00:00.000-04:00",
                    "to": "2016-11-16T12:00:00.000-04:00"
                  },
                  "carrier_information": {
                    "contract": "000123ABC87",
                    "client_id": "432765637",
                    "account": "A432765637",
                    "password": "pa$word"
                  },
                  "shipment_information": {
                    "packages": [
                      {
                        "shipment_id": 123141251235,
                        "tracking_number": "1234NLUG123",
                        "dimensions": {
                          "height": 8,
                          "length": 25,
                          "width": 11,
                          "weight": 450
                        }
                      },
                      {
                        "shipment_id": 3288374823041,
                        "tracking_number": "NKNL12312lNM",
                        "dimensions": {
                          "height": 6,
                          "length": 12,
                          "width": 30,
                          "weight": 1000
                        }
                      }
                    ],
                    "contact": {
                      "email": "segundo@mercadolibre.com.ar",
                      "first_name": "John",
                      "last_name": "Doe",
                      "full_name": "John Doe",
                      "phone": {
                        "area_code": "11",
                        "extension": "",
                        "number": "9012345678"
                      },
                      "address": {
                        "street_name": "Calle Falsa",
                        "street_number": "1500",
                        "address_line": "Calle Falsa 1500",
                        "geolocation": {
                          "geolocation_type": "ROOFTOP",
                          "latitude": 123.123144,
                          "longitude": -12.898738
                        }
                        "zip_code": "39560000",
                        "city": {
                          "id": "CBA",
                          "name": "Cordoba"
                        },
                        "comment": "null",
                        "country": {
                          "id": "AR",
                          "name": "Argentina"
                        },
                        "municipality": {
                          "id": "null",
                          "name": "null"
                        },
                        "neighborhood": {
                          "id": "null",
                          "name": "Ciudad Empresaria"
                        },
                        "state": {
                          "id": "CBA",
                          "name": "Cordoba"
                        }
                      }
                    }
                  }
                }
Nota:
El modelo de datos es el mismo a autorizaciones.

Formato Response

Dentro del body, el sistema devolverá todos los datos resultantes de la cancelación, listados a continuación:

NombreTipo de datoDescripciónTipo
statusStringEstado del pedido de colecta:
  • BOOKED
  • FAILED
  • ERROR
Mandatorio
status_messageStringCualquier detalle relevante del estado.Mandatorio en caso de fallo
confirmation_codeStringAlfanumérico. Código de confirmación para la solicitud de colecta.

Status Codes

StatusCódigo HTTPDescripciónAcción
BOOKED200Cuando la solicitud fue procesada satisfactoriamente
FAILED400Cuando la solicitud de colecta no pudo ser procesada por un error en el request. Se espera que se retorne “status”: “FAILED” junto con el “status_message” describiendo el motivo del error.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.
ERROR500Cualquier error del lado del servidor. En este caso, status y status_message son opcionales.Se volverá a intentar indefinidamente hasta obtener una respuesta satisfactoria de acuerdo al esquema de reintento definido.

Ejemplos

Request:

POST https://carrierA/book_pickup/MzM3OTczMTM5fDIwMTgtMDctMjZ8MTc1MDA1NDA
{
                  'carrier_id': 12345,
                  'site_id': 'MLM',
                  'timeframe': {
                    'from': '2018-07-26T15:00:00-05:00',
                    'to': '2018-07-26T18:00:00-05:00'
                  },
                  'carrier_information': {
                    'contract': '1234567',
                    'password': '2h3j4jsj28wi',
                    'client_id': 'xxxxxxx'
                  },
                  'shipment_information': {
                    'packages': [
                      {
                        'shipment_id': 27655092054,
                        'tracking_number': 'ASDfgh123esd',
                        'dimensions': {
                          'height': 10.0,
                          'width': 10.0,
                          'length': 15.0,
                          'weight': 500.0
                        }
                      },
                      {
                        'shipment_id': 27655083639,
                        'tracking_number': ASDfgh123adf,
                        'dimensions': {
                          'height': 10.0,
                          'width': 10.0,
                          'length': 15.0,
                          'weight': 500.0
                        }
                      }
                    ],
                    'contact': {
                      'nickname': 'TESTMUK7QXY0',
                      'first_name': 'Test',
                      'last_name': 'Test',
                      'email': 'test.test@correo.com',
                      'phone': {
                        'area_code': '01',
                        'number': '01',
                        'extension': '01'
                      },
                      'address': {
                        'address_line': 'Testing Street 1450',
                        'street_name': 'Testing Street',
                        'street_number': '1450',
                        'comment': 'Referencia: The Testing Cavern',
                        'zip_code': '45200',
                        'city': {
                          'id': 'TUxNQ1pBUDM4NzE',
                          'name': 'Zapopan'
                        },
                        'state': {
                          'id': 'MX-JAL',
                          'name': 'Jalisco'
                        },
                        'country': {
                          'id': 'MX',
                          'name': 'Mexico'
                        },
                        'neighborhood': {
                          'id': '',
                          'name': 'The Neighborhood'
                        },
                        'municipality': {
                          'id': '',
                          'name': 'N/A'
                        },
                        'geolocation': {
                          'geolocation_type': 'APPROXIMATE',
                          'latitude': 20.6719563,
                          'longitude': -103.416501
                        }
                      },
                      'full_name': 'Test Test'
                    }
                  },
                  'test': true
                }

Response:

Booked (200 OK)

{
                  "status":"BOOKED",
                  "status_message":"",
                  "confirmation_code": "AD198312OK"
                }

Failed (400 FAILED)

{
                  "status":"FAILED",
                  "status_message":"Invalid pickup up date"
                }

Error (500 ERROR)

{
                  "status":"ERROR",
                  "status_message":"Internal error occurred"
                }