> 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/almacenes-e-inventario/gestion-de-productos-y-skus/skus-y-stocks.md).

# 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"}}}}}}
```
