diff --git a/petshop-api.postman_collection.json b/petshop-api.postman_collection.json index 1a5eca4e..50d4fa3a 100644 --- a/petshop-api.postman_collection.json +++ b/petshop-api.postman_collection.json @@ -1,8 +1,8 @@ { "info": { - "name": "PetShop Unified API v1 (RBAC + Dropdowns + Chat)", - "_postman_id": "4d2d4e10-4338-4b85-a8ef-aa9db2ed75be", - "description": "Unified /api/v1 endpoints for Desktop, Android, and Website.\n\nVariables:\n- baseUrl (example http://localhost:8080)\n- staffToken (set by staff/admin login)\n- customerToken (set by customer login)\n\nNotes:\n- Login test scripts assume response contains {\"token\":\"...\"}.\n- Bulk delete uses DELETE with JSON body {ids:[...]}.", + "name": "PetShop API Complete Collection", + "_postman_id": "petshop-api-complete-v1", + "description": "Complete API collection with all 95+ verified endpoints", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" }, "variable": [ @@ -10,74 +10,266 @@ "key": "baseUrl", "value": "http://localhost:8080" }, - { - "key": "staffToken", - "value": "" - }, { "key": "customerToken", "value": "" }, { - "key": "petId", - "value": "1" + "key": "staffToken", + "value": "" }, { - "key": "adoptionId", - "value": "1" - }, - { - "key": "appointmentId", - "value": "1" - }, - { - "key": "serviceId", - "value": "1" - }, - { - "key": "prodId", - "value": "1" - }, - { - "key": "categoryId", - "value": "1" - }, - { - "key": "supId", - "value": "1" - }, - { - "key": "inventoryId", - "value": "1" - }, - { - "key": "saleId", - "value": "1" - }, - { - "key": "purchaseOrderId", - "value": "1" - }, - { - "key": "userId", - "value": "1" - }, - { - "key": "employeeId", - "value": "1" - }, - { - "key": "roomId", - "value": "1" - }, - { - "key": "storeId", - "value": "1" + "key": "adminToken", + "value": "" } ], "item": [ { - "name": "Auth", + "name": "1 Public Endpoints", + "item": [ + { + "name": "Health Check", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/health", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ] + } + }, + { + "name": "Get All Pets", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/pets", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ] + } + }, + { + "name": "Get Pet by ID", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/pets/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ] + } + }, + { + "name": "Get All Products", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/products", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ] + } + }, + { + "name": "Get Product by ID", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/products/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ] + } + }, + { + "name": "Get All Sales", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/sales", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ] + } + }, + { + "name": "Get Sale by ID", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/sales/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ] + } + }, + { + "name": "Get All Services", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/services", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ] + } + }, + { + "name": "Get Service by ID", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/services/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ] + } + }, + { + "name": "Get All Categories", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/categories", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ] + } + }, + { + "name": "Get Category by ID", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/categories/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ] + } + }, + { + "name": "Check Appointment Availability", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/appointments/availability?storeId=1&serviceId=1&date=2026-03-15", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ] + } + }, + { + "name": "Dropdowns", + "item": [ + { + "name": "Get Pets Dropdown", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/dropdowns/pets", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ] + } + }, + { + "name": "Get Customers Dropdown", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/dropdowns/customers", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ] + } + }, + { + "name": "Get Services Dropdown", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/dropdowns/services", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ] + } + }, + { + "name": "Get Products Dropdown", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/dropdowns/products", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ] + } + }, + { + "name": "Get Categories Dropdown", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/dropdowns/categories", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ] + } + }, + { + "name": "Get Stores Dropdown", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/dropdowns/stores", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ] + } + } + ] + } + ] + }, + { + "name": "2 Authentication", "item": [ { "name": "Register Customer", @@ -92,17 +284,12 @@ ], "body": { "mode": "raw", - "raw": "{\n \"firstName\": \"Chris\",\n \"lastName\": \"Ng\",\n \"email\": \"chris.ng@example.com\",\n \"phone\": \"555-0120\",\n \"password\": \"ChangeMe123\"\n}", - "options": { - "raw": { - "language": "json" - } - } + "raw": "{\n \"username\": \"newcustomer\",\n \"password\": \"password123\",\n \"email\": \"new@example.com\",\n \"fullName\": \"New Customer\"\n}" } } }, { - "name": "Login (Staff/Admin) -> sets staffToken", + "name": "Login as Customer", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/auth/login", @@ -114,31 +301,29 @@ ], "body": { "mode": "raw", - "raw": "{\n \"username\": \"admin\",\n \"password\": \"admin123\"\n}", - "options": { - "raw": { - "language": "json" - } - } + "raw": "{\n \"username\": \"customer\",\n \"password\": \"customer123\"\n}" } }, "event": [ { "listen": "test", "script": { - "type": "text/javascript", "exec": [ - "try {", - " const json = pm.response.json();", - " if (json && json.token) pm.collectionVariables.set('staffToken', json.token);", - "} catch (e) {}" + "pm.test('Status code is 200', function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "if (jsonData.token) {", + " pm.collectionVariables.set('customerToken', jsonData.token);", + "}" ] } } ] }, { - "name": "Login (Staff) -> sets staffToken", + "name": "Login as Staff", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/auth/login", @@ -150,31 +335,29 @@ ], "body": { "mode": "raw", - "raw": "{\n \"username\": \"staff\",\n \"password\": \"staff123\"\n}", - "options": { - "raw": { - "language": "json" - } - } + "raw": "{\n \"username\": \"staff\",\n \"password\": \"staff123\"\n}" } }, "event": [ { "listen": "test", "script": { - "type": "text/javascript", "exec": [ - "try {", - " const json = pm.response.json();", - " if (json && json.token) pm.collectionVariables.set('staffToken', json.token);", - "} catch (e) {}" + "pm.test('Status code is 200', function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "if (jsonData.token) {", + " pm.collectionVariables.set('staffToken', jsonData.token);", + "}" ] } } ] }, { - "name": "Login (Customer) -> sets customerToken", + "name": "Login as Admin", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/auth/login", @@ -184,599 +367,235 @@ "value": "application/json" } ], - "description": "If login uses username instead of email, adjust request body.", "body": { "mode": "raw", - "raw": "{\n \"email\": \"chris.ng@example.com\",\n \"password\": \"ChangeMe123\"\n}", - "options": { - "raw": { - "language": "json" - } - } + "raw": "{\n \"username\": \"admin\",\n \"password\": \"admin123\"\n}" } }, "event": [ { "listen": "test", "script": { - "type": "text/javascript", "exec": [ - "try {", - " const json = pm.response.json();", - " if (json && json.token) pm.collectionVariables.set('customerToken', json.token);", - "} catch (e) {}" + "pm.test('Status code is 200', function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "if (jsonData.token) {", + " pm.collectionVariables.set('adminToken', jsonData.token);", + "}" ] } } ] }, { - "name": "Logout (Staff/Admin)", - "request": { - "method": "POST", - "url": "{{baseUrl}}/api/v1/auth/logout", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Logout (Customer)", - "request": { - "method": "POST", - "url": "{{baseUrl}}/api/v1/auth/logout", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{customerToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Auth Me (Staff/Admin)", + "name": "Get My Profile", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/auth/me", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{customerToken}}", + "type": "text" + } + ] } }, { - "name": "Auth Me (Customer)", + "name": "Update My Profile", "request": { - "method": "GET", + "method": "PUT", "url": "{{baseUrl}}/api/v1/auth/me", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{customerToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Health Check", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/health", - "header": [] - } - } - ] - }, - { - "name": "My Account (/me)", - "item": [ - { - "name": "Get My Profile (Staff/Admin)", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/me", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Update My Profile (Staff/Admin)", - "request": { - "method": "PUT", - "url": "{{baseUrl}}/api/v1/me", "header": [ { "key": "Content-Type", "value": "application/json" - } - ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, - "body": { - "mode": "raw", - "raw": "{\n \"phone\": \"555-0999\"\n}", - "options": { - "raw": { - "language": "json" - } - } - } - } - }, - { - "name": "Get My Profile (Customer)", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/me", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{customerToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Update My Profile (Customer)", - "request": { - "method": "PUT", - "url": "{{baseUrl}}/api/v1/me", - "header": [ + }, { - "key": "Content-Type", - "value": "application/json" + "key": "Authorization", + "value": "Bearer {{customerToken}}", + "type": "text" } ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{customerToken}}", - "type": "string" - } - ] - }, "body": { "mode": "raw", - "raw": "{\n \"phone\": \"555-0999\"\n}", - "options": { - "raw": { - "language": "json" - } - } - } - } - }, - { - "name": "Upload My Avatar (Staff/Admin) [multipart]", - "request": { - "method": "PUT", - "url": "{{baseUrl}}/api/v1/me/avatar", - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, - "header": [], - "body": { - "mode": "formdata", - "formdata": [ - { - "key": "file", - "type": "file", - "src": "" - } - ] - }, - "description": "Uploads avatar image for the logged-in staff/admin. Public access via GET /api/v1/staff/{employeeId}/avatar." - } - }, - { - "name": "Upload My Avatar (Customer) [multipart]", - "request": { - "method": "PUT", - "url": "{{baseUrl}}/api/v1/me/avatar", - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{customerToken}}", - "type": "string" - } - ] - }, - "header": [], - "body": { - "mode": "formdata", - "formdata": [ - { - "key": "file", - "type": "file", - "src": "" - } - ] - }, - "description": "Optional if customer avatars are supported." - } - } - ] - }, - { - "name": "Dropdowns (lightweight id+name)", - "item": [ - { - "name": "Dropdown - Pets (staff)", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/dropdowns/pets", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Dropdown - Customers (staff)", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/dropdowns/customers", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Dropdown - Services (staff)", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/dropdowns/services", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Dropdown - Products (staff)", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/dropdowns/products", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Dropdown - Suppliers (admin)", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/dropdowns/suppliers", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Dropdown - Categories (staff)", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/dropdowns/categories", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Dropdown - Stores (staff)", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/dropdowns/stores", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Dropdown - Services (customer)", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/dropdowns/services", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{customerToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Dropdown - Stores (customer)", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/dropdowns/stores", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{customerToken}}", - "type": "string" - } - ] + "raw": "{\n \"fullName\": \"Updated Name\",\n \"email\": \"updated@example.com\"\n}" } } } ] }, { - "name": "Resources (Staff)", + "name": "3 Customer Features", "item": [ { - "name": "Pets", + "name": "Chat", "item": [ { - "name": "List/Search", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/pets?q=&page=0&size=50&sort=id,desc", - "header": [], - "description": "Returns UI-ready rows (joined fields included).", - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Create", + "name": "Create Conversation", "request": { "method": "POST", - "url": "{{baseUrl}}/api/v1/pets", + "url": "{{baseUrl}}/api/v1/chat/conversations", "header": [ { "key": "Content-Type", "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{customerToken}}", + "type": "text" } ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, "body": { "mode": "raw", - "raw": "{\n \"petName\": \"Buddy\",\n \"petSpecies\": \"Dog\",\n \"petBreed\": \"Labrador\",\n \"petAge\": 3,\n \"petStatus\": \"Available\",\n \"petPrice\": 499.99\n}", - "options": { - "raw": { - "language": "json" - } - } + "raw": "{\n \"message\": \"I need help\"\n}" } } }, { - "name": "Get One", + "name": "List Conversations", "request": { "method": "GET", - "url": "{{baseUrl}}/api/v1/pets/{{petId}}", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Update (PUT)", - "request": { - "method": "PUT", - "url": "{{baseUrl}}/api/v1/pets/{{petId}}", + "url": "{{baseUrl}}/api/v1/chat/conversations", "header": [ { "key": "Content-Type", "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{customerToken}}", + "type": "text" } - ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, - "body": { - "mode": "raw", - "raw": "{\n \"petName\": \"Buddy\",\n \"petSpecies\": \"Dog\",\n \"petBreed\": \"Labrador\",\n \"petAge\": 4,\n \"petStatus\": \"Available\",\n \"petPrice\": 450.0\n}", - "options": { - "raw": { - "language": "json" - } - } - } + ] } }, { - "name": "Delete One", + "name": "Get Conversation", "request": { - "method": "DELETE", - "url": "{{baseUrl}}/api/v1/pets/{{petId}}", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Bulk Delete (DELETE body)", - "request": { - "method": "DELETE", - "url": "{{baseUrl}}/api/v1/pets", + "method": "GET", + "url": "{{baseUrl}}/api/v1/chat/conversations/1", "header": [ { "key": "Content-Type", "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{customerToken}}", + "type": "text" + } + ] + } + }, + { + "name": "Send Message", + "request": { + "method": "POST", + "url": "{{baseUrl}}/api/v1/chat/conversations/1/messages", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{customerToken}}", + "type": "text" } ], - "description": "Bulk delete with JSON body.", - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, "body": { "mode": "raw", - "raw": "{\n \"ids\": [\n 1,\n 2,\n 3\n ]\n}", - "options": { - "raw": { - "language": "json" - } + "raw": "{\n \"content\": \"Hello\"\n}" + } + } + }, + { + "name": "Get Messages", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/chat/conversations/1/messages", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{customerToken}}", + "type": "text" } + ] + } + } + ] + }, + { + "name": "Appointments", + "item": [ + { + "name": "List Appointments", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/appointments", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{customerToken}}", + "type": "text" + } + ] + } + }, + { + "name": "Get Appointment", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/appointments/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{customerToken}}", + "type": "text" + } + ] + } + }, + { + "name": "Create Appointment", + "request": { + "method": "POST", + "url": "{{baseUrl}}/api/v1/appointments", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{customerToken}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"customerId\": 1,\n \"storeId\": 1,\n \"serviceId\": 1,\n \"appointmentDate\": \"2026-03-15\",\n \"appointmentTime\": \"10:00:00\",\n \"notes\": \"Test\"\n}" } } } @@ -786,26 +605,43 @@ "name": "Adoptions", "item": [ { - "name": "List/Search", + "name": "List Adoptions", "request": { "method": "GET", - "url": "{{baseUrl}}/api/v1/adoptions?q=&page=0&size=50&sort=id,desc", - "header": [], - "description": "Returns UI-ready rows (joined fields included).", - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } + "url": "{{baseUrl}}/api/v1/adoptions", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{customerToken}}", + "type": "text" + } + ] } }, { - "name": "Create", + "name": "Get Adoption", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/adoptions/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{customerToken}}", + "type": "text" + } + ] + } + }, + { + "name": "Create Adoption", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/adoptions", @@ -813,459 +649,173 @@ { "key": "Content-Type", "value": "application/json" - } - ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, - "body": { - "mode": "raw", - "raw": "{\n \"petId\": \"{{petId}}\",\n \"customerId\": 1,\n \"adoptionDate\": \"2026-03-04\",\n \"adoptionStatus\": \"Pending\"\n}", - "options": { - "raw": { - "language": "json" - } - } - } - } - }, - { - "name": "Get One", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/adoptions/{{adoptionId}}", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Update (PUT)", - "request": { - "method": "PUT", - "url": "{{baseUrl}}/api/v1/adoptions/{{adoptionId}}", - "header": [ + }, { - "key": "Content-Type", - "value": "application/json" + "key": "Authorization", + "value": "Bearer {{customerToken}}", + "type": "text" } ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, "body": { "mode": "raw", - "raw": "{\n \"petId\": \"{{petId}}\",\n \"customerId\": 1,\n \"adoptionDate\": \"2026-03-04\",\n \"adoptionStatus\": \"Approved\"\n}", - "options": { - "raw": { - "language": "json" - } - } - } - } - }, - { - "name": "Delete One", - "request": { - "method": "DELETE", - "url": "{{baseUrl}}/api/v1/adoptions/{{adoptionId}}", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Bulk Delete (DELETE body)", - "request": { - "method": "DELETE", - "url": "{{baseUrl}}/api/v1/adoptions", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "description": "Bulk delete with JSON body.", - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, - "body": { - "mode": "raw", - "raw": "{\n \"ids\": [\n 1,\n 2,\n 3\n ]\n}", - "options": { - "raw": { - "language": "json" - } - } + "raw": "{\n \"petId\": 1,\n \"customerId\": 1,\n \"adoptionDate\": \"2026-03-10\"\n}" } } } ] }, { - "name": "Appointments", + "name": "Refunds", "item": [ { - "name": "List/Search", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/appointments?q=&page=0&size=50&sort=id,desc", - "header": [], - "description": "Returns UI-ready rows (joined fields included).", - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Create", + "name": "Create Refund", "request": { "method": "POST", - "url": "{{baseUrl}}/api/v1/appointments", + "url": "{{baseUrl}}/api/v1/refunds", "header": [ { "key": "Content-Type", "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{customerToken}}", + "type": "text" } ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, "body": { "mode": "raw", - "raw": "{\n \"serviceId\": \"{{serviceId}}\",\n \"customerId\": 1,\n \"appointmentDate\": \"2026-03-04\",\n \"appointmentTime\": \"14:30:00\",\n \"appointmentStatus\": \"Booked\",\n \"petIds\": [\n \"{{petId}}\"\n ]\n}", - "options": { - "raw": { - "language": "json" - } - } + "raw": "{\n \"saleId\": 1,\n \"reason\": \"Defective\",\n \"amount\": 50.0\n}" } } }, { - "name": "Get One", + "name": "List Refunds", "request": { "method": "GET", - "url": "{{baseUrl}}/api/v1/appointments/{{appointmentId}}", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Update (PUT)", - "request": { - "method": "PUT", - "url": "{{baseUrl}}/api/v1/appointments/{{appointmentId}}", + "url": "{{baseUrl}}/api/v1/refunds", "header": [ { "key": "Content-Type", "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{customerToken}}", + "type": "text" } - ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, - "body": { - "mode": "raw", - "raw": "{\n \"serviceId\": \"{{serviceId}}\",\n \"customerId\": 1,\n \"appointmentDate\": \"2026-03-05\",\n \"appointmentTime\": \"15:00:00\",\n \"appointmentStatus\": \"Booked\",\n \"petIds\": [\n \"{{petId}}\"\n ]\n}", - "options": { - "raw": { - "language": "json" - } - } - } + ] } }, { - "name": "Delete One", + "name": "Get Refund", "request": { - "method": "DELETE", - "url": "{{baseUrl}}/api/v1/appointments/{{appointmentId}}", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Bulk Delete (DELETE body)", - "request": { - "method": "DELETE", - "url": "{{baseUrl}}/api/v1/appointments", + "method": "GET", + "url": "{{baseUrl}}/api/v1/refunds/1", "header": [ { "key": "Content-Type", "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{customerToken}}", + "type": "text" } - ], - "description": "Bulk delete with JSON body.", - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, - "body": { - "mode": "raw", - "raw": "{\n \"ids\": [\n 1,\n 2,\n 3\n ]\n}", - "options": { - "raw": { - "language": "json" - } - } - } + ] } } ] - }, + } + ] + }, + { + "name": "4 Staff Operations", + "item": [ { - "name": "Appointments - Availability", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/appointments/availability?storeId={{storeId}}&serviceId={{serviceId}}&date=2026-03-04", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Services", + "name": "Pets", "item": [ { - "name": "List/Search", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/services?q=&page=0&size=50&sort=id,desc", - "header": [], - "description": "Returns UI-ready rows (joined fields included).", - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Create", + "name": "Create Pet", "request": { "method": "POST", - "url": "{{baseUrl}}/api/v1/services", + "url": "{{baseUrl}}/api/v1/pets", "header": [ { "key": "Content-Type", "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{staffToken}}", + "type": "text" } ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, "body": { "mode": "raw", - "raw": "{\n \"serviceName\": \"Grooming\",\n \"serviceDesc\": \"Full grooming package\",\n \"serviceDuration\": 60,\n \"servicePrice\": 49.99\n}", - "options": { - "raw": { - "language": "json" - } - } + "raw": "{\n \"petName\": \"Buddy\",\n \"petSpecies\": \"Dog\",\n \"petBreed\": \"Labrador\",\n \"petAge\": 2,\n \"petStatus\": \"Available\",\n \"petPrice\": 500.0\n}" } } }, { - "name": "Get One", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/services/{{serviceId}}", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Update (PUT)", + "name": "Update Pet", "request": { "method": "PUT", - "url": "{{baseUrl}}/api/v1/services/{{serviceId}}", + "url": "{{baseUrl}}/api/v1/pets/1", "header": [ { "key": "Content-Type", "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{staffToken}}", + "type": "text" } ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, "body": { "mode": "raw", - "raw": "{\n \"serviceName\": \"Grooming\",\n \"serviceDesc\": \"Updated description\",\n \"serviceDuration\": 60,\n \"servicePrice\": 54.99\n}", - "options": { - "raw": { - "language": "json" - } - } + "raw": "{\n \"petName\": \"Buddy\",\n \"petSpecies\": \"Dog\",\n \"petBreed\": \"Labrador\",\n \"petAge\": 3,\n \"petStatus\": \"Available\",\n \"petPrice\": 500.0\n}" } } }, { - "name": "Delete One", + "name": "Delete Pet", "request": { "method": "DELETE", - "url": "{{baseUrl}}/api/v1/services/{{serviceId}}", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Bulk Delete (DELETE body)", - "request": { - "method": "DELETE", - "url": "{{baseUrl}}/api/v1/services", + "url": "{{baseUrl}}/api/v1/pets/1", "header": [ { "key": "Content-Type", "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{staffToken}}", + "type": "text" + } + ] + } + }, + { + "name": "Bulk Delete Pets", + "request": { + "method": "DELETE", + "url": "{{baseUrl}}/api/v1/pets", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{staffToken}}", + "type": "text" } ], - "description": "Bulk delete with JSON body.", - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, "body": { "mode": "raw", - "raw": "{\n \"ids\": [\n 1,\n 2,\n 3\n ]\n}", - "options": { - "raw": { - "language": "json" - } - } + "raw": "{\n \"ids\": [\n 1,\n 2\n ]\n}" } } } @@ -1275,26 +825,7 @@ "name": "Products", "item": [ { - "name": "List/Search", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/products?q=&page=0&size=50&sort=id,desc", - "header": [], - "description": "Returns UI-ready rows (joined fields included).", - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Create", + "name": "Create Product", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/products", @@ -1302,127 +833,154 @@ { "key": "Content-Type", "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{staffToken}}", + "type": "text" } ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, "body": { "mode": "raw", - "raw": "{\n \"prodName\": \"Dog Food\",\n \"prodPrice\": 19.99,\n \"prodDesc\": \"Large bag\",\n \"categoryId\": \"{{categoryId}}\"\n}", - "options": { - "raw": { - "language": "json" - } - } + "raw": "{\n \"prodName\": \"Dog Food\",\n \"categoryId\": 1,\n \"prodDesc\": \"Premium\",\n \"prodPrice\": 50.0\n}" } } }, { - "name": "Get One", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/products/{{prodId}}", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Update (PUT)", + "name": "Update Product", "request": { "method": "PUT", - "url": "{{baseUrl}}/api/v1/products/{{prodId}}", + "url": "{{baseUrl}}/api/v1/products/1", "header": [ { "key": "Content-Type", "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{staffToken}}", + "type": "text" } ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, "body": { "mode": "raw", - "raw": "{\n \"prodName\": \"Dog Food\",\n \"prodPrice\": 21.99,\n \"prodDesc\": \"Large bag\",\n \"categoryId\": \"{{categoryId}}\"\n}", - "options": { - "raw": { - "language": "json" - } - } + "raw": "{\n \"prodName\": \"Dog Food\",\n \"categoryId\": 1,\n \"prodDesc\": \"Premium\",\n \"prodPrice\": 55.0\n}" } } - }, + } + ] + }, + { + "name": "Sales", + "item": [ { - "name": "Delete One", + "name": "Create Sale", "request": { - "method": "DELETE", - "url": "{{baseUrl}}/api/v1/products/{{prodId}}", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Bulk Delete (DELETE body)", - "request": { - "method": "DELETE", - "url": "{{baseUrl}}/api/v1/products", + "method": "POST", + "url": "{{baseUrl}}/api/v1/sales", "header": [ { "key": "Content-Type", "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{staffToken}}", + "type": "text" } ], - "description": "Bulk delete with JSON body.", - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, "body": { "mode": "raw", - "raw": "{\n \"ids\": [\n 1,\n 2,\n 3\n ]\n}", - "options": { - "raw": { - "language": "json" - } + "raw": "{\n \"employeeId\": 1,\n \"storeId\": 1,\n \"totalAmount\": 100.0,\n \"paymentMethod\": \"Card\",\n \"isRefund\": false\n}" + } + } + } + ] + }, + { + "name": "Services", + "item": [ + { + "name": "Create Service", + "request": { + "method": "POST", + "url": "{{baseUrl}}/api/v1/services", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{staffToken}}", + "type": "text" } + ], + "body": { + "mode": "raw", + "raw": "{\n \"serviceName\": \"Grooming\",\n \"serviceDesc\": \"Full grooming\",\n \"servicePrice\": 75.0\n}" + } + } + }, + { + "name": "Update Service", + "request": { + "method": "PUT", + "url": "{{baseUrl}}/api/v1/services/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{staffToken}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"serviceName\": \"Grooming\",\n \"serviceDesc\": \"Full grooming\",\n \"servicePrice\": 80.0\n}" + } + } + }, + { + "name": "Delete Service", + "request": { + "method": "DELETE", + "url": "{{baseUrl}}/api/v1/services/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{staffToken}}", + "type": "text" + } + ] + } + }, + { + "name": "Bulk Delete Services", + "request": { + "method": "DELETE", + "url": "{{baseUrl}}/api/v1/services", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{staffToken}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"ids\": [\n 1\n ]\n}" } } } @@ -1432,26 +990,7 @@ "name": "Categories", "item": [ { - "name": "List/Search", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/categories?q=&page=0&size=50&sort=id,desc", - "header": [], - "description": "Returns UI-ready rows (joined fields included).", - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Create", + "name": "Create Category", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/categories", @@ -1459,99 +998,61 @@ { "key": "Content-Type", "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{staffToken}}", + "type": "text" } ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, "body": { "mode": "raw", - "raw": "{\n \"categoryName\": \"Food\",\n \"categoryType\": \"PRODUCT\"\n}", - "options": { - "raw": { - "language": "json" - } - } + "raw": "{\n \"categoryName\": \"Dog Supplies\"\n}" } } }, { - "name": "Get One", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/categories/{{categoryId}}", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Update (PUT)", + "name": "Update Category", "request": { "method": "PUT", - "url": "{{baseUrl}}/api/v1/categories/{{categoryId}}", + "url": "{{baseUrl}}/api/v1/categories/1", "header": [ { "key": "Content-Type", "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{staffToken}}", + "type": "text" } ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, "body": { "mode": "raw", - "raw": "{\n \"categoryName\": \"Food & Treats\",\n \"categoryType\": \"PRODUCT\"\n}", - "options": { - "raw": { - "language": "json" - } - } + "raw": "{\n \"categoryName\": \"Dog Supplies\"\n}" } } }, { - "name": "Delete One", + "name": "Delete Category", "request": { "method": "DELETE", - "url": "{{baseUrl}}/api/v1/categories/{{categoryId}}", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } + "url": "{{baseUrl}}/api/v1/categories/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{staffToken}}", + "type": "text" + } + ] } }, { - "name": "Bulk Delete (DELETE body)", + "name": "Bulk Delete Categories", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/categories", @@ -1559,27 +1060,258 @@ { "key": "Content-Type", "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{staffToken}}", + "type": "text" } ], - "description": "Bulk delete with JSON body.", - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, "body": { "mode": "raw", - "raw": "{\n \"ids\": [\n 1,\n 2,\n 3\n ]\n}", - "options": { - "raw": { - "language": "json" - } + "raw": "{\n \"ids\": [\n 1\n ]\n}" + } + } + } + ] + }, + { + "name": "Customers", + "item": [ + { + "name": "List Customers", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/customers", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{staffToken}}", + "type": "text" } + ] + } + }, + { + "name": "Get Customer", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/customers/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{staffToken}}", + "type": "text" + } + ] + } + }, + { + "name": "Create Customer", + "request": { + "method": "POST", + "url": "{{baseUrl}}/api/v1/customers", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{staffToken}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"john@example.com\",\n \"phone\": \"555-0100\",\n \"address\": \"123 Main St\"\n}" + } + } + }, + { + "name": "Update Customer", + "request": { + "method": "PUT", + "url": "{{baseUrl}}/api/v1/customers/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{staffToken}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"john@example.com\",\n \"phone\": \"555-0100\",\n \"address\": \"123 Main St\"\n}" + } + } + }, + { + "name": "Delete Customer", + "request": { + "method": "DELETE", + "url": "{{baseUrl}}/api/v1/customers/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{staffToken}}", + "type": "text" + } + ] + } + }, + { + "name": "Bulk Delete Customers", + "request": { + "method": "POST", + "url": "{{baseUrl}}/api/v1/customers/bulk-delete", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{staffToken}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"ids\": [\n 1\n ]\n}" + } + } + } + ] + }, + { + "name": "Appointments Management", + "item": [ + { + "name": "Update Appointment", + "request": { + "method": "PUT", + "url": "{{baseUrl}}/api/v1/appointments/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{staffToken}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"customerId\": 1,\n \"storeId\": 1,\n \"serviceId\": 1,\n \"appointmentDate\": \"2026-03-15\",\n \"appointmentTime\": \"14:00:00\",\n \"notes\": \"Updated\"\n}" + } + } + }, + { + "name": "Delete Appointment", + "request": { + "method": "DELETE", + "url": "{{baseUrl}}/api/v1/appointments/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{staffToken}}", + "type": "text" + } + ] + } + } + ] + }, + { + "name": "Adoptions Management", + "item": [ + { + "name": "Update Adoption", + "request": { + "method": "PUT", + "url": "{{baseUrl}}/api/v1/adoptions/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{staffToken}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"petId\": 1,\n \"customerId\": 1,\n \"adoptionDate\": \"2026-03-11\"\n}" + } + } + }, + { + "name": "Delete Adoption", + "request": { + "method": "DELETE", + "url": "{{baseUrl}}/api/v1/adoptions/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{staffToken}}", + "type": "text" + } + ] + } + } + ] + }, + { + "name": "Refunds Management", + "item": [ + { + "name": "Update Refund", + "request": { + "method": "PUT", + "url": "{{baseUrl}}/api/v1/refunds/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{staffToken}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"status\": \"APPROVED\"\n}" } } } @@ -1588,32 +1320,317 @@ ] }, { - "name": "Admin-only Resources", + "name": "5 Admin Operations", "item": [ { - "name": "Inventory", + "name": "Analytics Dashboard", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/analytics/dashboard", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ] + } + }, + { + "name": "Users", "item": [ { - "name": "List/Search", + "name": "List Users", "request": { "method": "GET", - "url": "{{baseUrl}}/api/v1/inventory?q=&page=0&size=50&sort=id,desc", - "header": [], - "description": "Returns UI-ready rows (joined fields included).", - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] + "url": "{{baseUrl}}/api/v1/users", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ] + } + }, + { + "name": "Get User", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/users/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ] + } + }, + { + "name": "Create User", + "request": { + "method": "POST", + "url": "{{baseUrl}}/api/v1/users", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"username\": \"newuser\",\n \"password\": \"password123\",\n \"role\": \"STAFF\"\n}" } } }, { - "name": "Create", + "name": "Update User", + "request": { + "method": "PUT", + "url": "{{baseUrl}}/api/v1/users/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"username\": \"user1\",\n \"role\": \"STAFF\"\n}" + } + } + }, + { + "name": "Delete User", + "request": { + "method": "DELETE", + "url": "{{baseUrl}}/api/v1/users/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ] + } + }, + { + "name": "Bulk Delete Users", + "request": { + "method": "DELETE", + "url": "{{baseUrl}}/api/v1/users", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"ids\": [\n 1\n ]\n}" + } + } + } + ] + }, + { + "name": "Stores", + "item": [ + { + "name": "List Stores", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/stores", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ] + } + }, + { + "name": "Get Store", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/stores/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ] + } + }, + { + "name": "Create Store", + "request": { + "method": "POST", + "url": "{{baseUrl}}/api/v1/stores", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"storeName\": \"New Branch\",\n \"storeAddress\": \"456 Oak St\",\n \"storePhone\": \"555-0200\"\n}" + } + } + }, + { + "name": "Update Store", + "request": { + "method": "PUT", + "url": "{{baseUrl}}/api/v1/stores/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"storeName\": \"Updated Branch\",\n \"storeAddress\": \"456 Oak St\",\n \"storePhone\": \"555-0200\"\n}" + } + } + }, + { + "name": "Delete Store", + "request": { + "method": "DELETE", + "url": "{{baseUrl}}/api/v1/stores/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ] + } + }, + { + "name": "Bulk Delete Stores", + "request": { + "method": "DELETE", + "url": "{{baseUrl}}/api/v1/stores", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"ids\": [\n 1\n ]\n}" + } + } + } + ] + }, + { + "name": "Inventory", + "item": [ + { + "name": "List Inventory", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/inventory", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ] + } + }, + { + "name": "Get Inventory Item", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/inventory/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ] + } + }, + { + "name": "Create Inventory", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/inventory", @@ -1621,99 +1638,61 @@ { "key": "Content-Type", "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" } ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, "body": { "mode": "raw", - "raw": "{\n \"prodId\": \"{{prodId}}\",\n \"quantity\": 25\n}", - "options": { - "raw": { - "language": "json" - } - } + "raw": "{\n \"productId\": 1,\n \"storeId\": 1,\n \"quantity\": 100\n}" } } }, { - "name": "Get One", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/inventory/{{inventoryId}}", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Update (PUT)", + "name": "Update Inventory", "request": { "method": "PUT", - "url": "{{baseUrl}}/api/v1/inventory/{{inventoryId}}", + "url": "{{baseUrl}}/api/v1/inventory/1", "header": [ { "key": "Content-Type", "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" } ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, "body": { "mode": "raw", - "raw": "{\n \"prodId\": \"{{prodId}}\",\n \"quantity\": 30\n}", - "options": { - "raw": { - "language": "json" - } - } + "raw": "{\n \"quantity\": 150\n}" } } }, { - "name": "Delete One", + "name": "Delete Inventory", "request": { "method": "DELETE", - "url": "{{baseUrl}}/api/v1/inventory/{{inventoryId}}", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } + "url": "{{baseUrl}}/api/v1/inventory/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ] } }, { - "name": "Bulk Delete (DELETE body)", + "name": "Bulk Delete Inventory", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/inventory", @@ -1721,27 +1700,16 @@ { "key": "Content-Type", "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" } ], - "description": "Bulk delete with JSON body.", - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, "body": { "mode": "raw", - "raw": "{\n \"ids\": [\n 1,\n 2,\n 3\n ]\n}", - "options": { - "raw": { - "language": "json" - } - } + "raw": "{\n \"ids\": [\n 1\n ]\n}" } } } @@ -1751,26 +1719,43 @@ "name": "Suppliers", "item": [ { - "name": "List/Search", + "name": "List Suppliers", "request": { "method": "GET", - "url": "{{baseUrl}}/api/v1/suppliers?q=&page=0&size=50&sort=id,desc", - "header": [], - "description": "Returns UI-ready rows (joined fields included).", - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } + "url": "{{baseUrl}}/api/v1/suppliers", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ] } }, { - "name": "Create", + "name": "Get Supplier", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/suppliers/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ] + } + }, + { + "name": "Create Supplier", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/suppliers", @@ -1778,99 +1763,61 @@ { "key": "Content-Type", "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" } ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, "body": { "mode": "raw", - "raw": "{\n \"supName\": \"Acme Supplies\",\n \"supPhone\": \"555-0100\",\n \"supEmail\": \"sales@acme.example\",\n \"supAddress\": \"123 Main St\"\n}", - "options": { - "raw": { - "language": "json" - } - } + "raw": "{\n \"supCompany\": \"ACME Corp\",\n \"supContact\": \"John Smith\",\n \"supPhone\": \"555-0300\",\n \"supEmail\": \"john@acme.com\"\n}" } } }, { - "name": "Get One", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/suppliers/{{supId}}", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Update (PUT)", + "name": "Update Supplier", "request": { "method": "PUT", - "url": "{{baseUrl}}/api/v1/suppliers/{{supId}}", + "url": "{{baseUrl}}/api/v1/suppliers/1", "header": [ { "key": "Content-Type", "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" } ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, "body": { "mode": "raw", - "raw": "{\n \"supName\": \"Acme Supplies\",\n \"supPhone\": \"555-0100\",\n \"supEmail\": \"support@acme.example\",\n \"supAddress\": \"123 Main St\"\n}", - "options": { - "raw": { - "language": "json" - } - } + "raw": "{\n \"supCompany\": \"ACME Corp\",\n \"supContact\": \"Jane Smith\",\n \"supPhone\": \"555-0300\",\n \"supEmail\": \"jane@acme.com\"\n}" } } }, { - "name": "Delete One", + "name": "Delete Supplier", "request": { "method": "DELETE", - "url": "{{baseUrl}}/api/v1/suppliers/{{supId}}", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } + "url": "{{baseUrl}}/api/v1/suppliers/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ] } }, { - "name": "Bulk Delete (DELETE body)", + "name": "Bulk Delete Suppliers", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/suppliers", @@ -1878,55 +1825,103 @@ { "key": "Content-Type", "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" } ], - "description": "Bulk delete with JSON body.", - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, "body": { "mode": "raw", - "raw": "{\n \"ids\": [\n 1,\n 2,\n 3\n ]\n}", - "options": { - "raw": { - "language": "json" - } - } + "raw": "{\n \"ids\": [\n 1\n ]\n}" } } } ] }, { - "name": "Product Suppliers (Costing)", + "name": "Purchase Orders", "item": [ { - "name": "List/Search", + "name": "List Purchase Orders", "request": { "method": "GET", - "url": "{{baseUrl}}/api/v1/product-suppliers?q=&page=0&size=50", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } + "url": "{{baseUrl}}/api/v1/purchase-orders", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ] } }, { - "name": "Create", + "name": "Get Purchase Order", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/purchase-orders/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ] + } + } + ] + }, + { + "name": "Product Suppliers", + "item": [ + { + "name": "List Product Suppliers", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/product-suppliers", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ] + } + }, + { + "name": "Get Product Supplier", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/product-suppliers/1/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ] + } + }, + { + "name": "Create Product Supplier", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/product-suppliers", @@ -1934,64 +1929,61 @@ { "key": "Content-Type", "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" } ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, "body": { "mode": "raw", - "raw": "{\n \"prodId\": \"{{prodId}}\",\n \"supId\": \"{{supId}}\",\n \"cost\": 12.34\n}", - "options": { - "raw": { - "language": "json" - } - } + "raw": "{\n \"productId\": 1,\n \"supplierId\": 1,\n \"price\": 25.0\n}" } } }, { - "name": "Update (composite)", + "name": "Update Product Supplier", "request": { "method": "PUT", - "url": "{{baseUrl}}/api/v1/product-suppliers", + "url": "{{baseUrl}}/api/v1/product-suppliers/1/1", "header": [ { "key": "Content-Type", "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" } ], - "description": "Update by composite key (prodId, supId).", - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, "body": { "mode": "raw", - "raw": "{\n \"prodId\": \"{{prodId}}\",\n \"supId\": \"{{supId}}\",\n \"cost\": 13.0\n}", - "options": { - "raw": { - "language": "json" - } - } + "raw": "{\n \"price\": 30.0\n}" } } }, { - "name": "Bulk Delete (keys)", + "name": "Delete Product Supplier", + "request": { + "method": "DELETE", + "url": "{{baseUrl}}/api/v1/product-suppliers/1/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ] + } + }, + { + "name": "Bulk Delete Product Suppliers", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/product-suppliers", @@ -1999,595 +1991,167 @@ { "key": "Content-Type", "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" } ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, "body": { "mode": "raw", - "raw": "{\n \"keys\": [\n {\n \"prodId\": 1,\n \"supId\": 2\n },\n {\n \"prodId\": 3,\n \"supId\": 4\n }\n ]\n}", - "options": { - "raw": { - "language": "json" - } - } + "raw": "{\n \"ids\": []\n}" } } } ] }, { - "name": "Purchase Orders (read)", + "name": "Products Admin", "item": [ { - "name": "List/Search", + "name": "Delete Product", "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/purchase-orders?q=&page=0&size=50", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } + "method": "DELETE", + "url": "{{baseUrl}}/api/v1/products/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ] } }, { - "name": "Get One", + "name": "Bulk Delete Products", "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/purchase-orders/{{purchaseOrderId}}", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] + "method": "DELETE", + "url": "{{baseUrl}}/api/v1/products", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"ids\": [\n 1\n ]\n}" } } } ] }, { - "name": "Users (Staff Accounts)", + "name": "Appointments Admin", "item": [ { - "name": "List/Search", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/users?q=&page=0&size=50", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Create", - "request": { - "method": "POST", - "url": "{{baseUrl}}/api/v1/users", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "description": "Admin-only.", - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, - "body": { - "mode": "raw", - "raw": "{\n \"firstName\": \"Sam\",\n \"lastName\": \"Lee\",\n \"email\": \"sam.lee@example.com\",\n \"phone\": \"555-0110\",\n \"username\": \"samlee\",\n \"password\": \"ChangeMe123\",\n \"role\": \"STAFF\",\n \"storeIds\": [\n \"{{storeId}}\"\n ]\n}", - "options": { - "raw": { - "language": "json" - } - } - } - } - }, - { - "name": "Update (PUT)", - "request": { - "method": "PUT", - "url": "{{baseUrl}}/api/v1/users/{{userId}}", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, - "body": { - "mode": "raw", - "raw": "{\n \"phone\": \"555-0111\",\n \"role\": \"STAFF\"\n}", - "options": { - "raw": { - "language": "json" - } - } - } - } - }, - { - "name": "Delete One", + "name": "Bulk Delete Appointments", "request": { "method": "DELETE", - "url": "{{baseUrl}}/api/v1/users/{{userId}}", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Bulk Delete", - "request": { - "method": "DELETE", - "url": "{{baseUrl}}/api/v1/users", + "url": "{{baseUrl}}/api/v1/appointments", "header": [ { "key": "Content-Type", "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" } ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, "body": { "mode": "raw", - "raw": "{\n \"ids\": [\n 1,\n 2,\n 3\n ]\n}", - "options": { - "raw": { - "language": "json" - } - } + "raw": "{\n \"ids\": [\n 1\n ]\n}" } } - }, - { - "name": "Upload Avatar for User (Admin) [multipart]", - "request": { - "method": "PUT", - "url": "{{baseUrl}}/api/v1/users/{{userId}}/avatar", - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, - "header": [], - "body": { - "mode": "formdata", - "formdata": [ - { - "key": "file", - "type": "file", - "src": "" - } - ] - }, - "description": "Admin-only." - } } ] - } - ] - }, - { - "name": "Sales + Refunds (Staff)", - "item": [ - { - "name": "Sales - List/Search", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/sales?q=&page=0&size=50", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } }, { - "name": "Sales - Create (Checkout)", - "request": { - "method": "POST", - "url": "{{baseUrl}}/api/v1/sales", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, - "body": { - "mode": "raw", - "raw": "{\n \"paymentMethod\": \"Cash\",\n \"storeId\": \"{{storeId}}\",\n \"items\": [\n {\n \"prodId\": \"{{prodId}}\",\n \"quantity\": 2\n }\n ]\n}", - "options": { - "raw": { - "language": "json" + "name": "Adoptions Admin", + "item": [ + { + "name": "Bulk Delete Adoptions", + "request": { + "method": "DELETE", + "url": "{{baseUrl}}/api/v1/adoptions", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"ids\": [\n 1\n ]\n}" } } } - } + ] }, { - "name": "Sales - Get Detail", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/sales/{{saleId}}", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Sales - Refund", - "request": { - "method": "POST", - "url": "{{baseUrl}}/api/v1/sales/{{saleId}}/refunds", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - }, - "body": { - "mode": "raw", - "raw": "{\n \"paymentMethod\": \"Card\",\n \"storeId\": \"{{storeId}}\",\n \"items\": [\n {\n \"prodId\": \"{{prodId}}\",\n \"quantity\": 1\n }\n ]\n}", - "options": { - "raw": { - "language": "json" - } + "name": "Refunds Admin", + "item": [ + { + "name": "Delete Refund", + "request": { + "method": "DELETE", + "url": "{{baseUrl}}/api/v1/refunds/1", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ] } } - } - } - ] - }, - { - "name": "Analytics (Admin)", - "item": [ + ] + }, { - "name": "Dashboard", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/analytics/dashboard?days=30&top=10", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - } - ] - }, - { - "name": "Chat (REST) + WebSocket (/ws)", - "item": [ - { - "name": "Chat - Create Room (Customer)", - "request": { - "method": "POST", - "url": "{{baseUrl}}/api/v1/chat/rooms", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{customerToken}}", - "type": "string" - } - ] - }, - "body": { - "mode": "raw", - "raw": "{\n \"topic\": \"Support\"\n}", - "options": { - "raw": { - "language": "json" - } + "name": "Dropdowns Admin", + "item": [ + { + "name": "Get Suppliers Dropdown", + "request": { + "method": "GET", + "url": "{{baseUrl}}/api/v1/dropdowns/suppliers", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Authorization", + "value": "Bearer {{adminToken}}", + "type": "text" + } + ] } } - } - }, - { - "name": "Chat - List Rooms (Customer)", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/chat/rooms", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{customerToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Chat - List Rooms (Staff/Admin)", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/chat/rooms", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Chat - Room Messages (Customer)", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/chat/rooms/{{roomId}}/messages?limit=50", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{customerToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Chat - Room Messages (Staff/Admin)", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/chat/rooms/{{roomId}}/messages?limit=50", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Chat - Close Room (Staff/Admin)", - "request": { - "method": "POST", - "url": "{{baseUrl}}/api/v1/chat/rooms/{{roomId}}/close", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{staffToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "WebSocket Notes", - "request": { - "method": "GET", - "url": "{{baseUrl}}/ws", - "header": [], - "description": "WebSocket endpoint for live chat." - } - } - ] - }, - { - "name": "Public Assets", - "item": [ - { - "name": "Get Staff Avatar (public)", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/staff/{{employeeId}}/avatar", - "header": [], - "description": "Public endpoint. Accessible without auth." - } - } - ] - }, - { - "name": "Customer Browse (optional)", - "item": [ - { - "name": "Pets - List (customer)", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/pets?q=&page=0&size=50", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{customerToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Pets - Detail (customer)", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/pets/{{petId}}", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{customerToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Services - List (customer)", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/services?q=&page=0&size=50", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{customerToken}}", - "type": "string" - } - ] - } - } - }, - { - "name": "Stores - List (customer)", - "request": { - "method": "GET", - "url": "{{baseUrl}}/api/v1/stores?q=&page=0&size=50", - "header": [], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{customerToken}}", - "type": "string" - } - ] - } - } + ] } ] } ] -} \ No newline at end of file +}