> For the complete documentation index, see [llms.txt](https://docs.zipnova.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.zipnova.com/envios/recursos-api/envios/devoluciones.md).

# Devoluciones

{% hint style="warning" %}
Los endpoints de creación de envíos utilizan **rate limiting** :red\_circle:<mark style="color:red;">**Alto**</mark>\
[Ver más sobre límites de requests](/envios/principios/limites-de-requests.md)
{% endhint %}

{% hint style="info" %}
Recomendamos completar el atributo `source` con algo que identifique a tu integración, para que luego los clientes puedan definir reglas personalizadas de cotización utilizando el [Motor de Reglas](https://ayuda.zippin.app/automatizaciones), utilizando el atributo source como criterio de filtrado.
{% endhint %}

## Cotizar un envío de logística inversa

**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.

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.

## Cotizar devolución

> Obtiene las opciones disponibles para generar un envío de devolución (logística inversa) a partir de un envío existente.\
> \
> Por defecto se usan todos los paquetes del envío original. Si se envía \`packages\`, sólo se cotizan los paquetes indicados (y opcionalmente un subconjunto de sus ítems).\
> \
> El origen de la devolución es el domicilio del destinatario del envío original. Puede sobreescribirse con \`origin\_address\`.

```json
{"openapi":"3.0.0","info":{"title":"Zipnova Shipping API V2","version":"2.0.0"},"tags":[{"name":"Envíos","description":"Gestión de envíos y tracking"}],"servers":[{"url":"https://api.zipnova.com.ar/v2","description":"v2 API - Argentina (AR)"},{"url":"https://api.zipnova.cl/v2","description":"v2 API - Chile (CL)"},{"url":"https://api.zipnova.com.mx/v2","description":"v2 API - México (MX)"}],"security":[{"basicAuth":[]},{"bearerAuth":[]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","description":"Autenticación básica HTTP utilizando token como nombre de usuario y secret como contraseña","scheme":"basic"},"bearerAuth":{"type":"http","description":"Token de autenticación Bearer OAuth para API V2","bearerFormat":"OAuth","scheme":"bearer"}},"schemas":{"QuoteResult":{"title":"Resultado de cotización","properties":{"selectable":{"description":"Indica si esta opción puede usarse para crear un envío","type":"boolean"},"impediments":{"description":"Motivos por los que la opción no es seleccionable. Null cuando selectable es true","type":"array","items":{"type":"string"},"nullable":true},"logistic_type":{"description":"Tipo logístico de la opción (e.g. xd_dropoff, carrier_dropoff, carrier_pickup)","type":"string"},"carrier":{"properties":{"id":{"type":"integer"},"name":{"type":"string"},"rating":{"description":"Puntaje de calidad del transportista (0-5)","type":"number","format":"float"},"logo":{"type":"string","nullable":true}},"type":"object"},"service_type":{"properties":{"id":{"type":"integer"},"code":{"type":"string"},"name":{"type":"string"},"is_urgent":{"type":"boolean"}},"type":"object"},"delivery_time":{"properties":{"warning":{"description":"Aviso de deprecación de min/max","type":"string"},"min":{"description":"Días hábiles mínimos estimados (deprecado)","type":"integer"},"max":{"description":"Días hábiles máximos estimados (deprecado)","type":"integer"},"estimated_delivery":{"description":"Fecha estimada de entrega (ISO 8601)","type":"string","format":"date-time"},"estimation_expires_at":{"description":"Fecha de vencimiento de esta estimación (ISO 8601)","type":"string","format":"date-time"},"times":{"description":"Desglose de tiempos en formato de duración ISO 8601 (e.g. P2D = 2 días)","properties":{"preparation":{"type":"string"},"crossdocking":{"type":"string"},"carrier":{"properties":{"min":{"type":"string"},"max":{"type":"string"}},"type":"object"},"total":{"properties":{"min":{"type":"string"},"max":{"type":"string"}},"type":"object"}},"type":"object"}},"type":"object"},"amounts":{"properties":{"price_shipment":{"description":"Precio del flete sin seguro","type":"number","format":"float"},"price_insurance":{"description":"Precio del seguro","type":"number","format":"float"},"price":{"description":"Precio total sin impuestos que paga el cliente","type":"number","format":"float"},"price_incl_tax":{"description":"Precio total con impuestos que paga el cliente","type":"number","format":"float"},"seller_price":{"description":"Precio neto del seller sin impuestos","type":"number","format":"float"},"seller_price_incl_tax":{"description":"Precio neto del seller con impuestos","type":"number","format":"float"}},"type":"object"},"rate":{"properties":{"source":{"description":"Fuente de la tarifa aplicada","type":"string"},"id":{"description":"ID de la tarifa","type":"integer"},"tariff_id":{"description":"ID del tariff al que pertenece la tarifa","type":"integer"}},"type":"object"},"tags":{"description":"Etiquetas destacadas del resultado (cheapest, fastest)","type":"array","items":{"type":"string","enum":["cheapest","fastest"]}},"pickup_points":{"description":"Hasta 5 puntos de retiro cercanos al destino. Solo presente cuando service_type.code es pickup_point","type":"array","items":{"properties":{"point_id":{"type":"integer"},"description":{"type":"string"},"open_hours":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"location":{"properties":{"street":{"type":"string"},"street_number":{"type":"string"},"street_extras":{"type":"string","nullable":true},"city":{"type":"string"},"state":{"type":"string"},"zipcode":{"type":"string","nullable":true},"geolocation":{"properties":{"lat":{"type":"number","format":"float"},"lng":{"type":"number","format":"float"},"distance":{"description":"Distancia desde el origen en metros","type":"integer"}},"type":"object"}},"type":"object"}},"type":"object"},"nullable":true},"dropoff_points":{"description":"Hasta 5 puntos de dropoff cercanos al origen. Solo presente cuando include_dropoff_points=1 y el logistic_type es carrier_dropoff, xd_dropoff o gateway_dropoff","type":"array","items":{"properties":{"name":{"type":"string"},"default_logistic_type":{"type":"string","nullable":true},"address":{"properties":{"street":{"type":"string"},"street_number":{"type":"string"},"street_extras":{"type":"string","nullable":true},"city":{"type":"string"},"state":{"type":"string"},"geolocation":{"properties":{"lat":{"type":"number","format":"float"},"lng":{"type":"number","format":"float"}},"type":"object"}},"type":"object"}},"type":"object"},"nullable":true}},"type":"object"}}},"paths":{"/shipments/{shipment}/return/quote":{"post":{"tags":["Envíos"],"summary":"Cotizar devolución","description":"Obtiene las opciones disponibles para generar un envío de devolución (logística inversa) a partir de un envío existente.\n\nPor defecto se usan todos los paquetes del envío original. Si se envía `packages`, sólo se cotizan los paquetes indicados (y opcionalmente un subconjunto de sus ítems).\n\nEl origen de la devolución es el domicilio del destinatario del envío original. Puede sobreescribirse con `origin_address`.","operationId":"60dea6583963a876db844c19f2fd81f7","parameters":[{"name":"shipment","in":"path","description":"ID del envío original","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["account_id","source","declared_value"],"properties":{"account_id":{"description":"ID de la cuenta","type":"integer"},"source":{"description":"Identificador de la fuente que genera la cotización. Máximo 150 caracteres.","type":"string"},"declared_value":{"description":"Valor declarado de la devolución (numérico, mínimo 0)","type":"number"},"service_type":{"description":"Filtra los resultados por código de tipo de servicio de devolución (debe ser un tipo marcado como inverso).","type":"string"},"logistic_type":{"description":"Filtra los resultados por tipo logístico.","type":"string"},"sort_by":{"description":"Criterio de ordenamiento de los resultados.","type":"string","enum":["price","rating","time"]},"avoid_rules":{"description":"Si es `true`, omite la aplicación de reglas de negocio de la cuenta.","type":"boolean"},"packages":{"description":"Subconjunto de paquetes del envío original a incluir en la devolución. Si se omite, se usan todos los paquetes del envío.","type":"array","items":{"required":["id"],"properties":{"id":{"description":"ID del paquete (`shipment_package.id`) perteneciente al envío original.","type":"integer"},"items":{"description":"Subconjunto de ítems del paquete a devolver. Si se omite, se incluyen todos los ítems del paquete.","type":"array","items":{"required":["id"],"properties":{"id":{"description":"ID del ítem (`shipment_package_items.id`) perteneciente al paquete.","type":"integer"}},"type":"object"}}},"type":"object"}},"origin_address":{"description":"Dirección de retiro de la mercadería. Si se omite, se usa el domicilio del destinatario del envío original.","properties":{"street":{"description":"Calle. Requerido si se provee `origin_address`.","type":"string"},"street_number":{"description":"Número de calle. Requerido si se provee `origin_address`.","type":"string"},"street_extras":{"description":"Información adicional (piso, departamento, etc.).","type":"string"},"city":{"description":"Ciudad. Requerido si se provee `origin_address`.","type":"string"},"state":{"description":"Provincia/estado. Requerido si se provee `origin_address`.","type":"string"},"zipcode":{"description":"Código postal. Requerido en países donde aplica.","type":"string"}},"type":"object"}},"type":"object"}}}},"responses":{"200":{"description":"Lista de opciones de devolución disponibles con precios y tiempos","content":{"application/json":{"schema":{"properties":{"sorted_by":{"type":"string","enum":["price","rating","time"]},"origin":{"type":"object"},"destination":{"type":"object"},"packages":{"type":"array","items":{"type":"object"}},"results":{"description":"Mejor opción por tipo de servicio","type":"object","additionalProperties":{"$ref":"#/components/schemas/QuoteResult"}},"all_results":{"type":"array","items":{"$ref":"#/components/schemas/QuoteResult"}},"errors":{"description":"Presente cuando no hay opciones disponibles, con el detalle del motivo","type":"array","items":{"type":"string"},"nullable":true}},"type":"object"}}}},"400":{"description":"Datos inválidos o cuenta inactiva"},"403":{"description":"Sin acceso a este envío o a la cuenta"},"404":{"description":"Envío no encontrado"},"422":{"description":"Error de validación o logistic_type incompatible con el origen"}}}}}}
```

## Crear envío de logística inversa

**El endpoint de creación de una devolución nos permite crear la devolución, indicando todo el detalle del mismo y su contenido.**

En cada creación, se deberá indicar la cuenta, valor declarado del envío y detalle de paquetes e items que se devolverán. También se indicará el service\_type, logistic\_type que deben haber sido obtenidos previamente de una cotización.

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 creará 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 creará la devolución de los items que contenga dicho array.

## Crear envío de devolución

> Crea un nuevo envío de devolución (logística inversa) a partir de un envío existente. El origen del envío de devolución es el domicilio del destinatario original. Si se omiten los paquetes, se devuelven todos los del envío original.

```json
{"openapi":"3.0.0","info":{"title":"Zipnova Shipping API V2","version":"2.0.0"},"tags":[{"name":"Envíos","description":"Gestión de envíos y tracking"}],"servers":[{"url":"https://api.zipnova.com.ar/v2","description":"v2 API - Argentina (AR)"},{"url":"https://api.zipnova.cl/v2","description":"v2 API - Chile (CL)"},{"url":"https://api.zipnova.com.mx/v2","description":"v2 API - México (MX)"}],"security":[{"basicAuth":[]},{"bearerAuth":[]}],"components":{"securitySchemes":{"basicAuth":{"type":"http","description":"Autenticación básica HTTP utilizando token como nombre de usuario y secret como contraseña","scheme":"basic"},"bearerAuth":{"type":"http","description":"Token de autenticación Bearer OAuth para API V2","bearerFormat":"OAuth","scheme":"bearer"}},"schemas":{"ShipmentApiResource":{"title":"Envío","properties":{"id":{"description":"ID único del envío","type":"integer"},"external_id":{"description":"Identificador externo del envío (e.g. número de orden del cliente)","type":"string","nullable":true},"delivery_id":{"description":"Número de remito asignado por el transportista","type":"string","nullable":true},"carrier_tracking_id":{"description":"Identificador de seguimiento público del transportista","type":"string","nullable":true},"carrier_tracking_id_alt":{"description":"Identificador de seguimiento alternativo del transportista","type":"string","nullable":true},"created_at":{"description":"Fecha y hora de creación del envío (ISO 8601)","type":"string","format":"date-time"},"last_status_at":{"description":"Fecha y hora en que el envío alcanzó su estado actual (ISO 8601)","type":"string","format":"date-time","nullable":true},"delivered_at":{"description":"Fecha y hora de entrega al destinatario (ISO 8601). Presente solo si fue entregado","type":"string","format":"date-time","nullable":true},"delivery_time":{"description":"Tiempos estimados de entrega","properties":{"estimated_delivery":{"description":"Fecha estimada de entrega al destinatario (ISO 8601)","type":"string","format":"date-time","nullable":true},"dropoff_deadline_at":{"description":"Fecha límite para ingresar el envío al transportista (ISO 8601)","type":"string","format":"date-time","nullable":true},"times":{"description":"Desglose de tiempos en días hábiles. Indicados en formato ISO8601 para duraciones de tiempo.","properties":{"preparation":{"description":"Días de preparación antes de despacho","type":"string"},"crossdocking":{"description":"Días de tránsito por crossdocking","type":"string"},"carrier":{"description":"Días de tránsito del transportista","type":"string"},"total":{"description":"Tiempo total estimado en días hábiles","type":"string"}},"type":"object"}},"type":"object"},"account_id":{"description":"ID de la cuenta propietaria del envío","type":"integer"},"parent_shipment_id":{"description":"ID del envío padre. Presente cuando este envío es una devolución o reenvío","type":"integer","nullable":true},"logistic_type":{"description":"Tipo de logística del envío (e.g. crossdock, carrier_dropoff, xd_dropoff, self_service)","type":"string"},"service_type":{"description":"Código del tipo de servicio (e.g. standard, express, pickup_point)","type":"string"},"carrier":{"description":"Transportista asignado al envío","properties":{"id":{"description":"ID del transportista","type":"integer"},"name":{"description":"Nombre del transportista","type":"string"},"logo":{"description":"URL del logotipo del transportista","type":"string","nullable":true}},"type":"object"},"status":{"description":"Código de estado actual del envío (e.g. new, in_transit, delivered)","type":"string"},"status_name":{"description":"Nombre legible del estado actual","type":"string"},"substatus_code":{"description":"Código del subestado actual del envío, si aplica","type":"string","nullable":true},"substatus_name":{"description":"Nombre legible del subestado actual, si aplica","type":"string","nullable":true},"tracking":{"description":"URL de seguimiento público del envío en la plataforma","type":"string","nullable":true},"tracking_external":{"description":"URL de seguimiento en el sitio web del transportista","type":"string","nullable":true},"return_instructions":{"description":"URL con instrucciones de devolución. Solo presente en envíos de tipo reverse logistics","type":"string","nullable":true},"destination":{"description":"Datos completos del destinatario","properties":{"name":{"description":"Nombre completo del destinatario","type":"string"},"document":{"description":"Documento de identidad del destinatario","type":"string"},"street":{"description":"Calle del destinatario","type":"string","nullable":true},"street_number":{"description":"Número de calle del destinatario","type":"string","nullable":true},"street_extras":{"description":"Piso, departamento u otras indicaciones adicionales","type":"string","nullable":true},"city":{"description":"Ciudad de destino","type":"string"},"state":{"description":"Provincia o estado de destino","type":"string"},"zipcode":{"description":"Código postal de destino","type":"string","nullable":true},"phone":{"description":"Teléfono de contacto del destinatario","type":"string"},"email":{"description":"Email de contacto del destinatario","type":"string","format":"email"},"pickup_point":{"description":"Datos del punto de retiro. Solo presente cuando service_type es pickup_point","properties":{"id":{"description":"ID del punto de retiro","type":"integer"},"name":{"description":"Nombre del punto de retiro","type":"string"},"geolocation":{"properties":{"lat":{"type":"number","format":"float"},"lng":{"type":"number","format":"float"}},"type":"object"}},"type":"object","nullable":true}},"type":"object"},"origin":{"description":"Datos completos del origen del envío","properties":{"id":{"description":"ID del origen en el catálogo de direcciones (address_book_id)","type":"integer"},"name":{"description":"Nombre del punto de origen","type":"string"},"document":{"description":"Documento de identidad del remitente","type":"string","nullable":true},"street":{"description":"Calle de origen","type":"string"},"street_number":{"description":"Número de calle de origen","type":"string"},"street_extras":{"description":"Información adicional de la dirección de origen","type":"string","nullable":true},"city":{"description":"Ciudad de origen","type":"string"},"state":{"description":"Provincia o estado de origen","type":"string"},"zipcode":{"description":"Código postal de origen","type":"string","nullable":true},"phone":{"description":"Teléfono de contacto del origen","type":"string"},"email":{"description":"Email de contacto del origen","type":"string","format":"email"},"is_dropshipping":{"description":"Indica si el envío parte desde un proveedor de dropshipping","type":"boolean"},"supplier":{"description":"Datos del proveedor dropshipping. Solo presente cuando is_dropshipping es true","properties":{"name":{"description":"Nombre del proveedor","type":"string","nullable":true}},"type":"object","nullable":true}},"type":"object"},"declared_value":{"description":"Valor declarado del contenido del envío en la moneda local","type":"number","format":"float"},"price":{"description":"Costo del envío sin impuestos","type":"number","format":"float"},"price_incl_tax":{"description":"Costo del envío con impuestos incluidos","type":"number","format":"float"},"total_weight":{"description":"Peso total del envío en gramos","type":"integer"},"total_volume":{"description":"Volumen total del envío en centímetros cúbicos (cm³)","type":"integer"},"packages":{"description":"Lista de paquetes del envío","type":"array","items":{"properties":{"id":{"description":"ID del paquete","type":"integer"},"label_code":{"description":"Código de etiqueta del paquete","type":"string","nullable":true},"sku_id":{"description":"ID del SKU si el paquete corresponde a un único SKU","type":"integer","nullable":true},"weight":{"description":"Peso del paquete en gramos","type":"integer"},"height":{"description":"Alto del paquete en centímetros","type":"integer"},"width":{"description":"Ancho del paquete en centímetros","type":"integer"},"length":{"description":"Largo del paquete en centímetros","type":"integer"},"volume":{"description":"Volumen del paquete en cm³","type":"integer"},"description_1":{"description":"Primera línea de descripción del contenido","type":"string"},"description_2":{"description":"Segunda línea de descripción del contenido","type":"string","nullable":true},"description_3":{"description":"Tercera línea de descripción del contenido","type":"string","nullable":true},"classification":{"description":"Clasificación arancelaria del contenido","properties":{"id":{"type":"integer"},"name":{"type":"string"}},"type":"object"},"tax_class_code":{"description":"Código de clase impositiva del paquete","type":"string","nullable":true},"label_elements":{"description":"Elementos para renderizar en la etiqueta del paquete (códigos de barra, QR, etc.). El contenido varía según el transportista. Presente solo cuando el envío tiene etiqueta generada.","type":"array","items":{"properties":{"id":{"description":"Identificador del elemento (e.g. zipnova_label_code, carrier_tracking_code, carrier_extra_code)","type":"string"},"type":{"description":"Tipo de elemento gráfico","type":"string","enum":["barcode","qrcode"]},"format":{"description":"Formato del código de barras. Solo presente cuando type es barcode","type":"string","nullable":true},"value":{"description":"Valor a codificar en el elemento gráfico","type":"string"}},"type":"object"},"nullable":true},"container":{"description":"Caja o contenedor predefinido. Solo presente si el paquete usa un contenedor guardado","properties":{"id":{"type":"integer"},"description":{"type":"string"},"outer_width":{"description":"Ancho exterior en cm","type":"integer"},"outer_height":{"description":"Alto exterior en cm","type":"integer"},"outer_length":{"description":"Largo exterior en cm","type":"integer"},"inner_width":{"description":"Ancho interior en cm","type":"integer"},"inner_length":{"description":"Largo interior en cm","type":"integer"},"inner_height":{"description":"Alto interior en cm","type":"integer"},"max_weight":{"description":"Peso máximo soportado en gramos","type":"integer"},"empty_weight":{"description":"Peso vacío del contenedor en gramos","type":"integer"}},"type":"object","nullable":true},"items":{"description":"Ítems individuales dentro del paquete","type":"array","items":{"properties":{"id":{"type":"integer"},"sku":{"description":"Datos del SKU vinculado. Los campos internal_sku, name y barcode solo están presentes si el ítem tiene un SKU registrado","properties":{"sku":{"description":"Código SKU","type":"string","nullable":true},"sku_id":{"description":"ID del SKU","type":"integer","nullable":true},"internal_sku":{"description":"SKU interno","type":"string","nullable":true},"name":{"description":"Nombre del producto","type":"string","nullable":true},"barcode":{"description":"Código de barras","type":"string","nullable":true}},"type":"object"},"description":{"description":"Descripción del ítem","type":"string"},"tax_class_code":{"description":"Código de clase impositiva del ítem","type":"string","nullable":true},"must_keep_vertical":{"description":"Indica si el ítem debe mantenerse vertical durante el transporte","type":"boolean"},"weight":{"description":"Peso en gramos","type":"integer"},"width":{"description":"Ancho en cm","type":"integer"},"length":{"description":"Largo en cm","type":"integer"},"height":{"description":"Alto en cm","type":"integer"},"pos_x":{"description":"Posición X dentro del contenedor (cm)","type":"integer","nullable":true},"pos_y":{"description":"Posición Y dentro del contenedor (cm)","type":"integer","nullable":true},"pos_z":{"description":"Posición Z dentro del contenedor (cm)","type":"integer","nullable":true}},"type":"object"}}},"type":"object"}},"tags":{"description":"Etiquetas asociadas al envío","type":"array","items":{"type":"string"}},"related_shipments":{"description":"Envíos relacionados (padre, devoluciones, reenvíos)","type":"array","items":{"properties":{"type":{"description":"Rol del envío relacionado","type":"string","enum":["parent","child"]},"relationship":{"description":"Tipo de relación entre los envíos","type":"string","enum":["copy","return","reshipped"]},"shipment_id":{"description":"ID del envío relacionado","type":"integer"}},"type":"object"}},"source":{"description":"Fuente u origen de creación del envío (e.g. nombre del canal o integración)","type":"string","nullable":true},"marketplace":{"description":"Marketplace asociado al envío. Presente solo si el envío proviene de un marketplace","properties":{"code":{"description":"Código del marketplace","type":"string"},"name":{"description":"Nombre del marketplace","type":"string"}},"type":"object","nullable":true},"order":{"description":"Pedido del canal de venta asociado al envío. Presente solo si el envío tiene un orden vinculado","properties":{"id":{"description":"ID interno del pedido","type":"integer"},"channel":{"description":"Canal de venta (e.g. meli, tiendanube, shopify, vtex)","type":"string"},"channel_created_at":{"description":"Fecha de creación del pedido en el canal (ISO 8601)","type":"string","format":"date-time"},"channel_relations":{"description":"IDs del pedido en el canal de venta (orden, paquete, envío del canal)","type":"array","items":{"properties":{"type":{"type":"string","enum":["order","pack","shipment"]},"id":{"description":"ID del recurso en el canal"}},"type":"object"},"nullable":true}},"type":"object","nullable":true},"fulfillment_order":{"description":"Orden de fulfillment asociada al envío. Presente solo si el envío está vinculado a un proceso de fulfillment","properties":{"id":{"type":"integer"},"status_id":{"description":"ID del estado de la orden de fulfillment","type":"integer"},"external_id":{"description":"ID externo de la orden de fulfillment","type":"string","nullable":true},"items":{"type":"array","items":{"properties":{"sku_id":{"type":"integer"},"qty":{"description":"Cantidad de unidades","type":"integer"},"lot_numbers":{"description":"Números de lote","type":"array","items":{"type":"string"},"nullable":true},"serial_numbers":{"description":"Números de serie","type":"array","items":{"type":"string"},"nullable":true}},"type":"object"}}},"type":"object","nullable":true},"rescue":{"description":"Solicitud de rescate del envío. Presente solo si se solicitó un rescate, resuelto o no","properties":{"requested_at":{"description":"Fecha y hora de la solicitud (ISO 8601)","type":"string","format":"date-time"}},"type":"object","nullable":true}},"type":"object"}}},"paths":{"/shipments/{shipment}/return":{"post":{"tags":["Envíos"],"summary":"Crear envío de devolución","description":"Crea un nuevo envío de devolución (logística inversa) a partir de un envío existente. El origen del envío de devolución es el domicilio del destinatario original. Si se omiten los paquetes, se devuelven todos los del envío original.","operationId":"9e2348c34ff7c5ce583cbcbd62e92fe4","parameters":[{"name":"shipment","in":"path","description":"ID del envío original del cual se genera la devolución","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["account_id","service_type","declared_value"],"properties":{"account_id":{"description":"ID de la cuenta bajo la cual se crea la devolución","type":"integer"},"service_type":{"description":"Código del tipo de servicio de devolución (debe ser un servicio de tipo reverse)","type":"string"},"logistic_type":{"description":"Tipo de logística para la devolución (e.g. crossdock, carrier_dropoff)","type":"string"},"carrier_id":{"description":"ID del transportista a usar. Si se omite se selecciona automáticamente","type":"integer","nullable":true},"sort_by":{"description":"Criterio de selección automática del transportista","type":"string","enum":["price","rating","time"],"nullable":true},"declared_value":{"description":"Valor declarado del contenido a devolver en la moneda local","type":"number","format":"float"},"packages":{"description":"Paquetes específicos a devolver. Si se omite, se incluyen todos los paquetes del envío original","type":"array","items":{"required":["id"],"properties":{"id":{"description":"ID del paquete del envío original","type":"integer"},"items":{"description":"Ítems específicos del paquete a devolver. Si se omite, se devuelven todos los ítems del paquete","type":"array","items":{"required":["id"],"properties":{"id":{"description":"ID del ítem del paquete original","type":"integer"}},"type":"object"},"nullable":true}},"type":"object"},"nullable":true},"origin_address":{"description":"Dirección de retiro de la devolución si difiere del domicilio del destinatario original. Si se omite, se usa la dirección del destinatario del envío original","properties":{"street":{"type":"string"},"street_number":{"type":"string"},"street_extras":{"type":"string","nullable":true},"city":{"type":"string"},"state":{"type":"string"},"zipcode":{"type":"string","nullable":true}},"type":"object","nullable":true}},"type":"object"}}}},"responses":{"201":{"description":"Envío de devolución creado exitosamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShipmentApiResource"}}}},"400":{"description":"Datos inválidos, ubicación no reconocida o no se pudo cotizar la devolución"},"403":{"description":"Sin permiso para crear devoluciones en esta cuenta"},"404":{"description":"Envío original no encontrado"},"422":{"description":"Error de validación de los datos enviados"}}}}}}
```
