Cotizar una devolución

El endpoint de cotización de una devolución nos permite obtener los precios y opciones para realizar la misma.

En cada cotización, se deberá indicar la cuenta, valor declarado del envío y detalle de paquetes e items que se devolverán.

El Request

Al hacer el request hay algunas particularidades con respecto a la definición de los paquetes e items que los componen que serán devueltos.

Particularidades en la definición de paquetes a devolver

En caso de no indicar el array de  packages con los paquetes que contendrá la devolución. El sistema interpreta que se devolverán todos los paquetes del envío con todos sus items definidos. Si el array de paquetes esta definido solo se cotizará la devolución de los paquetes que contenga dicho array.

Particularidades en la definición de items a devolver

Para cada paquete que se indique en el array de paquetes se deberá indicar que items se devolverán. En caso de no indicar el array de  items con los items que contendrán los paquetes de la devolución. El sistema interpreta que se devolverán todos los items del paquete indicado. Si el array de items esta definido dentro de un paquete solo se cotizará la devolución de los items que contenga dicho array.


POST /shipments/{id}/return/quote
Parámetros para la URL:
id int ID de un envío
sort_by string Opcional. Para indicar el ordenamiento de los resultados. Opciones:
price Ordena por menor a mayor precio
rating Ordena por mejor a peor nivel de servicio
time Ordena por menor a mayor tiempo de entrega
Parámetros para el body:
account_id int ID de la cuenta
declared_value decimal Valor declarado del envío Ej: 200.50
packages Opcional. Array de Packages (objetos). Para especificar los paquetes a devolver del envío.
ID int Identificador de un paquete.
items Opcional. Array de Items (objetos). Para especificar los items a devolver de un paquete.
ID int Identificador de un item de un paquete.


El response

En el response nos encontraremos dos bloques:

El primer array, results, contiene un resultado ganador de cotización por cada tipo de servicio. El mismo será el resultado ganador de la cotización dependiendo de la configuración de la cuenta o el parámetro opcional sort_by. La clave del array será el código de cada tipo de servicio, y en el detalle estará la información del transporte ganador.

En el segundo array, all_results, se proveen todos los resultados de transportes posibles. También se puede modificar el orden de estos resultados con el parámetro sort_by en el query string.


Response (estructura de cada resultado)
selectable bool Si el resultado es seleccionable o no.
impediments null o array Posibles limitaciones para crear el envio cuando selectable sea false.
logistic_type string Forma de despacho del resultado de cotizacion. Se deberáindicar en la creación del envío.
carrier
id int ID del transporte. Se deberá indicar en la creación del envío.
name string Nombre del transporte
rating decimal Puntaje del nivel de servicio del transporte. 0%-100%
logo string URL del logo del transporte
amounts
price decimal Precio sin IVA
price_incl_tax decimal Precio con IVA
delivery_time
min int Tiempo de entrega mínimo, en días hábiles
max int Tiempo de entrega máximo, en días hábiles
service_type
id int ID del tipo de servicio
code string Código del tipo de servicio. Se deberá indicar en la creación del envío.
name string Nombre del servicio
is_urgent bool Si el servicio es urgente o no.
pickup_points (atributos por cada item del array)
point_id string ID del pickup point. Deberas guardarlo para enviarlo a la hora de crear el envío.
description string Nombre del punto
open_hours string Horarios de apertura
phone string Telefono del punto.
location object Datos del punto

Ejemplo cotización de una devolución:

POST https://api.zippin.com.ar/v2/shipments/123456/return/quote

{
	"account_id": "2",
	"declared_value": 629,
	"packages": [
		{
			"id": 76524,
		},
		{
			"id": 76525,
      "items":[
      {
        "id": 986,
      },
      {
        "id": 987,
      }
		}
	],
}


RESPONSE 200
{
  "sorted_by": "price",
  "destination": {
    "id": 1735,
    "city": "San Isidro",
    "state": "Buenos Aires",
    "zipcode": "1642"
  },
  "packages": [
    {
      "id": 76524
      "weight": 10000,
      "height": 10,
      "width": 50,
      "length": 30,
      "volume": 15000,
      "sku_id": null,
      "classification_id": 1,
      "items": [
        {
          "id": 984
          "weight": 500,
          "height": 8,
          "width": 8,
          "length": 8,
          "sku": "ITEM1"
        }
      ],
      "container": null
    },
    {
      "id": 76524
      "weight": 10000,
      "height": 10,
      "width": 50,
      "length": 30,
      "volume": 15000,
      "sku_id": null,
      "classification_id": 1,
      "items": [
        {
          "id": 986
          "weight": 500,
          "height": 8,
          "width": 8,
          "length": 8,
          "sku": "ITEM1"
        },
        {
          "id": 987
          "weight": 500,
          "height": 8,
          "width": 8,
          "length": 8,
          "sku": "ITEM2"
        }
      ],
      "container": {
        "id": 2,
        "description": "Caja Mediana 2",
        "inner_width": 14,
        "inner_length": 11,
        "inner_height": 8,
        "outer_width": 15,
        "outer_length": 12,
        "outer_height": 9,
        "empty_weight": 100,
        "max_weight": 3000
      }
    }
  ],
  "results": {
    "standard_delivery": {
      "selectable": true,
      "impediments": null,
      "logistic_type": "carrier_dropoff",
      "carrier": {
        "id": 205,
        "name": "Leset",
        "rating": 0.95,
        "logo": "https:\/\/zippin-ar.s3.amazonaws.com\/carriers\/leset\/9Bw6vmnLH2ZUvKTdAcQtqJRkvkZdJTqcPlR9nwYU.png"
      },
      "service_type": {
        "id": 10,
        "code": "return_origin",
        "name": "Devolución a origen",
        "is_urgent": 0
      },
      "delivery_time": {
        "min": 3,
        "max": 7
      },
      "amounts": {
        "price_shipment": 315.79,
        "price_insurance": 8.18,
        "price": 323.97,
        "price_incl_tax": 392
      },
      "rate": {
        "source": "tariff",
        "id": 12957,
        "tariff_id": 71
      },
      "tags": [
        "cheapest",
        "fastest"
      ]
    }
  },
  "all_results": [
    {
      "selectable": true,
      "impediments": null,
      "logistic_type": "carrier_dropoff",
      "carrier": {
        "id": 205,
        "name": "Leset",
        "rating": 0.95,
        "logo": "https:\/\/zippin-ar.s3.amazonaws.com\/carriers\/leset\/9Bw6vmnLH2ZUvKTdAcQtqJRkvkZdJTqcPlR9nwYU.png"
      },
      "service_type": {
        "id": 10,
        "code": "return_origin",
        "name": "Devolución a origen",
        "is_urgent": 0
      },
      "delivery_time": {
        "min": 3,
        "max": 7
      },
      "amounts": {
        "price_shipment": 315.79,
        "price_insurance": 8.18,
        "price": 323.97,
        "price_incl_tax": 392
      },
      "rate": {
        "source": "tariff",
        "id": 12957,
        "tariff_id": 71
      },
      "tags": [
        "cheapest",
        "fastest"
      ]
    },
    {
      "selectable": true,
      "impediments": null,
      "logistic_type": "carrier_pickup",
      "carrier": {
        "id": 220,
        "name": "Malargue",
        "rating": 0.94,
        "logo": "https:\/\/zippin-ar.s3.amazonaws.com\/carriers\/malargue\/gzHM0KZOWMtDbd0svUiRJpiExH9uIQsAa3n8auke.png"
      },
      "service_type": {
        "id": 10,
        "code": "return_origin",
        "name": "Devolución a origen",
        "is_urgent": 0
      },
      "delivery_time": {
        "min": 5,
        "max": 10
      },
      "amounts": {
        "price_shipment": 725.7,
        "price_insurance": 8.18,
        "price": 733.88,
        "price_incl_tax": 888
      },
      "rate": {
        "source": "tariff",
        "id": 13050,
        "tariff_id": 113
      },
      "tags": []
    }
  ]
}