From 64e6019d40d21b032e2d99d19f9fd9a93b4897a1 Mon Sep 17 00:00:00 2001 From: Harkamal Randhawa Date: Mon, 9 Mar 2026 01:24:23 -0600 Subject: [PATCH] Fix Postman collection request bodies and add missing auth endpoints Added missing authentication endpoints: - POST /api/v1/auth/me/avatar (Upload Avatar) - GET /api/v1/auth/me/avatar (Get Avatar) - DELETE /api/v1/auth/me/avatar (Delete Avatar) - POST /api/v1/auth/logout (Logout) Fixed request body DTOs to match backend: - ProductSupplier: Use 'cost' field, composite key bulk delete structure - Appointment: Remove storeId/notes, add appointmentStatus and petIds - Adoption: Add adoptionStatus field - Refund: Remove amount field (only saleId and reason) - Customer: Remove address field - Store: Use address/phone/email (not storeAddress/storePhone) - Inventory: Use prodId (not productId) - Supplier: Split contact into supContactFirstName and supContactLastName All 107 requests verified against backend controllers and DTOs. JSON validation passed. Collection is production-ready. Phase 3B --- petshop-api.postman_collection.json | 110 ++++++++++++++++++++++++---- 1 file changed, 94 insertions(+), 16 deletions(-) diff --git a/petshop-api.postman_collection.json b/petshop-api.postman_collection.json index 1f3aee50..4418bb47 100644 --- a/petshop-api.postman_collection.json +++ b/petshop-api.postman_collection.json @@ -203,6 +203,84 @@ "raw": "{\n \"fullName\": \"Updated Name\",\n \"email\": \"updated@example.com\"\n}" } } + }, + { + "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": [] + } + ] + } + } + }, + { + "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" + } + ] + } + }, + { + "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" + } + ] + } + }, + { + "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" + } + ] + } } ] }, @@ -841,7 +919,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"customerId\": 1,\n \"storeId\": 1,\n \"serviceId\": 1,\n \"appointmentDate\": \"2026-03-15\",\n \"appointmentTime\": \"10:00:00\",\n \"notes\": \"Test\"\n}" + "raw": "{\n \"customerId\": 1,\n \"serviceId\": 1,\n \"appointmentDate\": \"2026-03-15\",\n \"appointmentTime\": \"10:30:00\",\n \"appointmentStatus\": \"Booked\",\n \"petIds\": [1, 2]\n}" } } }, @@ -863,7 +941,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"customerId\": 1,\n \"storeId\": 1,\n \"serviceId\": 1,\n \"appointmentDate\": \"2026-03-15\",\n \"appointmentTime\": \"14:00:00\",\n \"notes\": \"Updated\"\n}" + "raw": "{\n \"customerId\": 1,\n \"serviceId\": 2,\n \"appointmentDate\": \"2026-03-20\",\n \"appointmentTime\": \"14:00:00\",\n \"appointmentStatus\": \"Completed\",\n \"petIds\": [1]\n}" } } }, @@ -966,7 +1044,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"petId\": 1,\n \"customerId\": 1,\n \"adoptionDate\": \"2026-03-10\"\n}" + "raw": "{\n \"petId\": 1,\n \"customerId\": 1,\n \"adoptionDate\": \"2026-03-10\",\n \"adoptionStatus\": \"Pending\"\n}" } } }, @@ -988,7 +1066,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"petId\": 1,\n \"customerId\": 1,\n \"adoptionDate\": \"2026-03-11\"\n}" + "raw": "{\n \"petId\": 1,\n \"customerId\": 1,\n \"adoptionDate\": \"2026-03-10\",\n \"adoptionStatus\": \"Completed\"\n}" } } }, @@ -1055,7 +1133,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"saleId\": 1,\n \"reason\": \"Defective\",\n \"amount\": 50.0\n}" + "raw": "{\n \"saleId\": 1,\n \"reason\": \"Defective product\"\n}" } } }, @@ -1310,7 +1388,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"john@example.com\",\n \"phone\": \"555-0100\",\n \"address\": \"123 Main St\"\n}" + "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"john.doe@example.com\",\n \"phone\": \"555-123-4567\"\n}" } } }, @@ -1332,7 +1410,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"john@example.com\",\n \"phone\": \"555-0100\",\n \"address\": \"123 Main St\"\n}" + "raw": "{\n \"firstName\": \"Jane\",\n \"lastName\": \"Doe\",\n \"email\": \"jane.doe@example.com\",\n \"phone\": \"555-987-6543\"\n}" } } }, @@ -1573,7 +1651,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"storeName\": \"New Branch\",\n \"storeAddress\": \"456 Oak St\",\n \"storePhone\": \"555-0200\"\n}" + "raw": "{\n \"storeName\": \"New Pet Shop\",\n \"address\": \"123 Main Street\",\n \"phone\": \"555-111-2222\",\n \"email\": \"newstore@petshop.com\"\n}" } } }, @@ -1595,7 +1673,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"storeName\": \"Updated Branch\",\n \"storeAddress\": \"456 Oak St\",\n \"storePhone\": \"555-0200\"\n}" + "raw": "{\n \"storeName\": \"Updated Pet Shop\",\n \"address\": \"456 Oak Avenue\",\n \"phone\": \"555-333-4444\",\n \"email\": \"updated@petshop.com\"\n}" } } }, @@ -1698,7 +1776,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"productId\": 1,\n \"storeId\": 1,\n \"quantity\": 100\n}" + "raw": "{\n \"prodId\": 1,\n \"quantity\": 100\n}" } } }, @@ -1720,7 +1798,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"quantity\": 150\n}" + "raw": "{\n \"prodId\": 1,\n \"quantity\": 150\n}" } } }, @@ -1823,7 +1901,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"supCompany\": \"ACME Corp\",\n \"supContact\": \"John Smith\",\n \"supPhone\": \"555-0300\",\n \"supEmail\": \"john@acme.com\"\n}" + "raw": "{\n \"supCompany\": \"New Supplier Inc\",\n \"supContactFirstName\": \"John\",\n \"supContactLastName\": \"Smith\",\n \"supEmail\": \"john@newsupplier.com\",\n \"supPhone\": \"555-555-5555\"\n}" } } }, @@ -1845,7 +1923,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"supCompany\": \"ACME Corp\",\n \"supContact\": \"Jane Smith\",\n \"supPhone\": \"555-0300\",\n \"supEmail\": \"jane@acme.com\"\n}" + "raw": "{\n \"supCompany\": \"Updated Supplier Co\",\n \"supContactFirstName\": \"Jane\",\n \"supContactLastName\": \"Doe\",\n \"supEmail\": \"jane@updatedsupplier.com\",\n \"supPhone\": \"555-666-7777\"\n}" } } }, @@ -2007,7 +2085,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"productId\": 1,\n \"supplierId\": 1,\n \"price\": 25.0\n}" + "raw": "{\n \"productId\": 1,\n \"supplierId\": 2,\n \"cost\": 35.00\n}" } } }, @@ -2029,7 +2107,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"price\": 30.0\n}" + "raw": "{\n \"productId\": 1,\n \"supplierId\": 2,\n \"cost\": 40.00\n}" } } }, @@ -2069,7 +2147,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"ids\": []\n}" + "raw": "{\n \"keys\": [\n {\"productId\": 1, \"supplierId\": 2},\n {\"productId\": 3, \"supplierId\": 4}\n ]\n}" } } }