Crear
Descripción General
Esten permite la creación de un viaje corporativo para el envío de paquetes a través de Ridery. Los datos incluyen información sobre el tipo de ciudad, direcciones, detalles del responsable, la tarifa y detalles del envío.
Endpoint
URL: baseURL/V2/corporate-api-partner/create-trip
Método: POST
Solicitud
Cuerpo de la Solicitud
{
"city_type_id": "62bf1af16b60baf9ac4c27e3",
"responsible_phone": "4242225889",
"source_instructions": "pedir a la cajera",
"package_description": "Pedido 53",
"destination_instructions": "Esperar que bajen",
"responsible_last_name": "Perez",
"responsible_first_name": "Juan",
"fare_id": "667b1fcf7cf4074d53a9d7c7",
"api_partner_shipment_details": {
"order_id": "ORD123456",
"pod_pin": "1234"
"shop": {
"id": "SHOP987",
"name": "MiTiendita123",
"email": "[email protected]",
"phone_mobile": "123-456-7890",
"phone_fixed": "098-765-4321",
"location": [
"Tienda1",
"Tienda2"
]
},
"client": {
"username": "myuser123",
"full_name": "John Doe",
"email": "[email protected]",
"phone_mobile": "4242225889",
"phone_fixed": "2129458730"
"avatar_url": "https://www.picture.com/123"
},
"picker": {
"username": "myuser123",
"full_name": "John Doe",
"email": "[email protected]",
"phone_mobile": "4242225889",
"avatar_url": "https://www.picture.com/123"
},
"shipment_details": {
"type": "delivery_ridery",
"payment_type": "pago_movil",
"weight": 2.5,
"weight_unit": "kg",
"cost": 15.99,
"currency": "USD",
"origin_address_reference_point": "Al lado de la plaza"
},
"product_array": [
{
"product_id": "SKU12345",
"image_url": "http://example.com/image1.jpg",
"name": "Cri Cri",
"aisle": "Chucherías",
"quantity": 2,
"price": 10.50,
"currency": "USD"
},
{
"product_id": "SKU67890",
"image_url": "http://example.com/image2.jpg",
"name": "Ibuprofeno 2",
"aisle": "Medicinas",
"quantity": 1,
"price": 20.00,
"currency": "USD"
}
]
}
}
Descripción de los Campos
Campo | Descripción | Tipo | Requerido/Opcional |
---|---|---|---|
city_type_id | ID del tipo de ciudad | String | Requerido |
responsible_phone | Teléfono del responsable del envío | String | Requerido |
source_instructions | Instrucciones para el punto de origen | String | Opcional |
package_description | Descripción del paquete | String | Opcional |
destination_instructions | Instrucciones para el punto de destino | String | Opcional |
responsible_last_name | Apellido del responsable | String | Requerido |
responsible_first_name | Nombre del responsable | String | Requerido |
fare_id | ID de la tarifa de cotización | String | Requerido |
api_partner_shipment_details | Detalles del envío | Object | Requerido |
api_partner_shipment_details
Campo | Descripción | Tipo | Requerido/Opcional |
---|---|---|---|
order_id | Order ID de tu sistema | String | Requerido |
pod_pin | Pin de la orden | String | Opcional |
shop.id | Id de una tienda en ML o FT (podría coincidir con el CRUD de tiendas y dirección asociada) | String | Requerido |
shop.name | Nombre de la tienda | String | Opcional |
shop.email | Email de la tienda | String | Opcional |
shop.phone_mobile | Teléfono móvil de la tienda en ML o FT | String | Requerido |
shop.phone_fixed | Teléfono fijo de la tienda en ML o FT | String | Opcional |
shop.url_shop_avatar | URL del avatar de la tienda | String (URL) | Opcional |
client.username | Usuario de ML o FT tipo myuser123 | String | Opcional |
client.full_name | Nombre completo del cliente | String | Requerido |
client.email | Email del cliente | String | Opcional |
client.phone_mobile | Teléfono móvil del cliente | String | Requerido |
client.phone_fixed | Teléfono fijo del cliente | String | Opcional |
client.avatar_url | URL del avatar del cliente | String (URL) | Opcional |
picker.username | Usuario del picker | String | Opcional |
picker.full_name | Nombre completo del picker | String | Opcional |
picker.email | Email del picker | String | Opcional |
picker.phone_mobile | Teléfono móvil del picker | String | Opcional |
picker.avatar_url | URL del avatar del picker | String (URL) | Opcional |
shipment_details.type | Tipo de envío (Ej. Entrega a domicilio ML) | String | Requerido |
shipment_details.payment_type | Tipo de cobro | String | Opcional |
shipment_details.weight | Peso del envío | Número | Opcional |
shipment_details.weight_unit | Unidad de peso (Kg, mg, Toneladas, etc.) | String | Opcional |
shipment_details.cost | Costo del envío | Número (con 2 decimales) | Requerido |
shipment_details.currency | Símbolo de la moneda (Ej. USD) | String (2-3 caracteres) | Requerido |
shipment_details.origin_address_reference_point | Punto de referencia de la dirección de origen | String | Opcional |
product_array[].product_id | SKU del producto | String | Requerido |
product_array[].image_url | Imagen URL del producto | String (URL) | Opcional |
product_array[].name | Nombre del producto | String | Requerido |
product_array[].aisle | Pasillo del producto | String | Opcional |
product_array[].quantity | Cantidad de producto | Número entero positivo | Requerido |
product_array[].price | Precio del producto (unitario) | Número (con 2 decimales) | Requerido |
product_array[].currency | Símbolo de la moneda (Ej. USD) | String (2-3 caracteres) | Requerido |
internal_ridery_user_id | ID de usuario interno de Ridery | String (ObjectId) | Opcional |
Esta documentación detalla cómo estructurar los datos para enviar una solicitud POST a la API para crear un viaje corporativo en Ridery, asegurando que todos los campos requeridos estén presentes y correctamente formateados.
Respuesta
Cuando se realiza la solicitud correctamente, el servidor responde con un objeto JSON que incluye un identificador único de viaje (trip_id
).
Ejemplo de Respuesta Exitosa
{
"success": true,
"code": "00",
"msg": "ok",
"data": {
"trip_id": "67055b9b33d6cee3dea627b7"
}
}
Reintento
En caso de recibir un error de tipo 4xx o 5xx por parte del API Partner, es posible realizar un reintento de la solicitud.
Los errores 4xx generalmente indican un problema con los datos enviados, como errores de validación o autenticación. Se recomienda revisar el cuerpo de la solicitud antes de reintentar.
- Puedes tener un error tipo 400 especificando que no ha habido conductor disponible
- Ejemplo de respuesta de este escenario:
- Status: 400
- json
{ "success": false, "error_code": 406, "error_description": "No provider found around you" }
Los errores 5xx indican un problema en el servidor del API Partner, por lo que es recomendable esperar unos segundos antes de realizar el reintento, permitiendo al servidor recuperarse.
En ambos casos, se sugiere implementar una política de reintentos con un límite de intentos y un tiempo de espera entre reintentos para evitar sobrecargar el servidor o caer en bucles de fallos.