Customer Base URL

http://localhost:8000/api/customer

All routes below are prefixed with this base URL.

1️⃣ Register Customer

POST /register

Request Body

{ "fullname": "Saksham Garg", "email": "saksham@gmail.com", "phone": "9876543210", "password": "123456", "address": "Street 1", "city": "Meerut", "state": "UP", "pinCode": "10001", "country": "INDIA" }

Success Response (201)

{ "success": true, "message": "Customer registered successfully", "data": createdCustomer }

Error Responses

400 → Missing fields / Email exists

2️⃣ Send OTP

POST /send-otp

Request Body

{ route, "email": "saksham@gmail.com" OR "phone": "9876543210" }

Success Response (200)

{ "success": true, "message": "Successfully sent OTP." }

Error Responses

404 → Customer not found

3️⃣ Login Customer

POST /login

Request Body

{ "email": "saksham@gmail.com" OR "phone": "9876543210", "otp": "123456" }

Response (200)

{ "success": true, "message": "Customer logged In Successfully", "data": { customerData }, "accessToken": "jwt-token", "refreshToken": "jwt-token" }

Cookies Set

accessToken (httpOnly)
refreshToken (httpOnly)

Error Responses

404 → Customer not found / OTP mismatch

4️⃣ Refresh Access Token

POST /refresh-token

Request

Refresh token required in cookies or body

Response (200)

{ "success": true, "message": "Access token refreshed", "accessToken": "newToken", "refreshToken": "newToken" }

Error

401 → Invalid or expired refresh token

5️⃣ Logout

POST /logout (Protected - JWT Required)

Headers Required

Authorization: Bearer accessToken

Response

{ "success": true, "message": "Customer Logout Successfully" }

6️⃣ Update Profile

POST /update (Protected - JWT Required)

Headers

Authorization: Bearer accessToken

Request Body

{ "fullname": "Saksham Garg", "email": "saksham@gmail.com", "phone": "9876543210", "address": "New Address", "city": "Delhi", "state": "Delhi", "pinCode": "90001", "country": "India" }

Response (200)

{ "success": true, "message": "Profile updated successfully", "data": { updatedCustomer } }

7️⃣ Keep Login

POST /keeplogin (Protected - JWT Required)

Response

{ "success": true, "customer": { customerData } }

8️⃣ Change Password

POST /change-password (Protected - JWT Required)

Request Body

{ "oldPassword": "123456", "newPassword": "newPassword123" }

Response

{ "success": true, "message": "Password changed successfully" }

Error

400 → Invalid old password