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.
Formato Request
POST service_url/book_pickup/booking_idbooking_id es el valor que utiliza Mercado Libre internamente como identificador de colecta. Representa un varchar con un máximo de 80 caracteres.
| Nombre | Tipo de dato | Descripción | Tipo |
|---|---|---|---|
| carrier_id | Long | Id del carrier sobre el que vamos a autorizar el envío. | Mandatorio |
| site_id | String | Identificador 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.from | DateTime (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.to | DateTime (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_information | Nodo | Contiene elementos relevantes para el carrier. | |
| carrier_information.contract | String | Identifica 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.account | String | Identifica la cuenta dada por el carrier a Mercadolibre. | Mandatorio |
| shipment_information | Nodo | Contiene 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_name | String | Nombre completo o Razón Social del contacto | Mandatorio |
| shipment_information.contact.first_name | String | Opcional | |
| shipment_information.contact.last_name | String | Opcional | |
| shipment_information.contact.phone.number | String | Solo números | Mandatorio |
| shipment_information.contact.phone.extension | String | Solo números | Opcional |
| shipment_information.contact.phone.area_code | String | Solo números | Opcional |
| shipment_information.contact.address.street_name | String | Mandatorio | |
| shipment_information.contact.address.street_number | String | Mandatorio | |
| shipment_information.contact.address.address_line | String | Se conforma por los campos street_name y street_number | Mandatorio |
| shipment_information.contact.address.comment | String | Opcional | |
| shipment_information.contact.address.zip_code | String | Mandatorio (Opcional para Colombia y Uruguay) | |
| shipment_information.contact.address.neighborhood | Node | Opcional | |
| shipment_information.contact.address.municipality | Node | Opcional | |
| shipment_information.contact.address.city | Node | Mandatorio | |
| shipment_information.contact.address.state | Node | Mandatorio | |
| shipment_information.contact.address.country | Node | Mandatorio | |
| shipment_information.contact.address.geolocation | Node | Tiene la localización de la dirección. La precisión está dada por geolocation_type, que puede ser alguno de los valores siguientes:
| |
| test | Boolean | Indica 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"
}
}
}
}
}Formato Response
Dentro del body, el sistema devolverá todos los datos resultantes de la cancelación, listados a continuación:
| Nombre | Tipo de dato | Descripción | Tipo |
|---|---|---|---|
| status | String | Estado del pedido de colecta:
| Mandatorio |
| status_message | String | Cualquier detalle relevante del estado. | Mandatorio en caso de fallo |
| confirmation_code | String | Alfanumérico. Código de confirmación para la solicitud de colecta. |
Status Codes
| Status | Código HTTP | Descripción | Acción |
|---|---|---|---|
| BOOKED | 200 | Cuando la solicitud fue procesada satisfactoriamente | |
| FAILED | 400 | Cuando 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. |
| ERROR | 500 | Cualquier 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"
}