# SKUs y Stocks

## SKUs

## Listar SKUs

> Obtiene una lista paginada de SKUs de la cuenta autenticada con filtros opcionales. Los resultados se ordenan por fecha de creación descendente.

```json
{"openapi":"3.0.0","info":{"title":"Zipnova Shipping API V2","version":"2.0.0"},"tags":[{"name":"Inventario","description":"Gestión de inventario y stock"}],"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":{"SkuResource":{"title":"SKU","description":"Representa un SKU del inventario con sus atributos físicos, stock por depósito y detalles de lote/serie.","properties":{"id":{"description":"ID del SKU","type":"integer"},"account_id":{"description":"ID de la cuenta propietaria del SKU","type":"integer"},"sku":{"description":"Código único del SKU en la cuenta","type":"string"},"internal_sku":{"description":"SKU interno alternativo (ej. código propio del sistema del cliente)","type":"string","nullable":true},"barcode":{"description":"Código de barras del producto","type":"string","nullable":true},"name":{"description":"Nombre del SKU","type":"string"},"brand":{"description":"Marca del producto","type":"string","nullable":true},"supplier":{"description":"Proveedor del producto","type":"string","nullable":true},"classification":{"description":"Clasificación del SKU para operaciones de almacén (determina requisitos de manipulación)","properties":{"id":{"description":"ID de la clasificación","type":"integer"},"code":{"description":"Código de la clasificación","type":"string"},"name":{"description":"Nombre descriptivo de la clasificación","type":"string"}},"type":"object"},"attributes":{"description":"Atributos físicos y económicos del SKU","properties":{"unit_declared_value":{"description":"Valor declarado por unidad","type":"number","nullable":true},"unit_declared_value_currency":{"description":"Moneda del valor declarado (ISO 4217)","type":"string","nullable":true},"weight":{"description":"Peso del SKU en gramos","type":"number","nullable":true},"length":{"description":"Largo del SKU en cm","type":"number","nullable":true},"width":{"description":"Ancho del SKU en cm","type":"number","nullable":true},"height":{"description":"Alto del SKU en cm","type":"number","nullable":true}},"type":"object"},"total_qty_available":{"description":"Cantidad total disponible sumando todos los depósitos","type":"integer"},"stocks":{"description":"Stock del SKU desglosado por depósito","type":"array","items":{"properties":{"warehouse":{"description":"Código del depósito","type":"string"},"qty_available":{"description":"Cantidad disponible para asignar a envíos","type":"integer"},"qty_allocated":{"description":"Cantidad ya asignada a envíos pendientes","type":"integer"},"qty_total":{"description":"Cantidad total en el depósito (disponible + asignada)","type":"integer"},"details":{"description":"Detalles de lotes o números de serie (solo presente cuando el SKU tiene management_type configurado)","type":"array","items":{"properties":{"type":{"description":"Tipo de detalle (LOTE o SERIAL)","type":"string"},"number":{"description":"Número de lote o serie","type":"string"},"ellaboration_date":{"description":"Fecha de elaboración","type":"string","format":"date","nullable":true},"expiration_date":{"description":"Fecha de vencimiento","type":"string","format":"date","nullable":true},"qty_available":{"description":"Cantidad disponible de este lote/serie","type":"integer"},"qty_allocated":{"description":"Cantidad asignada de este lote/serie","type":"integer"},"qty_total":{"description":"Cantidad total de este lote/serie","type":"integer"}},"type":"object"}}},"type":"object"}},"classification_id":{"description":"ID de la clasificación (campo deprecado, usar el objeto classification)","type":"integer","deprecated":true}},"type":"object"}}},"paths":{"/inventory/search":{"get":{"tags":["Inventario"],"summary":"Listar SKUs","description":"Obtiene una lista paginada de SKUs de la cuenta autenticada con filtros opcionales. Los resultados se ordenan por fecha de creación descendente.","operationId":"aaae4c6c1ffc3f21c8e1c1898b7ca40d","parameters":[{"name":"sku","in":"query","description":"Filtrar por código SKU exacto","required":false,"schema":{"type":"string"}},{"name":"barcode","in":"query","description":"Filtrar por código de barras (busca en barcode y warehouse_barcode)","required":false,"schema":{"type":"string"}},{"name":"internal_id","in":"query","description":"Filtrar por código SKU interno","required":false,"schema":{"type":"string"}},{"name":"classification","in":"query","description":"Filtrar por ID de clasificación (busca en classification_id y warehouse_classification_id)","required":false,"schema":{"type":"integer"}},{"name":"per_page","in":"query","description":"Número de resultados por página (máximo 100, por defecto 20)","required":false,"schema":{"type":"integer","default":20,"maximum":100}},{"name":"page","in":"query","description":"Número de página","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Lista paginada de SKUs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkuResource"}}}},"401":{"description":"No autenticado."}}}}}}
```

## Obtener detalles de un SKU

> Obtiene los detalles completos de un SKU específico por ID, código SKU o código interno.

```json
{"openapi":"3.0.0","info":{"title":"Zipnova Shipping API V2","version":"2.0.0"},"tags":[{"name":"Inventario","description":"Gestión de inventario y stock"}],"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":{"SkuResource":{"title":"SKU","description":"Representa un SKU del inventario con sus atributos físicos, stock por depósito y detalles de lote/serie.","properties":{"id":{"description":"ID del SKU","type":"integer"},"account_id":{"description":"ID de la cuenta propietaria del SKU","type":"integer"},"sku":{"description":"Código único del SKU en la cuenta","type":"string"},"internal_sku":{"description":"SKU interno alternativo (ej. código propio del sistema del cliente)","type":"string","nullable":true},"barcode":{"description":"Código de barras del producto","type":"string","nullable":true},"name":{"description":"Nombre del SKU","type":"string"},"brand":{"description":"Marca del producto","type":"string","nullable":true},"supplier":{"description":"Proveedor del producto","type":"string","nullable":true},"classification":{"description":"Clasificación del SKU para operaciones de almacén (determina requisitos de manipulación)","properties":{"id":{"description":"ID de la clasificación","type":"integer"},"code":{"description":"Código de la clasificación","type":"string"},"name":{"description":"Nombre descriptivo de la clasificación","type":"string"}},"type":"object"},"attributes":{"description":"Atributos físicos y económicos del SKU","properties":{"unit_declared_value":{"description":"Valor declarado por unidad","type":"number","nullable":true},"unit_declared_value_currency":{"description":"Moneda del valor declarado (ISO 4217)","type":"string","nullable":true},"weight":{"description":"Peso del SKU en gramos","type":"number","nullable":true},"length":{"description":"Largo del SKU en cm","type":"number","nullable":true},"width":{"description":"Ancho del SKU en cm","type":"number","nullable":true},"height":{"description":"Alto del SKU en cm","type":"number","nullable":true}},"type":"object"},"total_qty_available":{"description":"Cantidad total disponible sumando todos los depósitos","type":"integer"},"stocks":{"description":"Stock del SKU desglosado por depósito","type":"array","items":{"properties":{"warehouse":{"description":"Código del depósito","type":"string"},"qty_available":{"description":"Cantidad disponible para asignar a envíos","type":"integer"},"qty_allocated":{"description":"Cantidad ya asignada a envíos pendientes","type":"integer"},"qty_total":{"description":"Cantidad total en el depósito (disponible + asignada)","type":"integer"},"details":{"description":"Detalles de lotes o números de serie (solo presente cuando el SKU tiene management_type configurado)","type":"array","items":{"properties":{"type":{"description":"Tipo de detalle (LOTE o SERIAL)","type":"string"},"number":{"description":"Número de lote o serie","type":"string"},"ellaboration_date":{"description":"Fecha de elaboración","type":"string","format":"date","nullable":true},"expiration_date":{"description":"Fecha de vencimiento","type":"string","format":"date","nullable":true},"qty_available":{"description":"Cantidad disponible de este lote/serie","type":"integer"},"qty_allocated":{"description":"Cantidad asignada de este lote/serie","type":"integer"},"qty_total":{"description":"Cantidad total de este lote/serie","type":"integer"}},"type":"object"}}},"type":"object"}},"classification_id":{"description":"ID de la clasificación (campo deprecado, usar el objeto classification)","type":"integer","deprecated":true}},"type":"object"}}},"paths":{"/inventory/{sku}":{"get":{"tags":["Inventario"],"summary":"Obtener detalles de un SKU","description":"Obtiene los detalles completos de un SKU específico por ID, código SKU o código interno.","operationId":"5fe2f6c92a6f84b7a351686036d4a18b","parameters":[{"name":"sku","in":"path","description":"ID, código SKU o código interno del SKU","required":true,"schema":{"type":"string"}},{"name":"find_by","in":"query","description":"Forzar campo de búsqueda","required":false,"schema":{"type":"string","enum":["sku","internal_sku"]}}],"responses":{"200":{"description":"Detalles del SKU","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkuResource"}}}},"401":{"description":"No autenticado"},"403":{"description":"Prohibido"},"404":{"description":"SKU no encontrado"}}}}}}
```

## Crear un nuevo SKU

> Crea un nuevo SKU en el inventario de la cuenta autenticada.\
> \
> \*\*Clasificación\*\*: se puede indicar mediante \`classification\` (código, recomendado) o \`classification\_id\` (ID numérico). Se debe enviar al menos uno de los dos.\
> \
> \*\*Volumen mínimo\*\*: el producto del largo × ancho × alto debe ser ≥ 65 cm³.\
> \
> \*\*Apilabilidad\*\*: si \`stackable\` es \`true\` y no se envían \`stack\_limit\_for\_storage\`/\`stack\_limit\_for\_packing\`, se aplican los valores por defecto del sistema. \`stack\_height\_increment\` se inicializa con el valor de \`height\` si no se especifica.\
> \
> \*\*Información de pallet\*\* (excluyentes entre sí):\
> \- Opción A: enviar \`units\_per\_master\_case\` + \`master\_cases\_per\_pallet\` (el sistema calcula \`total\_units\_per\_pallet\`).\
> \- Opción B: enviar solo \`total\_units\_per\_pallet\`.

```json
{"openapi":"3.0.0","info":{"title":"Zipnova Shipping API V2","version":"2.0.0"},"tags":[{"name":"Inventario","description":"Gestión de inventario y stock"}],"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":{"SkuResource":{"title":"SKU","description":"Representa un SKU del inventario con sus atributos físicos, stock por depósito y detalles de lote/serie.","properties":{"id":{"description":"ID del SKU","type":"integer"},"account_id":{"description":"ID de la cuenta propietaria del SKU","type":"integer"},"sku":{"description":"Código único del SKU en la cuenta","type":"string"},"internal_sku":{"description":"SKU interno alternativo (ej. código propio del sistema del cliente)","type":"string","nullable":true},"barcode":{"description":"Código de barras del producto","type":"string","nullable":true},"name":{"description":"Nombre del SKU","type":"string"},"brand":{"description":"Marca del producto","type":"string","nullable":true},"supplier":{"description":"Proveedor del producto","type":"string","nullable":true},"classification":{"description":"Clasificación del SKU para operaciones de almacén (determina requisitos de manipulación)","properties":{"id":{"description":"ID de la clasificación","type":"integer"},"code":{"description":"Código de la clasificación","type":"string"},"name":{"description":"Nombre descriptivo de la clasificación","type":"string"}},"type":"object"},"attributes":{"description":"Atributos físicos y económicos del SKU","properties":{"unit_declared_value":{"description":"Valor declarado por unidad","type":"number","nullable":true},"unit_declared_value_currency":{"description":"Moneda del valor declarado (ISO 4217)","type":"string","nullable":true},"weight":{"description":"Peso del SKU en gramos","type":"number","nullable":true},"length":{"description":"Largo del SKU en cm","type":"number","nullable":true},"width":{"description":"Ancho del SKU en cm","type":"number","nullable":true},"height":{"description":"Alto del SKU en cm","type":"number","nullable":true}},"type":"object"},"total_qty_available":{"description":"Cantidad total disponible sumando todos los depósitos","type":"integer"},"stocks":{"description":"Stock del SKU desglosado por depósito","type":"array","items":{"properties":{"warehouse":{"description":"Código del depósito","type":"string"},"qty_available":{"description":"Cantidad disponible para asignar a envíos","type":"integer"},"qty_allocated":{"description":"Cantidad ya asignada a envíos pendientes","type":"integer"},"qty_total":{"description":"Cantidad total en el depósito (disponible + asignada)","type":"integer"},"details":{"description":"Detalles de lotes o números de serie (solo presente cuando el SKU tiene management_type configurado)","type":"array","items":{"properties":{"type":{"description":"Tipo de detalle (LOTE o SERIAL)","type":"string"},"number":{"description":"Número de lote o serie","type":"string"},"ellaboration_date":{"description":"Fecha de elaboración","type":"string","format":"date","nullable":true},"expiration_date":{"description":"Fecha de vencimiento","type":"string","format":"date","nullable":true},"qty_available":{"description":"Cantidad disponible de este lote/serie","type":"integer"},"qty_allocated":{"description":"Cantidad asignada de este lote/serie","type":"integer"},"qty_total":{"description":"Cantidad total de este lote/serie","type":"integer"}},"type":"object"}}},"type":"object"}},"classification_id":{"description":"ID de la clasificación (campo deprecado, usar el objeto classification)","type":"integer","deprecated":true}},"type":"object"}}},"paths":{"/inventory":{"post":{"tags":["Inventario"],"summary":"Crear un nuevo SKU","description":"Crea un nuevo SKU en el inventario de la cuenta autenticada.\n\n**Clasificación**: se puede indicar mediante `classification` (código, recomendado) o `classification_id` (ID numérico). Se debe enviar al menos uno de los dos.\n\n**Volumen mínimo**: el producto del largo × ancho × alto debe ser ≥ 65 cm³.\n\n**Apilabilidad**: si `stackable` es `true` y no se envían `stack_limit_for_storage`/`stack_limit_for_packing`, se aplican los valores por defecto del sistema. `stack_height_increment` se inicializa con el valor de `height` si no se especifica.\n\n**Información de pallet** (excluyentes entre sí):\n- Opción A: enviar `units_per_master_case` + `master_cases_per_pallet` (el sistema calcula `total_units_per_pallet`).\n- Opción B: enviar solo `total_units_per_pallet`.","operationId":"7cce87321e9a55821c4a94a14bd5a4f5","requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["sku","name","unit_declared_value","weight","length","width","height"],"properties":{"sku":{"description":"Código único del SKU en la cuenta. Se sanitiza automáticamente (mayúsculas, sin espacios).","type":"string","maxLength":100},"name":{"description":"Nombre descriptivo del SKU","type":"string","maxLength":100},"classification":{"description":"Código de clasificación del SKU (recomendado). Alternativa a classification_id. Usar GET /inventory/classifications para ver opciones.","type":"string"},"classification_id":{"description":"ID numérico de la clasificación. Alternativa a classification.","type":"integer"},"unit_declared_value":{"description":"Valor declarado por unidad (para seguro y aduanas)","type":"number","minimum":0},"currency":{"description":"Moneda del valor declarado (ISO 4217). Por defecto: moneda de la cuenta.","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 (largo × ancho × alto) debe ser ≥ 65 cm³.","type":"number","minimum":1},"barcode":{"description":"Código de barras del SKU","type":"string","maxLength":100,"nullable":true},"internal_sku":{"description":"Código SKU alternativo interno (para referencias cruzadas con otros sistemas)","type":"string","maxLength":20,"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 (para integraciones fiscales)","type":"string","maxLength":50,"nullable":true},"stackable":{"description":"Indica si el SKU puede apilarse en almacenamiento y empaque. Si es true, se aplican los límites de apilamiento.","type":"boolean","nullable":true},"stack_limit_for_storage":{"description":"Máximo de unidades apilables en almacenamiento. Solo aplica si stackable es true.","type":"integer","minimum":1,"nullable":true},"stack_limit_for_packing":{"description":"Máximo de unidades apilables al empacar. Solo aplica si stackable es true.","type":"integer","minimum":1,"nullable":true},"stack_height_increment":{"description":"Incremento de altura al apilar (en cm). Por defecto: igual al valor de height.","type":"number","minimum":1,"nullable":true},"management_type":{"description":"Tipo de gestión de inventario: por lote (lot) o por número de serie (serial).","type":"string","enum":["lot","serial"],"nullable":true},"units_per_master_case":{"description":"Unidades por caja máster. Requiere enviar también master_cases_per_pallet. Excluyente con total_units_per_pallet.","type":"integer","minimum":1,"nullable":true},"master_cases_per_pallet":{"description":"Cajas máster por pallet. Requiere enviar también units_per_master_case. Excluyente con total_units_per_pallet.","type":"integer","minimum":1,"nullable":true},"total_units_per_pallet":{"description":"Total de unidades por pallet (cálculo directo). Excluyente con units_per_master_case y master_cases_per_pallet.","type":"integer","minimum":1,"nullable":true},"avoid_reclassification":{"description":"Si es true, el sistema no reclasificará automáticamente el SKU aunque cambie de categoría.","type":"boolean","nullable":true}},"type":"object"}}}},"responses":{"201":{"description":"SKU creado exitosamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkuResource"}}}},"401":{"description":"No autenticado."},"422":{"description":"Error de validación. Ver el objeto errors para detalles (incluye validación de volumen mínimo y campos de pallet)."},"500":{"description":"Error interno del servidor."}}}}}}
```

## Actualizar un SKU

> Actualiza un SKU existente de la cuenta autenticada. Todos los campos son opcionales; solo se actualizan los que se envíen.\
> \
> El SKU se puede identificar por su ID numérico, su código (\`sku\`) o su código interno (\`internal\_sku\`). Si el código es numérico, se busca primero por ID.\
> \
> \*\*Clasificación\*\*: se puede cambiar mediante \`classification\` (código) o \`classification\_id\` (ID numérico). No es necesario enviar ninguno si no se quiere cambiar la clasificación.\
> \
> \*\*Reclasificación automática\*\*: si el depósito tiene configurada la reclasificación automática, el sistema puede actualizar la clasificación del SKU al recibir mercadería. Para evitarlo, enviar \`avoid\_reclassification: true\`.\
> \
> \*\*Volumen mínimo\*\*: si se actualizan las dimensiones, el producto largo × ancho × alto debe seguir siendo ≥ 65 cm³.\
> \
> \*\*Información de pallet\*\*: mismas reglas que al crear (excluyentes entre sí: \`total\_units\_per\_pallet\` vs \`units\_per\_master\_case\` + \`master\_cases\_per\_pallet\`).

```json
{"openapi":"3.0.0","info":{"title":"Zipnova Shipping API V2","version":"2.0.0"},"tags":[{"name":"Inventario","description":"Gestión de inventario y stock"}],"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":{"SkuResource":{"title":"SKU","description":"Representa un SKU del inventario con sus atributos físicos, stock por depósito y detalles de lote/serie.","properties":{"id":{"description":"ID del SKU","type":"integer"},"account_id":{"description":"ID de la cuenta propietaria del SKU","type":"integer"},"sku":{"description":"Código único del SKU en la cuenta","type":"string"},"internal_sku":{"description":"SKU interno alternativo (ej. código propio del sistema del cliente)","type":"string","nullable":true},"barcode":{"description":"Código de barras del producto","type":"string","nullable":true},"name":{"description":"Nombre del SKU","type":"string"},"brand":{"description":"Marca del producto","type":"string","nullable":true},"supplier":{"description":"Proveedor del producto","type":"string","nullable":true},"classification":{"description":"Clasificación del SKU para operaciones de almacén (determina requisitos de manipulación)","properties":{"id":{"description":"ID de la clasificación","type":"integer"},"code":{"description":"Código de la clasificación","type":"string"},"name":{"description":"Nombre descriptivo de la clasificación","type":"string"}},"type":"object"},"attributes":{"description":"Atributos físicos y económicos del SKU","properties":{"unit_declared_value":{"description":"Valor declarado por unidad","type":"number","nullable":true},"unit_declared_value_currency":{"description":"Moneda del valor declarado (ISO 4217)","type":"string","nullable":true},"weight":{"description":"Peso del SKU en gramos","type":"number","nullable":true},"length":{"description":"Largo del SKU en cm","type":"number","nullable":true},"width":{"description":"Ancho del SKU en cm","type":"number","nullable":true},"height":{"description":"Alto del SKU en cm","type":"number","nullable":true}},"type":"object"},"total_qty_available":{"description":"Cantidad total disponible sumando todos los depósitos","type":"integer"},"stocks":{"description":"Stock del SKU desglosado por depósito","type":"array","items":{"properties":{"warehouse":{"description":"Código del depósito","type":"string"},"qty_available":{"description":"Cantidad disponible para asignar a envíos","type":"integer"},"qty_allocated":{"description":"Cantidad ya asignada a envíos pendientes","type":"integer"},"qty_total":{"description":"Cantidad total en el depósito (disponible + asignada)","type":"integer"},"details":{"description":"Detalles de lotes o números de serie (solo presente cuando el SKU tiene management_type configurado)","type":"array","items":{"properties":{"type":{"description":"Tipo de detalle (LOTE o SERIAL)","type":"string"},"number":{"description":"Número de lote o serie","type":"string"},"ellaboration_date":{"description":"Fecha de elaboración","type":"string","format":"date","nullable":true},"expiration_date":{"description":"Fecha de vencimiento","type":"string","format":"date","nullable":true},"qty_available":{"description":"Cantidad disponible de este lote/serie","type":"integer"},"qty_allocated":{"description":"Cantidad asignada de este lote/serie","type":"integer"},"qty_total":{"description":"Cantidad total de este lote/serie","type":"integer"}},"type":"object"}}},"type":"object"}},"classification_id":{"description":"ID de la clasificación (campo deprecado, usar el objeto classification)","type":"integer","deprecated":true}},"type":"object"}}},"paths":{"/inventory/{sku}":{"put":{"tags":["Inventario"],"summary":"Actualizar un SKU","description":"Actualiza un SKU existente de la cuenta autenticada. Todos los campos son opcionales; solo se actualizan los que se envíen.\n\nEl SKU se puede identificar por su ID numérico, su código (`sku`) o su código interno (`internal_sku`). Si el código es numérico, se busca primero por ID.\n\n**Clasificación**: se puede cambiar mediante `classification` (código) o `classification_id` (ID numérico). No es necesario enviar ninguno si no se quiere cambiar la clasificación.\n\n**Reclasificación automática**: si el depósito tiene configurada la reclasificación automática, el sistema puede actualizar la clasificación del SKU al recibir mercadería. Para evitarlo, enviar `avoid_reclassification: true`.\n\n**Volumen mínimo**: si se actualizan las dimensiones, el producto largo × ancho × alto debe seguir siendo ≥ 65 cm³.\n\n**Información de pallet**: mismas reglas que al crear (excluyentes entre sí: `total_units_per_pallet` vs `units_per_master_case` + `master_cases_per_pallet`).","operationId":"ead2586b5d32412a37471a163ec3f7bc","parameters":[{"name":"sku","in":"path","description":"ID numérico, código SKU o código interno del SKU a actualizar","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"Nombre descriptivo del SKU","type":"string","maxLength":100},"classification":{"description":"Código de clasificación. Alternativa a classification_id.","type":"string"},"classification_id":{"description":"ID numérico de la clasificación. Alternativa a classification.","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","type":"number","minimum":1},"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 puede apilarse","type":"boolean","nullable":true},"stack_limit_for_storage":{"description":"Máximo de unidades apilables en almacenamiento","type":"integer","minimum":1,"nullable":true},"stack_limit_for_packing":{"description":"Máximo de unidades apilables al empacar","type":"integer","minimum":1,"nullable":true},"stack_height_increment":{"description":"Incremento de altura al apilar (en cm)","type":"number","minimum":1,"nullable":true},"management_type":{"description":"Tipo de gestión de inventario: por lote (lot) o por número de serie (serial).","type":"string","enum":["lot","serial"],"nullable":true},"units_per_master_case":{"description":"Unidades por caja máster. Requiere master_cases_per_pallet. Excluyente con total_units_per_pallet.","type":"integer","minimum":1,"nullable":true},"master_cases_per_pallet":{"description":"Cajas máster por pallet. Requiere units_per_master_case. Excluyente con total_units_per_pallet.","type":"integer","minimum":1,"nullable":true},"total_units_per_pallet":{"description":"Total de unidades por pallet. Excluyente con units_per_master_case y master_cases_per_pallet.","type":"integer","minimum":1,"nullable":true},"avoid_reclassification":{"description":"Si es true, evita que el depósito reclasifique automáticamente el SKU.","type":"boolean","nullable":true}},"type":"object"}}}},"responses":{"200":{"description":"SKU actualizado exitosamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkuResource"}}}},"401":{"description":"No autenticado."},"404":{"description":"SKU no encontrado."},"422":{"description":"Error de validación. Ver el objeto errors para detalles (incluye validación de volumen mínimo y campos de pallet)."},"500":{"description":"Error interno del servidor."}}}}}}
```

## Eliminar un SKU

> Elimina permanentemente un SKU del inventario. La operación falla (409) si el SKU no puede eliminarse por alguna de estas razones:\
> \- Tiene stock disponible en algún depósito.\
> \- Tiene movimientos de inventario registrados.\
> \- Está asociado a uno o más productos activos.\
> \- Está referenciado en órdenes o envíos pendientes.\
> \
> El campo \`reasons\` en la respuesta 409 detalla por qué no puede eliminarse.

```json
{"openapi":"3.0.0","info":{"title":"Zipnova Shipping API V2","version":"2.0.0"},"tags":[{"name":"Inventario","description":"Gestión de inventario y stock"}],"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":{"/inventory/{sku}":{"delete":{"tags":["Inventario"],"summary":"Eliminar un SKU","description":"Elimina permanentemente un SKU del inventario. La operación falla (409) si el SKU no puede eliminarse por alguna de estas razones:\n- Tiene stock disponible en algún depósito.\n- Tiene movimientos de inventario registrados.\n- Está asociado a uno o más productos activos.\n- Está referenciado en órdenes o envíos pendientes.\n\nEl campo `reasons` en la respuesta 409 detalla por qué no puede eliminarse.","operationId":"ed003b294ff6de1c8e07e4bed27913e5","parameters":[{"name":"sku","in":"path","description":"ID numérico, código SKU o código interno del SKU a eliminar","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"SKU eliminado exitosamente.","content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"data":{"properties":{"deleted_sku":{"description":"Código del SKU eliminado","type":"string"}},"type":"object"}},"type":"object"}}}},"401":{"description":"No autenticado."},"404":{"description":"SKU no encontrado."},"409":{"description":"Conflicto: el SKU no puede eliminarse. Ver el campo reasons para el detalle.","content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"data":{"properties":{"sku_code":{"description":"Código del SKU que no pudo eliminarse","type":"string"},"reasons":{"type":"array","items":{"type":"string"}}},"type":"object"}},"type":"object"}}}},"500":{"description":"Error interno del servidor."}}}}}}
```

## Listar clasificaciones de SKUs

> Obtiene una lista de todos los tipos de clasificación de SKUs disponibles.

```json
{"openapi":"3.0.0","info":{"title":"Zipnova Shipping API V2","version":"2.0.0"},"tags":[{"name":"Inventario","description":"Gestión de inventario y stock"}],"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":{"ClassificationResource":{"title":"Clasificación de SKU","description":"Tipo de clasificación de SKU para operaciones de almacén. La clasificación determina los requisitos especiales de manipulación y almacenamiento.","properties":{"id":{"description":"ID de la clasificación","type":"integer"},"code":{"description":"Código de la clasificación, utilizado en la API para referenciar la clasificación","type":"string"},"name":{"description":"Nombre descriptivo de la clasificación","type":"string"},"description":{"description":"Descripción detallada de la clasificación","type":"string","nullable":true},"instructions":{"description":"Instrucciones operativas para el almacén","type":"string","nullable":true}},"type":"object"}}},"paths":{"/inventory/classifications":{"get":{"tags":["Inventario"],"summary":"Listar clasificaciones de SKUs","description":"Obtiene una lista de todos los tipos de clasificación de SKUs disponibles.","operationId":"569c50ff561d83934ca53b3b351060d6","responses":{"200":{"description":"Lista de clasificaciones","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ClassificationResource"}}}}},"401":{"description":"No autenticado"},"403":{"description":"Prohibido"}}}}}}
```

## Stocks y Movimientos

## Listar movimientos de un SKU

> Obtiene una lista paginada de movimientos para un SKU específico con filtros opcionales.

```json
{"openapi":"3.0.0","info":{"title":"Zipnova Shipping API V2","version":"2.0.0"},"tags":[{"name":"Inventario","description":"Gestión de inventario y stock"}],"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":{"SkuMovementResource":{"title":"Movimiento de SKU","description":"Representa un movimiento de inventario de un SKU en un depósito (entrada, salida, ajuste, etc.).","properties":{"id":{"description":"ID del movimiento","type":"integer"},"created_at":{"description":"Fecha y hora en que se registró el movimiento","type":"string","format":"date-time"},"sku":{"description":"Identificación del SKU afectado","properties":{"sku":{"description":"Código del SKU","type":"string"},"internal_sku":{"description":"SKU interno","type":"string","nullable":true},"account_id":{"description":"ID de la cuenta propietaria","type":"integer"}},"type":"object"},"warehouse":{"description":"Código del depósito donde ocurrió el movimiento","type":"string","nullable":true},"movement":{"description":"Detalle del movimiento de stock","properties":{"qty_changed":{"description":"Cantidad que cambió (positivo para entradas, negativo para salidas)","type":"integer"},"type":{"description":"Tipo de movimiento: IN (entrada) o OUT (salida)","type":"string"},"code":{"description":"Código del motivo del movimiento","type":"string"},"reason":{"description":"Descripción del motivo del movimiento","type":"string"},"comments":{"description":"Comentarios adicionales sobre el movimiento","type":"string","nullable":true}},"type":"object"}},"type":"object"}}},"paths":{"/inventory/{sku}/movements":{"get":{"tags":["Inventario"],"summary":"Listar movimientos de un SKU","description":"Obtiene una lista paginada de movimientos para un SKU específico con filtros opcionales.","operationId":"01427c7e52b416b3de556408dd62e59e","parameters":[{"name":"sku","in":"path","description":"ID, código SKU o código interno del SKU","required":true,"schema":{"type":"string"}},{"name":"find_by","in":"query","description":"Forzar campo de búsqueda","required":false,"schema":{"type":"string","enum":["sku","internal_sku"]}},{"name":"date_from","in":"query","description":"Fecha inicial (YYYY-MM-DD). Por defecto 180 días atrás.","required":false,"schema":{"type":"string","format":"date"}},{"name":"date_to","in":"query","description":"Fecha final (YYYY-MM-DD). Por defecto hoy.","required":false,"schema":{"type":"string","format":"date"}},{"name":"warehouse","in":"query","description":"Código del almacén para filtrar","required":false,"schema":{"type":"string"}},{"name":"per_page","in":"query","description":"Número de resultados por página (máx 100)","required":false,"schema":{"type":"integer","default":20}}],"responses":{"200":{"description":"Lista paginada de movimientos del SKU","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkuMovementResource"}}}},"401":{"description":"No autenticado"},"403":{"description":"Prohibido"},"404":{"description":"SKU no encontrado"}}}}}}
```

## Listar tipos de movimiento

> Obtiene una lista de todos los tipos de movimiento de inventario disponibles.

```json
{"openapi":"3.0.0","info":{"title":"Zipnova Shipping API V2","version":"2.0.0"},"tags":[{"name":"Inventario","description":"Gestión de inventario y stock"}],"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":{"MovementTypeResource":{"title":"Tipo de Movimiento","description":"Motivo o tipo de movimiento de inventario. Usar el campo code al referenciar un tipo de movimiento en otras operaciones.","properties":{"code":{"description":"Código del tipo de movimiento","type":"string"},"name":{"description":"Nombre descriptivo del tipo de movimiento","type":"string"}},"type":"object"}}},"paths":{"/inventory/movement_types":{"get":{"tags":["Inventario"],"summary":"Listar tipos de movimiento","description":"Obtiene una lista de todos los tipos de movimiento de inventario disponibles.","operationId":"bca9efbd02e50611b3927ef15a67ca49","responses":{"200":{"description":"Lista de tipos de movimiento","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MovementTypeResource"}}}}},"401":{"description":"No autenticado"},"403":{"description":"Prohibido"}}}}}}
```


---

# 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/skus-y-stocks.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.
