Skip to content

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

bash
{
    "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

CampoDescripciónTipoRequerido/Opcional
city_type_idID del tipo de ciudadStringRequerido
responsible_phoneTeléfono del responsable del envíoStringRequerido
source_instructionsInstrucciones para el punto de origenStringOpcional
package_descriptionDescripción del paqueteStringOpcional
destination_instructionsInstrucciones para el punto de destinoStringOpcional
responsible_last_nameApellido del responsableStringRequerido
responsible_first_nameNombre del responsableStringRequerido
fare_idID de la tarifa de cotizaciónStringRequerido
api_partner_shipment_detailsDetalles del envíoObjectRequerido

api_partner_shipment_details

CampoDescripciónTipoRequerido/Opcional
order_idOrder ID de tu sistemaStringRequerido
pod_pinPin de la ordenStringOpcional
shop.idId de una tienda en ML o FT (podría coincidir con el CRUD de tiendas y dirección asociada)StringRequerido
shop.nameNombre de la tiendaStringOpcional
shop.emailEmail de la tiendaStringOpcional
shop.phone_mobileTeléfono móvil de la tienda en ML o FTStringRequerido
shop.phone_fixedTeléfono fijo de la tienda en ML o FTStringOpcional
shop.url_shop_avatarURL del avatar de la tiendaString (URL)Opcional
client.usernameUsuario de ML o FT tipo myuser123StringOpcional
client.full_nameNombre completo del clienteStringRequerido
client.emailEmail del clienteStringOpcional
client.phone_mobileTeléfono móvil del clienteStringRequerido
client.phone_fixedTeléfono fijo del clienteStringOpcional
client.avatar_urlURL del avatar del clienteString (URL)Opcional
picker.usernameUsuario del pickerStringOpcional
picker.full_nameNombre completo del pickerStringOpcional
picker.emailEmail del pickerStringOpcional
picker.phone_mobileTeléfono móvil del pickerStringOpcional
picker.avatar_urlURL del avatar del pickerString (URL)Opcional
shipment_details.typeTipo de envío (Ej. Entrega a domicilio ML)StringRequerido
shipment_details.payment_typeTipo de cobroStringOpcional
shipment_details.payment_type_enumTipo de cobro enum 0, corporativo 1, posNúmero entre [0, 1]Opcional
shipment_details.cost_bsCosto en Bs (requerido si payment_type_enum es 1)Float 2 decimalesOpcional o Requerido(Ver Descripción)
shipment_details.rifRif (debe cumplir el siguiente regex: /^[A-Za-z][0-9]{4,}$/ )StringOpcional o Requerido(Ver Descripción)
shipment_details.weightPeso del envíoNúmeroOpcional
shipment_details.weight_unitUnidad de peso (Kg, mg, Toneladas, etc.)StringOpcional
shipment_details.costCosto del envíoNúmero (con 2 decimales)Requerido
shipment_details.currencySímbolo de la moneda (Ej. USD)String (2-3 caracteres)Requerido
shipment_details.origin_address_reference_pointPunto de referencia de la dirección de origenStringOpcional
product_array[].product_idSKU del productoStringRequerido
product_array[].image_urlImagen URL del productoString (URL)Opcional
product_array[].nameNombre del productoStringRequerido
product_array[].aislePasillo del productoStringOpcional
product_array[].quantityCantidad de productoNúmero entero positivoRequerido
product_array[].pricePrecio del producto (unitario)Número (con 2 decimales)Requerido
product_array[].currencySímbolo de la moneda (Ej. USD)String (2-3 caracteres)Requerido
internal_ridery_user_idID de usuario interno de RideryString (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

json
{
  "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:

CampoDescripciónTipoRequerido/Opcional
shipment_details.payment_type_enumTipo de cobro enum 0, corporativo 1, posNúmero entre [0, 1]Opcional
shipment_details.cost_bsCosto en Bs (requerido si payment_type_enum es 1)Float 2 decimalesOpcional o Requerido(Ver Descripción)
shipment_details.rifRif (debe cumplir el siguiente regex: /^[A-Za-z][0-9]{4,}$/ )StringOpcional 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"
    }

Hecho con ❤️ en Venezuela