🆕 Registrar producto¶
Este endpoint permite registrar un nuevo producto en la tienda. Solo los usuarios con rol Admin pueden acceder a esta funcionalidad.
🧠 ¿Cuándo usar este endpoint?¶
- Cuando quieres agregar un nuevo producto a tu catálogo.
 - Para definir el nombre, precio, descripción, imagen y categoría del producto.
 
🔐 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 registrar productos.
ADMINISTRATOR
📋 Headers¶
| Nombre | Valor | 
|---|---|
| Authorization | Bearer  | 
| Content-Type | multipart/form-data | 
📦 Body (form-data)¶
- Método: 
POST - Ruta: 
/products/register 
| Campo | Tipo | Descripción | Ejemplo | 
|---|---|---|---|
| sku | Texto | Código único del producto | CARTO-006 | 
| name | Texto | Nombre del producto | Camiseta | 
| description | Texto | Descripción del producto | Camiseta de algodón 100% | 
| price | Texto | Precio del producto (decimal) | 20.1 | 
| stock | Texto | Cantidad en inventario | 100 | 
| category | Texto | Categoría del producto | ZAP | 
| variants | Texto | JSON string con variantes | [{"color":"azul","size":"s","stock":50},{"color":"rojo","size":"m","stock":30}] | 
| images | Archivo | Una o más imágenes del producto | Seleccionar uno o varios archivos desde tu dispositivo | 
🚀 Ejemplo curl¶
curl -X POST "http://localhost:3000/api/products/register" \
-H "Authorization: Bearer <tu_token_jwt_aqui>" \
-F "sku=CARTO-006" \
-F "name=Camiseta" \
-F "description=Camiseta de algodón 100%" \
-F "price=20.1" \
-F "stock=100" \
-F "category=ZAP" \
-F "variants=[{\"color\":\"azul\",\"size\":\"s\",\"stock\":50},{\"color\":\"rojo\",\"size\":\"m\",\"stock\":30}]" \
-F "images=@/ruta/a/tu/imagen1.jpg" \
-F "images=@/ruta/a/tu/imagen2.jpg"
📄 Respuesta exitosa¶
HTTP/1.1 201 Created
Content-Type: application/json
{
  "message": "Producto creado exitosamente",
  "product": {
    "id": 15,
    "sku": "CARTO-006",
    "name": "Camiseta",
    "price": 20.1,
    "stock": 100,
    "category": "ZAP",
    "variants": [
      {"color":"azul","size":"s","stock":50},
      {"color":"rojo","size":"m","stock":30}
    ],
    "images": [
      {
        "id": "uuid-1",
        "url": "https://storage.firebase.com/imagen1.jpg"
      },
      {
        "id": "uuid-2",
        "url": "https://storage.firebase.com/imagen2.jpg"
      }
    ]
  }
}
❌ Respuesta de error¶
| Código | Motivo | Solución | 
|---|---|---|
| 400 | Datos faltantes o inválidos | Verifica que todos los campos requeridos estén bien escritos | 
| 401 | No autenticado | Asegúrate de enviar el token en el header | 
| 403 | Permiso denegado | Solo los usuarios Admin pueden registrar productos | 
💡 Tip "¿Sabías que...?"¶
Puedes usar este endpoint junto a la subida de imágenes por Firebase para crear productos completos con fotos.