Ticket Base URL

http://localhost:8000/api/ticket

All routes below are prefixed with this base URL.

1️⃣ Create Ticket (Customer)

POST /create (Protected - Customer JWT Required)

Description

Create a new support ticket as an authenticated customer.

Request Headers

Authorization: Bearer <customer_jwt_token>

Request Body

{ "category": "Support", "subject": "Account Issue", "description": "I am facing an issue with my account." }

Success Response (201)

{ "success": true, "message": "Ticket created successfullly!", "data": { "_id": "6720b1c8f1c2b3a5e4d90130", "creatorId": "671fa1c8f1c2b3a5e4d90001", "creatorType": "customer", "category": "Support", "subject": "Account Issue", "description": "I am facing an issue with my account.", "priority": "low", "status": "created", "response": [], "createdAt": "2024-10-28T11:00:00.000Z", "updatedAt": "2024-10-28T11:00:00.000Z", "__v": 0 } }

Error Responses

400 → Ticket category is required / Subject is required / Description is required 401/403 → Invalid or missing customer JWT (verifyCustomerJWT) 500 → Ticket create failed!

2️⃣ Fetch Tickets (Customer)

GET /fetch (Protected - Customer JWT Required)

Description

Fetch all tickets associated with the authenticated customer’s team.

Request Headers

Authorization: Bearer <customer_jwt_token>

Query Params

No query parameters required.

Success Response (200)

{ "success": true, "message": "Ticket fetched successfullly!", "data": [ { "_id": "6720b1c8f1c2b3a5e4d90130", "creatorId": "671fa1c8f1c2b3a5e4d90001", "creatorType": "customer", "category": "Support", "subject": "Account Issue", "description": "I am facing an issue with my account.", "priority": "low", "status": "created", "response": [], "createdAt": "2024-10-28T11:00:00.000Z", "updatedAt": "2024-10-28T11:00:00.000Z", "__v": 0 } ] }

Error Responses

401/403 → Invalid or missing customer JWT (verifyCustomerJWT) 500 → Ticket fetch failed!

3️⃣ Add Reply to Ticket (Customer)

POST /create-reply (Protected - Customer JWT Required)

Description

Add a reply/response to an existing ticket as a customer.

Request Headers

Authorization: Bearer <customer_jwt_token>

Query Parameters

/create-reply?id=<ticketId>

Request Body

{ "description": "I want to add more details about my issue." }

Success Response (201)

{ "success": true, "message": "Response added successfully!", "data": { "_id": "6720b1c8f1c2b3a5e4d90130", "creatorId": "671fa1c8f1c2b3a5e4d90001", "creatorType": "customer", "category": "Support", "subject": "Account Issue", "description": "I am facing an issue with my account.", "priority": "low", "status": "created", "response": [ { "_id": "6720b321f1c2b3a5e4d90131", "creatorId": "671fa1c8f1c2b3a5e4d90001", "creatorType": "customer", "description": "I want to add more details about my issue.", "createdAt": "2024-10-28T11:05:00.000Z", "updatedAt": "2024-10-28T11:05:00.000Z" } ], "createdAt": "2024-10-28T11:00:00.000Z", "updatedAt": "2024-10-28T11:05:00.000Z", "__v": 1 } }

Error Responses

400 → All fields are required (description missing) 404 → Ticket not found 401/403 → Invalid or missing customer JWT (verifyCustomerJWT) 500 → Ticket create failed! (on reply)

4️⃣ Fetch All Tickets (Admin)

GET /admin-fetch (Protected - Admin JWT Required)

Description

Fetch all tickets in the system as an admin.

Request Headers

Authorization: Bearer <admin_jwt_token>

Success Response (200)

{ "success": true, "message": "Ticket fetched successfullly!", "data": [ { "_id": "6720b1c8f1c2b3a5e4d90130", "creatorId": "671fa1c8f1c2b3a5e4d90001", "creatorType": "customer", "category": "Support", "subject": "Account Issue", "description": "I am facing an issue with my account.", "priority": "low", "status": "created", "response": [], "createdAt": "2024-10-28T11:00:00.000Z", "updatedAt": "2024-10-28T11:00:00.000Z", "__v": 0 } ] }

Error Responses

401/403 → Invalid or missing admin JWT (verifyAdminJWT) 500 → Ticket fetch failed!

5️⃣ Add Reply to Ticket (Admin)

POST /admin-create-reply (Protected - Admin JWT Required)

Description

Add a reply/response to an existing ticket as an admin.

Request Headers

Authorization: Bearer <admin_jwt_token>

Query Parameters

/admin-create-reply?id=<ticketId>

Request Body

{ "description": "We are looking into your issue and will update you soon." }

Success Response (201)

{ "success": true, "message": "Response added successfully!", "data": { "_id": "6720b1c8f1c2b3a5e4d90130", "creatorId": "671fa1c8f1c2b3a5e4d90001", "creatorType": "customer", "category": "Support", "subject": "Account Issue", "description": "I am facing an issue with my account.", "priority": "low", "status": "created", "response": [ { "_id": "6720b473f1c2b3a5e4d90132", "creatorId": "671fb1d8f1c2b3a5e4d90050", "creatorType": "admin", "description": "We are looking into your issue and will update you soon.", "createdAt": "2024-10-28T11:10:00.000Z", "updatedAt": "2024-10-28T11:10:00.000Z" } ], "createdAt": "2024-10-28T11:00:00.000Z", "updatedAt": "2024-10-28T11:10:00.000Z", "__v": 2 } }

Error Responses

400 → All fields are required (description missing) 404 → Ticket not found 401/403 → Invalid or missing admin JWT (verifyAdminJWT) 500 → Ticket create failed! (on reply)