2593 lines
75 KiB
JSON
2593 lines
75 KiB
JSON
{
|
|
"info": {
|
|
"name": "PetShop Unified API v1 (RBAC + Dropdowns + Chat)",
|
|
"_postman_id": "4d2d4e10-4338-4b85-a8ef-aa9db2ed75be",
|
|
"description": "Unified /api/v1 endpoints for Desktop, Android, and Website.\n\nVariables:\n- baseUrl (example http://localhost:8080)\n- staffToken (set by staff/admin login)\n- customerToken (set by customer login)\n\nNotes:\n- Login test scripts assume response contains {\"token\":\"...\"}.\n- Bulk delete uses DELETE with JSON body {ids:[...]}.",
|
|
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
|
|
},
|
|
"variable": [
|
|
{
|
|
"key": "baseUrl",
|
|
"value": "http://localhost:8080"
|
|
},
|
|
{
|
|
"key": "staffToken",
|
|
"value": ""
|
|
},
|
|
{
|
|
"key": "customerToken",
|
|
"value": ""
|
|
},
|
|
{
|
|
"key": "petId",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"key": "adoptionId",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"key": "appointmentId",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"key": "serviceId",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"key": "prodId",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"key": "categoryId",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"key": "supId",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"key": "inventoryId",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"key": "saleId",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"key": "purchaseOrderId",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"key": "userId",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"key": "employeeId",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"key": "roomId",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"key": "storeId",
|
|
"value": "1"
|
|
}
|
|
],
|
|
"item": [
|
|
{
|
|
"name": "Auth",
|
|
"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 \"firstName\": \"Chris\",\n \"lastName\": \"Ng\",\n \"email\": \"chris.ng@example.com\",\n \"phone\": \"555-0120\",\n \"password\": \"ChangeMe123\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Login (Staff/Admin) -> sets staffToken",
|
|
"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}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"try {",
|
|
" const json = pm.response.json();",
|
|
" if (json && json.token) pm.collectionVariables.set('staffToken', json.token);",
|
|
"} catch (e) {}"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Login (Staff) -> sets staffToken",
|
|
"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}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"try {",
|
|
" const json = pm.response.json();",
|
|
" if (json && json.token) pm.collectionVariables.set('staffToken', json.token);",
|
|
"} catch (e) {}"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Login (Customer) -> sets customerToken",
|
|
"request": {
|
|
"method": "POST",
|
|
"url": "{{baseUrl}}/api/v1/auth/login",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"description": "If login uses username instead of email, adjust request body.",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"email\": \"chris.ng@example.com\",\n \"password\": \"ChangeMe123\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"try {",
|
|
" const json = pm.response.json();",
|
|
" if (json && json.token) pm.collectionVariables.set('customerToken', json.token);",
|
|
"} catch (e) {}"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Logout (Staff/Admin)",
|
|
"request": {
|
|
"method": "POST",
|
|
"url": "{{baseUrl}}/api/v1/auth/logout",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Logout (Customer)",
|
|
"request": {
|
|
"method": "POST",
|
|
"url": "{{baseUrl}}/api/v1/auth/logout",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{customerToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Auth Me (Staff/Admin)",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/auth/me",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Auth Me (Customer)",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/auth/me",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{customerToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Health Check",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/health",
|
|
"header": []
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "My Account (/me)",
|
|
"item": [
|
|
{
|
|
"name": "Get My Profile (Staff/Admin)",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/me",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Update My Profile (Staff/Admin)",
|
|
"request": {
|
|
"method": "PUT",
|
|
"url": "{{baseUrl}}/api/v1/me",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"phone\": \"555-0999\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Get My Profile (Customer)",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/me",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{customerToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Update My Profile (Customer)",
|
|
"request": {
|
|
"method": "PUT",
|
|
"url": "{{baseUrl}}/api/v1/me",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{customerToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"phone\": \"555-0999\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Upload My Avatar (Staff/Admin) [multipart]",
|
|
"request": {
|
|
"method": "PUT",
|
|
"url": "{{baseUrl}}/api/v1/me/avatar",
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"header": [],
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "file",
|
|
"type": "file",
|
|
"src": ""
|
|
}
|
|
]
|
|
},
|
|
"description": "Uploads avatar image for the logged-in staff/admin. Public access via GET /api/v1/staff/{employeeId}/avatar."
|
|
}
|
|
},
|
|
{
|
|
"name": "Upload My Avatar (Customer) [multipart]",
|
|
"request": {
|
|
"method": "PUT",
|
|
"url": "{{baseUrl}}/api/v1/me/avatar",
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{customerToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"header": [],
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "file",
|
|
"type": "file",
|
|
"src": ""
|
|
}
|
|
]
|
|
},
|
|
"description": "Optional if customer avatars are supported."
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Dropdowns (lightweight id+name)",
|
|
"item": [
|
|
{
|
|
"name": "Dropdown - Pets (staff)",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/dropdowns/pets",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Dropdown - Customers (staff)",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/dropdowns/customers",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Dropdown - Services (staff)",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/dropdowns/services",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Dropdown - Products (staff)",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/dropdowns/products",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Dropdown - Suppliers (admin)",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/dropdowns/suppliers",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Dropdown - Categories (staff)",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/dropdowns/categories",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Dropdown - Stores (staff)",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/dropdowns/stores",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Dropdown - Services (customer)",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/dropdowns/services",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{customerToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Dropdown - Stores (customer)",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/dropdowns/stores",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{customerToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Resources (Staff)",
|
|
"item": [
|
|
{
|
|
"name": "Pets",
|
|
"item": [
|
|
{
|
|
"name": "List/Search",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/pets?q=&page=0&size=50&sort=id,desc",
|
|
"header": [],
|
|
"description": "Returns UI-ready rows (joined fields included).",
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Create",
|
|
"request": {
|
|
"method": "POST",
|
|
"url": "{{baseUrl}}/api/v1/pets",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"petName\": \"Buddy\",\n \"petSpecies\": \"Dog\",\n \"petBreed\": \"Labrador\",\n \"petAge\": 3,\n \"petStatus\": \"Available\",\n \"petPrice\": 499.99\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Get One",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/pets/{{petId}}",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Update (PUT)",
|
|
"request": {
|
|
"method": "PUT",
|
|
"url": "{{baseUrl}}/api/v1/pets/{{petId}}",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"petName\": \"Buddy\",\n \"petSpecies\": \"Dog\",\n \"petBreed\": \"Labrador\",\n \"petAge\": 4,\n \"petStatus\": \"Available\",\n \"petPrice\": 450.0\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Delete One",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"url": "{{baseUrl}}/api/v1/pets/{{petId}}",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Bulk Delete (DELETE body)",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"url": "{{baseUrl}}/api/v1/pets",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"description": "Bulk delete with JSON body.",
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"ids\": [\n 1,\n 2,\n 3\n ]\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Adoptions",
|
|
"item": [
|
|
{
|
|
"name": "List/Search",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/adoptions?q=&page=0&size=50&sort=id,desc",
|
|
"header": [],
|
|
"description": "Returns UI-ready rows (joined fields included).",
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Create",
|
|
"request": {
|
|
"method": "POST",
|
|
"url": "{{baseUrl}}/api/v1/adoptions",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"petId\": \"{{petId}}\",\n \"customerId\": 1,\n \"adoptionDate\": \"2026-03-04\",\n \"adoptionStatus\": \"Pending\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Get One",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/adoptions/{{adoptionId}}",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Update (PUT)",
|
|
"request": {
|
|
"method": "PUT",
|
|
"url": "{{baseUrl}}/api/v1/adoptions/{{adoptionId}}",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"petId\": \"{{petId}}\",\n \"customerId\": 1,\n \"adoptionDate\": \"2026-03-04\",\n \"adoptionStatus\": \"Approved\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Delete One",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"url": "{{baseUrl}}/api/v1/adoptions/{{adoptionId}}",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Bulk Delete (DELETE body)",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"url": "{{baseUrl}}/api/v1/adoptions",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"description": "Bulk delete with JSON body.",
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"ids\": [\n 1,\n 2,\n 3\n ]\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Appointments",
|
|
"item": [
|
|
{
|
|
"name": "List/Search",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/appointments?q=&page=0&size=50&sort=id,desc",
|
|
"header": [],
|
|
"description": "Returns UI-ready rows (joined fields included).",
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Create",
|
|
"request": {
|
|
"method": "POST",
|
|
"url": "{{baseUrl}}/api/v1/appointments",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"serviceId\": \"{{serviceId}}\",\n \"customerId\": 1,\n \"appointmentDate\": \"2026-03-04\",\n \"appointmentTime\": \"14:30:00\",\n \"appointmentStatus\": \"Booked\",\n \"petIds\": [\n \"{{petId}}\"\n ]\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Get One",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/appointments/{{appointmentId}}",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Update (PUT)",
|
|
"request": {
|
|
"method": "PUT",
|
|
"url": "{{baseUrl}}/api/v1/appointments/{{appointmentId}}",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"serviceId\": \"{{serviceId}}\",\n \"customerId\": 1,\n \"appointmentDate\": \"2026-03-05\",\n \"appointmentTime\": \"15:00:00\",\n \"appointmentStatus\": \"Booked\",\n \"petIds\": [\n \"{{petId}}\"\n ]\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Delete One",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"url": "{{baseUrl}}/api/v1/appointments/{{appointmentId}}",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Bulk Delete (DELETE body)",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"url": "{{baseUrl}}/api/v1/appointments",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"description": "Bulk delete with JSON body.",
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"ids\": [\n 1,\n 2,\n 3\n ]\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Appointments - Availability",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/appointments/availability?storeId={{storeId}}&serviceId={{serviceId}}&date=2026-03-04",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Services",
|
|
"item": [
|
|
{
|
|
"name": "List/Search",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/services?q=&page=0&size=50&sort=id,desc",
|
|
"header": [],
|
|
"description": "Returns UI-ready rows (joined fields included).",
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Create",
|
|
"request": {
|
|
"method": "POST",
|
|
"url": "{{baseUrl}}/api/v1/services",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"serviceName\": \"Grooming\",\n \"serviceDesc\": \"Full grooming package\",\n \"serviceDuration\": 60,\n \"servicePrice\": 49.99\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Get One",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/services/{{serviceId}}",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Update (PUT)",
|
|
"request": {
|
|
"method": "PUT",
|
|
"url": "{{baseUrl}}/api/v1/services/{{serviceId}}",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"serviceName\": \"Grooming\",\n \"serviceDesc\": \"Updated description\",\n \"serviceDuration\": 60,\n \"servicePrice\": 54.99\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Delete One",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"url": "{{baseUrl}}/api/v1/services/{{serviceId}}",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Bulk Delete (DELETE body)",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"url": "{{baseUrl}}/api/v1/services",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"description": "Bulk delete with JSON body.",
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"ids\": [\n 1,\n 2,\n 3\n ]\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Products",
|
|
"item": [
|
|
{
|
|
"name": "List/Search",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/products?q=&page=0&size=50&sort=id,desc",
|
|
"header": [],
|
|
"description": "Returns UI-ready rows (joined fields included).",
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Create",
|
|
"request": {
|
|
"method": "POST",
|
|
"url": "{{baseUrl}}/api/v1/products",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"prodName\": \"Dog Food\",\n \"prodPrice\": 19.99,\n \"prodDesc\": \"Large bag\",\n \"categoryId\": \"{{categoryId}}\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Get One",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/products/{{prodId}}",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Update (PUT)",
|
|
"request": {
|
|
"method": "PUT",
|
|
"url": "{{baseUrl}}/api/v1/products/{{prodId}}",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"prodName\": \"Dog Food\",\n \"prodPrice\": 21.99,\n \"prodDesc\": \"Large bag\",\n \"categoryId\": \"{{categoryId}}\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Delete One",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"url": "{{baseUrl}}/api/v1/products/{{prodId}}",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Bulk Delete (DELETE body)",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"url": "{{baseUrl}}/api/v1/products",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"description": "Bulk delete with JSON body.",
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"ids\": [\n 1,\n 2,\n 3\n ]\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Categories",
|
|
"item": [
|
|
{
|
|
"name": "List/Search",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/categories?q=&page=0&size=50&sort=id,desc",
|
|
"header": [],
|
|
"description": "Returns UI-ready rows (joined fields included).",
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Create",
|
|
"request": {
|
|
"method": "POST",
|
|
"url": "{{baseUrl}}/api/v1/categories",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"categoryName\": \"Food\",\n \"categoryType\": \"PRODUCT\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Get One",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/categories/{{categoryId}}",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Update (PUT)",
|
|
"request": {
|
|
"method": "PUT",
|
|
"url": "{{baseUrl}}/api/v1/categories/{{categoryId}}",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"categoryName\": \"Food & Treats\",\n \"categoryType\": \"PRODUCT\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Delete One",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"url": "{{baseUrl}}/api/v1/categories/{{categoryId}}",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Bulk Delete (DELETE body)",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"url": "{{baseUrl}}/api/v1/categories",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"description": "Bulk delete with JSON body.",
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"ids\": [\n 1,\n 2,\n 3\n ]\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Admin-only Resources",
|
|
"item": [
|
|
{
|
|
"name": "Inventory",
|
|
"item": [
|
|
{
|
|
"name": "List/Search",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/inventory?q=&page=0&size=50&sort=id,desc",
|
|
"header": [],
|
|
"description": "Returns UI-ready rows (joined fields included).",
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Create",
|
|
"request": {
|
|
"method": "POST",
|
|
"url": "{{baseUrl}}/api/v1/inventory",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"prodId\": \"{{prodId}}\",\n \"quantity\": 25\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Get One",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/inventory/{{inventoryId}}",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Update (PUT)",
|
|
"request": {
|
|
"method": "PUT",
|
|
"url": "{{baseUrl}}/api/v1/inventory/{{inventoryId}}",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"prodId\": \"{{prodId}}\",\n \"quantity\": 30\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Delete One",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"url": "{{baseUrl}}/api/v1/inventory/{{inventoryId}}",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Bulk Delete (DELETE body)",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"url": "{{baseUrl}}/api/v1/inventory",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"description": "Bulk delete with JSON body.",
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"ids\": [\n 1,\n 2,\n 3\n ]\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Suppliers",
|
|
"item": [
|
|
{
|
|
"name": "List/Search",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/suppliers?q=&page=0&size=50&sort=id,desc",
|
|
"header": [],
|
|
"description": "Returns UI-ready rows (joined fields included).",
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Create",
|
|
"request": {
|
|
"method": "POST",
|
|
"url": "{{baseUrl}}/api/v1/suppliers",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"supName\": \"Acme Supplies\",\n \"supPhone\": \"555-0100\",\n \"supEmail\": \"sales@acme.example\",\n \"supAddress\": \"123 Main St\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Get One",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/suppliers/{{supId}}",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Update (PUT)",
|
|
"request": {
|
|
"method": "PUT",
|
|
"url": "{{baseUrl}}/api/v1/suppliers/{{supId}}",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"supName\": \"Acme Supplies\",\n \"supPhone\": \"555-0100\",\n \"supEmail\": \"support@acme.example\",\n \"supAddress\": \"123 Main St\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Delete One",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"url": "{{baseUrl}}/api/v1/suppliers/{{supId}}",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Bulk Delete (DELETE body)",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"url": "{{baseUrl}}/api/v1/suppliers",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"description": "Bulk delete with JSON body.",
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"ids\": [\n 1,\n 2,\n 3\n ]\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Product Suppliers (Costing)",
|
|
"item": [
|
|
{
|
|
"name": "List/Search",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/product-suppliers?q=&page=0&size=50",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Create",
|
|
"request": {
|
|
"method": "POST",
|
|
"url": "{{baseUrl}}/api/v1/product-suppliers",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"prodId\": \"{{prodId}}\",\n \"supId\": \"{{supId}}\",\n \"cost\": 12.34\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Update (composite)",
|
|
"request": {
|
|
"method": "PUT",
|
|
"url": "{{baseUrl}}/api/v1/product-suppliers",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"description": "Update by composite key (prodId, supId).",
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"prodId\": \"{{prodId}}\",\n \"supId\": \"{{supId}}\",\n \"cost\": 13.0\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Bulk Delete (keys)",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"url": "{{baseUrl}}/api/v1/product-suppliers",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"keys\": [\n {\n \"prodId\": 1,\n \"supId\": 2\n },\n {\n \"prodId\": 3,\n \"supId\": 4\n }\n ]\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Purchase Orders (read)",
|
|
"item": [
|
|
{
|
|
"name": "List/Search",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/purchase-orders?q=&page=0&size=50",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Get One",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/purchase-orders/{{purchaseOrderId}}",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Users (Staff Accounts)",
|
|
"item": [
|
|
{
|
|
"name": "List/Search",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/users?q=&page=0&size=50",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Create",
|
|
"request": {
|
|
"method": "POST",
|
|
"url": "{{baseUrl}}/api/v1/users",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"description": "Admin-only.",
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"firstName\": \"Sam\",\n \"lastName\": \"Lee\",\n \"email\": \"sam.lee@example.com\",\n \"phone\": \"555-0110\",\n \"username\": \"samlee\",\n \"password\": \"ChangeMe123\",\n \"role\": \"STAFF\",\n \"storeIds\": [\n \"{{storeId}}\"\n ]\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Update (PUT)",
|
|
"request": {
|
|
"method": "PUT",
|
|
"url": "{{baseUrl}}/api/v1/users/{{userId}}",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"phone\": \"555-0111\",\n \"role\": \"STAFF\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Delete One",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"url": "{{baseUrl}}/api/v1/users/{{userId}}",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Bulk Delete",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"url": "{{baseUrl}}/api/v1/users",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"ids\": [\n 1,\n 2,\n 3\n ]\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Upload Avatar for User (Admin) [multipart]",
|
|
"request": {
|
|
"method": "PUT",
|
|
"url": "{{baseUrl}}/api/v1/users/{{userId}}/avatar",
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"header": [],
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "file",
|
|
"type": "file",
|
|
"src": ""
|
|
}
|
|
]
|
|
},
|
|
"description": "Admin-only."
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Sales + Refunds (Staff)",
|
|
"item": [
|
|
{
|
|
"name": "Sales - List/Search",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/sales?q=&page=0&size=50",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Sales - Create (Checkout)",
|
|
"request": {
|
|
"method": "POST",
|
|
"url": "{{baseUrl}}/api/v1/sales",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"paymentMethod\": \"Cash\",\n \"storeId\": \"{{storeId}}\",\n \"items\": [\n {\n \"prodId\": \"{{prodId}}\",\n \"quantity\": 2\n }\n ]\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Sales - Get Detail",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/sales/{{saleId}}",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Sales - Refund",
|
|
"request": {
|
|
"method": "POST",
|
|
"url": "{{baseUrl}}/api/v1/sales/{{saleId}}/refunds",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"paymentMethod\": \"Card\",\n \"storeId\": \"{{storeId}}\",\n \"items\": [\n {\n \"prodId\": \"{{prodId}}\",\n \"quantity\": 1\n }\n ]\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Analytics (Admin)",
|
|
"item": [
|
|
{
|
|
"name": "Dashboard",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/analytics/dashboard?days=30&top=10",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Chat (REST) + WebSocket (/ws)",
|
|
"item": [
|
|
{
|
|
"name": "Chat - Create Room (Customer)",
|
|
"request": {
|
|
"method": "POST",
|
|
"url": "{{baseUrl}}/api/v1/chat/rooms",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{customerToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"topic\": \"Support\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Chat - List Rooms (Customer)",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/chat/rooms",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{customerToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Chat - List Rooms (Staff/Admin)",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/chat/rooms",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Chat - Room Messages (Customer)",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/chat/rooms/{{roomId}}/messages?limit=50",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{customerToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Chat - Room Messages (Staff/Admin)",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/chat/rooms/{{roomId}}/messages?limit=50",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Chat - Close Room (Staff/Admin)",
|
|
"request": {
|
|
"method": "POST",
|
|
"url": "{{baseUrl}}/api/v1/chat/rooms/{{roomId}}/close",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{staffToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "WebSocket Notes",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/ws",
|
|
"header": [],
|
|
"description": "WebSocket endpoint for live chat."
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Public Assets",
|
|
"item": [
|
|
{
|
|
"name": "Get Staff Avatar (public)",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/staff/{{employeeId}}/avatar",
|
|
"header": [],
|
|
"description": "Public endpoint. Accessible without auth."
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Customer Browse (optional)",
|
|
"item": [
|
|
{
|
|
"name": "Pets - List (customer)",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/pets?q=&page=0&size=50",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{customerToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Pets - Detail (customer)",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/pets/{{petId}}",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{customerToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Services - List (customer)",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/services?q=&page=0&size=50",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{customerToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Stores - List (customer)",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/api/v1/stores?q=&page=0&size=50",
|
|
"header": [],
|
|
"auth": {
|
|
"type": "bearer",
|
|
"bearer": [
|
|
{
|
|
"key": "token",
|
|
"value": "{{customerToken}}",
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
} |