API Endpoints
POST /api/users
Register new user (customer role)
Request Body:
{
"username": "alice",
"password": "secret123",
"fullname": "Alice Example",
"email": "alice@example.com"
}
Response:
{
"message": "User created successfully",
"user": {
"_id": "USER_ID",
"username": "alice",
"fullname": "Alice Example",
"email": "alice@example.com",
"role": "customer"
}
}
GET /api/users
List all users (admin only)
Headers:
Authorization: BearerResponse:
[
{
"_id": "USER_ID",
"username": "alice",
"fullname": "Alice Example",
"email": "alice@example.com",
"role": "customer"
},
...
]
PUT /api/users/:id
Update user info (self/admin)
Headers:
Authorization: BearerRequest Body:
{
"fullname": "Alice Updated",
"email": "alice@newmail.com"
}
Response:
{
"message": "User updated successfully",
"user": {
"_id": "USER_ID",
"username": "alice",
"fullname": "Alice Updated",
"email": "alice@newmail.com",
"role": "customer"
}
}
DELETE /api/users/:id
Delete user (admin only)
Headers:
Authorization: BearerResponse:
{
"message": "User deleted successfully",
"user": {
"_id": "USER_ID",
"username": "alice",
...
}
}
GET /api/users/whoami
Get current user (JWT required)
Headers:
Authorization: BearerResponse:
{
"_id": "USER_ID",
"username": "alice",
"fullname": "Alice Example",
"email": "alice@example.com",
"role": "customer"
}
POST /api/login
Authenticate user, get JWT
Request Body:
{
"username": "alice",
"password": "secret123"
}
Response:
{
"message": "login successful",
"token": "JWT_TOKEN",
"username": "alice",
"id": "USER_ID"
}
GET /api/products
List products (filters, sorting, pagination)
Query Params:
?category=electronics&sortBy=price&sort=desc&limit=5Response:
{
"message": "Products fetched successfully",
"products": [
{
"_id": "PRODUCT_ID",
"name": "Product Name",
"category": "electronics",
"price": 99.99,
"isActive": true,
"seller": {
"fullname": "Merchant Name"
}
},
...
]
}
POST /api/products
Create product (merchant/admin)
Headers:
Authorization: BearerRequest Body:
{
"name": "New Product",
"category": "electronics",
"price": 49.99,
"isActive": true
}
Response:
{
"message": "Product created successfully",
"product": {
"_id": "PRODUCT_ID",
"name": "New Product",
"category": "electronics",
"price": 49.99,
"isActive": true,
"seller": "USER_ID"
}
}
POST /api/products/bulk
Bulk create products (merchant/admin)
Headers:
Authorization: BearerRequest Body:
[
{
"name": "Product 1",
"category": "books",
"price": 10.0,
"isActive": true
},
{
"name": "Product 2",
"category": "books",
"price": 12.0,
"isActive": true
}
]
Response:
{
"message": "Products created successfully",
"products": [
{ "_id": "PRODUCT_ID_1", ... },
{ "_id": "PRODUCT_ID_2", ... }
]
}
PUT /api/products/:id
Update product (seller only)
Headers:
Authorization: BearerRequest Body:
{
"name": "Updated Product",
"price": 59.99
}
Response:
{
"message": "Product updated successfully",
"product": {
"_id": "PRODUCT_ID",
"name": "Updated Product",
...
}
}
DELETE /api/products/drop
Drop all products (admin, testing)
Headers:
Authorization: BearerResponse:
Status: 204 No Content