Create Product

Endpoint: POST /api/v1/store/products

Description: Create a new product in the store (Admin only).

Headers:

  • Content-Type: application/json

  • Authorization: Bearer <access_token> (Admin role required)

Request Body:

{
  "product_name": "string (required, 3-100 chars)",
  "description": "string (required, 10-1000 chars)",
  "initial_price": "number (required, min: 0)",
  "final_price": "number (required, min: 0, must be <= initial_price)",
  "currency": "string (required, enum: USD|INR|EUR|GBP)",
  "in_stock": "boolean (optional, default: true)",
  "color": "string (optional)",
  "size": "string (optional)",
  "main_image": "string (required)",
  "other_images": "array of strings (optional)",
  "other_attributes": "array of objects (optional, format: {name: string, value: string})"
}

Success Response (201):

{
  "success": true,
  "message": "Product created successfully",
  "data": {
    "product": {
            "product_name": "string (required, 3-100 chars)",
            "description": "string (required, 10-1000 chars)",
            "initial_price": 45,
            "final_price": 40,
            "currency": "USD",
            "in_stock": true,
            "main_image": "https://plus.unsplash.com/premium_photo-1749846961895-464c17182d86?w=900&auto=format&fit=crop&q=60&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxmZWF0dXJlZC1waG90b3MtZmVlZHwzfHx8ZW58MHx8fHx8",
            "category_tree": [],
            "image_count": 1,
            "image_urls": [],
            "rating": 0,
            "all_available_sizes": [],
            "_id": "6854aff5e5a90aa4b840c504",
            "other_attributes": [],
            "createdAt": "2025-06-20T00:48:53.390Z",
            "updatedAt": "2025-06-20T00:48:53.390Z",
            "__v": 0,
            "discount_amount": 5,
            "discount_percentage": 11.11
        }
  }
}

Error Responses:

401 Unauthorized:

{
  "success": false,
  "message": "Access token required"
}

403 Forbidden:

{
  "success": false,
  "message": "Admin access required"
}

422 Validation Error:

{
  "success": false,
  "message": "Validation failed",
  "errors": {
    "product_name": "Product name is required",
    "final_price": "Final price cannot be greater than initial price"
  }
}
Updated on