🔄 Actualizar producto¶
Este endpoint permite actualizar la información de un producto existente, incluyendo la imagen. Solo puede ser accedido por usuarios con rol Admin.
🧠 ¿Cuándo usar este endpoint?¶
- Para editar el nombre, precio, descripción o categoría de un producto.
 - Para reemplazar la imagen del producto.
 - Cuando se necesita corregir errores o actualizar datos.
 
🔐 Requiere autenticación¶
Debes enviar un token JWT válido en el encabezado:
Authorization: Bearer <token>
Debes asegurarte de que el usuario tenga el rol adecuado para actualizar productos.
ADMINISTRATOR
📋 Headers¶
| Nombre | Valor | 
|---|---|
| Authorization | Bearer  | 
| Content-Type | application/json | 
📦 Parámetros de la ruta¶
- Método: 
PUT - Ruta: 
/product/update/:id 
| Nombre | Tipo | Descripción | 
|---|---|---|
| id | UUID | ID del producto a actualizar (UUID) | 
📦 Body (form-data)¶
| Campo | Tipo | Requerido | Descripción | 
|---|---|---|---|
name | 
string | ❌ | Nuevo nombre del producto | 
description | 
string | ❌ | Descripción del producto | 
price | 
number | ❌ | Precio actualizado | 
stock | 
number | ❌ | Nueva cantidad en inventario | 
categoryId | 
number | ❌ | ID de la nueva categoría | 
image | 
archivo | ❌ | Nueva imagen del producto (.jpg, .png) | 
variants | 
array | ❌ | Nuevas variantes del producto (opcional) | 
🚀 Ejemplo curl¶
curl -X PUT "http://localhost:3000/api/product/update/7afc232e-c660-4c63-942c-abe5deeb7e3a" \
-H "Authorization: Bearer <tu_token_jwt_aqui>" \
-H "Content-Type: application/json" \
-d '{
  "name": "Camiseta Actualizada",
  "description": "Descripción actualizada de la camiseta",
  "price": 25.0,
  "stock": 60,
  "categoryId": 1,
  "image": "<url_de_la_nueva_imagen>",
  "variants": [
    {
      "color": "azul",
      "size": "s",
      "stock": 60
    },
    {
      "color": "amarilla",
      "size": "m",
      "stock": 40
    }
  ]
}'
📄 Respuesta exitosa¶
HTTP/1.1 200 OK
Content-Type: application/json
{
  "success": true,
  "message": "Product updated",
  "data": {
    "id": "7afc232e-c660-4c63-942c-abe5deeb7e3a",
    "name": "Camiseta Actualizada",
    "description": "Descripción actualizada de la camiseta",
    "price": 25.0,
    "stock": 60,
    "categoryId": 1,
    "variants": [
      {
        "color": "azul",
        "size": "s",
        "stock": 60
      },
      {
        "color": "amarilla",
        "size": "m",
        "stock": 40
      }
    ],
    "imageUrl": "<url_de_la_nueva_imagen>"
  }
}
❌ Respuesta de error¶
| Código | Motivo | Solución | 
|---|---|---|
| 400 | Datos inválidos | Verifica que todos los campos requeridos estén bien escritos | 
| 404 | Producto no encontrado | Asegúrate de que el ID del producto exista en la base de datos | 
| 403 | Acceso denegado | Solo los usuarios Admin pueden actualizar productos | 
| 401 | Token inválido o no enviado | Asegúrate de enviar el token en el header y que sea válido | 
💡 Tip "¿Sabías que...?"¶
Si no incluyes un campo en el form-data, ese dato no será modificado. Solo se actualiza lo que envías.