Prima-Back
  1. Modulo Productos
Prima-Back
  • API DOCUMENTATION
  • Principal
    • /
      GET
  • Modulo Administradores
    • Vendedores Operaciones
      • Registro de Vendedores
      • Visualizar Vendedores
      • Visualizar Vendedores por Mongo ID
      • Visualizar Vendedores por cedula
      • Actualizar Vendedor
      • Eliminar Vendedor
    • Estadisticas
      • Estadisticas de documentos
      • Visualizacion de top Vendedores
      • Visualizar Ventas por Vendedor
    • Login Administradores
      POST
    • Recuperacion de contraseña Administrador
      POST
  • Modulo Vendedores
    • Inicio de Sesión Vendedores
      POST
    • Confirmación de Cuenta
      GET
    • Solicitud de restablecimiento de contraseña
      POST
    • Restablecimiento de contraseña
      POST
  • Modulo Clientes
    • Registrar Cliente
      POST
    • Visualizar Clientes
      GET
    • Visualizar Clientes por RUC
      GET
    • Actualizar Cliente
      PATCH
    • Eliminar Cliente
      DELETE
  • Modulo Productos
    • Crear Producto
      POST
    • Visualizar Productos
      GET
    • Visualizar Productos por ID
      GET
    • Actualizar Producto
      PATCH
    • Eliminar Producto
      DELETE
  • Modulo Pedidos
    • Crear Orden
      POST
    • Visualizar Ordenes
      GET
    • Visualizar Ordenes por ID
      GET
    • Actualizar Orden
      PATCH
    • Actualizar Estado de Orden
      PATCH
    • Eliminar Orden
      DELETE
  1. Modulo Productos

Actualizar Producto

PATCH
/api/products/update/{id}

🔧 PATCH /products/update/:id#

Actualiza los datos de un producto específico, identificado por su id numérico. Permite modificar campos individuales y subir una nueva imagen (reemplazando la anterior si existía).
🔐 Requiere autenticación JWT.

📍 Ruta#

PATCH /api/products/update/:id

📝 Descripción#

Este endpoint permite actualizar uno o más campos de un producto existente. Se puede incluir opcionalmente una nueva imagen que reemplazará la anterior en Cloudinary. Solo los campos enviados serán actualizados. Si ocurre un error, también se gestiona la eliminación de la imagen recientemente subida (si aplica).

🔒 Autenticación#

Middleware: verificarAutenticacion
Header requerido: Authorization: Bearer <token>

🧱 Middleware Aplicado#

1.
verificarAutenticacion
2.
upload.single('image') – Carga archivo de imagen (multipart/form-data)
3.
imageRequired
4.
updateProductValidator
5.
validateRequest
6.
processImage – Sube imagen a Cloudinary y la adjunta como req.imageUrl

🔢 Parámetros de Ruta#

ParámetroTipoRequeridoDescripción
idnumber✅ID numérico del producto a actualizar

📤 Request Body (multipart/form-data)#

CampoTipoRequeridoDescripción
product_namestring❌Nombre del producto
measurestring❌Unidad de medida (UND o REP)
pricenumber❌Precio (decimal positivo)
stocknumber❌Cantidad disponible (entero positivo)
imagefile❌Imagen nueva del producto
⚠️ Se debe proporcionar al menos un campo o una nueva imagen para procesar la actualización.

✅ Respuestas#

200 OK – Producto actualizado correctamente#

{
  "status": "success",
  "code": "PRODUCT_UPDATED",
  "msg": "Producto actualizado correctamente.",
  "data": {
    "id": 1,
    "product_name": "Pan integral",
    "measure": "UND",
    "price": 3.50,
    "stock": 40,
    "imgUrl": "https://res.cloudinary.com/..."
  },
  "info": {
    "fieldsUpdated": ["product_name", "stock"],
    "imageAction": "Reemplazada",
    "oldImageStatus": "Eliminada correctamente"
  }
}

200 OK – Sin cambios detectados#

{
  "status": "success",
  "code": "NO_CHANGES_DETECTED",
  "msg": "No se proporcionaron datos nuevos para actualizar.",
  "info": {
    "imageAction": "Ninguna",
    "fieldsAttempted": []
  }
}

❌ Errores#

400 Bad Request – ID inválido o datos incorrectos#

{
  "status": "error",
  "code": "VALIDATION_ERROR",
  "msg": "El id debe ser un número.",
  "errors": [
    {
      "field": "id",
      "msg": "El id debe ser un número entero válido."
    }
  ]
}

401 Unauthorized – Token inválido o ausente#

{
  "status": "error",
  "code": "AUTH_ERROR",
  "msg": "Acceso no autorizado. Se requiere token válido."
}

404 Not Found – Producto no encontrado#

{
  "status": "error",
  "code": "NOT_FOUND",
  "msg": "Producto con ID 22 no encontrado.",
  "info": {
    "productStatus": "No encontrado",
    "imageAction": "Eliminada (Producto No Encontrado)",
    "imageStatus": "Eliminada correctamente"
  }
}

500 Internal Server Error – Fallo en la actualización#

{
  "status": "error",
  "code": "SERVER_ERROR",
  "msg": "Ha ocurrido un error inesperado al actualizar el producto. Intente de nuevo más tarde.",
  "info": {
    "detail": "Fallo al conectar con base de datos.",
    "imageAction": "Error al eliminar (Error Actualización)",
    "imageStatus": "Fallo en eliminación de imagen nueva"
  }
}
Request Request Example
Shell
JavaScript
Java
Swift
curl --location --request PATCH 'https://back-prima-s-a.onrender.com/api/products/update/44444' \
--header 'User-Agent: insomnia/11.0.0' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY3NjI0ZjkwNzY2OWM5MDZjYTM0YThkZSIsInJvbCI6ImFkbWluIiwiaWF0IjoxNzQyOTMxNzg3LCJleHAiOjE3NDI5NjA1ODd9.nwBdY2DmiTAjEYfxGukAQHJkbrsLHqMosjmOSgzfbR4' \
--header 'Content-Type: multipart/form-data' \
--form 'id="444446"' \
--form 'product_name="APPLEs"' \
--form 'measure="Unit"' \
--form 'price="0.50"' \
--form 'stock="150"' \
--form 'image=""'
Response Response Example
{"message":"Producto actualizado correctamente","updatedProduct":{"id":44444,"product_name":"APPLEs","measure":"Unit","price":0.5,"stock":150,"imgUrl":"https://res.cloudinary.com/dyoyatqoz/image/upload/v1742932035/wycvsivjr0osrdnolfmi.png","__v":0}}

Request

Path Params
id
string 
required
Example:
44444
Header Params
Content-Type
string 
optional
Example:
multipart/form-data
User-Agent
string 
optional
Example:
insomnia/11.0.0
Authorization
string 
optional
Example:
Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY3NjI0ZjkwNzY2OWM5MDZjYTM0YThkZSIsInJvbCI6ImFkbWluIiwiaWF0IjoxNzQyOTMxNzg3LCJleHAiOjE3NDI5NjA1ODd9.nwBdY2DmiTAjEYfxGukAQHJkbrsLHqMosjmOSgzfbR4
Body Params multipart/form-data
id
string 
optional
Example:
444446
product_name
string 
optional
Example:
APPLEs
measure
string 
optional
Example:
Unit
price
string 
optional
Example:
0.50
stock
string 
optional
Example:
150
image
string 
optional

Responses

🟢200Success
application/json
Body
message
string 
required
updatedProduct
object 
required
id
integer 
required
product_name
string 
required
measure
string 
required
price
number 
required
stock
integer 
required
imgUrl
string 
required
__v
integer 
required
Modified at 2025-04-24 16:55:50
Previous
Visualizar Productos por ID
Next
Eliminar Producto
Built with