API documentation can also be at http://localhost:8000/docs#/ when running backend. This was generated documentation showing all 48 endpoints.
Base URL: http://localhost:8000
Most endpoints require authentication via JWT token in the Authorization header:
Authorization: Bearer <token>
Admin-only endpoints also require the user to have role: "admin".
Register a new user account.
- Body:
{ name, email, password } - Returns: User object with token
Login with email and password.
- Body:
{ email, password } - Returns: User object with token
Get current authenticated user details.
- Auth: Required
- Returns: User object
Get all users (admin only).
- Auth: Admin required
- Returns: Array of user objects
Get specific user by ID.
- Auth: Required
- Returns: User object
Get user by email address.
- Auth: Required
- Returns: User object
Set user role (admin/customer).
- Auth: Admin required
- Body:
{ role } - Returns: Updated user object
Promote user to admin role.
- Auth: Admin required
- Returns: Updated user object
Test endpoint for admin access.
- Auth: Admin required
- Returns: Success message
Get all products with optional sorting.
- Query:
sort(optional) - Sort order - Returns: Array of products
Search products by keyword.
- Params:
keyword- Search term - Query:
sort(optional) - Returns: Array of matching products
Get product by ID.
- Params:
product_id - Returns: Product object
Fetch and cache product image.
- Params:
product_id - Returns: Product with updated image link
Create new product (admin only).
- Auth: Admin required
- Body: Product object
- Returns: Created product
Update product (admin only).
- Auth: Admin required
- Params:
product_id - Body: Product fields to update
- Returns: Updated product
Delete product (admin only).
- Auth: Admin required
- Params:
product_id - Returns: Deleted product
Fetch and cache images for all products.
- Returns: Success message with count
Get current user's cart.
- Auth: Required (via user_token query param)
- Returns: Cart object with items
Add item to cart.
- Auth: Required
- Body:
{ user_token, product_id, quantity } - Returns: Updated cart
Update item quantity in cart.
- Auth: Required
- Params:
product_id - Body:
{ user_token, quantity } - Returns: Updated cart
Remove item from cart.
- Auth: Required
- Params:
product_id - Query:
user_token - Returns: Updated cart
Checkout cart and create transaction.
- Auth: Required
- Body:
{ user_token } - Returns: Transaction object
Get user's wishlist.
- Params:
user_id - Returns: Array of product IDs
Add product to wishlist.
- Body:
{ user_id, product_id } - Returns: Success message
Remove product from wishlist.
- Params:
user_id,product_id - Returns: Success message
Get current user's transactions.
- Auth: Required
- Returns: Array of transactions
Get specific transaction by ID.
- Auth: Required
- Params:
transaction_id - Returns: Transaction object
Get all reviews for a product.
- Params:
product_id - Returns: Array of reviews
Add review for a product.
- Auth: Required
- Params:
product_id - Body:
{ user_id, user_name, review_title, review_content } - Returns: Created review
Delete a review.
- Auth: Required
- Params:
product_id,review_id - Returns: Success message
Create refund request for a transaction.
- Auth: Required
- Body:
{ transaction_id, message } - Returns: Created refund object
Get current user's refund requests.
- Auth: Required
- Returns: Array of refunds
Get all refund requests (admin only).
- Auth: Admin required
- Returns: Array of all refunds
Approve a refund request (admin only).
- Auth: Admin required
- Params:
refund_id - Returns: Updated refund object
Deny a refund request (admin only).
- Auth: Admin required
- Params:
refund_id - Returns: Updated refund object
Get current user's penalties.
- Auth: Required
- Returns: Array of penalties
Get penalties for specific user.
- Auth: Required
- Params:
user_id - Returns: Array of penalties
Apply penalty to user (admin only).
- Auth: Admin required
- Body:
{ user_id, reason } - Returns: Created penalty object
Resolve a penalty (admin only).
- Auth: Admin required
- Params:
penalty_id - Returns: Updated penalty object
Get products grouped by category.
- Auth: Admin required
- Returns: Category statistics
Get product chart data.
- Auth: Admin required
- Returns: Chart data for products
Get data anomalies and issues.
- Auth: Admin required
- Returns: Array of anomalies
Get user engagement metrics.
- Auth: Admin required
- Returns: User statistics and metrics
Export data file (users, products, transactions, etc.).
- Auth: Admin required
- Query:
file- File name (e.g., "users", "products") - Returns: File download
Get list of available export files.
- Auth: Admin required
- Returns: Array of filenames
Get products with currency conversion.
- Query:
to- Target currency code (INR, USD, CAD, EUR, GBP) - Returns: Array of products with converted prices and exchange rate
{
"user_id": "uuid",
"name": "string",
"email": "string",
"role": "customer|admin",
"user_token": "string"
}{
"product_id": "string",
"product_name": "string",
"category": "string",
"discounted_price": 0,
"actual_price": 0,
"discount_percentage": 0,
"rating": 0,
"rating_count": 0,
"about_product": "string",
"img_link": "string",
"product_link": "string"
}{
"user_id": "uuid",
"items": [
{
"product_id": "string",
"quantity": 0
}
]
}{
"transaction_id": "uuid",
"user_id": "uuid",
"customer_name": "string",
"customer_email": "string",
"items": [],
"total_price": 0,
"timestamp": "ISO8601",
"estimated_delivery": "ISO8601",
"status": "completed|refunded"
}{
"refund_id": "uuid",
"transaction_id": "uuid",
"user_id": "uuid",
"message": "string",
"status": "pending|approved|denied",
"created_at": "ISO8601",
"updated_at": "ISO8601|null"
}{
"penalty_id": "uuid",
"user_id": "uuid",
"reason": "string",
"resolved": false,
"created_at": "ISO8601"
}{
"review_id": "uuid",
"product_id": "string",
"user_id": "uuid",
"user_name": "string",
"review_title": "string",
"review_content": "string",
"img_link": "string",
"product_link": "string",
"timestamp": "ISO8601"
}All endpoints return standard HTTP status codes:
200- Success201- Created400- Bad Request (validation error)401- Unauthorized (missing/invalid token)403- Forbidden (insufficient permissions)404- Not Found500- Internal Server Error
Error response format:
{
"detail": "Error message"
}