{
  "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  \"firstName\": \"New\",\n  \"lastName\": \"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.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": "Forgot Password",
          "request": {
            "method": "POST",
            "url": "{{baseUrl}}/api/v1/auth/forgot-password",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"usernameOrEmail\": \"admin\"\n}"
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Status code is 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "name": "Reset Password",
          "request": {
            "method": "POST",
            "url": "{{baseUrl}}/api/v1/auth/reset-password",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"token\": \"{{resetToken}}\",\n  \"newPassword\": \"newpassword123\"\n}"
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Status code is 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "name": "Admin Upload User Avatar",
          "request": {
            "method": "POST",
            "url": "{{baseUrl}}/api/v1/users/{{userId}}/avatar",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{adminToken}}"
              }
            ],
            "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);",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "name": "Admin Delete User Avatar",
          "request": {
            "method": "DELETE",
            "url": "{{baseUrl}}/api/v1/users/{{userId}}/avatar",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{adminToken}}"
              }
            ]
          },
          "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();",
                  "pm.test('pet response returned', function () {",
                  "    pm.expect(jsonData.petId).to.exist;",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "name": "Dropdown: Pet Breeds",
          "request": {
            "method": "GET",
            "url": "{{baseUrl}}/api/v1/dropdowns/pet-breeds?species=Dog",
            "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": "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": "Get My Orders",
          "request": {
            "method": "GET",
            "url": "{{baseUrl}}/api/v1/sales/my?page=0&size=10",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{customerToken}}"
              }
            ]
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Status code is 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});"
                ]
              }
            }
          ]
        }
      ]
    },
    {
      "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": "Apply Loyalty Points",
          "request": {
            "method": "POST",
            "url": "{{baseUrl}}/api/v1/cart/apply-points?storeId={{storeId}}&useLoyaltyPoints=true",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{customerToken}}"
              }
            ]
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Status code is 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "name": "Remove Coupon",
          "request": {
            "method": "DELETE",
            "url": "{{baseUrl}}/api/v1/cart/coupon?storeId={{storeId}}",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{customerToken}}"
              }
            ]
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Status code is 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "name": "Cancel Checkout",
          "request": {
            "method": "POST",
            "url": "{{baseUrl}}/api/v1/cart/checkout/cancel?storeId={{storeId}}",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{customerToken}}"
              }
            ]
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Status code is 204', function () {",
                  "    pm.response.to.have.status(204);",
                  "});"
                ]
              }
            }
          ]
        }
      ]
    },
    {
      "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": "Cancel Appointment",
          "request": {
            "method": "PATCH",
            "url": "{{baseUrl}}/api/v1/appointments/{{appointmentId}}/cancel",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{customerToken}}"
              }
            ]
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Status code is 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "name": "Get Customer Pets Dropdown",
          "request": {
            "method": "GET",
            "url": "{{baseUrl}}/api/v1/dropdowns/customers/{{customerId}}/pets",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{adminToken}}"
              }
            ]
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Status code is 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});"
                ]
              }
            }
          ]
        }
      ]
    },
    {
      "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": "Request Adoption",
          "request": {
            "method": "POST",
            "url": "{{baseUrl}}/api/v1/adoptions/request",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{customerToken}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"petId\": 1,\n  \"adoptionDate\": \"2026-05-01\"\n}"
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Status code is 201', function () {",
                  "    pm.response.to.have.status(201);",
                  "});"
                ]
              }
            }
          ]
        },
        {
          "name": "Cancel Adoption",
          "request": {
            "method": "PATCH",
            "url": "{{baseUrl}}/api/v1/adoptions/{{adoptionId}}/cancel",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{customerToken}}"
              }
            ]
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Status code is 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});"
                ]
              }
            }
          ]
        }
      ]
    },
    {
      "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": "Bulk Delete Customers",
          "request": {
            "method": "POST",
            "url": "{{baseUrl}}/api/v1/customers/bulk-delete",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{adminToken}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"ids\": [\n    0\n  ]\n}"
            }
          },
          "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);",
                  "});"
                ]
              }
            }
          ]
        }
      ]
    },
    {
      "name": "Activity Logs",
      "item": [
        {
          "name": "Get Activity Logs",
          "request": {
            "method": "GET",
            "url": "{{baseUrl}}/api/v1/activity-logs?limit=50",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{adminToken}}"
              }
            ]
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Status code is 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});"
                ]
              }
            }
          ]
        }
      ]
    },
    {
      "name": "Contact",
      "item": [
        {
          "name": "Send Contact Message",
          "request": {
            "method": "POST",
            "url": "{{baseUrl}}/api/v1/contact",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{customerToken}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"subject\": \"Question about adoption\",\n  \"body\": \"I would like to know more about the adoption process.\"\n}"
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Status code is 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});"
                ]
              }
            }
          ]
        }
      ]
    },
    {
      "name": "AI Chat",
      "item": [
        {
          "name": "Send AI Chat Message",
          "request": {
            "method": "POST",
            "url": "{{baseUrl}}/api/v1/ai-chat/message",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{customerToken}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"message\": \"What services do you offer?\",\n  \"history\": []\n}"
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Status code is 200', function () {",
                  "    pm.response.to.have.status(200);",
                  "});"
                ]
              }
            }
          ]
        }
      ]
    }
  ]
}