Authentication API
This documentation provides comprehensive details for the Authentication API endpoints. The API supports user registration, login, password management, and email verification functionality with support for multiple user types (customer, seller, admin).
Base URL: http://localhost:8080
Auth Endpoints
Method | Endpoint | Description | Authentication Required |
---|---|---|---|
POST |
/auth/login |
Authenticate user and receive access token | No |
POST |
/auth/register |
Register a new user account | No |
GET |
/auth/otp-verification |
Verify OTP for account activation | No |
GET |
/auth/forget-password |
Request password reset verification code | No |
GET |
/auth/reset-password |
Reset password using verification code | No |
PUT |
/auth/change-password |
Change password for authenticated user | Yes |
Endpoint Details
1. User Login
POST /auth/login
Authenticate a user and receive an access token for subsequent API calls.
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
email |
string | Yes | User's email address |
password |
string | Yes | User's password |
userType |
string | Yes | Type of user (customer , seller , admin ) |
Example Request
curl -X 'POST' \
'http://localhost:8080/auth/login' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"email": "customer@gmail.com",
"password": "p1234",
"userType": "customer"
}'
Example Response
{
"isSuccess": true,
"statusCode": {
"value": 200,
"description": "OK"
},
"data": {
"user": {
"id": "ce563774-d3d5-442e-ad1a-b884bb0a53f0",
"email": "customer@gmail.com",
"userType": "customer"
},
"accessToken": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9..."
}
}
Response Fields
Field | Type | Description |
---|---|---|
isSuccess |
boolean | Indicates if the request was successful |
statusCode |
object | HTTP status code and description |
data.user |
object | User information |
data.accessToken |
string | JWT token for authentication |
2. User Registration
POST /auth/register
Register a new user account. Users can register with the same email for different roles.
Key Features
- Multiple user types supported (customer, seller, admin)
- Same email can be used for different user types
- Automatic email verification process
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
email |
string | Yes | User's email address |
password |
string | Yes | User's password |
userType |
string | Yes | Type of user (customer , seller , admin ) |
Example Request
curl -X 'POST' \
'http://localhost:8080/auth/register' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"email": "piash@gmail.com",
"password": "p1234",
"userType": "admin"
}'
Example Response
{
"isSuccess": true,
"statusCode": {
"value": 200,
"description": "OK"
},
"data": {
"id": "f48ec4f9-5482-4a23-9e49-e69f97bd20a6",
"email": "piash@gmail.com"
}
}
3. OTP Verification
GET /auth/otp-verification
Verify the OTP (One-Time Password) sent to user's email during registration.
Query Parameters
Parameter | Type | Required | Description |
---|---|---|---|
userId |
string | Yes | User ID received during registration |
otp |
string | Yes | OTP code sent to user's email |
Example Request
curl -X 'GET' \
'http://localhost:8080/auth/otp-verification?userId=3842e19b-2608-40f8-98bd-6a6b43939fec&otp=560674d' \
-H 'accept: application/json'
Example Response
{
"isSuccess": true,
"statusCode": {
"value": 200,
"description": "OK"
},
"data": true
}
4. Forget Password
GET /auth/forget-password
Request a password reset verification code. The code will be sent to the user's email address.
Query Parameters
Parameter | Type | Required | Description |
---|---|---|---|
email |
string | Yes | User's email address |
userType |
string | No | Specify user type if multiple accounts exist with same email |
Example Request
curl -X 'GET' \
'http://localhost:8080/auth/forget-password?email=piash@gmail.com&userType=customer' \
-H 'accept: application/json'
Example Response
{
"isSuccess": true,
"statusCode": {
"value": 200,
"description": "OK"
},
"data": "verification code sent to piash@gmail.com"
}
5. Reset Password
GET /auth/reset-password
Reset user password using the verification code sent via email.
Query Parameters
Parameter | Type | Required | Description |
---|---|---|---|
email |
string | Yes | User's email address |
otp |
string | Yes | Verification code from email |
newPassword |
string | Yes | New password |
userType |
string | No | Specify user type if multiple accounts exist |
Example Request
curl -X 'GET' \
'http://localhost:8080/auth/reset-password?email=piash599%40gmail.com&otp=9889&newPassword=p1234&userType=customer' \
-H 'accept: application/json'
Example Response
{
"isSuccess": true,
"statusCode": {
"value": 200,
"description": "OK"
},
"data": "Password change successful"
}
6. Change Password
PUT /auth/change-password
Change password for an authenticated user. Requires valid access token.
Query Parameters
Parameter | Type | Required | Description |
---|---|---|---|
oldPassword |
string | Yes | Current password |
newPassword |
string | Yes | New password |
Headers
Header | Value | Required |
---|---|---|
Authorization |
Bearer <access_token> |
Yes |
Example Request
curl -X 'PUT' \
'http://localhost:8080/auth/change-password?oldPassword=p1234&newPassword=newp1234' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9...'
Example Response
{
"isSuccess": true,
"statusCode": {
"value": 200,
"description": "OK"
},
"data": "Password has been changed"
}
Response Format
All API responses follow a consistent format:
{
"isSuccess": boolean,
"statusCode": {
"value": number,
"description": string
},
"data": any
}
Response Fields
Field | Type | Description |
---|---|---|
isSuccess |
boolean | Indicates if the operation was successful |
statusCode.value |
number | HTTP status code |
statusCode.description |
string | HTTP status description |
data |
any | Response data (varies by endpoint) |
Error Handling
The API returns appropriate HTTP status codes and error messages:
Status Code | Description |
---|---|
200 |
OK - Request successful |
400 |
Bad Request - Invalid parameters |
401 |
Unauthorized - Invalid or missing authentication |
404 |
Not Found - Resource not found |
500 |
Internal Server Error - Server error |