# Productos

## Productos

Un producto es una unidad vendible que puede estar compuesto por uno o más [SKU](#skus)

## Listar productos

> Retorna un listado paginado de productos de la cuenta autenticada. También incluye productos de cuentas proveedoras asociadas (dropshipping). En el listado, los SKUs solo incluyen código y unidades; para ver atributos físicos completos usar GET /products/{id}.

```json
{"openapi":"3.0.0","info":{"title":"Zipnova Shipping API V2","version":"2.0.0"},"tags":[{"name":"Productos","description":"Gestión de productos y catálogo"}],"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":{"ProductCollection":{"title":"Colección de Productos","description":"Respuesta paginada del listado de productos.","properties":{"data":{"description":"Lista de productos de la página actual","type":"array","items":{"$ref":"#/components/schemas/ProductResource"}},"meta":{"description":"Información de paginación","properties":{"page":{"description":"Página actual","type":"integer"},"per_page":{"description":"Resultados por página","type":"integer"},"total":{"description":"Total de resultados","type":"integer"},"last_page":{"description":"Última página","type":"integer"},"from":{"description":"Índice del primer resultado de la página","type":"integer"},"to":{"description":"Índice del último resultado de la página","type":"integer"}},"type":"object"},"links":{"description":"URLs de navegación entre páginas","properties":{"first":{"description":"URL de la primera página","type":"string"},"last":{"description":"URL de la última página","type":"string"},"prev":{"description":"URL de la página anterior (null si es la primera)","type":"string","nullable":true},"next":{"description":"URL de la página siguiente (null si es la última)","type":"string","nullable":true}},"type":"object"}},"type":"object"},"ProductResource":{"title":"Producto","description":"Representa un producto del catálogo con sus SKUs asociados.","properties":{"id":{"description":"ID del producto","type":"integer"},"account_id":{"description":"ID de la cuenta propietaria del producto","type":"integer"},"reference_code":{"description":"Código de referencia único del producto en la cuenta","type":"string"},"name":{"description":"Nombre del producto. Si es un producto de proveedor, el nombre del proveedor se antepone entre corchetes.","type":"string"},"skus":{"description":"SKUs que componen el producto. En el listado (GET /products/search) solo se retorna sku y units. En el detalle (GET /products/{id}) se incluye además el objeto data con atributos físicos.","type":"array","items":{"properties":{"sku":{"description":"Código del SKU","type":"string"},"units":{"description":"Cantidad de unidades de este SKU en el producto","type":"integer"},"data":{"description":"Atributos detallados del SKU (solo presente en el endpoint de detalle)","properties":{"name":{"description":"Nombre del SKU (se usa el nombre de almacén si está disponible)","type":"string"},"internal_sku":{"description":"SKU interno","type":"string","nullable":true},"barcode":{"description":"Código de barras (se usa el código de almacén si está disponible)","type":"string","nullable":true},"attributes":{"description":"Atributos físicos y de valor del SKU","properties":{"unit_declared_value":{"description":"Valor declarado por unidad","type":"number","nullable":true},"weight":{"description":"Peso en gramos (se usa el peso de almacén si está disponible)","type":"integer","nullable":true},"length":{"description":"Largo en cm","type":"number","nullable":true},"width":{"description":"Ancho en cm","type":"number","nullable":true},"height":{"description":"Alto en cm","type":"number","nullable":true}},"type":"object"},"classification":{"description":"Código de clasificación del SKU","type":"string","nullable":true},"stackable":{"description":"Indica si el SKU es apilable en el almacén","type":"boolean"}},"type":"object","nullable":true}},"type":"object"}},"created_at":{"description":"Fecha de creación del producto","type":"string","format":"date-time"},"updated_at":{"description":"Fecha de última actualización del producto","type":"string","format":"date-time"},"supplier":{"description":"Información del proveedor, si el producto proviene de un proveedor de dropshipping asociado a la cuenta","properties":{"id":{"description":"ID de la relación de proveedor","type":"integer"},"name":{"description":"Nombre del proveedor","type":"string"},"account_id":{"description":"ID de la cuenta del proveedor","type":"integer"}},"type":"object","nullable":true}},"type":"object"}}},"paths":{"/products/search":{"get":{"tags":["Productos"],"summary":"Listar productos","description":"Retorna un listado paginado de productos de la cuenta autenticada. También incluye productos de cuentas proveedoras asociadas (dropshipping). En el listado, los SKUs solo incluyen código y unidades; para ver atributos físicos completos usar GET /products/{id}.","operationId":"2136a5e9b2de09c938373bed52e278a7","parameters":[{"name":"per_page","in":"query","description":"Cantidad de productos por página (máximo 100, por defecto 50)","required":false,"schema":{"type":"integer","default":50,"maximum":100}},{"name":"search","in":"query","description":"Búsqueda de texto libre por nombre o código de referencia del producto","required":false,"schema":{"type":"string"}},{"name":"supplier_id","in":"query","description":"Filtrar por ID de proveedor asociado a la cuenta. Cuando se especifica, solo se retornan productos de ese proveedor.","required":false,"schema":{"type":"integer"}},{"name":"sort_by","in":"query","description":"Campo por el que ordenar los resultados","required":false,"schema":{"type":"string","default":"created_at","enum":["name","reference_code","created_at","updated_at"]}},{"name":"sort_direction","in":"query","description":"Dirección del ordenamiento","required":false,"schema":{"type":"string","default":"desc","enum":["asc","desc"]}},{"name":"page","in":"query","description":"Número de página","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Listado paginado de productos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductCollection"}}}},"401":{"description":"No autenticado."},"422":{"description":"Parámetros de consulta inválidos."},"500":{"description":"Error interno del servidor."}}}}}}
```

## Obtener detalle de producto

> Retorna el detalle completo de un producto, incluyendo los atributos físicos de cada SKU (peso, dimensiones, código de barras, clasificación, etc.) y el stock disponible por depósito.

```json
{"openapi":"3.0.0","info":{"title":"Zipnova Shipping API V2","version":"2.0.0"},"tags":[{"name":"Productos","description":"Gestión de productos y catálogo"}],"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":{"ProductResource":{"title":"Producto","description":"Representa un producto del catálogo con sus SKUs asociados.","properties":{"id":{"description":"ID del producto","type":"integer"},"account_id":{"description":"ID de la cuenta propietaria del producto","type":"integer"},"reference_code":{"description":"Código de referencia único del producto en la cuenta","type":"string"},"name":{"description":"Nombre del producto. Si es un producto de proveedor, el nombre del proveedor se antepone entre corchetes.","type":"string"},"skus":{"description":"SKUs que componen el producto. En el listado (GET /products/search) solo se retorna sku y units. En el detalle (GET /products/{id}) se incluye además el objeto data con atributos físicos.","type":"array","items":{"properties":{"sku":{"description":"Código del SKU","type":"string"},"units":{"description":"Cantidad de unidades de este SKU en el producto","type":"integer"},"data":{"description":"Atributos detallados del SKU (solo presente en el endpoint de detalle)","properties":{"name":{"description":"Nombre del SKU (se usa el nombre de almacén si está disponible)","type":"string"},"internal_sku":{"description":"SKU interno","type":"string","nullable":true},"barcode":{"description":"Código de barras (se usa el código de almacén si está disponible)","type":"string","nullable":true},"attributes":{"description":"Atributos físicos y de valor del SKU","properties":{"unit_declared_value":{"description":"Valor declarado por unidad","type":"number","nullable":true},"weight":{"description":"Peso en gramos (se usa el peso de almacén si está disponible)","type":"integer","nullable":true},"length":{"description":"Largo en cm","type":"number","nullable":true},"width":{"description":"Ancho en cm","type":"number","nullable":true},"height":{"description":"Alto en cm","type":"number","nullable":true}},"type":"object"},"classification":{"description":"Código de clasificación del SKU","type":"string","nullable":true},"stackable":{"description":"Indica si el SKU es apilable en el almacén","type":"boolean"}},"type":"object","nullable":true}},"type":"object"}},"created_at":{"description":"Fecha de creación del producto","type":"string","format":"date-time"},"updated_at":{"description":"Fecha de última actualización del producto","type":"string","format":"date-time"},"supplier":{"description":"Información del proveedor, si el producto proviene de un proveedor de dropshipping asociado a la cuenta","properties":{"id":{"description":"ID de la relación de proveedor","type":"integer"},"name":{"description":"Nombre del proveedor","type":"string"},"account_id":{"description":"ID de la cuenta del proveedor","type":"integer"}},"type":"object","nullable":true}},"type":"object"}}},"paths":{"/products/{product}":{"get":{"tags":["Productos"],"summary":"Obtener detalle de producto","description":"Retorna el detalle completo de un producto, incluyendo los atributos físicos de cada SKU (peso, dimensiones, código de barras, clasificación, etc.) y el stock disponible por depósito.","operationId":"2c5d32ac9c32f85f210e778753ee113e","parameters":[{"name":"product","in":"path","description":"ID del producto","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Detalle del producto","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductResource"}}}},"401":{"description":"No autenticado."},"404":{"description":"Producto no encontrado o sin acceso."},"500":{"description":"Error interno del servidor."}}}}}}
```

## Crear producto

> Crea un nuevo producto para la cuenta autenticada.\
> \
> Los SKUs se especifican en el campo \`skus\`, donde cada entrada puede ser:\
> \- \*\*Referencia a SKU existente\*\*: pasar el código del SKU como string (ej. \`"SKU-001"\`).\
> \- \*\*Nuevo SKU inline\*\*: pasar un objeto con los datos del SKU a crear.\
> \
> Al crear el producto, se calculan automáticamente el peso total y el volumen total a partir de las dimensiones de los SKUs y las unidades por SKU.

```json
{"openapi":"3.0.0","info":{"title":"Zipnova Shipping API V2","version":"2.0.0"},"tags":[{"name":"Productos","description":"Gestión de productos y catálogo"}],"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":{"StoreProductRequest":{"title":"Crear Producto","description":"Datos para crear un nuevo producto con SKUs asociados.","required":["reference_code","name","skus"],"properties":{"reference_code":{"description":"Código de referencia único del producto en la cuenta. Se sanitiza automáticamente (se convierten caracteres especiales).","type":"string","maxLength":255},"name":{"description":"Nombre del producto","type":"string","maxLength":255},"skus":{"description":"Lista de SKUs que componen el producto. Se requiere al menos uno. Cada entrada puede referenciar un SKU existente por su código (string) o crear uno nuevo (objeto).","type":"array","items":{"required":["sku","units"],"properties":{"sku":{"description":"Referencia al SKU. Puede ser el código de un SKU existente en la cuenta (string) o un objeto con los datos para crear un nuevo SKU.","oneOf":[{"description":"Código de un SKU existente en la cuenta","type":"string"},{"description":"Datos para crear un nuevo SKU inline.","required":["sku","name","classification_id","unit_declared_value","currency","weight","length","width","height"],"properties":{"sku":{"description":"Código único del nuevo SKU en la cuenta","type":"string","maxLength":191},"name":{"description":"Nombre descriptivo del SKU","type":"string","maxLength":191},"classification_id":{"description":"ID de la clasificación del SKU (ver GET /inventory/classifications)","type":"integer"},"unit_declared_value":{"description":"Valor declarado por unidad","type":"number"},"currency":{"description":"Moneda del valor declarado (ISO 4217)","type":"string","maxLength":3},"weight":{"description":"Peso en gramos. Mínimo 1.","type":"integer"},"length":{"description":"Largo en cm. Mínimo 1.","type":"integer"},"width":{"description":"Ancho en cm. Mínimo 1.","type":"integer"},"height":{"description":"Alto en cm. Mínimo 1. El volumen (largo × ancho × alto) debe ser ≥ 65 cm³.","type":"integer"},"barcode":{"description":"Código de barras del SKU","type":"string","maxLength":100,"nullable":true},"brand":{"description":"Marca del producto","type":"string","maxLength":100,"nullable":true},"supplier":{"description":"Nombre del proveedor","type":"string","maxLength":100,"nullable":true},"tax_class_code":{"description":"Código de clase impositiva","type":"string","maxLength":50,"nullable":true},"stackable":{"description":"Indica si el SKU es apilable en el almacén","type":"boolean"},"management_type":{"description":"Tipo de gestión de inventario. lot: por lote con fecha de vencimiento. serial: por número de serie.","type":"string","enum":["lot","serial"],"nullable":true},"units_per_master_case":{"description":"Unidades por caja máster. Mutuamente excluyente con total_units_per_pallet.","type":"integer","nullable":true},"master_cases_per_pallet":{"description":"Cajas máster por pallet. Debe especificarse junto con units_per_master_case.","type":"integer","nullable":true},"total_units_per_pallet":{"description":"Total de unidades por pallet. Mutuamente excluyente con units_per_master_case y master_cases_per_pallet.","type":"integer","nullable":true}},"type":"object"}]},"units":{"description":"Cantidad de unidades de este SKU en el producto","type":"integer","minimum":1}},"type":"object"},"minItems":1}},"type":"object"},"ProductResource":{"title":"Producto","description":"Representa un producto del catálogo con sus SKUs asociados.","properties":{"id":{"description":"ID del producto","type":"integer"},"account_id":{"description":"ID de la cuenta propietaria del producto","type":"integer"},"reference_code":{"description":"Código de referencia único del producto en la cuenta","type":"string"},"name":{"description":"Nombre del producto. Si es un producto de proveedor, el nombre del proveedor se antepone entre corchetes.","type":"string"},"skus":{"description":"SKUs que componen el producto. En el listado (GET /products/search) solo se retorna sku y units. En el detalle (GET /products/{id}) se incluye además el objeto data con atributos físicos.","type":"array","items":{"properties":{"sku":{"description":"Código del SKU","type":"string"},"units":{"description":"Cantidad de unidades de este SKU en el producto","type":"integer"},"data":{"description":"Atributos detallados del SKU (solo presente en el endpoint de detalle)","properties":{"name":{"description":"Nombre del SKU (se usa el nombre de almacén si está disponible)","type":"string"},"internal_sku":{"description":"SKU interno","type":"string","nullable":true},"barcode":{"description":"Código de barras (se usa el código de almacén si está disponible)","type":"string","nullable":true},"attributes":{"description":"Atributos físicos y de valor del SKU","properties":{"unit_declared_value":{"description":"Valor declarado por unidad","type":"number","nullable":true},"weight":{"description":"Peso en gramos (se usa el peso de almacén si está disponible)","type":"integer","nullable":true},"length":{"description":"Largo en cm","type":"number","nullable":true},"width":{"description":"Ancho en cm","type":"number","nullable":true},"height":{"description":"Alto en cm","type":"number","nullable":true}},"type":"object"},"classification":{"description":"Código de clasificación del SKU","type":"string","nullable":true},"stackable":{"description":"Indica si el SKU es apilable en el almacén","type":"boolean"}},"type":"object","nullable":true}},"type":"object"}},"created_at":{"description":"Fecha de creación del producto","type":"string","format":"date-time"},"updated_at":{"description":"Fecha de última actualización del producto","type":"string","format":"date-time"},"supplier":{"description":"Información del proveedor, si el producto proviene de un proveedor de dropshipping asociado a la cuenta","properties":{"id":{"description":"ID de la relación de proveedor","type":"integer"},"name":{"description":"Nombre del proveedor","type":"string"},"account_id":{"description":"ID de la cuenta del proveedor","type":"integer"}},"type":"object","nullable":true}},"type":"object"}}},"paths":{"/products":{"post":{"tags":["Productos"],"summary":"Crear producto","description":"Crea un nuevo producto para la cuenta autenticada.\n\nLos SKUs se especifican en el campo `skus`, donde cada entrada puede ser:\n- **Referencia a SKU existente**: pasar el código del SKU como string (ej. `\"SKU-001\"`).\n- **Nuevo SKU inline**: pasar un objeto con los datos del SKU a crear.\n\nAl crear el producto, se calculan automáticamente el peso total y el volumen total a partir de las dimensiones de los SKUs y las unidades por SKU.","operationId":"5da332b9555bb1ffeab0fd20eb52d5ec","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreProductRequest"}}}},"responses":{"201":{"description":"Producto creado exitosamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductResource"}}}},"401":{"description":"No autenticado."},"422":{"description":"Error de validación. Ver el objeto errors para detalles."},"500":{"description":"Error interno del servidor."}}}}}}
```

## Actualizar producto

> Actualiza los datos de un producto existente de la cuenta autenticada. Todos los campos son opcionales; solo se actualizan los que se envíen.\
> \
> Si se envía el campo \`skus\`, reemplaza \*\*completamente\*\* la lista de SKUs asociados al producto (operación de sincronización). Los SKUs no incluidos en el listado serán desvinculados del producto (aunque no eliminados del inventario). Cada entrada puede ser una referencia a un SKU existente (string con el código) o un objeto con datos para crear un nuevo SKU.\
> \
> Tras cualquier modificación de SKUs, se recalculan automáticamente el peso total y el volumen total del producto.

```json
{"openapi":"3.0.0","info":{"title":"Zipnova Shipping API V2","version":"2.0.0"},"tags":[{"name":"Productos","description":"Gestión de productos y catálogo"}],"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":{"UpdateProductRequest":{"title":"Actualizar Producto","description":"Datos para actualizar un producto existente. Todos los campos son opcionales; solo se actualizan los que se envíen. Si se envía el campo skus, reemplaza completamente la lista de SKUs asociados al producto.","properties":{"name":{"description":"Nombre del producto","type":"string","maxLength":255},"reference_code":{"description":"Código de referencia único del producto en la cuenta. Se sanitiza automáticamente.","type":"string","maxLength":100},"skus":{"description":"Lista de SKUs del producto. Si se envía, reemplaza completamente los SKUs actuales (sync). Cada entrada puede referenciar un SKU existente (string) o crear uno nuevo (objeto).","type":"array","items":{"required":["sku","units"],"properties":{"sku":{"description":"Referencia al SKU: código de un SKU existente (string) u objeto con datos para crear uno nuevo.","oneOf":[{"description":"Código de un SKU existente en la cuenta","type":"string"},{"description":"Datos para crear un nuevo SKU inline.","required":["sku","name","classification_id","unit_declared_value","weight","length","width","height"],"properties":{"sku":{"description":"Código único del nuevo SKU","type":"string","maxLength":100},"name":{"description":"Nombre descriptivo del SKU","type":"string","maxLength":191},"classification_id":{"description":"ID de la clasificación","type":"integer"},"unit_declared_value":{"description":"Valor declarado por unidad","type":"number","minimum":0},"currency":{"description":"Moneda del valor declarado (ISO 4217)","type":"string","maxLength":3,"nullable":true},"weight":{"description":"Peso en gramos","type":"number","minimum":0.01},"length":{"description":"Largo en cm","type":"number","minimum":1},"width":{"description":"Ancho en cm","type":"number","minimum":1},"height":{"description":"Alto en cm. El volumen resultante debe ser ≥ 65 cm³.","type":"number","minimum":1},"barcode":{"description":"Código de barras","type":"string","maxLength":100,"nullable":true},"brand":{"description":"Marca del producto","type":"string","maxLength":100,"nullable":true},"supplier":{"description":"Nombre del proveedor","type":"string","maxLength":100,"nullable":true},"internal_sku":{"description":"SKU interno alternativo","type":"string","maxLength":20,"nullable":true},"tax_class_code":{"description":"Código de clase impositiva","type":"string","maxLength":50,"nullable":true},"stackable":{"description":"Indica si el SKU es apilable","type":"boolean","nullable":true},"management_type":{"description":"Tipo de gestión de inventario","type":"string","enum":["lot","serial"],"nullable":true},"units_per_master_case":{"description":"Unidades por caja máster","type":"integer","nullable":true},"master_cases_per_pallet":{"description":"Cajas máster por pallet (requiere units_per_master_case)","type":"integer","nullable":true},"total_units_per_pallet":{"description":"Total de unidades por pallet (excluyente con units_per_master_case)","type":"integer","nullable":true}},"type":"object"}]},"units":{"description":"Cantidad de unidades de este SKU en el producto","type":"integer","minimum":1}},"type":"object"},"minItems":1}},"type":"object"},"ProductResource":{"title":"Producto","description":"Representa un producto del catálogo con sus SKUs asociados.","properties":{"id":{"description":"ID del producto","type":"integer"},"account_id":{"description":"ID de la cuenta propietaria del producto","type":"integer"},"reference_code":{"description":"Código de referencia único del producto en la cuenta","type":"string"},"name":{"description":"Nombre del producto. Si es un producto de proveedor, el nombre del proveedor se antepone entre corchetes.","type":"string"},"skus":{"description":"SKUs que componen el producto. En el listado (GET /products/search) solo se retorna sku y units. En el detalle (GET /products/{id}) se incluye además el objeto data con atributos físicos.","type":"array","items":{"properties":{"sku":{"description":"Código del SKU","type":"string"},"units":{"description":"Cantidad de unidades de este SKU en el producto","type":"integer"},"data":{"description":"Atributos detallados del SKU (solo presente en el endpoint de detalle)","properties":{"name":{"description":"Nombre del SKU (se usa el nombre de almacén si está disponible)","type":"string"},"internal_sku":{"description":"SKU interno","type":"string","nullable":true},"barcode":{"description":"Código de barras (se usa el código de almacén si está disponible)","type":"string","nullable":true},"attributes":{"description":"Atributos físicos y de valor del SKU","properties":{"unit_declared_value":{"description":"Valor declarado por unidad","type":"number","nullable":true},"weight":{"description":"Peso en gramos (se usa el peso de almacén si está disponible)","type":"integer","nullable":true},"length":{"description":"Largo en cm","type":"number","nullable":true},"width":{"description":"Ancho en cm","type":"number","nullable":true},"height":{"description":"Alto en cm","type":"number","nullable":true}},"type":"object"},"classification":{"description":"Código de clasificación del SKU","type":"string","nullable":true},"stackable":{"description":"Indica si el SKU es apilable en el almacén","type":"boolean"}},"type":"object","nullable":true}},"type":"object"}},"created_at":{"description":"Fecha de creación del producto","type":"string","format":"date-time"},"updated_at":{"description":"Fecha de última actualización del producto","type":"string","format":"date-time"},"supplier":{"description":"Información del proveedor, si el producto proviene de un proveedor de dropshipping asociado a la cuenta","properties":{"id":{"description":"ID de la relación de proveedor","type":"integer"},"name":{"description":"Nombre del proveedor","type":"string"},"account_id":{"description":"ID de la cuenta del proveedor","type":"integer"}},"type":"object","nullable":true}},"type":"object"}}},"paths":{"/products/{product}":{"put":{"tags":["Productos"],"summary":"Actualizar producto","description":"Actualiza los datos de un producto existente de la cuenta autenticada. Todos los campos son opcionales; solo se actualizan los que se envíen.\n\nSi se envía el campo `skus`, reemplaza **completamente** la lista de SKUs asociados al producto (operación de sincronización). Los SKUs no incluidos en el listado serán desvinculados del producto (aunque no eliminados del inventario). Cada entrada puede ser una referencia a un SKU existente (string con el código) o un objeto con datos para crear un nuevo SKU.\n\nTras cualquier modificación de SKUs, se recalculan automáticamente el peso total y el volumen total del producto.","operationId":"8e3b779849d19e3581e0a0d366f58ab2","parameters":[{"name":"product","in":"path","description":"ID del producto","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProductRequest"}}}},"responses":{"200":{"description":"Producto actualizado exitosamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductResource"}}}},"401":{"description":"No autenticado."},"404":{"description":"Producto no encontrado o sin acceso."},"422":{"description":"Error de validación. Ver el objeto errors para detalles."},"500":{"description":"Error interno del servidor."}}}}}}
```

## Eliminar producto

> Elimina un producto específico para la cuenta autenticada.

```json
{"openapi":"3.0.0","info":{"title":"Zipnova Shipping API V2","version":"2.0.0"},"tags":[{"name":"Productos","description":"Gestión de productos y catálogo"}],"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"}}},"paths":{"/products/{product}":{"delete":{"tags":["Productos"],"summary":"Eliminar producto","description":"Elimina un producto específico para la cuenta autenticada.","operationId":"79dd9e2e2ed1cca6dc755e30faeab35b","parameters":[{"name":"product","in":"path","description":"ID del producto","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Producto eliminado exitosamente. Los SKUs con stock o asociados a otros productos no se eliminan del inventario (se retornan en `skus_kept`).","content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"product_id":{"type":"integer"},"skus_deleted":{"description":"Códigos de SKUs eliminados del inventario junto con el producto","type":"array","items":{"type":"string"}},"skus_kept":{"description":"Códigos de SKUs que no se eliminaron porque tienen stock o están asociados a otros productos","type":"array","items":{"type":"string"}},"skus_kept_reason":{"type":"string"}},"type":"object"}}}},"401":{"description":"No autenticado."},"404":{"description":"Producto no encontrado o sin acceso."},"500":{"description":"Error interno del servidor."}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.zipnova.com/envios/recursos-api/almacenes-e-inventario/gestion-de-productos-y-skus/productos.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
