{ "info": { "name": "PetShop Complete Collection", "_postman_id": "petshop-api-complete-v1", "description": "Complete API collection for all backend endpoints", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" }, "variable": [ { "key": "baseUrl", "value": "http://localhost:8080" }, { "key": "customerToken", "value": "" }, { "key": "staffToken", "value": "" }, { "key": "adminToken", "value": "" }, { "key": "petId", "value": "" }, { "key": "productId", "value": "" }, { "key": "saleId", "value": "" }, { "key": "customerSaleId", "value": "" }, { "key": "serviceId", "value": "1" }, { "key": "categoryId", "value": "1" }, { "key": "appointmentId", "value": "" }, { "key": "adoptionId", "value": "" }, { "key": "refundId", "value": "" }, { "key": "conversationId", "value": "" }, { "key": "customerId", "value": "1" }, { "key": "disposableCustomerId", "value": "" }, { "key": "userId", "value": "" }, { "key": "storeId", "value": "1" }, { "key": "inventoryId", "value": "1" }, { "key": "supplierId", "value": "1" }, { "key": "avatarFile", "value": "postman/avatar.png" }, { "key": "avatarUrl", "value": "" }, { "key": "bulkPetId", "value": "" }, { "key": "bulkServiceId", "value": "" }, { "key": "bulkCategoryId", "value": "" }, { "key": "bulkCustomerId", "value": "" }, { "key": "bulkUserId", "value": "" }, { "key": "bulkStoreId", "value": "" }, { "key": "bulkInventoryId", "value": "" }, { "key": "adoptedPetId", "value": "15" }, { "key": "employeeId", "value": "3" }, { "key": "myPetId", "value": "" }, { "key": "adoptionPetId", "value": "" }, { "key": "couponId", "value": "" }, { "key": "cartItemId", "value": "" }, { "key": "messageId", "value": "" }, { "key": "paymentIntentId", "value": "" } ], "item": [ { "name": "Health", "item": [ { "name": "Health Check", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/health", "header": [ { "key": "Content-Type", "value": "application/json" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] } ] }, { "name": "Authentication", "item": [ { "name": "Register Customer", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/auth/register", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"username\": \"newcustomer{{$timestamp}}\",\n \"password\": \"password123\",\n \"email\": \"new{{$timestamp}}@example.com\",\n \"phone\": \"+1-555-01{{$randomInt}}\",\n \"fullName\": \"New Customer\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "if (jsonData.token) pm.collectionVariables.set('customerToken', jsonData.token);" ] } } ] }, { "name": "Login as Customer", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/auth/login", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"username\": \"customer\",\n \"password\": \"customer123\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "var jsonData = pm.response.json();", "if (jsonData.id !== undefined) pm.collectionVariables.set('userId', jsonData.id);", "if (jsonData.id !== undefined) pm.collectionVariables.set('customerId', jsonData.id);", "if (jsonData.token) pm.collectionVariables.set('customerToken', jsonData.token);" ] } } ] }, { "name": "Login as Staff", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/auth/login", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"username\": \"staff\",\n \"password\": \"staff123\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "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 as Admin", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/auth/login", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"username\": \"admin\",\n \"password\": \"admin123\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "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": "Get My Profile", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/auth/me", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "var jsonData = pm.response.json();", "if (jsonData.id !== undefined) pm.collectionVariables.set('userId', jsonData.id);" ] } } ] }, { "name": "Update My Profile", "request": { "method": "PUT", "url": "{{baseUrl}}/api/v1/auth/me", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"fullName\": \"Updated Name\",\n \"email\": \"updated@example.com\"\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Upload Avatar", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/auth/me/avatar", "header": [ { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ], "body": { "mode": "formdata", "formdata": [ { "key": "avatar", "type": "file", "src": "{{avatarFile}}" } ] } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "var jsonData = pm.response.json();", "pm.expect(jsonData.avatarUrl).to.be.a('string');", "pm.collectionVariables.set('avatarUrl', jsonData.avatarUrl);" ] } } ] }, { "name": "Get Avatar", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/auth/me/avatar", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "var jsonData = pm.response.json();", "pm.expect(jsonData.avatarUrl).to.be.a('string');", "pm.collectionVariables.set('avatarUrl', jsonData.avatarUrl);" ] } } ] }, { "name": "Get My Avatar File", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/auth/me/avatar/file", "header": [ { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "pm.test('Avatar response is an image', function () {", " pm.expect(pm.response.headers.get('Content-Type')).to.include('image/');", "});" ] } } ] }, { "name": "Get User Avatar File As Staff", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/users/{{userId}}/avatar/file", "header": [ { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "pm.test('Avatar response is an image', function () {", " pm.expect(pm.response.headers.get('Content-Type')).to.include('image/');", "});" ] } } ] }, { "name": "Delete Avatar", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/auth/me/avatar", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Logout", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/auth/logout", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] } ] }, { "name": "Pets", "item": [ { "name": "Get All Pets", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/pets?status=available&storeId=1", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "var json = pm.response.json();", "pm.test('is page response', function () { pm.expect(json.content).to.be.an('array'); });", "pm.test('all pets have storeName', function () { json.content.forEach(function(p) { pm.expect(p).to.have.property('storeName'); }); });" ] } } ] }, { "name": "Get Pet by ID", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/pets/1", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "var json = pm.response.json();", "pm.test('has petId', function () { pm.expect(json.petId).to.be.a('number'); });", "pm.test('has owner fields', function () { pm.expect(json).to.have.all.keys('petId','petName','petSpecies','petBreed','petAge','petStatus','petPrice','imageUrl','createdAt','updatedAt','customerId','customerName','storeId','storeName'); });" ] } } ] }, { "name": "Get Pets Dropdown", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/dropdowns/pets", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Dropdown: Pet Species", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/dropdowns/pet-species", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Create Pet", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/pets", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"petName\": \"Postman Pet\",\n \"petSpecies\": \"Dog\",\n \"petBreed\": \"Mixed\",\n \"petAge\": 2,\n \"petStatus\": \"Available\",\n \"petPrice\": 350.00,\n \"storeId\": 1\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "if (jsonData.petId !== undefined) pm.collectionVariables.set('petId', jsonData.petId);", "pm.test('has petId', function () { pm.expect(jsonData.petId).to.be.a('number'); });", "pm.test('has storeId', function () { pm.expect(jsonData.storeId).to.equal(1); });", "pm.test('has storeName', function () { pm.expect(jsonData.storeName).to.be.a('string'); });", "pm.test('customerId is null', function () { pm.expect(jsonData.customerId).to.be.null; });" ] } } ] }, { "name": "Update Pet", "request": { "method": "PUT", "url": "{{baseUrl}}/api/v1/pets/{{petId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"petName\": \"Postman Pet Updated\",\n \"petSpecies\": \"Dog\",\n \"petBreed\": \"Mixed\",\n \"petAge\": 3,\n \"petStatus\": \"Owned\",\n \"petPrice\": 375.00,\n \"customerId\": {{customerId}}\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "var json = pm.response.json();", "pm.test('status is Owned', function () { pm.expect(json.petStatus).to.equal('Owned'); });", "pm.test('has customerId', function () { pm.expect(json.customerId).to.be.a('number'); });", "pm.test('has customerName', function () { pm.expect(json.customerName).to.be.a('string'); });", "pm.test('storeId is null', function () { pm.expect(json.storeId).to.be.null; });" ] } } ] }, { "name": "Upload Pet Image", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/pets/{{petId}}/image", "header": [ { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ], "body": { "mode": "formdata", "formdata": [ { "key": "image", "type": "file", "src": "{{avatarFile}}" } ] } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "var jsonData = pm.response.json();", "pm.expect(jsonData.imageUrl).to.be.a('string');" ] } } ] }, { "name": "Get Pet Image Public", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/pets/{{petId}}/image" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 403', function () {", " pm.response.to.have.status(403);", "});" ] } } ] }, { "name": "Delete Pet Image", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/pets/{{petId}}/image", "header": [ { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Delete Pet", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/pets/{{petId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 204', function () {", " pm.response.to.have.status(204);", "});" ] } } ] }, { "name": "Create Pet For Bulk Delete", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/pets", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"petName\": \"Postman Pet\",\n \"petSpecies\": \"Dog\",\n \"petBreed\": \"Mixed\",\n \"petAge\": 2,\n \"petStatus\": \"Available\",\n \"petPrice\": 350.00\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "if (jsonData.petId !== undefined) pm.collectionVariables.set('bulkPetId', jsonData.petId);" ] } } ] }, { "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" } ], "body": { "mode": "raw", "raw": "{\n \"ids\": [\n {{bulkPetId}}\n ]\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 204', function () {", " pm.response.to.have.status(204);", "});" ] } } ] }, { "name": "Upload Adopted Pet Image", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/pets/{{adoptedPetId}}/image", "header": [ { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ], "body": { "mode": "formdata", "formdata": [ { "key": "image", "type": "file", "src": "{{avatarFile}}" } ] } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Get Adopted Pet Image Public", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/pets/{{adoptedPetId}}/image" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "pm.test('Pet image response is an image', function () {", " pm.expect(pm.response.headers.get('Content-Type')).to.include('image/');", "});" ] } } ] }, { "name": "Get Adopted Pet Image As Staff", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/pets/{{adoptedPetId}}/image", "header": [ { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "pm.test('Pet image response is an image', function () {", " pm.expect(pm.response.headers.get('Content-Type')).to.include('image/');", "});" ] } } ] }, { "name": "Delete Adopted Pet Image", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/pets/{{adoptedPetId}}/image", "header": [ { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "var jsonData = pm.response.json();", "var items = jsonData.items || [];", "var productId = Number(pm.collectionVariables.get('productId'));", "var cartItem = items.find(function (item) { return item.prodId === productId; }) || items[0];", "pm.test('cart item is returned', function () {", " pm.expect(cartItem).to.exist;", "});", "if (cartItem && cartItem.cartItemId !== undefined) pm.collectionVariables.set('cartItemId', cartItem.cartItemId);" ] } } ] } ] }, { "name": "My Pets", "item": [ { "name": "List My Pets", "request": { "method": "GET", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ], "url": "{{baseUrl}}/api/v1/my-pets" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Create My Pet", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ], "url": "{{baseUrl}}/api/v1/my-pets", "body": { "mode": "raw", "raw": "{\n \"petName\": \"Postman Home Pet\",\n \"species\": \"Dog\",\n \"breed\": \"Mixed\"\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "var jsonData = pm.response.json();", "if (jsonData.customerPetId !== undefined) pm.collectionVariables.set('myPetId', jsonData.customerPetId);" ] } } ] }, { "name": "Update My Pet", "request": { "method": "PUT", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ], "url": "{{baseUrl}}/api/v1/my-pets/{{myPetId}}", "body": { "mode": "raw", "raw": "{\n \"petName\": \"Postman Home Pet Updated\",\n \"species\": \"Dog\",\n \"breed\": \"Retriever Mix\"\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Upload My Pet Image", "request": { "method": "POST", "header": [ { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ], "url": "{{baseUrl}}/api/v1/my-pets/{{myPetId}}/image", "body": { "mode": "formdata", "formdata": [ { "key": "image", "type": "file", "src": "{{avatarFile}}" } ] } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Delete My Pet", "request": { "method": "DELETE", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ], "url": "{{baseUrl}}/api/v1/my-pets/{{myPetId}}" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 204', function () {", " pm.response.to.have.status(204);", "});" ] } } ] } ] }, { "name": "Products", "item": [ { "name": "Get All Products", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/products", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Get Product by ID", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/products/1", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Get Products Dropdown", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/dropdowns/products", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Create Product", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/products", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"prodName\": \"Postman Product\",\n \"categoryId\": {{categoryId}},\n \"prodDesc\": \"Created from Postman\",\n \"prodPrice\": 19.99\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "if (jsonData.prodId !== undefined) pm.collectionVariables.set('productId', jsonData.prodId);" ] } } ] }, { "name": "Update Product", "request": { "method": "PUT", "url": "{{baseUrl}}/api/v1/products/{{productId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"prodName\": \"Postman Product Updated\",\n \"categoryId\": {{categoryId}},\n \"prodDesc\": \"Updated from Postman\",\n \"prodPrice\": 24.99\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Delete Product", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/products/{{productId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 403', function () {", " pm.response.to.have.status(403);", "});" ] } } ] }, { "name": "Bulk Delete Products", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/products", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"ids\": [\n 1\n ]\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 403', function () {", " pm.response.to.have.status(403);", "});" ] } } ] }, { "name": "Upload Product Image", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/products/{{productId}}/image", "header": [ { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ], "body": { "mode": "formdata", "formdata": [ { "key": "image", "type": "file", "src": "{{avatarFile}}" } ] } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "var jsonData = pm.response.json();", "pm.expect(jsonData.imageUrl).to.be.a('string');" ] } } ] }, { "name": "Get Product Image", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/products/{{productId}}/image" }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "pm.test('Product image response is an image', function () {", " pm.expect(pm.response.headers.get('Content-Type')).to.include('image/');", "});" ] } } ] }, { "name": "Delete Product Image", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/products/{{productId}}/image", "header": [ { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] } ] }, { "name": "Sales", "item": [ { "name": "Get All Sales", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/sales", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Get Sale by ID", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/sales/1", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Create Sale", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/sales", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"storeId\": {{storeId}},\n \"paymentMethod\": \"Card\",\n \"customerId\": {{customerId}},\n \"items\": [\n {\n \"prodId\": 7,\n \"quantity\": 2\n },\n {\n \"prodId\": 8,\n \"quantity\": 1\n }\n ],\n \"isRefund\": false\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "if (jsonData.saleId !== undefined) {", " pm.collectionVariables.set('saleId', jsonData.saleId);", " pm.collectionVariables.set('customerSaleId', jsonData.saleId);", "}" ] } } ] } ] }, { "name": "Cart", "item": [ { "name": "Get Active Cart", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/cart?storeId={{storeId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200 or 204', function () {", " pm.expect([200, 204]).to.include(pm.response.code);", "});" ] } } ] }, { "name": "Add Cart Item", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/cart/add", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"prodId\": {{productId}},\n \"storeId\": {{storeId}},\n \"quantity\": 1\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "var jsonData = pm.response.json();", "var items = jsonData.items || [];", "var productId = Number(pm.collectionVariables.get('productId'));", "var cartItem = items.find(function (item) { return item.prodId === productId; }) || items[0];", "pm.test('cart item is returned', function () {", " pm.expect(cartItem).to.exist;", "});", "if (cartItem && cartItem.cartItemId !== undefined) pm.collectionVariables.set('cartItemId', cartItem.cartItemId);" ] } } ] }, { "name": "Update Cart Item", "request": { "method": "PUT", "url": "{{baseUrl}}/api/v1/cart/update", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"cartItemId\": {{cartItemId}},\n \"quantity\": 2\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Remove Cart Item", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/cart/remove/{{cartItemId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Clear Cart", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/cart/clear?storeId={{storeId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 204', function () {", " pm.response.to.have.status(204);", "});" ] } } ] }, { "name": "Add Cart Item For Checkout", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/cart/add", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"prodId\": {{productId}},\n \"storeId\": {{storeId}},\n \"quantity\": 2\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "var jsonData = pm.response.json();", "var items = jsonData.items || [];", "var productId = Number(pm.collectionVariables.get('productId'));", "var cartItem = items.find(function (item) { return item.prodId === productId; }) || items[0];", "pm.test('cart item is returned', function () {", " pm.expect(cartItem).to.exist;", "});", "if (cartItem && cartItem.cartItemId !== undefined) pm.collectionVariables.set('cartItemId', cartItem.cartItemId);" ] } } ] }, { "name": "Apply Coupon", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/cart/apply-coupon?storeId={{storeId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"couponCode\": \"TREAT5\"\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "var jsonData = pm.response.json();", "pm.test('coupon was applied', function () {", " pm.expect(jsonData.couponCode).to.equal('TREAT5');", "});" ] } } ] }, { "name": "Checkout Cart", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/cart/checkout", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"storeId\": {{storeId}}\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200 or 400', function () {", " pm.expect([200, 400]).to.include(pm.response.code);", "});", "var jsonData = pm.response.json();", "if (pm.response.code === 200) {", " pm.expect(jsonData.clientSecret).to.be.a('string');", " pm.expect(jsonData.totalAmount).to.exist;", " var paymentIntentId = jsonData.clientSecret.split('_secret_')[0];", " if (paymentIntentId) pm.collectionVariables.set('paymentIntentId', paymentIntentId);", "} else {", " pm.expect(jsonData.message).to.include('No API key provided');", " pm.collectionVariables.set('paymentIntentId', '');", "}" ] } } ] }, { "name": "Complete Checkout", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/cart/checkout/complete?paymentIntentId={{paymentIntentId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 204 or 400', function () {", " pm.expect([204, 400]).to.include(pm.response.code);", "});", "if (pm.response.code === 400) {", " var jsonData = pm.response.json();", " pm.expect(jsonData.message).to.include('Payment verification failed');", "}" ] } } ] } ] }, { "name": "Coupons", "item": [ { "name": "Get All Coupons", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/coupons?q=&active=true", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "var jsonData = pm.response.json();", "var coupons = jsonData.content || [];", "pm.test('coupon list is not empty', function () {", " pm.expect(coupons.length).to.be.above(0);", "});", "if (coupons[0] && coupons[0].couponId !== undefined) pm.collectionVariables.set('couponId', coupons[0].couponId);", "if (coupons[0] && coupons[0].couponCode !== undefined) pm.collectionVariables.set('couponCode', coupons[0].couponCode);" ] } } ] }, { "name": "Get Coupon by ID", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/coupons/{{couponId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Get Coupon by Code", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/coupons/code/{{couponCode}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Create Coupon", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/coupons", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"couponCode\": \"POSTMAN-{{$timestamp}}\",\n \"discountType\": \"PERCENTAGE\",\n \"discountValue\": 10,\n \"minOrderAmount\": 50,\n \"active\": true,\n \"startsAt\": \"2026-01-01T00:00:00\",\n \"endsAt\": \"2026-12-31T23:59:59\",\n \"usageLimit\": 100\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "if (jsonData.couponId !== undefined) pm.collectionVariables.set('couponId', jsonData.couponId);", "if (jsonData.couponCode !== undefined) pm.collectionVariables.set('couponCode', jsonData.couponCode);" ] } } ] }, { "name": "Update Coupon", "request": { "method": "PUT", "url": "{{baseUrl}}/api/v1/coupons/{{couponId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"couponCode\": \"POSTMAN-UPD-{{$timestamp}}\",\n \"discountType\": \"PERCENTAGE\",\n \"discountValue\": 15,\n \"minOrderAmount\": 50,\n \"active\": true,\n \"startsAt\": \"2026-01-01T00:00:00\",\n \"endsAt\": \"2026-12-31T23:59:59\",\n \"usageLimit\": 100\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Delete Coupon", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/coupons/{{couponId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 204', function () {", " pm.response.to.have.status(204);", "});" ] } } ] }, { "name": "Bulk Delete Coupons", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/coupons", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"ids\": [\n {{couponId}}\n ]\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 204', function () {", " pm.response.to.have.status(204);", "});" ] } } ] } ] }, { "name": "Services", "item": [ { "name": "Get All Services", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/services", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Get Service by ID", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/services/1", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Get Services Dropdown", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/dropdowns/services", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "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\": \"Postman Service\",\n \"serviceDesc\": \"Created from Postman\",\n \"serviceDuration\": 30,\n \"servicePrice\": 25.00\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "if (jsonData.serviceId !== undefined) pm.collectionVariables.set('serviceId', jsonData.serviceId);" ] } } ] }, { "name": "Update Service", "request": { "method": "PUT", "url": "{{baseUrl}}/api/v1/services/{{serviceId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"serviceName\": \"Postman Service Updated\",\n \"serviceDesc\": \"Updated from Postman\",\n \"serviceDuration\": 30,\n \"servicePrice\": 30.00\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Delete Service", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/services/{{serviceId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 204', function () {", " pm.response.to.have.status(204);", "});" ] } } ] }, { "name": "Create Service For Bulk Delete", "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\": \"Postman Service\",\n \"serviceDesc\": \"Created from Postman\",\n \"serviceDuration\": 30,\n \"servicePrice\": 25.00\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "if (jsonData.serviceId !== undefined) pm.collectionVariables.set('bulkServiceId', jsonData.serviceId);" ] } } ] }, { "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 {{bulkServiceId}}\n ]\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 204', function () {", " pm.response.to.have.status(204);", "});" ] } } ] } ] }, { "name": "Categories", "item": [ { "name": "Get All Categories", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/categories", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Get Category by ID", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/categories/1", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Get Categories Dropdown", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/dropdowns/categories", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Dropdown: Product Categories", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/dropdowns/product-categories", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Create Category", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/categories", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"categoryName\": \"Postman Category\",\n \"categoryType\": \"Product\"\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "if (jsonData.categoryId !== undefined) pm.collectionVariables.set('categoryId', jsonData.categoryId);" ] } } ] }, { "name": "Update Category", "request": { "method": "PUT", "url": "{{baseUrl}}/api/v1/categories/{{categoryId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"categoryName\": \"Postman Category Updated\",\n \"categoryType\": \"Product\"\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Delete Category", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/categories/{{categoryId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 204', function () {", " pm.response.to.have.status(204);", "});" ] } } ] }, { "name": "Create Category For Bulk Delete", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/categories", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"categoryName\": \"Postman Category\",\n \"categoryType\": \"Product\"\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "if (jsonData.categoryId !== undefined) pm.collectionVariables.set('bulkCategoryId', jsonData.categoryId);" ] } } ] }, { "name": "Bulk Delete Categories", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/categories", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"ids\": [\n {{bulkCategoryId}}\n ]\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 204', function () {", " pm.response.to.have.status(204);", "});" ] } } ] } ] }, { "name": "Appointments", "item": [ { "name": "Get Appointment Customers Dropdown", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/dropdowns/appointment-customers", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Check Appointment Availability", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/appointments/availability?storeId=1&serviceId=1&date=2026-12-20", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "List Appointments", "request": { "method": "GET", "url": { "raw": "{{baseUrl}}/api/v1/appointments", "host": [ "{{baseUrl}}" ], "path": [ "api", "v1", "appointments" ], "query": [ { "key": "q", "value": "", "disabled": true, "description": "optional" }, { "key": "storeId", "value": "1", "disabled": true, "description": "optional" }, { "key": "status", "value": "Booked", "disabled": true, "description": "optional" }, { "key": "date", "value": "2026-12-20", "disabled": true, "description": "optional" }, { "key": "customerId", "value": "1", "disabled": true, "description": "optional" }, { "key": "employeeId", "value": "1", "disabled": true, "description": "optional" } ] }, "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Get Appointment", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/appointments/1", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Create Appointment", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/appointments", "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 \"employeeId\": 3,\n \"appointmentDate\": \"2026-12-20\",\n \"appointmentTime\": \"10:00:00\",\n \"appointmentStatus\": \"Booked\",\n \"petId\": 1\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "if (jsonData.appointmentId !== undefined) pm.collectionVariables.set('appointmentId', jsonData.appointmentId);" ] } } ] }, { "name": "Update Appointment", "request": { "method": "PUT", "url": "{{baseUrl}}/api/v1/appointments/{{appointmentId}}", "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 \"employeeId\": 3,\n \"appointmentDate\": \"2026-12-20\",\n \"appointmentTime\": \"11:00:00\",\n \"appointmentStatus\": \"Booked\",\n \"petId\": 1\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Delete Appointment", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/appointments/{{appointmentId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 204', function () {", " pm.response.to.have.status(204);", "});" ] } } ] }, { "name": "Bulk Delete Appointments", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/appointments", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"ids\": [\n 1\n ]\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 403', function () {", " pm.response.to.have.status(403);", "});" ] } } ] } ] }, { "name": "Adoptions", "item": [ { "name": "Get Adoption Pets Dropdown", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/dropdowns/adoption-pets", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "var jsonData = pm.response.json();", "if (Array.isArray(jsonData) && jsonData.length > 0 && jsonData[0].id !== undefined) pm.collectionVariables.set('adoptionPetId', jsonData[0].id);" ] } } ] }, { "name": "List Adoptions", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/adoptions", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Get Adoption", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/adoptions/1", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Create Adoption", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/adoptions", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"petId\": {{adoptionPetId}},\n \"customerId\": 1,\n \"adoptionDate\": \"2026-03-21\",\n \"adoptionStatus\": \"Pending\",\n \"sourceStoreId\": 1\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "if (jsonData.adoptionId !== undefined) pm.collectionVariables.set('adoptionId', jsonData.adoptionId);" ] } } ] }, { "name": "Update Adoption", "request": { "method": "PUT", "url": "{{baseUrl}}/api/v1/adoptions/{{adoptionId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"petId\": {{adoptionPetId}},\n \"customerId\": 1,\n \"adoptionDate\": \"2026-03-22\",\n \"adoptionStatus\": \"Completed\",\n \"sourceStoreId\": 1\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Delete Adoption", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/adoptions/{{adoptionId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 204', function () {", " pm.response.to.have.status(204);", "});" ] } } ] }, { "name": "Bulk Delete Adoptions", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/adoptions", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"ids\": [\n 1\n ]\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 403', function () {", " pm.response.to.have.status(403);", "});" ] } } ] } ] }, { "name": "Refunds", "item": [ { "name": "Create Refund", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/refunds", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"saleId\": {{saleId}},\n \"reason\": \"Defective product\",\n \"items\": [\n {\n \"prodId\": 7,\n \"quantity\": 1\n }\n ]\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "if (jsonData.id !== undefined) pm.collectionVariables.set('refundId', jsonData.id);" ] } } ] }, { "name": "List Refunds", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/refunds", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Get Refund", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/refunds/{{refundId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Update Refund", "request": { "method": "PUT", "url": "{{baseUrl}}/api/v1/refunds/{{refundId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"status\": \"APPROVED\"\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Delete Refund", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/refunds/{{refundId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 403', function () {", " pm.response.to.have.status(403);", "});" ] } } ] } ] }, { "name": "Chat", "item": [ { "name": "Create Conversation", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/chat/conversations", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"message\": \"I need help\"\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "pm.expect(jsonData.id).to.exist;", "pm.collectionVariables.set('conversationId', jsonData.id);" ] } } ] }, { "name": "Customer List Conversations", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/chat/conversations", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Staff List Conversations", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/chat/conversations", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Get Conversation", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/chat/conversations/{{conversationId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Customer Request Human", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/chat/conversations/{{conversationId}}/request-human", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "var jsonData = pm.response.json();", "pm.expect(jsonData.mode).to.eql('AUTOMATED');" ] } } ] }, { "name": "Customer Send Message", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/chat/conversations/{{conversationId}}/messages", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"content\": \"Customer follow-up from Postman\"\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});" ] } } ] }, { "name": "Staff Send Message", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/chat/conversations/{{conversationId}}/messages", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"content\": \"Reply from Postman\"\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "pm.expect(jsonData.senderId).to.exist;", "pm.expect(jsonData.content).to.eql('Reply from Postman');" ] } } ] }, { "name": "Customer Get Messages", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/chat/conversations/{{conversationId}}/messages", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "var jsonData = pm.response.json();", "pm.expect(jsonData.length).to.be.above(0);" ] } } ] }, { "name": "Staff Get Messages", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/chat/conversations/{{conversationId}}/messages", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "var jsonData = pm.response.json();", "pm.expect(jsonData.length).to.be.above(0);" ] } } ] }, { "name": "Send Message With Attachment", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/chat/conversations/{{conversationId}}/attachments", "header": [ { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ], "body": { "mode": "formdata", "formdata": [ { "key": "file", "type": "file", "src": "{{avatarFile}}" }, { "key": "content", "value": "Attachment from Postman", "type": "text" } ] } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "if (jsonData.id !== undefined) pm.collectionVariables.set('messageId', jsonData.id);", "pm.test('message includes attachment url', function () {", " pm.expect(jsonData.attachmentUrl).to.be.a('string');", "});" ] } } ] }, { "name": "Get Message Attachment", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/chat/messages/{{messageId}}/attachment", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "pm.test('Attachment response has content type', function () {", " pm.expect(pm.response.headers.get('Content-Type')).to.be.a('string');", "});" ] } } ] }, { "name": "Update Conversation", "request": { "method": "PUT", "url": "{{baseUrl}}/api/v1/chat/conversations/{{conversationId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"status\": \"CLOSED\"\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] } ] }, { "name": "Customers (Direct Users API)", "item": [ { "name": "Get Customers Dropdown", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/dropdowns/customers", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "List Customers", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/users?role=CUSTOMER", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Get Customer", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/users/{{customerId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Create Customer", "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 \"firstName\": \"Postman\",\n \"lastName\": \"Customer\",\n \"fullName\": \"Postman Customer\",\n \"email\": \"postman.customer.{{$guid}}@example.com\",\n \"phone\": \"555-100-2000\",\n \"role\": \"CUSTOMER\",\n \"active\": true\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "if (jsonData.id !== undefined) pm.collectionVariables.set('customerId', jsonData.id);" ] } } ] }, { "name": "Update Customer", "request": { "method": "PUT", "url": "{{baseUrl}}/api/v1/users/{{customerId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"firstName\": \"Postman\",\n \"lastName\": \"Customer Updated\",\n \"fullName\": \"Postman Customer Updated\",\n \"email\": \"postman.customer.updated.{{$timestamp}}@example.com\",\n \"phone\": \"555-100-2001\",\n \"role\": \"CUSTOMER\",\n \"active\": true\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Delete Customer", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/users/{{customerId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 204', function () {", " pm.response.to.have.status(204);", "});" ] } } ] }, { "name": "Create Customer For Bulk Delete", "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 \"firstName\": \"Postman\",\n \"lastName\": \"Customer\",\n \"fullName\": \"Postman Customer\",\n \"email\": \"postman.bulk.customer.{{$guid}}@example.com\",\n \"phone\": \"555-100-2002\",\n \"role\": \"CUSTOMER\",\n \"active\": true\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "if (jsonData.id !== undefined) pm.collectionVariables.set('bulkCustomerId', jsonData.id);" ] } } ] }, { "name": "Bulk Delete Customers", "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 {{bulkCustomerId}}\n ]\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 204', function () {", " pm.response.to.have.status(204);", "});" ] } } ] } ] }, { "name": "Customers Alias (/api/v1/customers)", "item": [ { "name": "List Customers - staff 200", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/customers", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "List Customers - admin 200", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/customers", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "List Customers - customer 403", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/customers", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{customerToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 403', function () {", " pm.response.to.have.status(403);", "});" ] } } ] }, { "name": "Create Customer - admin 201", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/customers", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"firstName\": \"Alias\",\n \"lastName\": \"Customer\",\n \"fullName\": \"Alias Customer\",\n \"email\": \"alias.customer.{{}}@example.com\",\n \"phone\": \"555-200-3000\",\n \"role\": \"CUSTOMER\",\n \"active\": true\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "if (jsonData.id !== undefined) pm.collectionVariables.set('customerId', jsonData.id);" ] } } ] }, { "name": "Get Customer - staff 200", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/customers/{{customerId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Get Customer - admin 200", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/customers/{{customerId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Update Customer - admin 200", "request": { "method": "PUT", "url": "{{baseUrl}}/api/v1/customers/{{customerId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"firstName\": \"Alias\",\n \"lastName\": \"CustomerUpdated\",\n \"fullName\": \"Alias CustomerUpdated\",\n \"email\": \"alias.customer.updated.{{}}@example.com\",\n \"phone\": \"555-200-3001\",\n \"role\": \"CUSTOMER\",\n \"active\": true\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Delete Customer - admin 204", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/customers/{{customerId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 204', function () {", " pm.response.to.have.status(204);", "});" ] } } ] } ] }, { "name": "Users", "item": [ { "name": "List Users", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/users", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "List Staff Users", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/users?role=STAFF", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "var jsonData = pm.response.json();", "pm.test('All returned users are STAFF', function () {", " pm.expect(jsonData.content.every(function (user) { return user.role === 'STAFF'; })).to.be.true;", "});" ] } } ] }, { "name": "List Admin Users", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/users?role=ADMIN", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "var jsonData = pm.response.json();", "pm.test('All returned users are ADMIN', function () {", " pm.expect(jsonData.content.every(function (user) { return user.role === 'ADMIN'; })).to.be.true;", "});" ] } } ] }, { "name": "List Customer Users", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/users?role=CUSTOMER", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});", "var jsonData = pm.response.json();", "pm.test('All returned users are CUSTOMER', function () {", " pm.expect(jsonData.content.every(function (user) { return user.role === 'CUSTOMER'; })).to.be.true;", "});" ] } } ] }, { "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" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "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\": \"postman_user_{{$guid}}\",\n \"password\": \"secret123\",\n \"firstName\": \"Postman\",\n \"lastName\": \"User\",\n \"fullName\": \"Postman User\",\n \"email\": \"postman.user.{{$guid}}@example.com\",\n \"role\": \"STAFF\",\n \"primaryStoreId\": 1,\n \"active\": true\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "if (jsonData.id !== undefined) pm.collectionVariables.set('userId', jsonData.id);" ] } } ] }, { "name": "Update User", "request": { "method": "PUT", "url": "{{baseUrl}}/api/v1/users/{{userId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"username\": \"postman_user_{{$timestamp}}\",\n \"password\": \"secret123\",\n \"firstName\": \"Postman\",\n \"lastName\": \"User Updated\",\n \"fullName\": \"Postman User Updated\",\n \"email\": \"postman.user.updated.{{$timestamp}}@example.com\",\n \"role\": \"STAFF\",\n \"primaryStoreId\": 1,\n \"active\": true\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Delete User", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/users/{{userId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 204', function () {", " pm.response.to.have.status(204);", "});" ] } } ] }, { "name": "Create User For Bulk Delete", "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\": \"pb{{$timestamp}}\",\n \"password\": \"secret123\",\n \"firstName\": \"Postman\",\n \"lastName\": \"User\",\n \"fullName\": \"Postman User\",\n \"email\": \"postman.bulk.user.{{$guid}}@example.com\",\n \"role\": \"STAFF\",\n \"primaryStoreId\": 1,\n \"active\": true\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "if (jsonData.id !== undefined) pm.collectionVariables.set('bulkUserId', jsonData.id);" ] } } ] }, { "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 {{bulkUserId}}\n ]\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 204', function () {", " pm.response.to.have.status(204);", "});" ] } } ] } ] }, { "name": "Employees (Direct Users API)", "item": [ { "name": "List Employees", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/users?role=STAFF", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Get Employee by ID", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/users/{{employeeId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Create Employee", "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\": \"employee{{$timestamp}}\",\n \"password\": \"employee123\",\n \"firstName\": \"Jane\",\n \"lastName\": \"Smith\",\n \"fullName\": \"Jane Smith\",\n \"email\": \"employee{{$timestamp}}@petshop.com\",\n \"phone\": \"403-555-0200\",\n \"role\": \"STAFF\",\n \"staffRole\": \"GROOMER\",\n \"primaryStoreId\": 1,\n \"active\": true\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "if (jsonData.id !== undefined) pm.collectionVariables.set('employeeId', jsonData.id);" ] } } ] }, { "name": "Update Employee", "request": { "method": "PUT", "url": "{{baseUrl}}/api/v1/users/{{employeeId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"firstName\": \"Jane\",\n \"lastName\": \"Smith\",\n \"fullName\": \"Jane Smith\",\n \"email\": \"employee.updated{{$timestamp}}@petshop.com\",\n \"phone\": \"403-555-0201\",\n \"role\": \"STAFF\",\n \"staffRole\": \"VET\",\n \"primaryStoreId\": 1,\n \"active\": true\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Delete Employee", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/users/{{employeeId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 204', function () {", " pm.response.to.have.status(204);", "});" ] } } ] } ] }, { "name": "Employees Alias (/api/v1/employees)", "item": [ { "name": "List Employees - admin 200", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/employees", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "List Employees - staff 403", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/employees", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 403', function () {", " pm.response.to.have.status(403);", "});" ] } } ] }, { "name": "Create Employee - admin 201", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/employees", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"username\": \"aliasemployee{{}}\",\n \"password\": \"Test1234!\",\n \"firstName\": \"Alias\",\n \"lastName\": \"Employee\",\n \"fullName\": \"Alias Employee\",\n \"email\": \"alias.employee.{{}}@petshop.com\",\n \"phone\": \"403-555-0300\",\n \"role\": \"STAFF\",\n \"staffRole\": \"GROOMER\",\n \"primaryStoreId\": 1,\n \"active\": true\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "if (jsonData.id !== undefined) pm.collectionVariables.set('employeeId', jsonData.id);" ] } } ] }, { "name": "Get Employee - admin 200", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/employees/{{employeeId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Update Employee - admin 200", "request": { "method": "PUT", "url": "{{baseUrl}}/api/v1/employees/{{employeeId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"firstName\": \"Alias\",\n \"lastName\": \"EmployeeUpdated\",\n \"fullName\": \"Alias EmployeeUpdated\",\n \"email\": \"alias.employee.updated.{{}}@petshop.com\",\n \"phone\": \"403-555-0301\",\n \"role\": \"STAFF\",\n \"staffRole\": \"VET\",\n \"primaryStoreId\": 1,\n \"active\": true\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Delete Employee - admin 204", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/employees/{{employeeId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 204', function () {", " pm.response.to.have.status(204);", "});" ] } } ] } ] }, { "name": "Stores", "item": [ { "name": "Get Stores Dropdown", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/dropdowns/stores", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Get Store Employees Dropdown", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/dropdowns/stores/{{storeId}}/employees", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Get All Employees Dropdown", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/dropdowns/employees", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{staffToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "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" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Get Store", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/stores/{{storeId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "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\": \"Postman Store {{$timestamp}}\",\n \"address\": \"100 Postman Ave\",\n \"phone\": \"555-200-3000\",\n \"email\": \"postman.store.{{$guid}}@example.com\"\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "if (jsonData.storeId !== undefined) pm.collectionVariables.set('storeId', jsonData.storeId);" ] } } ] }, { "name": "Update Store", "request": { "method": "PUT", "url": "{{baseUrl}}/api/v1/stores/{{storeId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"storeName\": \"Postman Store Updated\",\n \"address\": \"101 Postman Ave\",\n \"phone\": \"555-200-3001\",\n \"email\": \"postman.store.updated@example.com\"\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Delete Store", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/stores/{{storeId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 204', function () {", " pm.response.to.have.status(204);", "});" ] } } ] }, { "name": "Create Store For Bulk Delete", "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\": \"Postman Store {{$timestamp}}\",\n \"address\": \"100 Postman Ave\",\n \"phone\": \"555-200-3000\",\n \"email\": \"postman.store.{{$guid}}@example.com\"\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "if (jsonData.storeId !== undefined) pm.collectionVariables.set('bulkStoreId', jsonData.storeId);" ] } } ] }, { "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 {{bulkStoreId}}\n ]\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 204', function () {", " pm.response.to.have.status(204);", "});" ] } } ] } ] }, { "name": "Inventory", "item": [ { "name": "List Inventory", "request": { "method": "GET", "url": { "raw": "{{baseUrl}}/api/v1/inventory", "host": [ "{{baseUrl}}" ], "path": [ "api", "v1", "inventory" ], "query": [ { "key": "q", "value": "", "disabled": true, "description": "optional" }, { "key": "storeId", "value": "1", "disabled": true, "description": "optional" } ] }, "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Create Inventory", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/inventory", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"prodId\": {{productId}},\n \"quantity\": 10,\n \"storeId\": 1\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "if (jsonData.inventoryId !== undefined) pm.collectionVariables.set('inventoryId', jsonData.inventoryId);" ] } } ] }, { "name": "Get Inventory Item", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/inventory/{{inventoryId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Update Inventory", "request": { "method": "PUT", "url": "{{baseUrl}}/api/v1/inventory/{{inventoryId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"prodId\": {{productId}},\n \"quantity\": 12,\n \"storeId\": 1\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Delete Inventory", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/inventory/{{inventoryId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 204', function () {", " pm.response.to.have.status(204);", "});" ] } } ] }, { "name": "Create Inventory For Bulk Delete", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/inventory", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"prodId\": {{productId}},\n \"quantity\": 10,\n \"storeId\": 1\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "if (jsonData.inventoryId !== undefined) pm.collectionVariables.set('bulkInventoryId', jsonData.inventoryId);" ] } } ] }, { "name": "Bulk Delete Inventory", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/inventory", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"ids\": [\n {{bulkInventoryId}}\n ]\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 204', function () {", " pm.response.to.have.status(204);", "});" ] } } ] } ] }, { "name": "Suppliers", "item": [ { "name": "List Suppliers", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/suppliers", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Get Supplier", "request": { "method": "GET", "url": "{{baseUrl}}/api/v1/suppliers/{{supplierId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Create Supplier", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/suppliers", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"supCompany\": \"Postman Supplier {{$timestamp}}\",\n \"supContactFirstName\": \"Post\",\n \"supContactLastName\": \"Man\",\n \"supEmail\": \"postman.supplier.{{$guid}}@example.com\",\n \"supPhone\": \"555-300-4000\"\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});", "var jsonData = pm.response.json();", "if (jsonData.supId !== undefined) pm.collectionVariables.set('supplierId', jsonData.supId);" ] } } ] }, { "name": "Update Supplier", "request": { "method": "PUT", "url": "{{baseUrl}}/api/v1/suppliers/{{supplierId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"supCompany\": \"Postman Supplier Updated {{$timestamp}}\",\n \"supContactFirstName\": \"Post\",\n \"supContactLastName\": \"Man\",\n \"supEmail\": \"postman.supplier.updated.{{$timestamp}}@example.com\",\n \"supPhone\": \"555-300-4001\"\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Delete Supplier", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/suppliers/{{supplierId}}", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 204', function () {", " pm.response.to.have.status(204);", "});" ] } } ] }, { "name": "Bulk Delete Suppliers", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/suppliers", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"ids\": [\n 1\n ]\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 400', function () {", " pm.response.to.have.status(400);", "});" ] } } ] }, { "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" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] } ] }, { "name": "Purchase Orders", "item": [ { "name": "List Purchase Orders", "request": { "method": "GET", "url": { "raw": "{{baseUrl}}/api/v1/purchase-orders", "host": [ "{{baseUrl}}" ], "path": [ "api", "v1", "purchase-orders" ], "query": [ { "key": "q", "value": "", "disabled": true, "description": "optional" }, { "key": "storeId", "value": "1", "disabled": true, "description": "optional" } ] }, "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "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" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] } ] }, { "name": "Product-Suppliers", "item": [ { "name": "List Product Suppliers", "request": { "method": "GET", "url": { "raw": "{{baseUrl}}/api/v1/product-suppliers", "host": [ "{{baseUrl}}" ], "path": [ "api", "v1", "product-suppliers" ], "query": [ { "key": "q", "value": "", "disabled": true, "description": "optional" }, { "key": "productId", "value": "{{productId}}", "disabled": true, "description": "optional" }, { "key": "supplierId", "value": "{{supplierId}}", "disabled": true, "description": "optional" } ] }, "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Create Product Supplier", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/product-suppliers", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"productId\": 1,\n \"supplierId\": 1,\n \"cost\": 7.50\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});" ] } } ] }, { "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" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "name": "Update Product Supplier", "request": { "method": "PUT", "url": "{{baseUrl}}/api/v1/product-suppliers/1/1", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"productId\": 1,\n \"supplierId\": 1,\n \"cost\": 7.75\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] }, { "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" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 204', function () {", " pm.response.to.have.status(204);", "});" ] } } ] }, { "name": "Create Product Supplier For Bulk Delete", "request": { "method": "POST", "url": "{{baseUrl}}/api/v1/product-suppliers", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"productId\": 1,\n \"supplierId\": 1,\n \"cost\": 7.50\n}", "options": { "raw": { "language": "json" } } } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 201', function () {", " pm.response.to.have.status(201);", "});" ] } } ] }, { "name": "Bulk Delete Product Suppliers", "request": { "method": "DELETE", "url": "{{baseUrl}}/api/v1/product-suppliers", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Authorization", "value": "Bearer {{adminToken}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"keys\": [\n {\"productId\": 1, \"supplierId\": 1}\n ]\n}" } }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 204', function () {", " pm.response.to.have.status(204);", "});" ] } } ] } ] }, { "name": "Analytics", "item": [ { "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" } ] }, "event": [ { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test('Status code is 200', function () {", " pm.response.to.have.status(200);", "});" ] } } ] } ] } ] }