GET /api/productos
Lista todos los productos de la empresa activa.Autenticación
Requiere autenticación con token Bearer y permisoproductos.view.
Parámetros de Consulta
Filtrar por almacén: 1 (Virtual) o 2 (Real). Default: 1
Término de búsqueda (busca en código, nombre, descripción)
Si es true, solo muestra productos con stock > 0. Default: false
Headers Opcionales
ID de la empresa a consultar (sobrescribe la empresa del usuario)
Respuesta
Indica si la operación fue exitosa
Lista de productos
Ejemplo de Uso
POST /api/productos
Crea un nuevo producto en ambos almacenes (virtual y real).Autenticación
Requiere autenticación con token Bearer y permisoproductos.create.
Parámetros del Body
Código interno del producto (único por empresa)
Nombre del producto
Descripción del producto
Código de barras
Precio de venta (mínimo 0)
Costo del producto (mínimo 0)
Precio por mayor
Precio por menor
Stock inicial (default: 0)
Stock mínimo para alertas
Stock máximo
ID de la categoría
ID de la unidad de medida
Código SUNAT del producto (para facturación electrónica)
Moneda: PEN o USD (default: PEN)
Imagen del producto (formatos: jpeg, png, jpg. Máximo: 2MB)
Proceso Automático
Al crear un producto:- Crea el producto en el almacén 1 (Virtual)
- Crea automáticamente un duplicado en el almacén 2 (Real) con el mismo código
- Ambos productos comparten el mismo código pero tienen IDs diferentes
- Permite gestionar stock virtual y real por separado
Respuesta
Indica si el producto fue creado exitosamente
Mensaje confirmando la creación en ambos almacenes
Producto creado (almacén virtual)
Ejemplo de Uso
GET /api/productos/
Obtiene el detalle de un producto específico.Autenticación
Requiere autenticación con token Bearer y permisoproductos.view.
Parámetros de Ruta
ID del producto
Respuesta
Indica si la operación fue exitosa
Producto con sus relaciones (categoría, unidad)
Ejemplo de Uso
PUT /api/productos/
Actualiza un producto existente.Autenticación
Requiere autenticación con token Bearer y permisoproductos.edit.
Parámetros de Ruta
ID del producto
Parámetros del Body
Los mismos que en POST (todos opcionales).Sincronización entre Almacenes
Si el producto tiene un duplicado en el otro almacén (mismo código):- Sincroniza: nombre, descripción, precio, costo, categoría, unidad, codsunat
- NO sincroniza: stock (cantidad), imagen
Respuesta
Indica si la actualización fue exitosa
Mensaje confirmando la actualización. Indica si se sincronizó con el otro almacén.
Producto actualizado
Indica si se sincronizó con el producto del otro almacén
Ejemplo de Uso
DELETE /api/productos/
Elimina un producto.Autenticación
Requiere autenticación con token Bearer y permisoproductos.delete.
Parámetros de Ruta
ID del producto
Respuesta
Indica si la eliminación fue exitosa
Mensaje confirmando la eliminación
Ejemplo de Uso
GET /api/productos/plantilla-excel
Descarga la plantilla Excel para importar productos masivamente.Autenticación
Requiere autenticación con token Bearer.Respuesta
Archivo Excel (.xlsx) con el formato requerido para importación.Ejemplo de Uso
GET /api/productos/descargar-excel
Exporta todos los productos de la empresa a Excel.Autenticación
Requiere autenticación con token Bearer.Respuesta
Archivo Excel (.xlsx) con todos los productos.Ejemplo de Uso
POST /api/productos/leer-excel
Lee un archivo Excel y valida los productos antes de importar.Autenticación
Requiere autenticación con token Bearer y permisoproductos.create.
Parámetros del Body
Archivo Excel (.xlsx) con los productos
Respuesta
Indica si la lectura fue exitosa
Lista de productos validados del Excel
Lista de errores de validación encontrados
Ejemplo de Uso
POST /api/productos/importar-lista
Importa masivamente una lista de productos desde Excel.Autenticación
Requiere autenticación con token Bearer y permisoproductos.create.
Parámetros del Body
Lista de productos validados (obtenida de
/leer-excel)Respuesta
Indica si la importación fue exitosa
Cantidad de productos importados exitosamente
Lista de productos que no se pudieron importar
Ejemplo de Uso
Códigos de Error
- 404 Not Found: Producto no encontrado.
- 422 Unprocessable Entity: Error de validación (código duplicado, datos inválidos).
- 500 Internal Server Error: Error en el servidor.
Notas Importantes
- Doble almacén: Cada producto se crea automáticamente en almacén 1 (Virtual) y almacén 2 (Real).
- Código único: El código debe ser único por empresa (no puede repetirse en ningún almacén).
- Sincronización: Al actualizar un producto, los datos generales se sincronizan entre almacenes, pero NO el stock.
- Stock: Use
/api/ventaspara descontar stock automáticamente, o gestione movimientos de stock directamente. - Las imágenes se almacenan en
storage/app/public/productos/. - El precio incluye IGV si la empresa lo tiene configurado.