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.payment_type_enum | Tipo de cobro enum 0, corporativo 1, pos | Número entre [0, 1] | Opcional |
shipment_details.cost_bs | Costo en Bs (requerido si payment_type_enum es 1) | Float 2 decimales | Opcional o Requerido(Ver Descripción) |
shipment_details.rif | Rif (debe cumplir el siguiente regex: /^[A-Za-z][0-9]{4,}$/ ) | String | Opcional o Requerido(Ver Descripción) |
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 de Ridery al crear un envío, 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" "data": { "trip_id": "6717c9b5dfb33ecc948b9059" // Id del viaje cancelado porque no hay conductores cercanos al origen } }
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.
POS
Ridery puede hacer cobro a destino de la mercancía enviada mediante POS, para la misma es necesario enviar en la llave shipment_details en conjunto con los datos previos lo siguiente:
Campo | Descripción | Tipo | Requerido/Opcional |
---|---|---|---|
shipment_details.payment_type_enum | Tipo de cobro enum 0, corporativo 1, pos | Número entre [0, 1] | Opcional |
shipment_details.cost_bs | Costo en Bs (requerido si payment_type_enum es 1) | Float 2 decimales | Opcional o Requerido(Ver Descripción) |
shipment_details.rif | Rif (debe cumplir el siguiente regex: /^[A-Za-z][0-9]{4,}$/ ) | String | Opcional o Requerido(Ver Descripción) |
Caso POS desactivado
En caso de que Ridery tenga desactivada la opción de POS, se enviará un error 400 con la siguiente respuesta en el body
- json
{ "success": false, "error_code": 4103, "error_description": "Not active pos" }